Buildroot - 2-р хэсэг. Самбарын тохиргоог бий болгох; гадаад мод, rootfs-overlay, post-build скриптүүдийг ашиглах

Энэ хэсэгт би өөрт хэрэгтэй зарим тохируулгын сонголтыг авч үзэх болно. Энэ нь buildroot-ийн санал болгож буй зүйлсийн бүрэн жагсаалт биш боловч тэдгээр нь нэлээд ажиллагаатай бөгөөд buildroot файлуудад хөндлөнгийн оролцоо шаарддаггүй.

Тохируулгын ГАДААД механизмыг ашиглах

Өмнөх нийтлэлд Бид самбарын defconfig болон шаардлагатай файлуудыг 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

Чухал! Энэ файлын замууд үнэмлэхүй байх болно!

Цэс дээр гадаад сонголтуудын зүйл гарч ирэв:

Buildroot - 2-р хэсэг. Самбарын тохиргоог бий болгох; гадаад мод, rootfs-overlay, post-build скриптүүдийг ашиглах

Энэ дэд цэс нь манай гадаад модноос багцуудыг агуулна. Энэ хэсэг одоогоор хоосон байна.

Одоо бид гадаад модыг ашиглахад шаардлагатай замыг дахин бичих нь илүү чухал юм.

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) нэмэгдэх болно.

Бид цуглуулж, шалгадаг:

Buildroot - 2-р хэсэг. Самбарын тохиргоог бий болгох; гадаад мод, rootfs-overlay, post-build скриптүүдийг ашиглах

Системийн угсралтын янз бүрийн үе шатанд тохируулгын скриптүүдийг гүйцэтгэх

Ихэнхдээ та зорилтот файлын системийг зураг болгон багцлахаас өмнө зарим ажлыг гүйцэтгэх хэрэгтэй.

Үүнийг Системийн тохиргооны хэсэгт хийж болно:

Buildroot - 2-р хэсэг. Самбарын тохиргоог бий болгох; гадаад мод, rootfs-overlay, post-build скриптүүдийг ашиглах

Эхний хоёр скрипт нь зорилтот файлын системийг бүтээсний дараа, гэхдээ үүнийг зураг болгон багцлахаас өмнө гүйцэтгэгддэг. Үүний ялгаа нь fakeroot скрипт нь fakeroot-ийн контекст дээр хийгддэг бөгөөд энэ нь үндсэн хэрэглэгчийн ажлыг дуурайлган хийдэг.

Сүүлийн скрипт нь системийн зургуудыг үүсгэсний дараа гүйцэтгэгдэнэ. Та үүн дээр нэмэлт үйлдлүүдийг хийж болно, жишээлбэл, шаардлагатай файлуудыг NFS сервер рүү хуулах эсвэл төхөөрөмжийнхөө програмын дүрсийг үүсгэх боломжтой.

Жишээлбэл, би хувилбарыг бичих скриптийг үүсгэж, огноог /etc/ руу оруулна.
Эхлээд би энэ файлын замыг гадаад мод дээрээ зааж өгөх болно:

Buildroot - 2-р хэсэг. Самбарын тохиргоог бий болгох; гадаад мод, rootfs-overlay, post-build скриптүүдийг ашиглах

Тэгээд одоо скрипт өөрөө:

[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

сэтгэгдэл нэмэх