ಬಿಲ್ಡ್ರೂಟ್ - ಭಾಗ 2. ನಿಮ್ಮ ಬೋರ್ಡ್ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ರಚಿಸುವುದು; ಬಾಹ್ಯ ಮರ, ರೂಟ್‌ಫ್ಸ್-ಓವರ್‌ಲೇ, ಪೋಸ್ಟ್-ಬಿಲ್ಡ್ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಬಳಸುವುದು

ಈ ವಿಭಾಗದಲ್ಲಿ ನಾನು ಅಗತ್ಯವಿರುವ ಕೆಲವು ಗ್ರಾಹಕೀಕರಣ ಆಯ್ಕೆಗಳನ್ನು ನೋಡುತ್ತೇನೆ. ಇದು ಬಿಲ್ಡ್‌ರೂಟ್ ಕೊಡುಗೆಗಳ ಸಂಪೂರ್ಣ ಪಟ್ಟಿ ಅಲ್ಲ, ಆದರೆ ಅವು ಸಾಕಷ್ಟು ಕ್ರಿಯಾತ್ಮಕವಾಗಿವೆ ಮತ್ತು ಬಿಲ್ಡ್‌ರೂಟ್‌ನ ಫೈಲ್‌ಗಳಲ್ಲಿ ಹಸ್ತಕ್ಷೇಪದ ಅಗತ್ಯವಿಲ್ಲ.

ಗ್ರಾಹಕೀಕರಣಕ್ಕಾಗಿ ಬಾಹ್ಯ ಕಾರ್ಯವಿಧಾನವನ್ನು ಬಳಸುವುದು

ಹಿಂದಿನ ಲೇಖನದಲ್ಲಿ ಬೋರ್ಡ್‌ನ defconfig ಮತ್ತು ಅಗತ್ಯ ಫೈಲ್‌ಗಳನ್ನು ನೇರವಾಗಿ ಬಿಲ್ಡ್‌ರೂಟ್ ಡೈರೆಕ್ಟರಿಗೆ ಸೇರಿಸುವ ಮೂಲಕ ನಿಮ್ಮ ಸ್ವಂತ ಸಂರಚನೆಯನ್ನು ಸೇರಿಸುವ ಸರಳ ಉದಾಹರಣೆಯನ್ನು ನಾವು ನೋಡಿದ್ದೇವೆ.

ಆದರೆ ಈ ವಿಧಾನವು ತುಂಬಾ ಅನುಕೂಲಕರವಾಗಿಲ್ಲ, ವಿಶೇಷವಾಗಿ ಬಿಲ್ಡ್ರೂಟ್ ಅನ್ನು ನವೀಕರಿಸುವಾಗ. ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಯಾಂತ್ರಿಕ ವ್ಯವಸ್ಥೆ ಇದೆ ಬಾಹ್ಯ ಮರ. ಇದರ ಸಾರಾಂಶವೆಂದರೆ ನೀವು ಬೋರ್ಡ್, ಕಾನ್ಫಿಗ್‌ಗಳು, ಪ್ಯಾಕೇಜುಗಳು ಮತ್ತು ಇತರ ಡೈರೆಕ್ಟರಿಗಳನ್ನು ಪ್ರತ್ಯೇಕ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಸಂಗ್ರಹಿಸಬಹುದು (ಉದಾಹರಣೆಗೆ, ಪ್ಯಾಚ್‌ಗಳಿಗೆ ಪ್ಯಾಚ್‌ಗಳನ್ನು ಅನ್ವಯಿಸಲು ನಾನು ಪ್ಯಾಚ್ ಡೈರೆಕ್ಟರಿಯನ್ನು ಬಳಸುತ್ತೇನೆ, ಪ್ರತ್ಯೇಕ ವಿಭಾಗದಲ್ಲಿ ಹೆಚ್ಚಿನ ವಿವರಗಳು) ಮತ್ತು ಬಿಲ್ಡ್‌ರೂಟ್ ಸ್ವತಃ ಅವುಗಳನ್ನು ಸೇರಿಸುತ್ತದೆ ಅದರ ಡೈರೆಕ್ಟರಿ.

