Buildroot - ʻāpana 2. Ke hana ʻana i kāu hoʻonohonoho papa; me ka hoʻohana ʻana i ka lāʻau waho, rootfs-overlay, post-build scripts

Ma kēia ʻāpana ke nānā nei au i kekahi o nā koho hoʻoponopono i pono iaʻu. ʻAʻole kēia he papa inoa piha o nā mea a buildroot e hāʻawi ai, akā hana nui lākou a ʻaʻole koi i ke komo ʻana i nā faila o buildroot ponoʻī.

Ke hoʻohana nei i ka mīkini EXTERNAL no ka hana maʻamau

I ka ʻatikala i hala Ua nānā mākou i kahi hiʻohiʻona maʻalahi o ka hoʻohui ʻana i kāu hoʻonohonoho ponoʻī ma ka hoʻohui ʻana i ka defconfig o ka papa a me nā faila pono i ka papa kuhikuhi Buildroot.

Akā ʻaʻole maʻalahi kēia ʻano, ʻoi aku ka maikaʻi o ka hoʻonui ʻana i buildroot. Aia kahi hana e hoʻoponopono ai i kēia pilikia lāʻau waho. ʻO kona kumu, hiki iā ʻoe ke mālama i ka papa, configs, packages a me nā papa kuhikuhi ʻē aʻe i kahi papa kuhikuhi kaʻawale (no ka laʻana, hoʻohana wau i ka papa kuhikuhi patches e hoʻopili i nā patches i nā pūʻolo, nā kikoʻī hou aku ma kahi ʻāpana ʻokoʻa) a na buildroot ponoʻī e hoʻohui iā lākou i nā mea i loko. kona papa kuhikuhi.

Hoʻomaopopo: hiki iā ʻoe ke uhi i kekahi mau lāʻau waho i ka manawa hoʻokahi, aia kahi laʻana ma ka manual buildroot

E hana kāua i kahi papa kuhikuhi my_tree, aia ma ka ʻaoʻao o ka papa kuhikuhi buildroot a hoʻololi i kā mākou hoʻonohonoho ma laila. ʻO ka hoʻopuka ʻana e like me kēia ʻano faila:

