ಪರಿಚಯ
ಈ ಲೇಖನಗಳ ಸರಣಿಯಲ್ಲಿ, ಬಿಲ್ಡ್ರೂಟ್ ವಿತರಣಾ ನಿರ್ಮಾಣ ವ್ಯವಸ್ಥೆಯನ್ನು ನೋಡಲು ಮತ್ತು ಅದನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡುವಲ್ಲಿ ನನ್ನ ಅನುಭವವನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ನಾನು ಬಯಸುತ್ತೇನೆ. ಗ್ರಾಫಿಕಲ್ ಇಂಟರ್ಫೇಸ್ ಮತ್ತು ಕನಿಷ್ಠ ಕಾರ್ಯನಿರ್ವಹಣೆಯೊಂದಿಗೆ ಸಣ್ಣ OS ಅನ್ನು ರಚಿಸುವಲ್ಲಿ ಪ್ರಾಯೋಗಿಕ ಅನುಭವವಿರುತ್ತದೆ.
ಮೊದಲನೆಯದಾಗಿ, ನೀವು ನಿರ್ಮಾಣ ವ್ಯವಸ್ಥೆ ಮತ್ತು ವಿತರಣೆಯನ್ನು ಗೊಂದಲಗೊಳಿಸಬಾರದು. ಬಿಲ್ಡ್ರೂಟ್ ಅದಕ್ಕೆ ನೀಡಲಾದ ಪ್ಯಾಕೇಜುಗಳ ಗುಂಪಿನಿಂದ ಸಿಸ್ಟಮ್ ಅನ್ನು ನಿರ್ಮಿಸಬಹುದು. ಬಿಲ್ಡ್ರೂಟ್ ಅನ್ನು ಮೇಕ್ಫೈಲ್ಗಳಲ್ಲಿ ನಿರ್ಮಿಸಲಾಗಿದೆ ಮತ್ತು ಆದ್ದರಿಂದ ಅಗಾಧ ಗ್ರಾಹಕೀಕರಣ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಹೊಂದಿದೆ. ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಮತ್ತೊಂದು ಆವೃತ್ತಿಯೊಂದಿಗೆ ಬದಲಾಯಿಸಿ, ನಿಮ್ಮ ಸ್ವಂತ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಸೇರಿಸಿ, ಪ್ಯಾಕೇಜ್ ನಿರ್ಮಿಸಲು ನಿಯಮಗಳನ್ನು ಬದಲಿಸಿ, ಎಲ್ಲಾ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಸ್ಥಾಪಿಸಿದ ನಂತರ ಫೈಲ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡುವುದೇ? ಬಿಲ್ಡ್ರೂಟ್ ಇದೆಲ್ಲವನ್ನೂ ಮಾಡಬಹುದು.
ರಷ್ಯಾದಲ್ಲಿ, ಬಿಲ್ಡ್ರೂಟ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ, ಆದರೆ ನನ್ನ ಅಭಿಪ್ರಾಯದಲ್ಲಿ ಆರಂಭಿಕರಿಗಾಗಿ ಕಡಿಮೆ ರಷ್ಯನ್ ಭಾಷೆಯ ಮಾಹಿತಿ ಇದೆ.
ಲೈವ್ ಡೌನ್ಲೋಡ್, icewm ಇಂಟರ್ಫೇಸ್ ಮತ್ತು ಬ್ರೌಸರ್ನೊಂದಿಗೆ ವಿತರಣಾ ಕಿಟ್ ಅನ್ನು ಜೋಡಿಸುವುದು ಕೆಲಸದ ಗುರಿಯಾಗಿದೆ. ಗುರಿ ವೇದಿಕೆಯು ವರ್ಚುವಲ್ಬಾಕ್ಸ್ ಆಗಿದೆ.
ನಿಮ್ಮ ಸ್ವಂತ ವಿತರಣೆಯನ್ನು ಏಕೆ ನಿರ್ಮಿಸಬೇಕು? ಸೀಮಿತ ಸಂಪನ್ಮೂಲಗಳೊಂದಿಗೆ ಸಾಮಾನ್ಯವಾಗಿ ಸೀಮಿತ ಕಾರ್ಯನಿರ್ವಹಣೆಯ ಅಗತ್ಯವಿರುತ್ತದೆ. ಇನ್ನೂ ಹೆಚ್ಚಾಗಿ ಯಾಂತ್ರೀಕೃತಗೊಂಡ ನೀವು ಫರ್ಮ್ವೇರ್ ಅನ್ನು ರಚಿಸಬೇಕಾಗಿದೆ. ಅನಗತ್ಯ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸುವ ಮೂಲಕ ಸಾಮಾನ್ಯ ಉದ್ದೇಶದ ವಿತರಣೆಯನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳುವುದು ಮತ್ತು ಅದನ್ನು ಫರ್ಮ್ವೇರ್ ಆಗಿ ಪರಿವರ್ತಿಸುವುದು ಹೊಸ ವಿತರಣೆಯನ್ನು ನಿರ್ಮಿಸುವುದಕ್ಕಿಂತ ಹೆಚ್ಚು ಶ್ರಮದಾಯಕವಾಗಿದೆ. Gentoo ಅನ್ನು ಬಳಸುವುದರಿಂದ ಅದರ ಮಿತಿಗಳಿವೆ.
ಬಿಲ್ಡ್ರೂಟ್ ಸಿಸ್ಟಮ್ ತುಂಬಾ ಶಕ್ತಿಯುತವಾಗಿದೆ, ಆದರೆ ಅದು ನಿಮಗಾಗಿ ಏನನ್ನೂ ಮಾಡುವುದಿಲ್ಲ. ಇದು ಅಸೆಂಬ್ಲಿ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಮಾತ್ರ ಸಕ್ರಿಯಗೊಳಿಸಬಹುದು ಮತ್ತು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸಬಹುದು.
ಪರ್ಯಾಯ ನಿರ್ಮಾಣ ವ್ಯವಸ್ಥೆಗಳನ್ನು (ಯೋಕ್ಟೋ, ಓಪನ್ ಬಿಲ್ಡ್ ಸಿಸ್ಟಮ್ ಮತ್ತು ಇತರೆ) ಪರಿಗಣಿಸಲಾಗುವುದಿಲ್ಲ ಅಥವಾ ಹೋಲಿಸಲಾಗುವುದಿಲ್ಲ.
ಅದನ್ನು ಎಲ್ಲಿ ಪಡೆಯಬೇಕು ಮತ್ತು ಹೇಗೆ ಪ್ರಾರಂಭಿಸಬೇಕು
ಪ್ರಾಜೆಕ್ಟ್ ವೆಬ್ಸೈಟ್ -
ಬಿಲ್ಡ್ರೂಟ್ ಬಿಲ್ಡ್ನ ಟಾರ್ಗೆಟ್ ಬೋರ್ಡ್ಗಾಗಿ ಡಿಎಫ್ಕಾಫಿಗ್ಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. Defconfig ಒಂದು ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ ಆಗಿದ್ದು ಅದು ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿರದ ಆಯ್ಕೆಗಳನ್ನು ಮಾತ್ರ ಸಂಗ್ರಹಿಸುತ್ತದೆ. ಏನನ್ನು ಸಂಗ್ರಹಿಸಬೇಕು ಮತ್ತು ಹೇಗೆ ಸಂಗ್ರಹಿಸಬೇಕು ಎಂಬುದನ್ನು ಅವನು ನಿರ್ಧರಿಸುತ್ತಾನೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನೀವು ಪ್ರತ್ಯೇಕವಾಗಿ ಬ್ಯುಸಿಬಾಕ್ಸ್, ಲಿನಕ್ಸ್-ಕರ್ನಲ್, ಯುಗ್ಲಿಬ್ಸಿ, ಯು-ಬೂಟ್ ಮತ್ತು ಬೇರ್ಬಾಕ್ಸ್ ಬೂಟ್ಲೋಡರ್ಗಳ ಸಂರಚನೆಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬಹುದು, ಆದರೆ ಅವೆಲ್ಲವನ್ನೂ ಟಾರ್ಗೆಟ್ ಬೋರ್ಡ್ಗೆ ಜೋಡಿಸಲಾಗುತ್ತದೆ.
ಡೌನ್ಲೋಡ್ ಮಾಡಿದ ಆರ್ಕೈವ್ ಅನ್ನು ಅನ್ಪ್ಯಾಕ್ ಮಾಡಿದ ನಂತರ ಅಥವಾ git ನಿಂದ ಕ್ಲೋನಿಂಗ್ ಮಾಡಿದ ನಂತರ, ನಾವು ಬಳಸಲು ಸಿದ್ಧವಾದ ಬಿಲ್ರೂಟ್ ಅನ್ನು ಪಡೆಯುತ್ತೇವೆ. ಕೈಪಿಡಿಯಲ್ಲಿ ಡೈರೆಕ್ಟರಿ ರಚನೆಯ ಬಗ್ಗೆ ನೀವು ಇನ್ನಷ್ಟು ಓದಬಹುದು; ನಾನು ನಿಮಗೆ ಪ್ರಮುಖವಾದವುಗಳ ಬಗ್ಗೆ ಹೇಳುತ್ತೇನೆ:
ಬೋರ್ಡ್ - ಪ್ರತಿ ಬೋರ್ಡ್ಗೆ ನಿರ್ದಿಷ್ಟವಾದ ಫೈಲ್ಗಳೊಂದಿಗೆ ಡೈರೆಕ್ಟರಿ. ಇವುಗಳು ಸಿಸ್ಟಮ್ ಇಮೇಜ್ಗಳನ್ನು (iso, sdcart, cpio ಮತ್ತು ಇತರೆ), ಓವರ್ಲೇ ಡೈರೆಕ್ಟರಿ, ಕರ್ನಲ್ ಕಾನ್ಫಿಗರ್ ಇತ್ಯಾದಿಗಳನ್ನು ರೂಪಿಸಲು ಸ್ಕ್ರಿಪ್ಟ್ಗಳಾಗಿರಬಹುದು.
configs - ಮಂಡಳಿಯ ನಿಜವಾದ defconfig. Defconfig ಒಂದು ಅಪೂರ್ಣ ಬೋರ್ಡ್ ಕಾನ್ಫಿಗರೇಶನ್ ಆಗಿದೆ. ಇದು ಡೀಫಾಲ್ಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳಿಂದ ಭಿನ್ನವಾಗಿರುವ ನಿಯತಾಂಕಗಳನ್ನು ಮಾತ್ರ ಸಂಗ್ರಹಿಸುತ್ತದೆ
dl — ಅಸೆಂಬ್ಲಿಗಾಗಿ ಡೌನ್ಲೋಡ್ ಮಾಡಲಾದ ಮೂಲ ಕೋಡ್ಗಳು/ಫೈಲ್ಗಳೊಂದಿಗೆ ಡೈರೆಕ್ಟರಿ
ಔಟ್ಪುಟ್/ಗುರಿ - ಪರಿಣಾಮವಾಗಿ OS ನ ಜೋಡಿಸಲಾದ ಫೈಲ್ ಸಿಸ್ಟಮ್. ತರುವಾಯ, ಡೌನ್ಲೋಡ್/ಸ್ಥಾಪನೆಗಾಗಿ ಚಿತ್ರಗಳನ್ನು ಅದರಿಂದ ರಚಿಸಲಾಗುತ್ತದೆ
ಔಟ್ಪುಟ್/ಹೋಸ್ಟ್ - ಅಸೆಂಬ್ಲಿಗಾಗಿ ಹೋಸ್ಟ್ ಉಪಯುಕ್ತತೆಗಳು
ಔಟ್ಪುಟ್/ಬಿಲ್ಡ್ - ಜೋಡಿಸಲಾದ ಪ್ಯಾಕೇಜುಗಳು
ಅಸೆಂಬ್ಲಿಯನ್ನು KConfig ಮೂಲಕ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿದೆ. ಲಿನಕ್ಸ್ ಕರ್ನಲ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ಅದೇ ವ್ಯವಸ್ಥೆಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸುವ ಕಮಾಂಡ್ಗಳ ಪಟ್ಟಿ (ಬಿಲ್ಡ್ರೂಟ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಿ):
- menuconfig ಮಾಡಿ - ಬಿಲ್ಡ್ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಕರೆ ಮಾಡಿ. ನೀವು ಚಿತ್ರಾತ್ಮಕ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಸಹ ಬಳಸಬಹುದು (nconfig ಮಾಡಿ, xconfig ಮಾಡಿ, gconfig ಮಾಡಿ)
- linux-menuconfig ಮಾಡಿ - ಕರ್ನಲ್ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಕರೆ ಮಾಡಿ.
- ಕ್ಲೀನ್ ಮಾಡಿ - ಬಿಲ್ಡ್ ಫಲಿತಾಂಶಗಳನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ (ಎಲ್ಲವನ್ನೂ ಔಟ್ಪುಟ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ)
- ಮಾಡಿ - ವ್ಯವಸ್ಥೆಯನ್ನು ನಿರ್ಮಿಸಿ. ಇದು ಈಗಾಗಲೇ ಜೋಡಿಸಲಾದ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಮತ್ತೆ ಜೋಡಿಸುವುದಿಲ್ಲ.
- defconfig_name ಮಾಡಿ - ಸಂರಚನೆಯನ್ನು ನಿರ್ದಿಷ್ಟ defconfig ಗೆ ಬದಲಿಸಿ
- ಪಟ್ಟಿ-defconfigs ಮಾಡಿ - defconfigs ಪಟ್ಟಿಯನ್ನು ತೋರಿಸಿ
- ಮೂಲವನ್ನು ಮಾಡಿ - ಕಟ್ಟಡವಿಲ್ಲದೆಯೇ ಅನುಸ್ಥಾಪನಾ ಫೈಲ್ಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಿ.
- ಸಹಾಯ ಮಾಡಿ - ಸಂಭವನೀಯ ಆಜ್ಞೆಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ
ಪ್ರಮುಖ ಟಿಪ್ಪಣಿಗಳು ಮತ್ತು ಉಪಯುಕ್ತ ಸಲಹೆಗಳು
ಬಿಲ್ಡ್ರೂಟ್ ಈಗಾಗಲೇ ನಿರ್ಮಿಸಲಾದ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಮರುನಿರ್ಮಾಣ ಮಾಡುವುದಿಲ್ಲ! ಆದ್ದರಿಂದ, ಸಂಪೂರ್ಣ ಮರುಜೋಡಣೆ ಅಗತ್ಯವಿರುವ ಪರಿಸ್ಥಿತಿ ಉದ್ಭವಿಸಬಹುದು.
ಆಜ್ಞೆಯೊಂದಿಗೆ ನೀವು ಪ್ರತ್ಯೇಕ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಮರುನಿರ್ಮಾಣ ಮಾಡಬಹುದು ಪ್ಯಾಕೇಜ್ ಹೆಸರು-ಮರುನಿರ್ಮಾಣ ಮಾಡಿ. ಉದಾಹರಣೆಗೆ, ನೀವು Linux ಕರ್ನಲ್ ಅನ್ನು ಮರುನಿರ್ಮಾಣ ಮಾಡಬಹುದು:
make linux-rebuild
ಬಿಲ್ಡ್ರೂಟ್ ಔಟ್ಪುಟ್/ಬಿಲ್ಡ್/$packagename ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ .ಸ್ಟಾಂಪ್ ಫೈಲ್ಗಳನ್ನು ರಚಿಸುವ ಮೂಲಕ ಯಾವುದೇ ಪ್ಯಾಕೇಜ್ ಸ್ಥಿತಿಯನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ:
ಆದ್ದರಿಂದ, ನೀವು ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಮರುನಿರ್ಮಾಣ ಮಾಡದೆಯೇ ರೂಟ್-ಎಫ್ಎಸ್ ಮತ್ತು ಚಿತ್ರಗಳನ್ನು ಮರುನಿರ್ಮಾಣ ಮಾಡಬಹುದು:
rm output/build/host-gcc-final-*/.stamp_host_installed;rm -rf output/target;find output/ -name ".stamp_target_installed" |xargs rm -rf ; make
ಉಪಯುಕ್ತ ಅಸ್ಥಿರಗಳು
ಬಿಲ್ಡ್ರೂಟ್ ಸುಲಭವಾದ ಸಂರಚನೆಗಾಗಿ ವೇರಿಯಬಲ್ಗಳ ಗುಂಪನ್ನು ಹೊಂದಿದೆ
- $TOPDIR - ಬಿಲ್ಡ್ರೂಟ್ ಡೈರೆಕ್ಟರಿ
- $BASEDIR - ಔಟ್ಪುಟ್ ಡೈರೆಕ್ಟರಿ
- $HOST_DIR, $STAGING_DIR, $TARGET_DIR — ಹೋಸ್ಟ್ ಎಫ್ಎಸ್, ಸ್ಟೇಜಿಂಗ್ ಎಫ್ಎಸ್, ಟಾರ್ಗೆಟ್ ಎಫ್ಎಸ್ ಬಿಲ್ಡ್ ಡೈರೆಕ್ಟರಿಗಳು.
- $BUILD_DIR - ಅನ್ಪ್ಯಾಕ್ ಮಾಡಲಾದ ಮತ್ತು ನಿರ್ಮಿಸಿದ ಪ್ಯಾಕೇಜ್ಗಳೊಂದಿಗೆ ಡೈರೆಕ್ಟರಿ
ದೃಶ್ಯೀಕರಣ
ಬಿಲ್ಡ್ರೂಟ್ ಒಂದು ದೃಶ್ಯೀಕರಣದ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಹೊಂದಿದೆ. ಅಂತಿಮ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ನೀವು ಅವಲಂಬನೆ ರೇಖಾಚಿತ್ರ, ಬಿಲ್ಡ್ ಟೈಮ್ ಗ್ರಾಫ್ ಮತ್ತು ಪ್ಯಾಕೇಜ್ ಗಾತ್ರಗಳ ಗ್ರಾಫ್ ಅನ್ನು ನಿರ್ಮಿಸಬಹುದು. ಫಲಿತಾಂಶಗಳು ಔಟ್ಪುಟ್/ಗ್ರಾಫ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ pdf ಫೈಲ್ಗಳ ರೂಪದಲ್ಲಿವೆ (ನೀವು svn,png ನಿಂದ ಆಯ್ಕೆ ಮಾಡಬಹುದು).
ದೃಶ್ಯೀಕರಣ ಆಜ್ಞೆಗಳ ಉದಾಹರಣೆಗಳು:
make graph-depends
ಅವಲಂಬನೆ ಮರವನ್ನು ನಿರ್ಮಿಸಿmake <pkg>-graph-depends
ನಿರ್ದಿಷ್ಟ ಪ್ಯಾಕೇಜ್ಗಾಗಿ ಅವಲಂಬನೆ ಮರವನ್ನು ನಿರ್ಮಿಸಿBR2_GRAPH_OUT=png make graph-build
PNG ಔಟ್ಪುಟ್ನೊಂದಿಗೆ ಪ್ಲಾಟ್ ಬಿಲ್ಡ್ ಟೈಮ್make graph-size
ಪ್ಲಾಟ್ ಪ್ಯಾಕೆಟ್ ಗಾತ್ರ
ಉಪಯುಕ್ತ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು
ಬಿಲ್ಡ್ರೂಟ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಉಪ ಡೈರೆಕ್ಟರಿ ಇದೆ ಉಪಯುಕ್ತತೆಗಳು ಉಪಯುಕ್ತ ಸ್ಕ್ರಿಪ್ಟ್ಗಳೊಂದಿಗೆ. ಉದಾಹರಣೆಗೆ, ಪ್ಯಾಕೇಜ್ ವಿವರಣೆಗಳ ಸರಿಯಾದತೆಯನ್ನು ಪರಿಶೀಲಿಸುವ ಸ್ಕ್ರಿಪ್ಟ್ ಇದೆ. ನಿಮ್ಮ ಸ್ವಂತ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ಸೇರಿಸುವಾಗ ಇದು ಉಪಯುಕ್ತವಾಗಬಹುದು (ನಾನು ಇದನ್ನು ನಂತರ ಮಾಡುತ್ತೇನೆ). utils/readme.txt ಫೈಲ್ ಈ ಸ್ಕ್ರಿಪ್ಟ್ಗಳ ವಿವರಣೆಯನ್ನು ಒಳಗೊಂಡಿದೆ.
ಸ್ಟಾಕ್ ವಿತರಣೆಯನ್ನು ನಿರ್ಮಿಸೋಣ
ಎಲ್ಲಾ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಸಾಮಾನ್ಯ ಬಳಕೆದಾರರ ಪರವಾಗಿ ನಡೆಸಲಾಗುತ್ತದೆ, ರೂಟ್ ಅಲ್ಲ ಎಂದು ನೆನಪಿಟ್ಟುಕೊಳ್ಳುವುದು ಬಹಳ ಮುಖ್ಯ.
ಎಲ್ಲಾ ಆಜ್ಞೆಗಳನ್ನು ಬಿಲ್ಡ್ರೂಟ್ನಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ. ಬಿಲ್ಡ್ರೂಟ್ ಪ್ಯಾಕೇಜ್ ಈಗಾಗಲೇ ಅನೇಕ ಸಾಮಾನ್ಯ ಬೋರ್ಡ್ಗಳು ಮತ್ತು ವರ್ಚುವಲೈಸೇಶನ್ಗಾಗಿ ಕಾನ್ಫಿಗರೇಶನ್ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.
ಸಂರಚನೆಗಳ ಪಟ್ಟಿಯನ್ನು ನೋಡೋಣ:
qemu_x86_64_defconfig ಸಂರಚನೆಗೆ ಬದಲಿಸಿ
make qemu_x86_64_defconfig
ಮತ್ತು ನಾವು ಅಸೆಂಬ್ಲಿಯನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ
make
ನಿರ್ಮಾಣವು ಯಶಸ್ವಿಯಾಗಿ ಪೂರ್ಣಗೊಂಡಿದೆ, ಫಲಿತಾಂಶಗಳನ್ನು ನೋಡಿ:
ಬಿಲ್ಡ್ರೂಟ್ ನೀವು Qemu ನಲ್ಲಿ ರನ್ ಮಾಡಬಹುದಾದ ಚಿತ್ರಗಳನ್ನು ಸಂಗ್ರಹಿಸಿದೆ ಮತ್ತು ಅವುಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ.
qemu-system-x86_64 -kernel output/images/bzImage -hda output/images/rootfs.ext2 -append "root=/dev/sda rw" -s -S
ಫಲಿತಾಂಶವು qemu ನಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವ ಸಿಸ್ಟಮ್ ಆಗಿದೆ:
ನಿಮ್ಮ ಸ್ವಂತ ಬೋರ್ಡ್ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ರಚಿಸುವುದು
ಬೋರ್ಡ್ ಫೈಲ್ಗಳನ್ನು ಸೇರಿಸಲಾಗುತ್ತಿದೆ
ಸಂರಚನೆಗಳ ಪಟ್ಟಿಯನ್ನು ನೋಡೋಣ:
ಪಟ್ಟಿಯಲ್ಲಿ ನಾವು pc_x86_64_efi_defconfig ಅನ್ನು ನೋಡುತ್ತೇವೆ. ಕಾನ್ಫಿಗರೇಶನ್ನಿಂದ ನಕಲಿಸುವ ಮೂಲಕ ನಾವು ನಮ್ಮದೇ ಆದ ಬೋರ್ಡ್ ಅನ್ನು ರಚಿಸುತ್ತೇವೆ:
cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig
ನಮ್ಮ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು, ರೂಟ್ಫ್ಗಳು-ಓವರ್ಲೇ ಮತ್ತು ಇತರ ಅಗತ್ಯ ಫೈಲ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ತಕ್ಷಣವೇ ಬೋರ್ಡ್ ಡೈರೆಕ್ಟರಿಯನ್ನು ರಚಿಸೋಣ:
mkdir board/my_x86_board
ಈ defconfig ಗೆ ಬದಲಿಸಿ:
make my_x86_board_defconfig
ಹೀಗಾಗಿ, ಈಗ ಬಿಲ್ಡ್ ಕಾನ್ಫಿಗರ್ (ಬಿಲ್ಡ್ರೂಟ್ ಡೈರೆಕ್ಟರಿಯ ರೂಟ್ನಲ್ಲಿ .config ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ) x86-64 ಲೆಗಸಿ(ಬಯೋಸ್) ಬೂಟ್ ಟಾರ್ಗೆಟ್ ಮೆಷಿನ್ಗೆ ಅನುರೂಪವಾಗಿದೆ.
ಲಿನಕ್ಸ್-ಕರ್ನಲ್ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ನಕಲಿಸೋಣ (ನಂತರ ಉಪಯುಕ್ತವಾಗಿದೆ):
cp board/pc/linux.config board/my_x86_board/
KConfig ಮೂಲಕ ನಿರ್ಮಾಣ ನಿಯತಾಂಕಗಳನ್ನು ಹೊಂದಿಸಲಾಗುತ್ತಿದೆ
ಸೆಟಪ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸೋಣ:
make menuconfig
KConfig ವಿಂಡೋ ತೆರೆಯುತ್ತದೆ. ಚಿತ್ರಾತ್ಮಕ ಇಂಟರ್ಫೇಸ್ನೊಂದಿಗೆ ಕಾನ್ಫಿಗರ್ ಮಾಡಲು ಸಾಧ್ಯವಿದೆ (nconfig ಮಾಡಿ, xconfig ಮಾಡಿ, gconfig ಮಾಡಿ):
ನಾವು ಮೊದಲ ವಿಭಾಗವನ್ನು ನಮೂದಿಸಿ ಗುರಿ ಆಯ್ಕೆಗಳು. ಇಲ್ಲಿ ನೀವು ನಿರ್ಮಾಣವನ್ನು ಕೈಗೊಳ್ಳುವ ಗುರಿ ವಾಸ್ತುಶಿಲ್ಪವನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು.
ಬಿಲ್ಡ್ ಆಯ್ಕೆಗಳು - ಇಲ್ಲಿ ವಿವಿಧ ನಿರ್ಮಾಣ ಸೆಟ್ಟಿಂಗ್ಗಳಿವೆ. ನೀವು ಮೂಲ ಕೋಡ್ಗಳು, ಬಿಲ್ಡ್ ಥ್ರೆಡ್ಗಳ ಸಂಖ್ಯೆ, ಮೂಲ ಕೋಡ್ಗಳನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಲು ಕನ್ನಡಿಗಳು ಮತ್ತು ಇತರ ಸೆಟ್ಟಿಂಗ್ಗಳೊಂದಿಗೆ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು. ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಬಿಡೋಣ.
ಟೂಲ್ಚೈನ್ - ಬಿಲ್ಡ್ ಟೂಲ್ಗಳನ್ನು ಇಲ್ಲಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿದೆ. ಅವನ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ಓದಿ.
ಟೂಲ್ಚೈನ್ ಪ್ರಕಾರ - ಬಳಸಿದ ಟೂಲ್ಚೈನ್ ಪ್ರಕಾರ. ಇದು ಬಿಲ್ಡ್ರೂಟ್ನಲ್ಲಿ ನಿರ್ಮಿಸಲಾದ ಟೂಲ್ಚೇನ್ ಆಗಿರಬಹುದು ಅಥವಾ ಬಾಹ್ಯ ಒಂದಾಗಿರಬಹುದು (ನೀವು ಈಗಾಗಲೇ ನಿರ್ಮಿಸಿದ ಡೈರೆಕ್ಟರಿಯನ್ನು ಅಥವಾ ಡೌನ್ಲೋಡ್ ಮಾಡಲು url ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು). ವಿವಿಧ ಆರ್ಕಿಟೆಕ್ಚರ್ಗಳಿಗೆ ಹೆಚ್ಚುವರಿ ಆಯ್ಕೆಗಳಿವೆ. ಉದಾಹರಣೆಗೆ, ತೋಳಿಗಾಗಿ ನೀವು ಬಾಹ್ಯ ಟೂಲ್ಚೈನ್ನ ಲಿನಾರೊ ಆವೃತ್ತಿಯನ್ನು ಸರಳವಾಗಿ ಆಯ್ಕೆ ಮಾಡಬಹುದು.
ಸಿ ಲೈಬ್ರರಿ - ಸಿ ಲೈಬ್ರರಿಯ ಆಯ್ಕೆ ಇಡೀ ಸಿಸ್ಟಮ್ನ ಕಾರ್ಯಾಚರಣೆಯು ಇದನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ. ವಿಶಿಷ್ಟವಾಗಿ, glibc ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ, ಇದು ಎಲ್ಲಾ ಸಂಭಾವ್ಯ ಕಾರ್ಯಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ. ಆದರೆ ಎಂಬೆಡೆಡ್ ಸಿಸ್ಟಮ್ಗೆ ಇದು ತುಂಬಾ ದೊಡ್ಡದಾಗಿರಬಹುದು, ಆದ್ದರಿಂದ uglibc ಅಥವಾ musl ಅನ್ನು ಹೆಚ್ಚಾಗಿ ಆಯ್ಕೆ ಮಾಡಲಾಗುತ್ತದೆ. ನಾವು glibc ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತೇವೆ (ಇದು systemd ಅನ್ನು ಬಳಸಲು ನಂತರ ಅಗತ್ಯವಿರುತ್ತದೆ).
ಕರ್ನಲ್ ಹೆಡರ್ಗಳು ಮತ್ತು ಕಸ್ಟಮ್ ಕರ್ನಲ್ ಹೆಡರ್ಗಳ ಸರಣಿ - ಜೋಡಿಸಲಾದ ಸಿಸ್ಟಮ್ನಲ್ಲಿರುವ ಕರ್ನಲ್ನ ಆವೃತ್ತಿಗೆ ಹೊಂದಿಕೆಯಾಗಬೇಕು. ಕರ್ನಲ್ ಹೆಡರ್ಗಳಿಗಾಗಿ, ನೀವು ಟಾರ್ಬಾಲ್ ಅಥವಾ ಜಿಟ್ ರೆಪೊಸಿಟರಿಯ ಮಾರ್ಗವನ್ನು ಸಹ ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು.
GCC ಕಂಪೈಲರ್ ಆವೃತ್ತಿಗಳು - ನಿರ್ಮಾಣಕ್ಕಾಗಿ ಬಳಸಬೇಕಾದ ಕಂಪೈಲರ್ ಆವೃತ್ತಿಯನ್ನು ಆಯ್ಕೆಮಾಡಿ
C++ ಬೆಂಬಲವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ - ಸಿಸ್ಟಮ್ನಲ್ಲಿ C++ ಲೈಬ್ರರಿಗಳಿಗೆ ಬೆಂಬಲದೊಂದಿಗೆ ನಿರ್ಮಿಸಲು ಆಯ್ಕೆಮಾಡಿ. ಇದು ಭವಿಷ್ಯದಲ್ಲಿ ನಮಗೆ ಉಪಯುಕ್ತವಾಗಲಿದೆ.
ಹೆಚ್ಚುವರಿ gcc ಆಯ್ಕೆಗಳು - ನೀವು ಹೆಚ್ಚುವರಿ ಕಂಪೈಲರ್ ಆಯ್ಕೆಗಳನ್ನು ಹೊಂದಿಸಬಹುದು. ಸದ್ಯಕ್ಕೆ ನಮಗೆ ಅದರ ಅಗತ್ಯವಿಲ್ಲ.
ಸಿಸ್ಟಮ್ ಕಾನ್ಫಿಗರೇಶನ್ ರಚಿಸಿದ ಸಿಸ್ಟಮ್ನ ಭವಿಷ್ಯದ ನಿಯತಾಂಕಗಳನ್ನು ಹೊಂದಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ:
ಶೀರ್ಷಿಕೆಯಿಂದ ಹೆಚ್ಚಿನ ಅಂಶಗಳು ಸ್ಪಷ್ಟವಾಗಿವೆ. ಕೆಳಗಿನ ಅಂಶಗಳಿಗೆ ಗಮನ ಕೊಡೋಣ:
ಬಳಕೆದಾರರ ಕೋಷ್ಟಕಗಳಿಗೆ ಮಾರ್ಗ - ರಚಿಸಬೇಕಾದ ಬಳಕೆದಾರರೊಂದಿಗೆ ಟೇಬಲ್ (
ಉದಾಹರಣೆ ಫೈಲ್. ಬಳಕೆದಾರ ಬಳಕೆದಾರರನ್ನು ಪಾಸ್ವರ್ಡ್ ನಿರ್ವಾಹಕರೊಂದಿಗೆ ರಚಿಸಲಾಗುತ್ತದೆ, ಸ್ವಯಂಚಾಲಿತವಾಗಿ gid/uid, /bin/sh ಶೆಲ್, ಡೀಫಾಲ್ಟ್ ಗುಂಪು ಬಳಕೆದಾರ, ಗುಂಪು ಸದಸ್ಯ ರೂಟ್, ಕಾಮೆಂಟ್ ಫೂ ಬಳಕೆದಾರ
[alexey@alexey-pc buildroot ]$ cat board/my_x86_board/users.txt
user -1 user -1 =admin /home/user /bin/sh root Foo user
ರೂಟ್ ಫೈಲ್ಸಿಸ್ಟಮ್ ಓವರ್ಲೇ ಡೈರೆಕ್ಟರಿಗಳು - ಜೋಡಿಸಲಾದ ಟಾರ್ಗೆಟ್-ಎಫ್ಎಸ್ನ ಮೇಲೆ ಡೈರೆಕ್ಟರಿಯನ್ನು ಅತಿಕ್ರಮಿಸಲಾಗಿದೆ. ಹೊಸ ಫೈಲ್ಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ ಮತ್ತು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಫೈಲ್ಗಳನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ.
ಫೈಲ್ಸಿಸ್ಟಮ್ ಇಮೇಜ್ಗಳನ್ನು ರಚಿಸುವ ಮೊದಲು ರನ್ ಮಾಡಲು ಕಸ್ಟಮ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು - ಫೈಲ್ಸಿಸ್ಟಮ್ ಅನ್ನು ಚಿತ್ರಗಳಾಗಿ ಮಡಿಸುವ ಮೊದಲು ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ತಕ್ಷಣವೇ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ. ಸದ್ಯಕ್ಕೆ ಸ್ಕ್ರಿಪ್ಟ್ ಖಾಲಿ ಬಿಡೋಣ.
ಕರ್ನಲ್ ವಿಭಾಗಕ್ಕೆ ಹೋಗೋಣ
ಕರ್ನಲ್ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಇಲ್ಲಿ ಹೊಂದಿಸಲಾಗಿದೆ. ಕರ್ನಲ್ ಅನ್ನು ಸ್ವತಃ make linux-menuconfig ಮೂಲಕ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿದೆ.
ನೀವು ಕರ್ನಲ್ ಆವೃತ್ತಿಯನ್ನು ವಿವಿಧ ರೀತಿಯಲ್ಲಿ ಹೊಂದಿಸಬಹುದು: ನೀಡಲಾದವುಗಳಿಂದ ಆಯ್ಕೆಮಾಡಿ, ಆವೃತ್ತಿಯನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ನಮೂದಿಸಿ, ರೆಪೊಸಿಟರಿ ಅಥವಾ ಸಿದ್ಧ-ತಯಾರಿಸಿದ ಟಾರ್ಬಾಲ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ.
ಕರ್ನಲ್ ಕಾನ್ಫಿಗರೇಶನ್ - ಕರ್ನಲ್ ಸಂರಚನೆಗೆ ಮಾರ್ಗ. ನೀವು ಲಿನಕ್ಸ್ನಿಂದ ಆಯ್ದ ಆರ್ಕಿಟೆಕ್ಚರ್ ಅಥವಾ defocnfig ಗಾಗಿ ಡೀಫಾಲ್ಟ್ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು. Linux ಮೂಲವು ವಿವಿಧ ಗುರಿ ವ್ಯವಸ್ಥೆಗಳಿಗಾಗಿ defconfigs ಅನ್ನು ಒಳಗೊಂಡಿದೆ. ನಿಮಗೆ ಬೇಕಾದುದನ್ನು ನೀವು ಕಾಣಬಹುದು
ಟಾರ್ಗೆಟ್ ಪ್ಯಾಕೇಜುಗಳ ವಿಭಾಗವು ನಿರ್ಮಿಸುತ್ತಿರುವ ಸಿಸ್ಟಂನಲ್ಲಿ ಯಾವ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಸ್ಥಾಪಿಸಲಾಗುವುದು ಎಂಬುದನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಸದ್ಯಕ್ಕೆ ಅದನ್ನು ಬದಲಾಯಿಸದೆ ಬಿಡೋಣ. ನಾವು ನಂತರ ಈ ಪಟ್ಟಿಗೆ ನಮ್ಮ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಸೇರಿಸುತ್ತೇವೆ.
ಫೈಲ್ಸಿಸ್ಟಮ್ ಚಿತ್ರಗಳು - ಸಂಗ್ರಹಿಸಲಾಗುವ ಫೈಲ್ ಸಿಸ್ಟಮ್ ಚಿತ್ರಗಳ ಪಟ್ಟಿ. ಐಸೊ ಚಿತ್ರವನ್ನು ಸೇರಿಸಿ
ಬೂಟ್ಲೋಡರ್ಗಳು - ಸಂಗ್ರಹಿಸಲು ಬೂಟ್ಲೋಡರ್ಗಳ ಆಯ್ಕೆ. ಐಸೊಲಿನಿಕ್ಸ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡೋಣ
Systemd ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗುತ್ತಿದೆ
Systemd ಕರ್ನಲ್ ಮತ್ತು glibc ಜೊತೆಗೆ Linux ನ ಸ್ತಂಭಗಳಲ್ಲಿ ಒಂದಾಗುತ್ತಿದೆ. ಆದ್ದರಿಂದ, ನಾನು ಅದರ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಪ್ರತ್ಯೇಕ ಐಟಂಗೆ ಸರಿಸಿದೆ.
Make menuconfig ಮೂಲಕ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿದೆ, ನಂತರ ಟಾರ್ಗೆಟ್ ಪ್ಯಾಕೇಜುಗಳು → System tools → systemd. ಸಿಸ್ಟಮ್ ಪ್ರಾರಂಭವಾದಾಗ ಯಾವ systemd ಸೇವೆಗಳನ್ನು ಸ್ಥಾಪಿಸಲಾಗುವುದು ಮತ್ತು ಪ್ರಾರಂಭಿಸಲಾಗುವುದು ಎಂಬುದನ್ನು ಇಲ್ಲಿ ನೀವು ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು.
ಸಿಸ್ಟಮ್ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಉಳಿಸಲಾಗುತ್ತಿದೆ
ನಾವು ಈ ಸಂರಚನೆಯನ್ನು KConfig ಮೂಲಕ ಉಳಿಸುತ್ತೇವೆ.
ನಂತರ ನಮ್ಮ defconfig ಅನ್ನು ಉಳಿಸಿ:
make savedefconfig
ಲಿನಕ್ಸ್ ಕರ್ನಲ್ ಕಾನ್ಫಿಗರೇಶನ್
ಲಿನಕ್ಸ್ ಕರ್ನಲ್ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಈ ಕೆಳಗಿನ ಆಜ್ಞೆಯೊಂದಿಗೆ ಆಹ್ವಾನಿಸಲಾಗಿದೆ:
make linux-menuconfig
ವರ್ಚುವಲ್ಬಾಕ್ಸ್ ವೀಡಿಯೊ ಕಾರ್ಡ್ಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸೋಣ
ವರ್ಚುವಲ್ಬಾಕ್ಸ್ ಅತಿಥಿ ಏಕೀಕರಣ ಬೆಂಬಲವನ್ನು ಸೇರಿಸೋಣ
ಉಳಿಸಿ ಮತ್ತು ನಿರ್ಗಮಿಸಿ. ಪ್ರಮುಖ: ಸಂರಚನೆಯನ್ನು output/build/linux-$version/config ನಲ್ಲಿ ಉಳಿಸಲಾಗುತ್ತದೆ, ಆದರೆ board/my_x86_board/linux.config ನಲ್ಲಿ ಅಲ್ಲ
ಆದ್ದರಿಂದ, ನೀವು ಸಂರಚನೆಯನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಶೇಖರಣಾ ಸ್ಥಳಕ್ಕೆ ನಕಲಿಸಬೇಕಾಗುತ್ತದೆ:
cp output/build/linux-4.19.25/.config board/my_x86_board/linux.config
ಅದರ ನಂತರ ನಾವು ಸಂಪೂರ್ಣ ಸಿಸ್ಟಮ್ನ ಸಂಪೂರ್ಣ ಮರುಜೋಡಣೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತೇವೆ. ಬಿಲ್ಡ್ರೂಟ್ ಈಗಾಗಲೇ ನಿರ್ಮಿಸಿರುವುದನ್ನು ಮರುನಿರ್ಮಾಣ ಮಾಡುವುದಿಲ್ಲ, ಮರುನಿರ್ಮಾಣಕ್ಕಾಗಿ ನೀವು ಕೈಯಾರೆ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬೇಕು. ಸಮಯ ಮತ್ತು ನರಗಳನ್ನು ವ್ಯರ್ಥ ಮಾಡದಿರಲು, ಸಣ್ಣ ವ್ಯವಸ್ಥೆಯನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಮರುನಿರ್ಮಾಣ ಮಾಡುವುದು ಸುಲಭ:
make clean;make
ನಿರ್ಮಾಣ ಪೂರ್ಣಗೊಂಡ ನಂತರ, CD ಯಿಂದ ಬೂಟ್ ಆಗುತ್ತಿರುವ VirtualBox (ಆವೃತ್ತಿ 5.2 ಮತ್ತು 6.0 ನಲ್ಲಿ ಪರೀಕ್ಷಿಸಲಾಗಿದೆ) ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ ಸಿಸ್ಟಮ್ ನಿಯತಾಂಕಗಳು:
ಜೋಡಿಸಲಾದ ಐಸೊದಿಂದ ರನ್ನಿಂಗ್:
ಬಳಸಿದ ವಸ್ತುಗಳ ಪಟ್ಟಿ
- ಬಿಲ್ಡ್ರೂಟ್ ಕೈಪಿಡಿ
ಮೂಲ: www.habr.com