ಗಮನಿಸಿ: ನೀವು ಏಕಕಾಲದಲ್ಲಿ ಹಲವಾರು ಬಾಹ್ಯ ಮರಗಳನ್ನು ಒವರ್ಲೆ ಮಾಡಬಹುದು, ಬಿಲ್ಡ್‌ರೂಟ್ ಕೈಪಿಡಿಯಲ್ಲಿ ಒಂದು ಉದಾಹರಣೆ ಇದೆ

ಬಿಲ್ಡ್‌ರೂಟ್ ಡೈರೆಕ್ಟರಿಯ ಪಕ್ಕದಲ್ಲಿರುವ my_tree ಡೈರೆಕ್ಟರಿಯನ್ನು ರಚಿಸೋಣ ಮತ್ತು ನಮ್ಮ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಅಲ್ಲಿಗೆ ವರ್ಗಾಯಿಸೋಣ. ಔಟ್ಪುಟ್ ಈ ಕೆಳಗಿನ ಫೈಲ್ ರಚನೆಯಾಗಿರಬೇಕು:

[alexey@alexey-pc my_tree]$ tree
.
├── board
│   └── my_x86_board
│       ├── bef_cr_fs_img.sh
│       ├── linux.config
│       ├── rootfs_overlay
│       └── users.txt
├── Config.in
├── configs
│   └── my_x86_board_defconfig
├── external.desc
├── external.mk
├── package
└── patches

6 directories, 7 files

ನೀವು ನೋಡುವಂತೆ, ಸಾಮಾನ್ಯವಾಗಿ ರಚನೆಯು ಬಿಲ್ಡ್ರೂಟ್ನ ರಚನೆಯನ್ನು ಪುನರಾವರ್ತಿಸುತ್ತದೆ.

ಡೈರೆಕ್ಟರಿ ಬೋರ್ಡ್ ನಮ್ಮ ಸಂದರ್ಭದಲ್ಲಿ ಪ್ರತಿ ಬೋರ್ಡ್‌ಗೆ ನಿರ್ದಿಷ್ಟವಾದ ಫೈಲ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ:

  • bef_cr_fs_img.sh ಎಂಬುದು ಒಂದು ಸ್ಕ್ರಿಪ್ಟ್ ಆಗಿದ್ದು, ಗುರಿಯ ಕಡತ ವ್ಯವಸ್ಥೆಯನ್ನು ನಿರ್ಮಿಸಿದ ನಂತರ ಅದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ, ಆದರೆ ಅದನ್ನು ಚಿತ್ರಗಳಾಗಿ ಪ್ಯಾಕೇಜಿಂಗ್ ಮಾಡುವ ಮೊದಲು. ನಾವು ಅದನ್ನು ಭವಿಷ್ಯದಲ್ಲಿ ಬಳಸುತ್ತೇವೆ
  • linux.config - ಕರ್ನಲ್ ಕಾನ್ಫಿಗರೇಶನ್
  • rootfs_overlay - ಟಾರ್ಗೆಟ್ ಫೈಲ್ ಸಿಸ್ಟಮ್‌ನ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಒವರ್ಲೇ ಮಾಡಲು ಡೈರೆಕ್ಟರಿ
  • user.txt - ರಚಿಸಬೇಕಾದ ಬಳಕೆದಾರರನ್ನು ವಿವರಿಸುವ ಫೈಲ್

ಡೈರೆಕ್ಟರಿ configs ನಮ್ಮ ಬೋರ್ಡ್‌ಗಳ defconfig ಅನ್ನು ಒಳಗೊಂಡಿದೆ. ನಮ್ಮಲ್ಲಿ ಒಂದೇ ಇದೆ.

ಪ್ಯಾಕೇಜ್ - ನಮ್ಮ ಪ್ಯಾಕೇಜುಗಳೊಂದಿಗೆ ಕ್ಯಾಟಲಾಗ್. ಆರಂಭದಲ್ಲಿ, ಬಿಲ್ಡ್‌ರೂಟ್ ಸೀಮಿತ ಸಂಖ್ಯೆಯ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಲು ವಿವರಣೆಗಳು ಮತ್ತು ನಿಯಮಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ನಂತರ ನಾವು icewm ವಿಂಡೋ ಮ್ಯಾನೇಜರ್ ಮತ್ತು ಸ್ಲಿಮ್ ಗ್ರಾಫಿಕಲ್ ಲಾಗಿನ್ ಮ್ಯಾನೇಜರ್ ಅನ್ನು ಇಲ್ಲಿ ಸೇರಿಸುತ್ತೇವೆ.
ಪ್ಯಾಚ್ಗಳು - ವಿಭಿನ್ನ ಪ್ಯಾಕೇಜ್‌ಗಳಿಗಾಗಿ ನಿಮ್ಮ ಪ್ಯಾಚ್‌ಗಳನ್ನು ಅನುಕೂಲಕರವಾಗಿ ಸಂಗ್ರಹಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಕೆಳಗಿನ ಪ್ರತ್ಯೇಕ ವಿಭಾಗದಲ್ಲಿ ಹೆಚ್ಚಿನ ವಿವರಗಳು.
ಈಗ ನಾವು ನಮ್ಮ ಬಾಹ್ಯ-ಮರಕ್ಕಾಗಿ ವಿವರಣೆ ಫೈಲ್‌ಗಳನ್ನು ಸೇರಿಸಬೇಕಾಗಿದೆ. ಇದಕ್ಕೆ ಜವಾಬ್ದಾರರಾಗಿರುವ 3 ಫೈಲ್‌ಗಳಿವೆ: external.desc, Config.in, external.mk.

external.desc ನಿಜವಾದ ವಿವರಣೆಯನ್ನು ಒಳಗೊಂಡಿದೆ:

[alexey@alexey-pc my_tree]$ cat external.desc 
name: my_tree
desc: My simple external-tree for article

ಮೊದಲ ಸಾಲು ಶೀರ್ಷಿಕೆಯಾಗಿದೆ. ಭವಿಷ್ಯದಲ್ಲಿ ಬಿಲ್ಡ್‌ರೂಟ್ ವೇರಿಯಬಲ್ ಅನ್ನು ರಚಿಸಿ $(BR2_EXTERNAL_MY_TREE_PATH), ಅಸೆಂಬ್ಲಿಯನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುವಾಗ ಇದನ್ನು ಬಳಸಬೇಕು. ಉದಾಹರಣೆಗೆ, ಬಳಕೆದಾರ ಫೈಲ್‌ಗೆ ಮಾರ್ಗವನ್ನು ಈ ಕೆಳಗಿನಂತೆ ಹೊಂದಿಸಬಹುದು:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt

ಎರಡನೆಯ ಸಾಲು ಚಿಕ್ಕದಾದ, ಮಾನವ-ಓದಬಲ್ಲ ವಿವರಣೆಯಾಗಿದೆ.

Config.in, external.mk — ಸೇರಿಸಿದ ಪ್ಯಾಕೇಜುಗಳನ್ನು ವಿವರಿಸಲು ಕಡತಗಳು. ನಿಮ್ಮ ಸ್ವಂತ ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ನೀವು ಸೇರಿಸದಿದ್ದರೆ, ಈ ಫೈಲ್‌ಗಳನ್ನು ಖಾಲಿ ಬಿಡಬಹುದು. ಸದ್ಯಕ್ಕೆ, ಅದನ್ನೇ ನಾವು ಮಾಡುತ್ತೇವೆ.
ಈಗ ನಾವು ನಮ್ಮ ಬಾಹ್ಯ-ಮರವನ್ನು ಸಿದ್ಧಪಡಿಸಿದ್ದೇವೆ, ನಮ್ಮ ಬೋರ್ಡ್‌ನ defconfig ಮತ್ತು ಅದಕ್ಕೆ ಅಗತ್ಯವಿರುವ ಫೈಲ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ನಾವು ಬಿಲ್ಡ್‌ರೂಟ್ ಡೈರೆಕ್ಟರಿಗೆ ಹೋಗೋಣ ಮತ್ತು ಬಾಹ್ಯ-ಮರವನ್ನು ಬಳಸಲು ಸೂಚಿಸೋಣ:

