ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅ΡΠΈΠΈ ΡΡΠ°ΡΠ΅ΠΉ Ρ Ρ ΠΎΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° buildroot ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΠΎΠΏΡΡΠΎΠΌ Π΅Ρ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ΄Π΅ΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠΏΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΠ‘ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΠΎΠΌ.
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΡΠ°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ². Buildroot ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ±ΡΠ°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ· Π½Π°Π±ΠΎΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π΅ΠΌΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ. Buildroot ΠΏΠΎΡΡΡΠΎΠ΅Π½ Π½Π° make-ΡΠ°ΠΉΠ»Π°Ρ ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠ°ΠΊΠ΅Ρ Π½Π° Π΄ΡΡΠ³ΡΡ Π²Π΅ΡΡΠΈΡ, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ, ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°, ΠΊΠ°ΡΡΠΎΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π²ΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²? ΠΡΡ ΡΡΠΎ ΡΠΌΠ΅Π΅Ρ buildroot.
Π Π ΠΎΡΡΠΈΠΈ buildroot ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, Π½ΠΎ Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΌΠ°Π»ΠΎ ΡΡΡΡΠΊΠΎΡΠ·ΡΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ².
Π¦Π΅Π»Ρ ΡΠ°Π±ΠΎΡΡ β ΡΠΎΠ±ΡΠ°ΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² Ρ live-Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ icewm ΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ. Π¦Π΅Π»Π΅Π²Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° β virtualbox.
ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²? ΠΠ°ΡΠ°ΡΡΡΡ Π½ΡΠΆΠ΅Π½ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΏΡΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ ΡΠ΅ΡΡΡΡΠ°Ρ . ΠΡΡ ΡΠ°ΡΠ΅ Π² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ. ΠΡΠΈΡΠΏΠΎΡΠ°Π±Π»ΠΈΠ²Π°ΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ² ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π²ΡΡΠΈΡΠ°Ρ Π»ΠΈΡΠ½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡ Π΅Π³ΠΎ Π² ΠΏΡΠΎΡΠΈΠ²ΠΊΡ ΠΏΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΄ΠΎΡΠΌΠΊΠΈΠΉ, ΡΠ΅ΠΌ ΡΠΎΠ±ΡΠ°ΡΡ Π½ΠΎΠ²ΡΠΉ Π΄ΠΈΡΡΡΠΈΠ±. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Gentoo ΡΠΎΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ.
Buildroot ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½Π°Ρ, Π½ΠΎ ΠΎΠ½Π° Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ΄Π΅Π»Π°Π΅Ρ Π·Π° Π²Π°Ρ. ΠΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈΡΡ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ.
ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ (yocto, open build system ΠΈ ΠΏΡΠΎΡΠΈΠ΅) Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΈ Π½Π΅ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΡΡ.
ΠΠ΄Π΅ Π²Π·ΡΡΡ ΠΈ ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ
Π‘Π°ΠΉΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° β
Buildroot ΠΎΠΏΠ΅ΡΠΈΡΡΠ΅Ρ defconfigβaΠΌΠΈ Π΄Π»Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°ΡΡ ΡΠ±ΠΎΡΠΊΠΈ. Defconfig β ΡΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ», Ρ
ΡΠ°Π½ΡΡΠΈΠΉ Π² ΡΠ΅Π±Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠΈΠΈ, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΡΠΎ ΠΈ ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ±ΡΠ°Π½ΠΎ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΠΈ busybox, linux-kernel, uglibc, Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠ² u-boot ΠΈ barebox, Π½ΠΎ Π²ΡΠ΅ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Ρ ΠΊ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°ΡΠ΅.
ΠΠΎΡΠ»Π΅ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΡΠΊΠ°ΡΠ°Π½Π½ΠΎΠ³ΠΎ Π°ΡΡ
ΠΈΠ²Π° ΠΈΠ»ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ· git ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΊ ΡΠ°Π±ΠΎΡΠ΅ buildroot. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎ ΡΡΡΡΠΊΡΡΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π² ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅, ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ ΡΠ°ΠΌΡΡ
Π²Π°ΠΆΠ½ΡΡ
:
board β ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΌΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ»Π°ΡΡ. ΠΡΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΊΡΠΈΠΏΡΡ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ(iso, sdcart, cpio ΠΈ ΠΏΡΠΎΡΠΈΠ΅), ΠΊΠ°ΡΠ°Π»ΠΎΠ³ overlay, ΠΊΠΎΠ½ΡΠΈΠ³ ΡΠ΄Π΅Ρ ΠΈ ΠΏΡΠΎΡΠ΅Π΅
configs β ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ defconfig ΠΏΠ»Π°ΡΡ. Defconfig β ΡΡΠΎ Π½Π΅ΠΏΠΎΠ»Π½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠ»Π°ΡΡ. Π Π½Π΅ΠΌ Ρ
ΡΠ°Π½ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ»ΠΈΡΠ½ΡΠ΅ ΠΎΡ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΡ
Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ
dl β ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠΎ ΡΠΊΠ°ΡΠ°Π½Π½ΡΠΌΠΈ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌΠΈ ΠΊΠΎΠ΄Π°ΠΌΠΈ/ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ
output/target β ΡΠΎΠ±ΡΠ°Π½Π½Π°Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΠ‘. Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΈΠ· Π½Π΅Π΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΎΠ±ΡΠ°Π·Ρ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ/ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ
output/host β host-ΡΡΠΈΠ»ΠΈΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ
output/build β ΡΠΎΠ±ΡΠ°Π½Π½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ±ΠΎΡΠΊΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· KConfig. ΠΡΠ° ΠΆΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΄ΡΠ° linux. Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΌΡΡ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ (Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ buildroot):
- make menuconfig β Π²ΡΠ·Π²Π°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΡΠ±ΠΎΡΠΊΠΈ. Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (make nconfig,make xconfig,make gconfig)
- make linux-menuconfig β Π²ΡΠ·Π²Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ΄ΡΠ°.
- make clean β ΠΎΡΠΈΡΡΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ±ΠΎΡΠΊΠΈ (Π²ΡΡ ΡΡΠΎ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² output)
- make β ΡΠΎΠ±ΡΠ°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡΠΈ ΡΡΠΎΠΌ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΠ° ΡΠΆΠ΅ ΡΠΎΠ±ΡΠ°Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²
- make defconfig_name β ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ defconfig
- make list-defconfigs β ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ defconfigβΠΎΠ²
- make source β ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ°ΡΠ°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ»Ρ, Π±Π΅Π· ΡΠ±ΠΎΡΠΊΠΈ.
- make help β Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ°ΠΆΠ½ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΠΎΠ²Π΅ΡΡ
Buildroot Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΡΠΆΠ΅ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ! ΠΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΠ°.
ΠΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΡΠ°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ make packagename-rebuild. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΡΠ°ΡΡ ΡΠ΄ΡΠΎ linux:
make linux-rebuild
Buildroot Ρ ΡΠ°Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ .stamp-ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ output/build/$packagename:
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΡΠ°ΡΡ root-fs ΠΈ ΠΎΠ±ΡΠ°Π·Ρ Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²:
rm output/build/host-gcc-final-*/.stamp_host_installed;rm -rf output/target;find output/ -name ".stamp_target_installed" |xargs rm -rf ; make
ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
Π buildroot Π΅ΡΡΡ Π½Π°Π±ΠΎΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- $TOPDIR β ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ buildroot
- $BASEDIR β ΠΊΠ°ΡΠ°Π»ΠΎΠ³ OUTPUT
- $HOST_DIR, $STAGING_DIR, $TARGET_DIR β ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΡΠ±ΠΎΡΠΊΠΈ host fs, staging fs, target fs.
- $BUILD_DIR β ΠΊΠ°ΡΠ°Π»ΠΎΠ³ c ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΈ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ
ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
Π buildroot Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΡ Π΅ΠΌΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π³ΡΠ°ΡΠΈΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ±ΠΎΡΠΊΠΈ, Π³ΡΠ°ΡΠΈΠΊ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² Π²ΠΈΠ΄Π΅ pdf ΡΠ°ΠΉΠ»ΠΎΠ²( Π½Π° Π²ΡΠ±ΠΎΡ Π΅ΡΡΡ svn,png) Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ output/graph.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ:
make graph-depends
ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π΄Π΅ΡΠ΅Π²ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉmake <pkg>-graph-depends
ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π΄Π΅ΡΠ΅Π²ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°BR2_GRAPH_OUT=png make graph-build
ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π³ΡΠ°ΡΠΈΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ±ΠΎΡΠΊΠΈ Ρ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ Π² PNGmake graph-size
ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π³ΡΠ°ΡΠΈΠΊ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²
ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ
Π ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ buildroot Π΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ utils c ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ ΡΠΊΡΠΈΠΏΡΠ°ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΌ Π΅ΡΡΡ ΡΠΊΡΠΈΠΏΡ, ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠΈΠΉ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ²ΠΎΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² (Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Ρ ΠΏΠΎΠ·ΠΆΠ΅). Π ΡΠ°ΠΉΠ»Π΅ utils/readme.txt Π΅ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ².
Π‘ΠΎΠ±Π΅ΡΠ΅ΠΌ cΡΠΎΠΊΠΎΠ²ΡΠΉ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²
ΠΠ°ΠΆΠ½ΠΎ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²Π΅Π΄ΡΡΡΡ ΠΎΡ Π»ΠΈΡΠ° ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π½Π΅ root.
ΠΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΊΠΎΡΠ½Π΅ buildroot. Π ΠΏΠΎΡΡΠ°Π²ΠΊΠ΅ buildroot ΡΠΆΠ΅ Π΅ΡΡΡ Π½Π°Π±ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ ΠΏΠΎΠ΄ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΠ΅ ΠΏΠ»Π°ΡΡ ΠΈ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ.
Π‘ΠΌΠΎΡΡΠΈΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ:
ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ qemu_x86_64_defconfig
make qemu_x86_64_defconfig
Π Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ±ΠΎΡΠΊΡ
make
Π‘Π±ΠΎΡΠΊΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ:
Buildroot ΡΠΎΠ±ΡΠ°Π» ΠΎΠ±ΡΠ°Π·Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π² Qemu ΠΈ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
qemu-system-x86_64 -kernel output/images/bzImage -hda output/images/rootfs.ext2 -append "root=/dev/sda rw" -s -S
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ β Π·Π°ΠΏΡΡΠ΅Π½Π½Π°Ρ Π² qemu ΡΠΈΡΡΠ΅ΠΌΠ°:
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΏΠ»Π°ΡΡ
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠ»Π°ΡΡ
Π‘ΠΌΠΎΡΡΠΈΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ:
Π ΡΠΏΠΈΡΠΊΠ΅ Π²ΠΈΠ΄ΠΈΠΌ pc_x86_64_efi_defconfig. ΠΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ²ΠΎΡ ΠΏΠ»Π°ΡΡ, ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π² Π΅Ρ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ:
cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig
Π‘ΡΠ°Π·Ρ ΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΏΠ»Π°ΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ²ΠΎΠΈΡ ΡΠΊΡΠΈΠΏΡΠΎΠ², rootfs-overlay ΠΈ ΠΏΡΠΎΡΠΈΡ Π½ΡΠΆΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²:
mkdir board/my_x86_board
ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ Π½Π° ΡΡΠΎΡ defconfig:
make my_x86_board_defconfig
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ΅ΠΏΠ΅ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ ΡΠ±ΠΎΡΠΊΠΈ (Ρ ΡΠ°Π½ΠΈΡΡΡ Π² .config Π² ΠΊΠΎΡΠ½Π΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° buildrootβΠ°) ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ x86-64 legacy(bios) Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ.
Π‘ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ linux-kernel (ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ):
cp board/pc/linux.config board/my_x86_board/
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠ΅Π· KConfig
ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΡ:
make menuconfig
ΠΡΠΊΡΠΎΠ΅ΡΡΡ ΠΎΠΊΠ½ΠΎ KConfig. ΠΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ (make nconfig, make xconfig, make gconfig):
ΠΡ ΠΎΠ΄ΠΈΠΌ Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π·Π΄Π΅Π» Target Options. ΠΠ΄Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΡΠ΅Π»Π΅Π²ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, ΠΏΠΎΠ΄ ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΡΠΈΡΡ ΡΠ±ΠΎΡΠΊΠ°.
Build options β Π·Π΄Π΅ΡΡ Π΅ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ±ΠΎΡΠΊΠΈ. ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ ΠΊΠΎΠ΄Π°ΠΌΠΈ, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ, Π·Π΅ΡΠΊΠ°Π»Π° Π΄Π»Ρ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΊΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΡΠΎΡΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. ΠΡΡΠ°Π²ΠΈΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Toolchain β Π·Π΄Π΅ΡΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΡΠ±ΠΎΡΠΊΠΈ. Π Π½Π΅ΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅.
Toolchain type β ΡΠΈΠΏ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΡΠ»ΡΠ΅ΠΉΠ½Π°. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π² buildroot ΠΈΠ»ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΡΠ»ΡΠ΅ΠΉΠ½ (ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ ΡΠΆΠ΅ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΌ ΠΈΠ»ΠΈ url Π΄Π»Ρ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ). ΠΠ»Ρ ΡΠ°Π·Π½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡ Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ arm ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π²ΡΠ±ΡΠ°ΡΡ Π²Π΅ΡΡΠΈΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΡΠ»ΡΠ΅ΠΉΠ½Π° Linaro.
C library β Π²ΡΠ±ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘. ΠΡ ΡΡΠΎΠ³ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΡΠ°Π±ΠΎΡΠ° Π²ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ glibc, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ°Ρ Π²Π΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π». ΠΠΎ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠΉ Π΄Π»Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°ΡΡΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡ uglibc ΠΈΠ»ΠΈ musl. ΠΡ Π²ΡΠ±Π΅ΡΠ΅ΠΌ glibc (Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ systemd).
Kernel Headers ΠΈ Custom Kernel Headers series β Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ ΡΠ΄ΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ Π² ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ»Ρ kernel headers ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΡΡ ΠΊ ΡΠ°ΡΠ±ΠΎΠ»Ρ ΠΈΠ»ΠΈ git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
GCC COMPILER VERSIONS β Π²ΡΠ±ΠΎΡ Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ
Enable C++ support β Π²ΡΠ±Π΅ΡΠ΅ΠΌ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ c++ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅. Π Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π½Π°ΠΌ ΡΡΠΎ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ.
Additional gcc options β ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°. ΠΠ°ΠΌ Π±Π΅Π· Π½Π°Π΄ΠΎΠ±Π½ΠΎΡΡΠΈ ΠΏΠΎΠΊΠ° ΡΡΠΎ.
System configuration ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Π΄Π°ΡΡ Π±ΡΠ΄ΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ:
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠ½ΠΊΡΠΎΠ² ΠΏΠΎΠ½ΡΡΠ½Ρ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ. ΠΠ±ΡΠ°ΡΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠ½ΠΊΡΡ:
Path to the users tables β ΡΠ°Π±Π»ΠΈΡΠ° Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ (
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°. ΠΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ user Ρ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ admin, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ gid/uid, /bin/sh ΡΠ΅Π»Π»ΠΎΠΌ, Π³ΡΡΠΏΠΏΠΎΠΉ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ user, ΡΠ»Π΅Π½ Π³ΡΡΠΏΠΏΡ root, ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΌ Foo user
[alexey@alexey-pc buildroot ]$ cat board/my_x86_board/users.txt
user -1 user -1 =admin /home/user /bin/sh root Foo user
Root filesystem overlay directories β ΠΊΠ°ΡΠ°Π»ΠΎΠ³, Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΏΠΎΠ²Π΅ΡΡ ΡΠΎΠ±ΡΠ°Π½Π½ΠΎΠΉ target-fs. ΠΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π½ΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΠΌΠ΅ΡΡΠΈΠ΅ΡΡ.
Custom scripts to run before creating filesystem images β Π‘ΠΊΡΠΈΠΏΡΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΠΎΠ±ΡΠ°Π·Ρ. Π‘Π°ΠΌ ΡΠΊΡΠΈΠΏΡ ΠΏΠΎΠΊΠ° ΠΎΡΡΠ°Π²ΠΈΠΌ ΠΏΡΡΡΡΠΌ
ΠΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ Π² ΡΠ°Π·Π΄Π΅Π» Kernel
ΠΠ΄Π΅ΡΡ Π·Π°Π΄Π°ΡΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΄ΡΠ°. Π‘Π°ΠΌΠΎ ΡΠ΄ΡΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· make linux-menuconfig.
ΠΠ°Π΄Π°ΡΡ Π²Π΅ΡΡΠΈΡ ΡΠ΄ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ: Π²ΡΠ±ΡΠ°ΡΡ ΠΈΠ· ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
, Π²Π²Π΅ΡΡΠΈ Π²Π΅ΡΡΠΈΡ Π²ΡΡΡΠ½ΡΡ, ΡΠΊΠ°Π·Π°ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈΠ»ΠΈ Π³ΠΎΡΠΎΠ²ΡΠΉ tarball.
Kernel configuration β ΠΏΡΡΡ ΠΊ ΠΊΠΎΠ½ΡΠΈΠ³Ρ ΡΠ΄ΡΠ°. ΠΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈΠ»ΠΈ defocnfig ΠΈΠ· Linux. Π ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠ°Ρ
Linux Π΅ΡΡΡ Π½Π°Π±ΠΎΡ defconfigβΠΎΠ² Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
ΡΠ΅Π»Π΅Π²ΡΡ
ΡΠΈΡΡΠ΅ΠΌ. ΠΠΠΉΡΠΈ Π½ΡΠΆΠ½ΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ,
Π Π°Π·Π΄Π΅Π» Target packages ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ±ΡΠ°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π±ΡΠ΄ΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π² ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΠΊΠ° ΠΎΡΡΠ°Π²ΠΈΠΌ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΠΎΠ·ΠΆΠ΅ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ²ΠΎΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ Π² ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ.
Filesystem images β ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ
ΡΠΈΡΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠΎΠ±ΡΠ°Π½Ρ. ΠΠΎΠ±Π°Π²ΠΈΠΌ iso-ΠΎΠ±ΡΠ°Π·
Bootloaders β Π²ΡΠ±ΠΎΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠ². ΠΡΠ±Π΅ΡΠ΅ΠΌ isolinix
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Systemd
Systemd ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΡΠΎΠ»Π±ΠΎΠ² linux, Π½Π°ΡΠ°Π²Π½Π΅ Ρ kernel ΠΈ glibc. ΠΠΎΡΡΠΎΠΌΡ Π²ΡΠ½Π΅Ρ Π΅Π³ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΡΠ½ΠΊΡ.
ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· make menuconfig, Π΄Π°Π»Π΅Π΅ Target packages β System tools β systemd. ΠΠ΄Π΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ»ΡΠΆΠ±Ρ systemd Π±ΡΠ΄ΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ ΠΈ Π·Π°ΠΏΡΡΠ΅Π½Ρ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ.
Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ
Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΡΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ ΡΠ΅ΡΠ΅Π· KConfig.
ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΠΌ Π½Π°Ρ defconfig:
make savedefconfig
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΄ΡΠ° Linux
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΄ΡΠ° linux Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
make linux-menuconfig
ΠΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°ΡΡΡ Virtualbox
ΠΠΎΠ±Π°Π²ΠΈΠΌ Virtualbox Guest integration support
Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΠΈ Π²ΡΡ ΠΎΠ΄ΠΈΠΌ. ΠΠΠΠΠ: ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡΡ Π² output/build/linux-$version/config, Π½ΠΎ Π½Π΅ Π² board/my_x86_board/linux.config
ΠΠΎΡΡΠΎΠΌΡ Π½ΡΠΆΠ½ΠΎ Π²ΡΡΡΠ½ΡΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ Π² ΠΌΠ΅ΡΡΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ:
cp output/build/linux-4.19.25/.config board/my_x86_board/linux.config
ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ ΠΏΠΎΠ»Π½ΡΡ ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΡ Π²ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.Π’.ΠΊ. buildroot Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΡΠΆΠ΅ ΡΠΎΠ±ΡΠ°Π½Π½ΠΎΠ΅, ΡΠΎ Π½Π°Π΄ΠΎ Π²ΡΡΡΠ½ΡΡ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΠΈ. Π§ΡΠΎΠ±Ρ Π½Π΅ ΡΠ΅ΡΡΡΡ Π²ΡΠ΅ΠΌΡ ΠΈ Π½Π΅ΡΠ²Ρ, Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΎΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΡΠ°ΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ):
make clean;make
ΠΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ VirtualBox(ΠΏΡΠΎΠ²Π΅ΡΡΠ»ΠΎΡΡ Π½Π° Π²Π΅ΡΡΠΈΠΈ 5.2 ΠΈ 6.0) Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ Ρ cd-Π΄ΠΈΡΠΊΠ°.ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ:
ΠΠ°ΠΏΡΡΠΊ Ρ ΡΠΎΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ iso:
Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ²
- Buildroot manual
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com