[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

E like me kāu e ʻike ai, ma ke ʻano holoʻokoʻa ke hana hou nei ke ʻano i ke ʻano o buildroot.

papa kuhikuhi papa Loaʻa nā faila i kēlā me kēia papa i kā mākou hihia:

  • ʻO bef_cr_fs_img.sh kahi palapala e hoʻokō ʻia ma hope o ke kūkulu ʻana i ka ʻōnaehana faila i manaʻo ʻia, akā ma mua o ka hoʻopili ʻana i nā kiʻi. E hoʻohana mākou iā ia i ka wā e hiki mai ana
  • linux.config - hoʻonohonoho kernel
  • rootfs_overlay - ka papa kuhikuhi e uhi ai ma luna o ka ʻōnaehana faila
  • users.txt - he faila e wehewehe ana i nā mea hoʻohana e hana ʻia

papa kuhikuhi hoʻonohonoho aia ka defconfig o kā mākou papa. Hoʻokahi wale nō mākou.

pūʻolo - papa inoa me kā mākou pūʻolo. I ka wā mua, loaʻa i buildroot nā wehewehe a me nā lula no ke kūkulu ʻana i kahi helu palena o nā pūʻolo. Ma hope e hoʻohui mākou i ka icewm window manager a me ka Slim graphical login manager maanei.
Pāpale - hiki iā ʻoe ke mālama maʻalahi i kāu mau paʻi no nā pūʻolo like ʻole. Nā kikoʻī hou aku ma kahi ʻāpana ʻokoʻa ma lalo nei.
I kēia manawa pono mākou e hoʻohui i nā faila wehewehe no kā mākou lāʻau waho. Aia 3 mau faila ke kuleana no kēia: external.desc, Config.in, external.mk.

waho.desc aia ka wehewehe maoli:

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

ʻO ka laina mua ke poʻo inoa. I ka wā e hiki mai ana buildroot e hana i kahi loli $(BR2_EXTERNAL_MY_TREE_PATH), pono e hoʻohana i ka hoʻonohonoho ʻana i ka hui. No ka laʻana, hiki ke hoʻonohonoho i ke ala i ka faila mea hoʻohana penei:

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

ʻO ka laina ʻelua he wehewehe pōkole a hiki ke heluhelu ʻia e ke kanaka.

Config.in, waho.mk - nā faila e wehewehe i nā pūʻolo i hoʻohui ʻia. Inā ʻaʻole ʻoe e hoʻohui i kāu mau pūʻolo ponoʻī, a laila hiki ke waiho ʻia kēia mau faila. I kēia manawa, ʻo ia kā mākou e hana ai.
I kēia manawa ua mākaukau kā mākou lāʻau waho, aia ka defconfig o kā mākou papa a me nā faila e pono ai. E hele kāua i ka papa kuhikuhi buildroot a kuhikuhi e hoʻohana i waho-lāʻau:

[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

Ma ke kauoha mua mākou e hoʻohana i ka hoʻopaʻapaʻa BR2_EXTERNAL=../my_tree/, e hōʻike ana i ka hoʻohana ʻana i kahi lāʻau waho. Hiki iā ʻoe ke kuhikuhi i kekahi mau lāʻau-waho no ka hoʻohana ʻana i ka manawa like. I kēia hihia, pono ʻoe e hana i kēia i hoʻokahi manawa, a laila hana ʻia kahi faila output/.br-external.mk mālama i ka ʻike e pili ana i ka lāʻau waho i hoʻohana ʻia:

[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

Mea nui! ʻO nā ala ma kēia faila e paʻa loa!

Ua ʻike ʻia kahi mea koho waho ma ka papa kuhikuhi:

Buildroot - ʻāpana 2. Ke hana ʻana i kāu hoʻonohonoho papa; me ka hoʻohana ʻana i ka lāʻau waho, rootfs-overlay, post-build scripts

Aia kēia submenu i kā mākou pūʻolo mai kā mākou lāʻau waho. Ua nele kēia ʻāpana i kēia manawa.

ʻOi aku ka mea nui iā mākou e kākau hou i nā ala kūpono e hoʻohana ai i waho-lāʻau.

E ʻoluʻolu e hoʻomaopopo i nā koho Build → Kahi e mālama ai i ka pauku buildroot config, aia kahi ala pololei i ka defconfig i mālama ʻia. Hoʻokumu ʻia ia i ka manawa e wehewehe ai i ka hoʻohana ʻana o extgernal_tree.

E hoʻoponopono pū mākou i nā ala ma ka ʻāpana hoʻonohonoho System. No ka papaʻaina me nā mea hoʻohana i hana ʻia:

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

Ma ka ʻāpana Kernel, hoʻololi i ke ala i ka hoʻonohonoho kernel:

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

I kēia manawa e hoʻohana ʻia kā mākou mau faila mai kā mākou lāʻau waho i ka wā e hui ai. Ke neʻe nei i kahi papa kuhikuhi ʻē aʻe a i ʻole ka hoʻonui ʻana i ka buildroot, e loaʻa iā mākou nā pilikia liʻiliʻi.

Hoʻohui i ke kumu fs overlay:

Hāʻawi kēia ʻano hana iā ʻoe e hoʻohui a hoʻololi i nā faila i ka ʻōnaehana file target.
Inā aia ka faila ma ke kumu fs overlay, akā ʻaʻole i ka pahu hopu, a laila e hoʻohui ʻia
Inā aia ka faila ma ke kumu fs overlay a ma ka pahu hopu, a laila e pani ʻia.
ʻO ka mua, e hoʻonohonoho i ke ala i ke aʻa fs overlay dir. Hana ʻia kēia ma ka ʻōnaehana hoʻonohonoho → Root filesystem overlay directories section:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/

I kēia manawa e hana mākou i ʻelua faila.

[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

ʻO ka faila mua (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) e pani i ka faila /etc/hosts ma ka ʻōnaehana hoʻopau. E hoʻohui ʻia ka faila ʻelua (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt).

ʻOhi mākou a nānā:

Buildroot - ʻāpana 2. Ke hana ʻana i kāu hoʻonohonoho papa; me ka hoʻohana ʻana i ka lāʻau waho, rootfs-overlay, post-build scripts

Ka hoʻokō ʻana i nā palapala hana maʻamau i nā pae like ʻole o ka hui ʻōnaehana

Pono ʻoe e hana i kekahi mau hana i loko o ka ʻōnaehana file target ma mua o ka hoʻopili ʻia ʻana i nā kiʻi.

Hiki ke hana i kēia ma ka ʻāpana System configuration:

Buildroot - ʻāpana 2. Ke hana ʻana i kāu hoʻonohonoho papa; me ka hoʻohana ʻana i ka lāʻau waho, rootfs-overlay, post-build scripts

Hoʻokō ʻia nā palapala ʻelua ma hope o ke kūkulu ʻia ʻana o ka ʻōnaehana file target, akā ma mua o ka hoʻopili ʻia ʻana i nā kiʻi. ʻO ka ʻokoʻa, ua hoʻokō ʻia ka palapala fakeroot i ka pōʻaiapili o fakeroot, e hoʻohālikelike ana i ka hana ma ke ʻano he kumu hoʻohana.

Hoʻokō ʻia ka palapala hope ma hope o ka hana ʻana o nā kiʻi ʻōnaehana. Hiki iā ʻoe ke hana i nā hana hou i loko, no ka laʻana, kope i nā faila e pono ai i kahi kikowaena NFS a i ʻole e hana i kahi kiʻi o kāu polokalamu firmware.

Ma keʻano he laʻana, e hana wau i kahi palapala e kākau i ka mana a kūkulu i ka lā i /etc/.
E hōʻike mua wau i ke ala i kēia faila ma kaʻu lāʻau waho:

Buildroot - ʻāpana 2. Ke hana ʻana i kāu hoʻonohonoho papa; me ka hoʻohana ʻana i ka lāʻau waho, rootfs-overlay, post-build scripts

A i kēia manawa ka palapala ponoʻī:

[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

Ma hope o ka hui ʻana, hiki iā ʻoe ke ʻike i kēia faila ma ka ʻōnaehana.

I ka hoʻomaʻamaʻa, hiki ke lilo i mea nui. No laila, ma ka papahana maoli ua hele au i kahi ala ʻoi aku ka holomua:

  1. Ua hana au i kahi papa kuhikuhi (my_tree/board_my_x86_board/inside_fakeroot_scripts) i loko o nā palapala e hoʻokō ʻia, me nā helu serial. No ka laʻana, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
  2. Ua kākau wau i kahi palapala (my_tree/board_my_x86_board/run_inside_fakeroot.sh) e hele ana ma kēia papa kuhikuhi a hoʻokō i nā palapala i loko.
  3. Ua kuhikuhi ʻia kēia ʻatikala ma nā hoʻonohonoho papa ma ka hoʻonohonoho System -> Nā palapala maʻamau e holo i loko o ka ʻaoʻao fakeroot ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) ʻāpana

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka