Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Pambuka

Ing seri artikel iki, aku pengin ndeleng sistem mbangun distribusi buildroot lan nuduhake pengalaman babagan ngatur. Bakal ana pengalaman praktis kanggo nggawe OS cilik kanthi antarmuka grafis lan fungsionalitas minimal.

Kaping pisanan, sampeyan ora kudu bingung sistem mbangun lan distribusi. Buildroot bisa mbangun sistem saka sakumpulan paket sing ditawakake. Buildroot dibangun ing makefiles lan mulane nduweni kemampuan kustomisasi sing gedhe banget. Ngganti paket karo versi liyane, nambah paket dhewe, ngganti aturan kanggo mbangun paket, ngatur sistem file sawise nginstal kabeh paket? buildroot bisa nindakake kabeh iki.

Ing Rusia, buildroot digunakake, nanging mratelakake panemume, ora ana informasi basa Rusia kanggo pamula.

Sasaran saka karya punika ngumpul kit distribusi karo download urip, icewm antarmuka lan browser. Platform target yaiku virtualbox.

Apa mbangun distribusi dhewe? Asring fungsi winates dibutuhake kanthi sumber daya sing winates. Malah luwih kerep ing otomatisasi sampeyan kudu nggawe perangkat kukuh. Ngadaptasi distribusi tujuan umum kanthi ngresiki paket sing ora perlu lan ngowahi dadi perangkat kukuh luwih akeh tenaga kerja tinimbang mbangun distribusi anyar. Nggunakake Gentoo uga duwe watesan.

Sistem Buildroot banget kuat, nanging ora bakal nindakake apa-apa kanggo sampeyan. Mung bisa ngaktifake lan ngotomatisasi proses perakitan.

Sistem mbangun alternatif (yocto, sistem mbangun mbukak lan liya-liyane) ora dianggep utawa dibandhingake.

Where kanggo njaluk lan carane miwiti

Situs web proyek - buildroot.org. Ing kene sampeyan bisa ndownload versi saiki lan maca manual. Ing kana sampeyan bisa ngubungi komunitas, ana bug tracker, mail-list lan saluran irc.

Buildroot ngoperasikake defconfig kanggo papan target bangunan kasebut. Defconfig minangka file konfigurasi sing mung nyimpen opsi sing ora duwe nilai standar. Dheweke sing nemtokake apa sing bakal diklumpukake lan kepiye carane. Ing kasus iki, sampeyan bisa ngatur konfigurasi saka busybox, linux-kernel, uglibc, u-boot lan barebox bootloader, nanging kabeh mau bakal disambungake menyang papan target.
Sawise mbongkar arsip sing diundhuh utawa kloning saka git, kita entuk buildroot sing siap digunakake. Sampeyan bisa maca liyane babagan struktur direktori ing manual; Aku bakal pitutur marang kowe bab sing paling penting:

Papan - direktori karo file tartamtu kanggo saben Papan. Iki bisa dadi skrip kanggo mbentuk gambar sistem (iso, sdcart, cpio lan liya-liyane), direktori overlay, konfigurasi kernel, lsp.
configs - defconfig nyata saka Papan. Defconfig minangka konfigurasi papan sing ora lengkap. Iku mung nyimpen paramèter sing beda-beda saka setelan gawan
dl — direktori karo kode sumber diundhuh / file kanggo perakitan
output / target - sistem file sing dirakit saka OS sing diasilake. Sabanjure, gambar digawe saka iku kanggo ngundhuh / instalasi
output / inang - utilitas inang kanggo perakitan
output / mbangun - paket dirakit

Déwan dikonfigurasi liwat KConfig. Sistem sing padha digunakake kanggo mbangun kernel Linux. Dhaptar perintah sing paling umum digunakake (eksekusi ing direktori buildroot):

  • nggawe menuconfig - nelpon konfigurasi mbangun. Sampeyan uga bisa nggunakake antarmuka grafis (gawe nconfig, nggawe xconfig, nggawe gconfig)
  • nggawe linux-menuconfig - nelpon konfigurasi kernel.
  • nggawe resik - ngresiki asil mbangun (kabeh disimpen ing output)
  • nggawe - mbangun sistem. Iki ora reassemble proses wis nglumpuk.
  • nggawe defconfig_name - ngalih konfigurasi menyang defconfig tartamtu
  • nggawe dhaptar-defconfigs - nuduhake dhaptar defconfigs
  • nggawe sumber - mung ngundhuh file instalasi, tanpa mbangun.
  • nggawe bantuan - dhaptar printah bisa

Cathetan penting lan tips sing migunani

Buildroot ora mbangun maneh paket sing wis dibangun! Mulane, bisa uga ana kahanan sing mbutuhake reassembly lengkap.

Sampeyan bisa mbangun maneh paket kapisah karo printah nggawe packagename-rebuild. Contone, sampeyan bisa mbangun maneh kernel Linux:

make linux-rebuild

