Buildroot - 1-бөлүк. Жалпы маалымат, минималдуу системаны чогултуу, меню аркылуу конфигурациялоо

тааныштыруу

Бул макалалар сериясында мен Buildroot бөлүштүрүү куруу системасын карап, аны ыңгайлаштыруудагы тажрыйбам менен бөлүшкүм келет. Графикалык интерфейси жана минималдуу функционалдуулугу бар чакан ОС түзүүдө практикалык тажрыйба болот.

Биринчиден, сиз куруу системасын жана бөлүштүрүүнү чаташтырбоо керек. Buildroot ага сунушталган пакеттердин топтомунан системаны кура алат. Buildroot макефайлдарга курулган жана ошондуктан эбегейсиз зор ыңгайлаштыруу мүмкүнчүлүктөрүнө ээ. Пакетти башка версияга алмаштырып, өзүңүздүн пакетиңизди кошуңуз, пакетти түзүү эрежелерин өзгөртүңүз, бардык пакеттерди орноткондон кийин файл тутумун ыңгайлаштырыңызбы? buildroot мунун баарын жасай алат.

Россияда buildroot колдонулат, бирок менин оюмча үйрөнчүктөр үчүн орус тилиндеги маалымат аз.

Иштин максаты - түз жүктөө, icewm интерфейси жана браузер менен бөлүштүрүүчү комплектти чогултуу. Максаттуу платформа виртуалдык куту болуп саналат.

Эмне үчүн өзүңүздүн дистрибьюцияңызды түзүңүз? Көп учурда чектелген функциялар чектелген ресурстар менен талап кылынат. Автоматташтырууда дагы көп учурда микропрограмманы түзүшүңүз керек. Керексиз пакеттерди тазалоо жана аны микропрограммага айландыруу аркылуу жалпы максаттуу бөлүштүрүүнү адаптациялоо жаңы дистрибьюторду курууга караганда көбүрөөк эмгекти талап кылат. Gentoo колдонуу да өзүнүн чектөөлөрү бар.

Buildroot системасы абдан күчтүү, бирок ал сиз үчүн эч нерсе кыла албайт. Ал монтаждоо процессин гана иштетип, автоматташтыра алат.

Альтернативдүү куруу системалары (yocto, ачык куруу системасы жана башкалар) каралбайт же салыштырылбайт.

Аны кайдан алуу керек жана кантип баштоо керек

Долбоордун веб-сайты - buildroot.org. Бул жерден сиз учурдагы версияны жүктөп алып, колдонмону окуй аласыз. Ал жерде сиз коомчулук менен байланыша аласыз, мүчүлүштүктөрдү көзөмөлдөөчү, почта тизмелери жана irc каналы бар.

Buildroot түзүүнүн максаттуу тактасы үчүн дефконфигурацияларды иштетет. Defconfig – демейки маанилери жок гана параметрлерди сактаган конфигурация файлы. Эмне, кантип чогултуларын ал аныктайт. Бул учурда, сиз булsybox, linux-kernel, uglibc, u-boot жана barebox жүктөөчүлөрдүн конфигурацияларын өзүнчө конфигурациялай аласыз, бирок алардын баары максаттуу тактага байланат.
Жүктөлгөн архивди таңгактан чыгаргандан же gitтен клондогондон кийин биз колдонууга даяр Buildroot алабыз. Каталогдун түзүмү тууралуу кененирээк окуу куралынан окуй аласыз, мен сизге эң маанилүүлөрү жөнүндө айтып берем:

башкарма — ар бир тактага тиешелүү файлдары бар каталог. Бул система сүрөттөрүн түзүү үчүн скрипттер болушу мүмкүн (iso, sdcart, cpio жана башкалар), катмар каталогу, ядро ​​конфигурациясы ж.б.
configs — тактанын иш жүзүндөгү дефконфигурациясы. Defconfig - тактанын толук эмес конфигурациясы. Ал демейки жөндөөлөрдөн айырмаланган гана параметрлерди сактайт
dl — чогултуу үчүн жүктөлүп алынган баштапкы коддору/файлдары бар каталог
чыгаруу/максат — пайда болгон ОСтун чогултулган файлдык системасы. Андан кийин жүктөө/орнотуу үчүн андан сүрөттөр түзүлөт
чыгаруу/хост - чогултуу үчүн негизги коммуналдык кызматтар
чыгаруу/куруу - чогултулган пакеттер

Жыйын KConfig аркылуу конфигурацияланган. Ошол эле система Linux ядросун куруу үчүн колдонулат. Эң көп колдонулган буйруктардын тизмеси (Buildroot каталогунда аткаруу):

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

Маанилүү эскертүүлөр жана пайдалуу кеңештер

Buildroot буга чейин курулган пакеттерди калыбына келтирбейт! Ошондуктан, толук кайра чогултуу талап кылынган жагдай пайда болушу мүмкүн.

Сиз буйрук менен өзүнчө пакетти кайра түзө аласыз пакеттин аталышын кайра куруу. Мисалы, сиз Linux ядросун кайра түзө аласыз:

make linux-rebuild

Buildroot бардык пакеттин абалын output/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 - түпкү каталогду куруу
  • $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 файлы бул скрипттердин сүрөттөмөсүн камтыйт.

Запастарды бөлүштүрүүнү түзөлү

Бардык операциялар тамыр эмес, кадимки колдонуучунун атынан ишке ашырыларын эстен чыгарбоо керек.
Бардык буйруктар 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-бөлүк. Жалпы маалымат, минималдуу системаны чогултуу, меню аркылуу конфигурациялоо

Өзүңүздүн такта конфигурацияңызды түзүү

Board Files кошуу

Конфигурациялардын тизмесин карап көрөлү:

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 legacy(bios) жүктөө максаттуу машинасына туура келет.

Linux-ядро конфигурациясын көчүрөлү (кийинирээк пайдалуу):

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

KConfig аркылуу куруу параметрлерин орнотуу

Орнотууну баштайлы:

make menuconfig 

KConfig терезеси ачылат. Графикалык интерфейс менен конфигурациялоого болот (nconfig жасоо, xconfig жасоо, gconfig жасоо):

Buildroot - 1-бөлүк. Жалпы маалымат, минималдуу системаны чогултуу, меню аркылуу конфигурациялоо

Биз биринчи бөлүмгө кирип Максат параметрлери. Бул жерде сиз куруу ишке ашырыла турган максаттуу архитектураны тандай аласыз.

Buildroot - 1-бөлүк. Жалпы маалымат, минималдуу системаны чогултуу, меню аркылуу конфигурациялоо

Куруу параметрлери - бул жерде ар кандай куруу параметрлери бар. Сиз баштапкы коддору бар каталогдорду, куруу жиптеринин санын, баштапкы коддорду жүктөө үчүн күзгүлөрдү жана башка орнотууларды көрсөтө аласыз. Келгиле, орнотууларды демейки боюнча калтыралы.

Toolchain - куруу куралдары бул жерде конфигурацияланган. Ал жөнүндө көбүрөөк оку.

Buildroot - 1-бөлүк. Жалпы маалымат, минималдуу системаны чогултуу, меню аркылуу конфигурациялоо

Toolchain түрү – колдонулган инструменттердин түрү. Бул 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-бөлүк. Жалпы маалымат, минималдуу системаны чогултуу, меню аркылуу конфигурациялоо

Configuring Systemd

Systemd ядро ​​жана glibc менен бирге Linux түркүктөрүнүн бирине айланууда. Ошондуктан, мен анын жөндөөлөрүн өзүнчө пунктка жылдырдым.

make menuconfig аркылуу конфигурацияланган, андан кийин Максаттуу топтомдор → Системалык куралдар → systemd. Бул жерде сиз кайсы система кызматтары орнотула турганын жана система башталганда иштей баштаарын белгилей аласыз.

Buildroot - 1-бөлүк. Жалпы маалымат, минималдуу системаны чогултуу, меню аркылуу конфигурациялоо

Системанын конфигурациясын сактоо

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

Анда биздин defconfig сактаңыз:

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 колдонмосу

Source: www.habr.com

Комментарий кошуу