Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Кіріспе

Осы мақалалар топтамасында мен buildroot дистрибутивінің құрастыру жүйесін қарап шығып, оны теңшеудегі тәжірибеммен бөліскім келеді. Графикалық интерфейсі және минималды функционалдығы бар шағын ОЖ құрудың практикалық тәжірибесі болады.

Ең алдымен, құрастыру жүйесін таратумен шатастырмаңыз. Buildroot жүйесі оған ұсынылған пакеттер жиынтығынан жүйе құра алады. Buildroot жасау файлдарына құрылған, сондықтан көптеген теңшеу опциялары бар. Буманы басқа нұсқамен ауыстырыңыз, өз бумаңызды қосыңыз, буманы құру ережелерін өзгертіңіз, барлық пакеттерді орнатқаннан кейін файлдық жүйені теңшеңіз? Мұның бәрі тамыр жасай алады.

Ресейде buildroot қолданылады, бірақ менің ойымша, жаңадан бастаушылар үшін орыс тіліндегі ақпарат аз.

Жұмыстың мақсаты - тікелей жүктеу, icewm интерфейсі және браузері бар тарату жинағын құру. Мақсатты платформа виртуалды жәшік.

Неліктен өз дистрибуцияңызды құру керек? Көбінесе шектеулі ресурстармен шектеулі функционалдылық қажет. Көбінесе автоматтандыруда микробағдарлама жасау керек. Артық пакеттерді тазалау және оны микробағдарламаға айналдыру арқылы жалпы мақсаттағы таратуды бейімдеу жаңа таратуды біріктіруден гөрі көп уақытты қажет ететін әдіс. Gentoo пайдаланудың да шектеулері бар.

Buildroot жүйесі өте күшті, бірақ ол сізге ештеңе жасамайды. Ол тек құрастыру процесін қосуға және автоматтандыруға болады.

Балама құрастыру жүйелері (йокто, ашық құрастыру жүйесі және т.б.) қарастырылмайды немесе салыстырылмайды.

Қайдан алуға және қалай бастауға болады

Жобаның веб-сайты - buildroot.org. Мұнда сіз соңғы нұсқаны жүктеп алып, нұсқаулықты оқи аласыз. Онда сіз қауымдастықпен байланыса аласыз, қателерді бақылау құралы, пошта тізімдері және irc арнасы бар.

Buildroot мақсатты құрастыру тақтасына арналған дефконфигурациялармен жұмыс істейді. Defconfig — әдепкі мәні жоқ опцияларды ғана қамтитын конфигурация файлы. Нені және қалай жиналатынын өзі анықтайды. Бұл жағдайда busybox, linux-ядро, uglibc, u-boot және barebox жүктеуші конфигурацияларын бөлек конфигурациялауға болады, бірақ олардың барлығы мақсатты тақтаға байланыстырылады.
Жүктеп алынған мұрағатты ашқаннан кейін немесе git-тен клондағаннан кейін біз Buildroot-ты жұмысқа дайындаймыз. Каталог құрылымы туралы толығырақ нұсқаулықта оқи аласыз, мен сізге ең маңыздылары туралы айтып беремін:

тақта — әр тақтаға тән файлдары бар каталог. Бұл жүйелік бейнелеу сценарийлері (iso, sdcart, cpio және т.б.), қабаттасатын каталог, ядро ​​конфигурациясы және т.б.
configs - тақтаның нақты дефнконфигурациясы. Defconfig — толық емес тақта конфигурациясы. Ол әдепкі параметрлерден басқа параметрлерді ғана сақтайды.
dl - жүктелген бастапқы кодтары бар каталог / құрастыруға арналған файлдар
шығыс/мақсат - алынған ОЖ жинақталған файлдық жүйесі. Болашақта одан жүктеу / орнату үшін кескіндер жасалады
шығыс/хост - құрастыруға арналған хост утилиталары
шығару/құру - жинақталған пакеттер

Құрастыру конфигурациясы KConfig арқылы орындалады. Дәл осындай жүйе linux ядросын құру үшін қолданылады. Ең жиі қолданылатын командалар тізімі (Buildroot каталогында орындаңыз):

  • make menuconfig - құрастыру конфигурациясын шақырыңыз. Сіз сондай-ақ GUI пайдалана аласыз (nconfig жасаңыз, xconfig жасаңыз, gconfig жасаңыз)
  • linux-menuconfig жасау - ядро ​​конфигурациясын шақыру.
  • таза жасау - таза құрастыру нәтижелері (шығаруда сақталғанның бәрі)
  • жасау - жүйені құру. Бұл бұрыннан жасалған процестерді қайта құрмайды.
  • defconfig_name жасау - конфигурацияны арнайы defconfig параметріне ауыстыру
  • make list-defconfigs - defconfigs тізімін көрсету
  • дереккөзді жасаңыз - тек орнату файлдарын жүктеп алыңыз, жинақ жоқ.
  • анықтама жасау - ықтимал командалар тізімін көрсету

Маңызды ескертпелер және пайдалы кеңестер

Buildroot бұрыннан салынған пакеттерді қайта жасамайды! Сондықтан толық қайта жинау қажет болғанда жағдай туындауы мүмкін.

Пәрмен арқылы бір буманы қайта құруға болады бума атауын қайта құру. Мысалы, Linux ядросын қайта құруға болады:

make linux-rebuild

Buildroot кез келген бума күйін шығыс/Build/$packagename каталогында .stamp файлдарын жасау арқылы сақтайды:

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Сондықтан, бумаларды қайта құрусыз 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 - хост fs, кезеңдік fs, мақсатты fs құрастыру каталогтары.
  • $BUILD_DIR – қаптамадан шығарылған және құрастырылған бумалары бар каталог

Көрнекілік

buildroot визуализация мүмкіндігіне ие.Тәуелділік диаграммасын, уақыт графигін, пакет өлшемі графигін соңғы жүйеде құруға болады. Нәтижелер шығыс/график каталогында pdf файлдары ретінде (svn,png таңдай аласыз).

Көрсету командаларының мысалдары:

  • make graph-depends тәуелділік ағашын құру
  • make <pkg>-graph-depends белгілі бір буманың тәуелділік ағашын құру
  • BR2_GRAPH_OUT=png make graph-build PNG шығысымен құрастыру уақытының графигін салыңыз
  • make graph-size пакет өлшемін сызыңыз

Пайдалы сценарийлер

Buildroot каталогында ішкі каталог бар ыдыс пайдалы сценарийлермен. Мысалы, бума сипаттамаларының дұрыстығын тексеретін сценарий бар. Бұл реттелетін бумаларды қосқанда пайдалы болуы мүмкін (оны кейінірек жасаймын). utils/readme.txt файлында осы сценарийлердің сипаттамасы бар.

Қорды бөлуді құрастырайық

Естеріңізге сала кетейік, барлық операциялар root емес, тұрақты пайдаланушы атынан жүзеге асырылады.
Барлық командалар buildroot жүйесінде орындалады. Buildroot таратуында көптеген жалпы тақталар мен виртуализацияға арналған конфигурациялар жинағы бар.

Конфигурациялар тізімін қараңыз:

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

qemu_x86_64_defconfig конфигурациясына ауысыңыз

make qemu_x86_64_defconfig

Және құрылысты бастаңыз

make

Құрастыру сәтті аяқталды, нәтижелерге қараңыз:

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Buildroot Qemu жүйесінде іске қосуға және олардың жұмыс істейтінін көруге болатын кескіндерді жинады.

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

Нәтиже - qemu жүйесінде жұмыс істейтін жүйе:

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Өзіңіздің тақта конфигурацияңызды жасаңыз

Тақта файлдарын қосу

Конфигурациялар тізімін қараңыз:

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Тізімде біз pc_x86_64_efi_defconfig көреміз. Біз тақтаны конфигурациядан көшіру арқылы жасаймыз:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

Скрипттерді, rootfs-overlay және басқа қажетті файлдарды сақтау үшін дереу тақта каталогын жасаңыз:

mkdir board/my_x86_board

Бұл дефнконфигурацияға ауысыңыз:

make my_x86_board_defconfig

Енді құрастыру конфигурациясы (Buildroot каталогының түбірінде .config ішінде сақталған) x86-64 бұрынғы(bios) мақсатты құрылғысына жүктеу арқылы сәйкес келеді.

Linux ядросының конфигурациясын көшіріңіз (кейінірек пайдалы):

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

KConfig арқылы Құрастыру опцияларын конфигурациялау

Орнатуды бастайық:

make menuconfig 

KConfig терезесі ашылады. Графикалық интерфейс арқылы конфигурациялауға болады (nconfig жасаңыз, xconfig жасаңыз, gconfig жасаңыз):

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Біз бірінші бөлімге кіреміз Мақсатты опциялар. Мұнда құрастыру орындалатын мақсатты архитектураны таңдауға болады.

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Құрастыру опциялары - мұнда әртүрлі құрастыру опциялары бар. Бастапқы кодтары бар каталогтарды, құрастыру ағындарының санын, бастапқы кодтарды жүктеуге арналған айналарды және басқа параметрлерді көрсетуге болады. Әдепкі параметрлерді қалдырайық.

Құралдар тізбегі - құрастыру құралдарының өзі осы жерде конфигурацияланады. Ол туралы толығырақ.

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Құралдар тізбегінің түрі - қолданылатын құралдар тізбегінің түрі. Бұл Buildroot немесе сыртқы құралдар тізбегіне салынуы мүмкін (сіз бұрыннан салынған каталогты немесе жүктеп алу үшін URL мекенжайын көрсете аласыз). Әртүрлі архитектуралар үшін қосымша опциялар бар. Мысалы, қол үшін сіз жай ғана сыртқы Linaro құралдар тізбегінің нұсқасын таңдай аласыз.

C кітапханасы – Си кітапханасын таңдау.Бүкіл жүйенің жұмысы осыған байланысты. Әдетте барлық мүмкін болатын функционалдылықты қолдайтын glibc пайдаланылады. Бірақ ол ендірілген жүйе үшін тым үлкен болуы мүмкін, сондықтан uglibc немесе musl жиі таңдалады. Біз glibc таңдаймыз (бұл кейінірек systemd пайдалану үшін қажет болады).

Ядро тақырыптары және реттелетін ядро ​​тақырыптары сериялары - құрастырылып жатқан жүйеде болатын ядро ​​нұсқасына сәйкес келуі керек. Ядро тақырыптары үшін tarball немесе git репозиторийіне жолды да көрсетуге болады.

GCC КОМПИЛИЯЛЫҚ НҰСҚАЛАР – құрастыру үшін пайдаланылатын компилятор нұсқасын таңдаңыз
C++ қолдауын қосу - жүйедегі c++ кітапханаларына қолдау көрсету арқылы құруды таңдаңыз. Бұл бізге кейінірек қажет болады.

Қосымша gcc опциялары - қосымша компилятор опцияларын орнатуға болады. Ол бізге қазір керек емес.

Жүйе конфигурациясы құрылған жүйенің болашақ параметрлерін орнатуға мүмкіндік береді:

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Нүктелердің көпшілігі тақырыптан анық. Келесі тармақтарға назар аударайық:
Пайдаланушылар кестелеріне жол - құрылған пайдаланушылары бар кесте (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

Файл мысалы. Пайдаланушы пайдаланушы құпия сөз әкімшісімен, автоматты түрде gid/uid, /bin/sh қабықшасы, әдепкі топ пайдаланушысы, топ түбірінің мүшесі, түсініктеме Foo пайдаланушысымен жасалады.

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

Түбірлік файлдық жүйенің қабаттасатын каталогтары – құрастырылған target-fs үстіне қабатталатын каталог. Жаңа файлдарды қосады және барларын ауыстырады.

Файлдық жүйе кескіндерін жасамас бұрын іске қосу үшін теңшелетін сценарийлер Әзірге сценарийді бос қалдырыңыз.

Ядро бөліміне барайық

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Мұнда ядро ​​параметрлері орнатылады. Ядроның өзі make linux-menuconfig арқылы конфигурацияланады.
Ядро нұсқасын әртүрлі жолдармен орнатуға болады: ұсынылғандардан таңдаңыз, нұсқаны қолмен енгізіңіз, репозиторийді немесе дайын тарболды көрсетіңіз.

Ядро конфигурациясы - ядро ​​конфигурациясына жол. Таңдалған архитектура үшін әдепкі конфигурацияны немесе Linux жүйесінен defocnfig таңдай аласыз. Linux көздерінде әртүрлі мақсатты жүйелер үшін дефконфигурациялар жинағы бар. Қажеттісін таба аласыз мұндағы дереккөзге тікелей қараңыз. Мысалы, beagle bone қара тақтасы үшін сіз жасай аласыз конфигурациясын таңдаңыз.

Мақсатты бумалар бөлімі мақсатты жүйеде қандай бумалардың орнатылатынын таңдауға мүмкіндік береді. Әзірге өзгеріссіз қалдырайық. Кейінірек біз пакеттерімізді осы тізімге қосамыз.
Файлдық жүйе кескіндері - Құрылатын файлдық жүйе кескіндерінің тізімі. ISO кескінін қосыңыз

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Жүктеуіштер - жиналған жүктеушілерді таңдау. Isolinix таңдаңыз

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Systemd конфигурациялануда

Systemd ядро ​​мен glibc-пен бірге Linux-тың тіректерінің біріне айналады. Сондықтан мен оның параметрін бөлек абзацқа шығардым.

Ол make menuconfig арқылы конфигурацияланады, содан кейін Мақсатты бумалар → Жүйе құралдары → systemd. Мұнда жүйені іске қосу кезінде қандай жүйелік қызметтер орнатылатынын және іске қосылатынын көрсетуге болады.

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Жүйе конфигурациясын сақтау

Біз бұл конфигурацияны KConfig арқылы сақтаймыз.

Содан кейін біз дефконфигурациямызды сақтаймыз:

make savedefconfig

Linux ядросының конфигурациясы

Linux ядросының конфигурациясы келесі пәрмен арқылы шақырылады:

make linux-menuconfig

Virtualbox бейне картасына қолдау қосыңыз

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Virtualbox Қонақ біріктіру қолдауын қосыңыз

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Сақтау және шығу. МАҢЫЗДЫ: конфигурация output/build/linux-$version/config ішінде сақталады, бірақ board/my_x86_board/linux.config ішінде сақталмайды.

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Сондықтан конфигурацияны сақтау орнына қолмен көшіру керек:

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

Осыдан кейін біз бүкіл жүйені толық қайта жинауды орындаймыз. buildroot бұрыннан жасалған нәрсені қайта жасамайды, қайта құру үшін бумаларды қолмен көрсету керек. Уақыт пен нервтерді ысырап етпеу үшін шағын жүйені тұтастай қалпына келтіру оңайырақ):

make clean;make

Құрастыруды аяқтағаннан кейін CD-дискіден жүктелетін VirtualBox (5.2 және 6.0 нұсқаларында тексерілген) іске қосылды Жүйе параметрлері:

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Құрылған iso-дан бастап:

Buildroot - 1 бөлім - Шолу, Минималды жүйе құрастыру, мәзірді орнату

Қолданылатын материалдар тізімі

  1. Buildroot нұсқаулығы

Ақпарат көзі: www.habr.com

пікір қалдыру