Калі распрацоўка толькі пачынаецца часта яшчэ незразумела якія менавіта пакеты пайдуць у мэтавую rootfs.
Іншымі словамі хапацца за LFS, buildroot ці yocto (ці яшчэ нешта) яшчэ рана, а пачынаць ужо трэба. Для багатых (у мяне на пілотных узорах 4GB eMMC) ёсць выйсце раздаць распрацоўнікам дыстрыбутыў, які дазволіць аператыўна даставіць нешта чаго бракуе ў дадзены момант, а затым мы заўсёды можам сабраць спісы пакетаў і сфармаваць спіс для мэтавай rootfs.
Дадзены артыкул не нясе ў сабе навізны і ўяўляе сабой простую copy-paste інструкцыю.
Мэта артыкула зборка Ubuntu rootfs для ARM барды (у маім выпадку на базе Colibri imx7d).
Зборка выявы
Збіраны мэтавы rootfs для тыражавання.
Які распакоўваецца Ubuntu Base
Рэліз выбіраемы самі зыходзячы з неабходнасці і ўласных пераваг. Тут я прывёў 20.
$ mkdir ubuntu20
$ cd ubuntu20
$ mkdir rootfs
$ wget http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04-base-armhf.tar.gz
$ tar xf ubuntu-base-20.04-base-armhf.tar.gz -C rootfs
Праверка падтрымкі BINFMT у ядры
Калі ў вас распаўсюджаны дыстрыбутыў, то падтрымка BINFMT_MISC ёсць і ўсё наладжана, калі не - то я ўпэўнены, што вы ведаеце як уключыць падтрымку BINFMT у ядры.
Загалоўкавыя файлы ядра, модулі, гэта асобная размова. Загрузнік, ядро, модулі, device tree праз Ubuntu мы вядома ж не паставім. Яны прыйдуць да нас звонку ці самі збяром ці нам іх выдасць вытворца борды, у любым выпадку гэта за гранню дадзенай інструкцыі.
Да нейкай ступені разыходжанне версій дапушчальна, але лепш узяць іх са зборкі ядра.
# apt install --yes linux-headers-generic
Глядзім, што атрымалася і атрымалася нямала:
# apt clean
# du -d 0 -h / 2>/dev/null
770M /
Не забудзьцеся задаць пароль.
Які пакуецца вобраз
$ sudo tar -C rootfs --transform "s|^./||" --numeric-owner --owner=0 --group=0 -c ./ | tar --delete ./ | gzip > rootfs.tar.gz
Дадаткова можам паставіць etckeeper з настройкай autopush
Ну дапусцім раздалі мы нашу зборку, праца пайшла, як лепш сабраць потым розныя версіі нашай сістэмы.