Энэ хэсэгт би өөрт хэрэгтэй зарим тохируулгын сонголтыг авч үзэх болно. Энэ нь buildroot-ийн санал болгож буй зүйлсийн бүрэн жагсаалт биш боловч тэдгээр нь нэлээд ажиллагаатай бөгөөд buildroot файлуудад хөндлөнгийн оролцоо шаарддаггүй.
Тохируулгын ГАДААД механизмыг ашиглах
Гэхдээ энэ арга нь тийм ч тохиромжтой биш, ялангуяа Buildroot-ийг шинэчлэх үед. Энэ асуудлыг шийдэх механизм бий гадаад мод. Үүний мөн чанар нь та самбар, тохиргоо, багц болон бусад сангуудыг тусдаа санд хадгалах боломжтой (жишээ нь, би нөхөөсийг багцад хэрэглэхийн тулд засварын лавлахыг ашигладаг, илүү дэлгэрэнгүй мэдээллийг тусдаа хэсэгт ашигладаг) бөгөөд buildroot өөрөө тэдгээрийг дотор нь нэмэх болно. түүний лавлах.
Анхаарна уу: Та хэд хэдэн гаднах модыг нэгэн зэрэг давхарлаж болно, барилгын үндэс гарын авлагад жишээ бий
buildroot лавлахын хажууд байрлах 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
Таны харж байгаагаар ерөнхийдөө бүтэц нь Buildroot-ийн бүтцийг давтдаг.
Лавлах ТУЗ-ийн Манай тохиолдолд самбар тус бүрийн тусгай файлуудыг агуулдаг:
- bef_cr_fs_img.sh нь зорилтот файлын системийг бүтээсний дараа, гэхдээ үүнийг зураг болгон савлахаас өмнө гүйцэтгэх скрипт юм. Цаашид бид үүнийг ашиглах болно
- linux.config - цөмийн тохиргоо
- rootfs_overlay - зорилтот файлын системийн дээд талд давхарлах директор
- users.txt - үүсгэх хэрэглэгчдийг тодорхойлсон файл
Лавлах тохируулна Манай самбаруудын defconfig-г агуулдаг. Бидэнд ганц л байна.
Багц - манай багц бүхий каталог. Эхэндээ buildroot нь хязгаарлагдмал тооны багцуудыг бүтээх тайлбар, дүрмийг агуулдаг. Дараа нь бид icewm цонхны менежер болон Slim график нэвтрэх менежерийг энд нэмнэ.
Нүхэн — өөр өөр багцад зориулж засваруудаа хялбархан хадгалах боломжийг танд олгоно. Доорх тусдаа хэсэгт дэлгэрэнгүй мэдээлэл.
Одоо бид гадаад модны тайлбар файлуудыг нэмэх хэрэгтэй. Үүнийг хариуцах 3 файл байна: external.desc, Config.in, external.mk.
гадаад.dec бодит тайлбарыг агуулсан:
[alexey@alexey-pc my_tree]$ cat external.desc
name: my_tree
desc: My simple external-tree for article
Эхний мөр нь гарчиг юм. Ирээдүйд buildroot нь хувьсагч үүсгэнэ $(BR2_EXTERNAL_MY_MOD_PATH), угсралтыг тохируулахдаа ашиглах ёстой. Жишээлбэл, хэрэглэгчийн файлын замыг дараах байдлаар тохируулж болно.
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt
Хоёрдахь мөр нь хүний уншихад хялбар товч тайлбар юм.
Config.in, external.mk — нэмсэн багцуудыг тайлбарлах файлууд. Хэрэв та өөрийн багцуудыг нэмэхгүй бол эдгээр файлуудыг хоосон үлдээж болно. Одоохондоо бид үүнийг л хийх болно.
Одоо бид самбарын defconfig болон шаардлагатай файлуудыг агуулсан гадаад модоо бэлэн болголоо. Buildroot лавлах руу орж гадаад модыг ашиглахыг зааж өгье:
[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_ГАДААД=../миний_мод/, гадаад модыг ашиглаж байгааг илтгэнэ. Та нэгэн зэрэг ашиглахаар хэд хэдэн гадаад модыг зааж өгч болно. Энэ тохиолдолд та үүнийг зөвхөн нэг удаа хийхэд хангалттай бөгөөд үүний дараа гаралт/.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
Чухал! Энэ файлын замууд үнэмлэхүй байх болно!
Цэс дээр гадаад сонголтуудын зүйл гарч ирэв:
Энэ дэд цэс нь манай гадаад модноос багцуудыг агуулна. Энэ хэсэг одоогоор хоосон байна.
Одоо бид гадаад модыг ашиглахад шаардлагатай замыг дахин бичих нь илүү чухал юм.
Build options → Location to save buildroot config хэсэгт хадгалсан defconfig руу үнэмлэхүй зам байх болно гэдгийг анхаарна уу. Энэ нь гадаад_модны хэрэглээг зааж өгөх мөчид үүсдэг.
Бид мөн "Системийн тохиргоо" хэсэгт байгаа замыг засах болно. Үүсгэсэн хэрэглэгчидтэй хүснэгтийн хувьд:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt
Цөмийн хэсэгт цөмийн тохиргооны замыг өөрчил:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/linux.config
Одоо бидний гадаад модноос авсан файлуудыг угсрах явцад ашиглах болно. Өөр сан руу шилжих эсвэл Buildroot-г шинэчлэх үед бид хамгийн бага асуудалтай тулгарах болно.
Root fs давхаргыг нэмж байна:
Энэ механизм нь зорилтот файлын системд файл нэмэх/солих боломжийг танд олгоно.
Хэрэв файл нь root fs давхаргад байгаа боловч зорилтот хэсэгт байхгүй бол энэ нь нэмэгдэх болно
Хэрэв файл нь root fs overlay болон зорилтот хэсэгт байгаа бол түүнийг солих болно.
Эхлээд root fs overlay dir-ийн замыг тохируулъя. Үүнийг Системийн тохиргоо → Root файлын системийн давхаргын лавлах хэсэгт хийнэ:
$(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) нэмэгдэх болно.
Бид цуглуулж, шалгадаг:
Системийн угсралтын янз бүрийн үе шатанд тохируулгын скриптүүдийг гүйцэтгэх
Ихэнхдээ та зорилтот файлын системийг зураг болгон багцлахаас өмнө зарим ажлыг гүйцэтгэх хэрэгтэй.
Үүнийг Системийн тохиргооны хэсэгт хийж болно:
Эхний хоёр скрипт нь зорилтот файлын системийг бүтээсний дараа, гэхдээ үүнийг зураг болгон багцлахаас өмнө гүйцэтгэгддэг. Үүний ялгаа нь fakeroot скрипт нь fakeroot-ийн контекст дээр хийгддэг бөгөөд энэ нь үндсэн хэрэглэгчийн ажлыг дуурайлган хийдэг.
Сүүлийн скрипт нь системийн зургуудыг үүсгэсний дараа гүйцэтгэгдэнэ. Та үүн дээр нэмэлт үйлдлүүдийг хийж болно, жишээлбэл, шаардлагатай файлуудыг NFS сервер рүү хуулах эсвэл төхөөрөмжийнхөө програмын дүрсийг үүсгэх боломжтой.
Жишээлбэл, би хувилбарыг бичих скриптийг үүсгэж, огноог /etc/ руу оруулна.
Эхлээд би энэ файлын замыг гадаад мод дээрээ зааж өгөх болно:
Тэгээд одоо скрипт өөрөө:
[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
Угсарсны дараа та энэ файлыг систем дээр харж болно.
Практикт скрипт нь том болж болно. Тиймээс, бодит төсөлд би илүү дэвшилтэт замыг сонгосон:
- Би цувралын дугаартай, гүйцэтгэх скриптүүд байгаа лавлах (my_tree/board_my_x86_board/inside_fakeroot_scripts) үүсгэсэн. Жишээлбэл, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
- Би энэ лавлахаар дамждаг скрипт (my_tree/board_my_x86_board/run_inside_fakeroot.sh) бичсэн бөгөөд түүнд агуулагдсан скриптүүдийг дараалан гүйцэтгэдэг.
- Системийн тохиргоо -> Хуурамч орчинд ажиллах тусгай скриптүүд ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) хэсэгт энэ скриптийг самбарын тохиргоонд зааж өгсөн.
Эх сурвалж: www.habr.com