Dina bagian ieu kuring ningali sababaraha pilihan kustomisasi anu kuring peryogikeun. Ieu sanés daptar lengkep ngeunaan naon anu ditawarkeun buildroot, tapi aranjeunna cukup fungsional sareng henteu ngabutuhkeun campur tangan dina file buildroot sorangan.
Ngagunakeun mékanisme EXTERNAL pikeun kustomisasi
Tapi metoda ieu teu merenah pisan, utamana lamun ngamutahirkeun buildroot. Aya mékanisme pikeun ngajawab masalah ieu tangkal éksternal. Intina nyaéta anjeun tiasa nyimpen papan, konfigurasi, bungkusan sareng diréktori sanés dina diréktori anu misah (contona, kuring nganggo diréktori patch pikeun nerapkeun patches kana bungkusan, langkung rinci dina bagian anu misah) sareng buildroot sorangan bakal nambihanana kana anu aya dina. diréktori na.
Catetan: anjeun tiasa overlay sababaraha tangkal éksternal sakaligus, aya conto dina manual buildroot
Hayu urang nyieun diréktori my_tree, ayana di gigireun diréktori buildroot sarta mindahkeun konfigurasi urang dinya. Kaluaran kedah janten struktur file ieu:
[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
Sakumaha anjeun tiasa tingali, sacara umum struktur ngulang struktur buildroot.
pitunjuk papan ngandung file husus pikeun tiap dewan dina kasus urang:
- bef_cr_fs_img.sh nyaéta skrip anu bakal dieksekusi saatos ngawangun sistem file target, tapi sateuacan dibungkus kana gambar. Urang bakal ngagunakeun éta dina mangsa nu bakal datang
- linux.config - konfigurasi kernel
- rootfs_overlay - diréktori pikeun overlay dina luhureun sistem file target
- users.txt - file ngajéntrékeun pamaké nu bakal dijieun
pitunjuk configs ngandung defconfig tina papan kami. Urang ngan boga hiji.
paket - katalog sareng bungkusan kami. Mimitina, buildroot ngandung déskripsi sareng aturan pikeun ngawangun sajumlah bungkusan terbatas. Engké urang bakal nambahan manajer jandela icewm jeung manajer login grafis Slim dieu.
Patches - ngidinan Anjeun pikeun merenah nyimpen patch anjeun pikeun bungkusan béda. Langkung rinci dina bagian misah di handap.
Ayeuna urang kedah nambihan file déskripsi pikeun tangkal éksternal urang. Aya 3 file jawab ieu: external.desc, Config.in, external.mk.
jaba.desc ngandung pedaran sabenerna:
[alexey@alexey-pc my_tree]$ cat external.desc
name: my_tree
desc: My simple external-tree for article
Baris kahiji nyaéta judul. Dina buildroot hareup nyieun variabel $(BR2_EXTERNAL_MY_TREE_PATH), anu kedah dianggo nalika ngonpigurasikeun rakitan. Contona, jalur ka file pamaké bisa diatur kieu:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt
Baris kadua mangrupa pedaran pondok, bisa dibaca manusa.
Config.in, jaba.mk - file pikeun ngajelaskeun bungkusan tambahan. Upami anjeun henteu nambihan bungkusan anjeun nyalira, maka file ieu tiasa dikosongkeun. Pikeun ayeuna, éta anu bakal urang laksanakeun.
Ayeuna kami parantos siap-tangkal éksternal, ngandung defconfig dewan kami sareng file anu diperyogikeun. Hayu urang angkat ka diréktori buildroot sareng sebatkeun ngagunakeun tangkal éksternal:
[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
Dina paréntah kahiji kami nganggo argumen BR2_EXTERNAL=../my_tree/, nunjukkeun pamakéan hiji tangkal éksternal. Anjeun tiasa nangtukeun sababaraha éksternal-tangkal pikeun pamakéan dina waktos anu sareng. Dina hal ieu, anjeun ngan perlu ngalakukeun ieu sakali, sanggeus nu kaluaran file/.br-external.mk dijieun éta nyimpen inpormasi ngeunaan tangkal éksternal anu dianggo:
[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
Kadé! Jalur dina file ieu bakal mutlak!
Item pilihan éksternal parantos muncul dina ménu:
Submenu ieu bakal ngandung bungkusan kami tina tangkal éksternal kami. Bagian ieu ayeuna kosong.
Ayeuna éta leuwih penting pikeun urang nulis ulang jalur perlu ngagunakeun external-tangkal.
Punten dicatet yén dina Pilihan Ngawangun → Lokasi pikeun ngahemat bagian config buildroot, bakal aya jalur mutlak pikeun defconfig anu disimpen. Ieu kabentuk dina momen nangtukeun pamakéan extgernal_tree.
Urang ogé bakal ngabenerkeun jalur dina bagian konfigurasi System. Pikeun tabel kalawan pamaké dijieun:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt
Dina bagian Kernel, robih jalur kana konfigurasi kernel:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/linux.config
Ayeuna file kami tina tangkal éksternal kami bakal dianggo nalika ngarakit. Nalika ngalih ka diréktori sanés atanapi ngamutahirkeun buildroot, urang bakal ngagaduhan masalah minimal.
Nambahkeun overlay root fs:
Mékanisme ieu ngamungkinkeun anjeun gampang nambihan / ngagentos file dina sistem file target.
Upami filena aya dina overlay root fs, tapi henteu dina udagan, maka éta bakal ditambah
Upami filena aya dina overlay root fs sareng dina target, maka éta bakal diganti.
Kahiji, hayu urang nyetel jalur ka root fs overlay dir. Hal ieu dilakukeun dina konfigurasi Sistim → Root filesystem overlay bagian directories:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/
Ayeuna hayu urang nyieun dua file.
[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
File kahiji (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) bakal ngaganti file /etc/hosts dina sistem rengse. The file kadua (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) bakal ditambahkeun.
Kami ngumpulkeun sareng pariksa:
Palaksanaan skrip kustomisasi dina tahapan anu béda dina assembly sistem
Sering anjeun kedah ngalakukeun sababaraha padamelan di jero sistem file target sateuacan dibungkus kana gambar.
Ieu tiasa dilakukeun dina bagian Konfigurasi Sistem:
Dua naskah munggaran dieksekusi saatos sistem file target diwangun, tapi sateuacan dibungkus kana gambar. Bédana nyaéta skrip fakeroot dieksekusi dina kontéks fakeroot, anu nyontokeun damel salaku pangguna akar.
Skrip terakhir dieksekusi saatos gambar sistem didamel. Anjeun tiasa ngalakukeun tindakan tambahan di jerona, contona, nyalin file anu diperyogikeun ka server NFS atanapi ngadamel gambar firmware alat anjeun.
Salaku conto, kuring bakal nyiptakeun naskah anu bakal nyerat vérsi sareng ngawangun tanggal ka /etc/.
Mimiti kuring bakal nunjukkeun jalur ka file ieu dina tangkal éksternal kuring:
Sareng ayeuna naskahna sorangan:
[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
Saatos assembly, anjeun tiasa ningali file ieu dina sistem.
Dina prakna, naskah bisa jadi badag. Ku alatan éta, dina proyék nyata kuring nyandak jalur anu langkung maju:
- Kuring nyieun diréktori a (my_tree/board_my_x86_board/inside_fakeroot_scripts) nu aya naskah pikeun dieksekusi, kalawan nomer serial. Contona, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
- Kuring nulis naskah (my_tree/board_my_x86_board/run_inside_fakeroot.sh) nu ngaliwatan diréktori ieu sarta sequentially executes Aksara dikandung dina eta.
- Ditetepkeun Aksara ieu dina setélan dewan dina konfigurasi Sistim -> Aksara custom ngajalankeun jero lingkungan fakeroot ($(BR2_EXTERNAL_my_tree_PATH) / dewan / my_x86_board / run_inside_fakeroot.sh) bagian
sumber: www.habr.com