Buildroot nyimpen status paket apa wae kanthi nggawe file .stamp ing direktori output/build/$packagename:

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Mulane, sampeyan bisa mbangun maneh root-fs lan gambar tanpa mbangun maneh paket:

rm output/build/host-gcc-final-*/.stamp_host_installed;rm -rf output/target;find output/ -name ".stamp_target_installed" |xargs rm -rf ; make

Variabel migunani

buildroot duwe set variabel kanggo konfigurasi gampang

  • $TOPDIR - direktori buildroot
  • $BASEDIR - direktori OUTPUT
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR - host fs, staging fs, target fs mbangun direktori.
  • $BUILD_DIR - direktori karo paket unpacked lan dibangun

Visualisasi

buildroot nduweni fitur visualisasi. Sampeyan bisa nggawe diagram dependensi, grafik wektu mbangun, lan grafik ukuran paket ing sistem pungkasan. Asil ana ing wangun file pdf (sampeyan bisa milih saka svn, png) ing output / direktori grafik.

Conto perintah visualisasi:

  • make graph-depends mbangun wit dependensi
  • make <pkg>-graph-depends mbangun wit dependensi kanggo paket tartamtu
  • BR2_GRAPH_OUT=png make graph-build wektu mbangun plot karo output PNG
  • make graph-size ukuran paket plot

Tulisan sing migunani

Ana subdirektori ing direktori buildroot migunani karo script migunani. Contone, ana skrip sing mriksa kabeneran deskripsi paket. Iki bisa uga migunani nalika nambah paket sampeyan dhewe (aku bakal nindakake iki mengko). File utils/readme.txt ngemot katrangan babagan skrip kasebut.

Ayo mbangun distribusi saham

Penting kanggo elinga yen kabeh operasi ditindakake atas jenenge pangguna biasa, dudu root.
Kabeh printah dieksekusi ing buildroot. Paket buildroot wis kalebu set konfigurasi kanggo akeh papan umum lan virtualisasi.

Ayo ndeleng dhaptar konfigurasi:

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Ngalih menyang qemu_x86_64_defconfig config

make qemu_x86_64_defconfig

Lan kita miwiti perakitan

make

Bangunan rampung kanthi sukses, deleng asil:

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Buildroot wis nyusun gambar sing bisa digunakake ing Qemu lan verifikasi manawa bisa digunakake.

qemu-system-x86_64 -kernel output/images/bzImage -hda    output/images/rootfs.ext2 -append "root=/dev/sda rw" -s -S

Asilé yaiku sistem sing mlaku ing qemu:

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Nggawe konfigurasi Papan dhewe

Nambahake File Papan

Ayo ndeleng dhaptar konfigurasi:

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Ing dhaptar kita ndeleng pc_x86_64_efi_defconfig. Kita bakal nggawe papan dhewe kanthi nyalin saka konfigurasi:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

Ayo langsung nggawe direktori papan kanggo nyimpen skrip, rootfs-overlay lan file liyane sing dibutuhake:

mkdir board/my_x86_board

Ngalih menyang defconfig iki:

make my_x86_board_defconfig

Mangkono, saiki config mbangun (disimpen ing .config ing ROOT direktori buildroot) cocog karo mesin target boot x86-64 warisan(bios).

Ayo nyalin konfigurasi linux-kernel (migunani mengko):

cp board/pc/linux.config board/my_x86_board/

Setelan paramèter mbangun liwat KConfig

Ayo miwiti persiyapan:

make menuconfig 

Jendhela KConfig bakal mbukak. Sampeyan bisa ngatur kanthi antarmuka grafis (nggawe nconfig, nggawe xconfig, nggawe gconfig):

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Kita mlebu ing bagean pisanan Pilihan Target. Ing kene sampeyan bisa milih arsitektur target sing bakal ditindakake.

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Opsi mbangun - ana macem-macem setelan mbangun ing kene. Sampeyan bisa nemtokake direktori kanthi kode sumber, jumlah benang mbangun, pangilon kanggo ndownload kode sumber lan setelan liyane. Ayo dadi ninggalake setelan ing gawan.

Toolchain - alat mbangun dhewe dikonfigurasi ing kene. Waca liyane babagan dheweke.

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Jinis toolchain - jinis toolchain sing digunakake. Iki bisa dadi toolchain sing dibangun ing buildroot utawa eksternal (sampeyan bisa nemtokake direktori karo sing wis dibangun utawa url kanggo diundhuh). Ana opsi tambahan kanggo arsitektur beda. Contone, kanggo lengen sampeyan mung bisa milih versi Linaro saka toolchain external.

perpustakaan C - pilihan saka perpustakaan C. Operasi saka kabeh sistem gumantung iki. Biasane, glibc digunakake, sing ndhukung kabeh fungsi sing bisa ditindakake. Nanging bisa uga gedhe banget kanggo sistem sing dipasang, mula uglibc utawa musl asring dipilih. Kita bakal milih glibc (iki bakal dibutuhake mengko kanggo nggunakake systemd).