[alexey@alexey-pc buildroot]$ make BR2_EXTERNAL=../my_tree/ my_x86_board_defconfig
#
# configuration written to /home/alexey/dev/article/ramdisk/buildroot/.config
#
[alexey@alexey-pc buildroot]$ make menuconfig

ಮೊದಲ ಆಜ್ಞೆಯಲ್ಲಿ ನಾವು ಆರ್ಗ್ಯುಮೆಂಟ್ ಅನ್ನು ಬಳಸುತ್ತೇವೆ BR2_EXTERNAL=../my_tree/, ಬಾಹ್ಯ ಮರದ ಬಳಕೆಯನ್ನು ಸೂಚಿಸುತ್ತದೆ. ನೀವು ಒಂದೇ ಸಮಯದಲ್ಲಿ ಹಲವಾರು ಬಾಹ್ಯ-ಮರಗಳನ್ನು ಬಳಸಲು ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನೀವು ಇದನ್ನು ಒಮ್ಮೆ ಮಾತ್ರ ಮಾಡಬೇಕಾಗಿದೆ, ಅದರ ನಂತರ ಫೈಲ್ output/.br-external.mk ಅನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ ಬಳಸಿದ ಬಾಹ್ಯ ಮರದ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ:

[alexey@alexey-pc buildroot]$ cat output/.br-external.mk 
#
# Automatically generated file; DO NOT EDIT.
#

BR2_EXTERNAL ?= /home/alexey/dev/article/ramdisk/my_small_linux/my_tree
BR2_EXTERNAL_NAMES = 
BR2_EXTERNAL_DIRS = 
BR2_EXTERNAL_MKS = 

BR2_EXTERNAL_NAMES += my_tree
BR2_EXTERNAL_DIRS += /home/alexey/dev/article/ramdisk/my_small_linux/my_tree
BR2_EXTERNAL_MKS += /home/alexey/dev/article/ramdisk/my_small_linux/my_tree/external.mk
export BR2_EXTERNAL_my_tree_PATH = /home/alexey/dev/article/ramdisk/my_small_linux/my_tree
export BR2_EXTERNAL_my_tree_DESC = My simple external-tree for article

ಪ್ರಮುಖ! ಈ ಫೈಲ್‌ನಲ್ಲಿನ ಮಾರ್ಗಗಳು ಸಂಪೂರ್ಣವಾಗಿರುತ್ತವೆ!

ಮೆನುವಿನಲ್ಲಿ ಬಾಹ್ಯ ಆಯ್ಕೆಗಳ ಐಟಂ ಕಾಣಿಸಿಕೊಂಡಿದೆ:

ಬಿಲ್ಡ್ರೂಟ್ - ಭಾಗ 2. ನಿಮ್ಮ ಬೋರ್ಡ್ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ರಚಿಸುವುದು; ಬಾಹ್ಯ ಮರ, ರೂಟ್‌ಫ್ಸ್-ಓವರ್‌ಲೇ, ಪೋಸ್ಟ್-ಬಿಲ್ಡ್ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಬಳಸುವುದು

ಈ ಉಪಮೆನು ನಮ್ಮ ಬಾಹ್ಯ-ಮರದಿಂದ ನಮ್ಮ ಪ್ಯಾಕೇಜುಗಳನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಈ ವಿಭಾಗವು ಪ್ರಸ್ತುತ ಖಾಲಿಯಾಗಿದೆ.

ಬಾಹ್ಯ-ಮರವನ್ನು ಬಳಸಲು ಅಗತ್ಯವಾದ ಮಾರ್ಗಗಳನ್ನು ಪುನಃ ಬರೆಯುವುದು ನಮಗೆ ಈಗ ಹೆಚ್ಚು ಮುಖ್ಯವಾಗಿದೆ.

ಬಿಲ್ಡ್‌ರೂಟ್ ಕಾನ್ಫಿಗರೇಶನ್ ವಿಭಾಗದಲ್ಲಿ ಉಳಿಸಲು ಬಿಲ್ಡ್ ಆಯ್ಕೆಗಳು → ಸ್ಥಳ, ಉಳಿಸಿದ defconfig ಗೆ ಸಂಪೂರ್ಣ ಮಾರ್ಗವಿದೆ ಎಂಬುದನ್ನು ದಯವಿಟ್ಟು ಗಮನಿಸಿ. extgernal_tree ಬಳಕೆಯನ್ನು ಸೂಚಿಸುವ ಕ್ಷಣದಲ್ಲಿ ಇದು ರಚನೆಯಾಗುತ್ತದೆ.

ಸಿಸ್ಟಮ್ ಕಾನ್ಫಿಗರೇಶನ್ ವಿಭಾಗದಲ್ಲಿ ನಾವು ಮಾರ್ಗಗಳನ್ನು ಸರಿಪಡಿಸುತ್ತೇವೆ. ರಚಿಸಿದ ಬಳಕೆದಾರರೊಂದಿಗೆ ಟೇಬಲ್‌ಗಾಗಿ:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt

ಕರ್ನಲ್ ವಿಭಾಗದಲ್ಲಿ, ಕರ್ನಲ್ ಕಾನ್ಫಿಗರೇಶನ್‌ಗೆ ಮಾರ್ಗವನ್ನು ಬದಲಾಯಿಸಿ:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/linux.config

ಈಗ ನಮ್ಮ ಬಾಹ್ಯ-ಮರದಿಂದ ನಮ್ಮ ಫೈಲ್‌ಗಳನ್ನು ಅಸೆಂಬ್ಲಿ ಸಮಯದಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ. ಇನ್ನೊಂದು ಡೈರೆಕ್ಟರಿಗೆ ಹೋಗುವಾಗ ಅಥವಾ ಬಿಲ್ಡ್‌ರೂಟ್ ಅನ್ನು ನವೀಕರಿಸುವಾಗ, ನಮಗೆ ಕನಿಷ್ಠ ಸಮಸ್ಯೆಗಳಿರುತ್ತವೆ.

ರೂಟ್ ಎಫ್ಎಸ್ ಒವರ್ಲೇ ಸೇರಿಸಲಾಗುತ್ತಿದೆ:

ಗುರಿ ಕಡತ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ಕಡತಗಳನ್ನು ಸುಲಭವಾಗಿ ಸೇರಿಸಲು/ಬದಲಿಸಲು ಈ ಕಾರ್ಯವಿಧಾನವು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
ಫೈಲ್ ರೂಟ್ fs ಓವರ್‌ಲೇನಲ್ಲಿದ್ದರೆ, ಆದರೆ ಗುರಿಯಲ್ಲಿಲ್ಲದಿದ್ದರೆ, ಅದನ್ನು ಸೇರಿಸಲಾಗುತ್ತದೆ
ಫೈಲ್ ರೂಟ್ fs ಓವರ್‌ಲೇ ಮತ್ತು ಗುರಿಯಲ್ಲಿದ್ದರೆ, ಅದನ್ನು ಬದಲಾಯಿಸಲಾಗುತ್ತದೆ.
ಮೊದಲಿಗೆ, ರೂಟ್ ಎಫ್ಎಸ್ ಓವರ್ಲೇ ಡಿರ್ಗೆ ಮಾರ್ಗವನ್ನು ಹೊಂದಿಸೋಣ. ಇದನ್ನು ಸಿಸ್ಟಮ್ ಕಾನ್ಫಿಗರೇಶನ್ → ರೂಟ್ ಫೈಲ್‌ಸಿಸ್ಟಮ್ ಓವರ್‌ಲೇ ಡೈರೆಕ್ಟರಿಗಳ ವಿಭಾಗದಲ್ಲಿ ಮಾಡಲಾಗುತ್ತದೆ:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/

ಈಗ ಎರಡು ಫೈಲ್‌ಗಳನ್ನು ರಚಿಸೋಣ.

[alexey@alexey-pc my_small_linux]$ cat my_tree/board/my_x86_board/rootfs_overlay/etc/hosts 
127.0.0.1   localhost
127.0.1.1   my_small_linux
8.8.8.8     google-public-dns-a.google.com.
[alexey@alexey-pc my_small_linux]$ cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt 
This is new file from overlay

ಮೊದಲ ಫೈಲ್ (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) ಸಿದ್ಧಪಡಿಸಿದ ಸಿಸ್ಟಮ್‌ನಲ್ಲಿ /etc/hosts ಫೈಲ್ ಅನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ. ಎರಡನೇ ಫೈಲ್ (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) ಅನ್ನು ಸೇರಿಸಲಾಗುತ್ತದೆ.

ನಾವು ಸಂಗ್ರಹಿಸುತ್ತೇವೆ ಮತ್ತು ಪರಿಶೀಲಿಸುತ್ತೇವೆ:

ಬಿಲ್ಡ್ರೂಟ್ - ಭಾಗ 2. ನಿಮ್ಮ ಬೋರ್ಡ್ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ರಚಿಸುವುದು; ಬಾಹ್ಯ ಮರ, ರೂಟ್‌ಫ್ಸ್-ಓವರ್‌ಲೇ, ಪೋಸ್ಟ್-ಬಿಲ್ಡ್ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಬಳಸುವುದು

ಸಿಸ್ಟಮ್ ಜೋಡಣೆಯ ವಿವಿಧ ಹಂತಗಳಲ್ಲಿ ಗ್ರಾಹಕೀಕರಣ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆ

ಚಿತ್ರಗಳನ್ನು ಪ್ಯಾಕ್ ಮಾಡುವ ಮೊದಲು ನೀವು ಗುರಿ ಫೈಲ್ ಸಿಸ್ಟಮ್‌ನಲ್ಲಿ ಕೆಲವು ಕೆಲಸವನ್ನು ನಿರ್ವಹಿಸಬೇಕಾಗುತ್ತದೆ.

ಇದನ್ನು ಸಿಸ್ಟಮ್ ಕಾನ್ಫಿಗರೇಶನ್ ವಿಭಾಗದಲ್ಲಿ ಮಾಡಬಹುದು:

ಬಿಲ್ಡ್ರೂಟ್ - ಭಾಗ 2. ನಿಮ್ಮ ಬೋರ್ಡ್ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ರಚಿಸುವುದು; ಬಾಹ್ಯ ಮರ, ರೂಟ್‌ಫ್ಸ್-ಓವರ್‌ಲೇ, ಪೋಸ್ಟ್-ಬಿಲ್ಡ್ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಬಳಸುವುದು

ಮೊದಲ ಎರಡು ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಟಾರ್ಗೆಟ್ ಫೈಲ್ ಸಿಸ್ಟಮ್ ನಿರ್ಮಿಸಿದ ನಂತರ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ, ಆದರೆ ಅದನ್ನು ಚಿತ್ರಗಳಾಗಿ ಪ್ಯಾಕ್ ಮಾಡುವ ಮೊದಲು. ವ್ಯತ್ಯಾಸವೆಂದರೆ ಫೇಕ್‌ರೂಟ್ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಫೇಕ್‌ರೂಟ್ ಸಂದರ್ಭದಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ, ಇದು ಮೂಲ ಬಳಕೆದಾರರಂತೆ ಕೆಲಸವನ್ನು ಅನುಕರಿಸುತ್ತದೆ.

ಸಿಸ್ಟಮ್ ಇಮೇಜ್‌ಗಳನ್ನು ರಚಿಸಿದ ನಂತರ ಕೊನೆಯ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ. ನೀವು ಅದರಲ್ಲಿ ಹೆಚ್ಚುವರಿ ಕ್ರಿಯೆಗಳನ್ನು ಮಾಡಬಹುದು, ಉದಾಹರಣೆಗೆ, ಅಗತ್ಯ ಫೈಲ್‌ಗಳನ್ನು NFS ಸರ್ವರ್‌ಗೆ ನಕಲಿಸಿ ಅಥವಾ ನಿಮ್ಮ ಸಾಧನದ ಫರ್ಮ್‌ವೇರ್‌ನ ಚಿತ್ರವನ್ನು ರಚಿಸಿ.

ಉದಾಹರಣೆಯಾಗಿ, ನಾನು ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರಚಿಸುತ್ತೇನೆ ಅದು ಆವೃತ್ತಿಯನ್ನು ಬರೆಯುತ್ತದೆ ಮತ್ತು /etc/ ಗೆ ದಿನಾಂಕವನ್ನು ನಿರ್ಮಿಸುತ್ತದೆ.
ಮೊದಲು ನಾನು ಈ ಫೈಲ್‌ಗೆ ಮಾರ್ಗವನ್ನು ನನ್ನ ಬಾಹ್ಯ-ವೃಕ್ಷದಲ್ಲಿ ಸೂಚಿಸುತ್ತೇನೆ:

ಬಿಲ್ಡ್ರೂಟ್ - ಭಾಗ 2. ನಿಮ್ಮ ಬೋರ್ಡ್ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ರಚಿಸುವುದು; ಬಾಹ್ಯ ಮರ, ರೂಟ್‌ಫ್ಸ್-ಓವರ್‌ಲೇ, ಪೋಸ್ಟ್-ಬಿಲ್ಡ್ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಬಳಸುವುದು

ಮತ್ತು ಈಗ ಸ್ಕ್ರಿಪ್ಟ್ ಸ್ವತಃ:

[alexey@alexey-pc buildroot]$ cat ../my_tree/board/my_x86_board/bef_cr_fs_img.sh 
#!/bin/sh
echo "my small linux 1.0 pre alpha" > output/target/etc/mysmalllinux-release
date >> output/target/etc/mysmalllinux-release

ಜೋಡಣೆಯ ನಂತರ, ನೀವು ಈ ಫೈಲ್ ಅನ್ನು ಸಿಸ್ಟಮ್ನಲ್ಲಿ ನೋಡಬಹುದು.

ಪ್ರಾಯೋಗಿಕವಾಗಿ, ಸ್ಕ್ರಿಪ್ಟ್ ದೊಡ್ಡದಾಗಬಹುದು. ಆದ್ದರಿಂದ, ನಿಜವಾದ ಯೋಜನೆಯಲ್ಲಿ ನಾನು ಹೆಚ್ಚು ಸುಧಾರಿತ ಮಾರ್ಗವನ್ನು ತೆಗೆದುಕೊಂಡೆ:

  1. ನಾನು ಡೈರೆಕ್ಟರಿಯನ್ನು ರಚಿಸಿದ್ದೇನೆ (my_tree/board_my_x86_board/inside_fakeroot_scripts) ಇದರಲ್ಲಿ ಕ್ರಮಸಂಖ್ಯೆಗಳೊಂದಿಗೆ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಿವೆ. ಉದಾಹರಣೆಗೆ, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
  2. ನಾನು ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಬರೆದಿದ್ದೇನೆ (my_tree/board_my_x86_board/run_inside_fakeroot.sh) ಅದು ಈ ಡೈರೆಕ್ಟರಿಯ ಮೂಲಕ ಹಾದುಹೋಗುತ್ತದೆ ಮತ್ತು ಅದರಲ್ಲಿರುವ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳನ್ನು ಅನುಕ್ರಮವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ
  3. ಈ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಸಿಸ್ಟಂ ಕಾನ್ಫಿಗರೇಶನ್‌ನಲ್ಲಿನ ಬೋರ್ಡ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ -> ನಕಲಿ ಪರಿಸರದಲ್ಲಿ ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) ವಿಭಾಗದಲ್ಲಿ ರನ್ ಮಾಡಲು ಕಸ್ಟಮ್ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳು

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