Kernel Headers lan Custom Kernel Headers seri - kudu cocog karo versi kernel sing bakal ana ing sistem sing dirakit. Kanggo header kernel, sampeyan uga bisa nemtokake dalan menyang gudang tarball utawa git.

GCC COMPILER VERSIONS - pilih versi compiler sing bakal digunakake kanggo mbangun
Aktifake dhukungan C ++ - pilih mbangun kanthi dhukungan kanggo perpustakaan C ++ ing sistem. Iki bakal migunani kanggo kita ing mangsa ngarep.

Opsi gcc tambahan - sampeyan bisa nyetel opsi kompiler tambahan. Saiki kita ora butuh.

Konfigurasi sistem ngidini sampeyan nyetel paramèter ing mangsa ngarep saka sistem sing digawe:

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Sebagéan gedhé poin sing jelas saka judhul. Ayo menehi perhatian marang titik-titik ing ngisor iki:
Path menyang tabel pangguna - tabel karo pangguna sing bakal digawe (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

Tuladha file. Pangguna pangguna bakal digawe nganggo admin sandi, gid / uid kanthi otomatis, / bin / sh cangkang, pangguna grup standar, root anggota grup, pangguna komentar Foo

[alexey@alexey-pc buildroot ]$ cat board/my_x86_board/users.txt 
user -1 user -1 =admin /home/user /bin/sh root Foo user

Direktori overlay sistem file root - direktori dilapisi ing ndhuwur target-fs sing dirakit. Nambah file anyar lan ngganti sing wis ana.

Skrip khusus kanggo mbukak sadurunge nggawe gambar sistem file - Skrip dieksekusi langsung sadurunge lempitan sistem file dadi gambar. Ayo ninggalake script kosong kanggo saiki.

Ayo menyang bagean Kernel

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Setelan kernel disetel ing kene. Kernel dhewe dikonfigurasi liwat make linux-menuconfig.
Sampeyan bisa nyetel versi kernel kanthi macem-macem cara: pilih saka sing ditawakake, ketik versi kanthi manual, nemtokake repositori utawa tarball sing wis siap.

Konfigurasi kernel - path menyang konfigurasi kernel. Sampeyan bisa milih konfigurasi standar kanggo arsitektur sing dipilih utawa defocnfig saka Linux. Sumber Linux ngemot set defconfig kanggo sistem target sing beda. Sampeyan bisa nemokake sing sampeyan butuhake kanthi langsung ndeleng sumber ing kene. Contone, kanggo papan ireng balung beagle sampeyan bisa pilih config.

Bagean paket Target ngidini sampeyan milih paket sing bakal diinstal ing sistem sing dibangun. Ayo saiki ora owah. Kita bakal nambah paket kita menyang dhaptar iki mengko.
Gambar sistem file - dhaptar gambar sistem file sing bakal diklumpukake. Tambah gambar iso

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Bootloaders - pilihan saka bootloaders kanggo ngumpulake. Ayo milih isolinix

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Konfigurasi Systemd

Systemd dadi salah sawijining pilar Linux, bebarengan karo kernel lan glibc. Mulane, aku dipindhah setelan kanggo item kapisah.

Dikonfigurasi liwat make menuconfig, banjur Target paket → Alat sistem → systemd. Ing kene sampeyan bisa nemtokake layanan systemd sing bakal diinstal lan diwiwiti nalika sistem diwiwiti.

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Nyimpen konfigurasi sistem

Kita nyimpen konfigurasi iki liwat KConfig.

Banjur simpen defconfig kita:

make savedefconfig

Konfigurasi Kernel Linux

Konfigurasi kernel Linux dijaluk nganggo printah ing ngisor iki:

make linux-menuconfig

Ayo nambah dhukungan kanggo kertu video Virtualbox

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Ayo ditambahake dhukungan integrasi Tamu Virtualbox

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Simpen lan metu. PENTING: konfigurasi bakal disimpen ing output/build/linux-$version/config, nanging ora ing board/my_x86_board/linux.config

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Mulane, sampeyan kudu nyalin konfigurasi kanthi manual menyang lokasi panyimpenan:

cp output/build/linux-4.19.25/.config board/my_x86_board/linux.config

Sawise kita bakal nindakake reassembly lengkap kabeh sistem. buildroot ora mbangun maneh sing wis dibangun, sampeyan kudu nemtokake paket kanthi manual kanggo mbangun maneh. Supaya ora mbuwang wektu lan saraf, luwih gampang kanggo mbangun maneh sistem cilik kabeh):

make clean;make

Sawise rampung mbangun, bukak VirtualBox (dites ing versi 5.2 lan 6.0) boot saka CD. Parameter sistem:

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Mlaku saka iso dirakit:

Buildroot - part 1. Informasi umum, assembling sistem minimal, konfigurasi liwat menu

Dhaptar bahan sing digunakake

  1. Buildroot manual

Source: www.habr.com

Add a comment