Kiedy prace programistyczne dopiero się rozpoczynają, często nie jest jasne, które pakiety trafią do docelowych plików rootfs.
Innymi słowy, jest za wcześnie, aby pobrać LFS, buildroot lub yocto (lub coś innego), ale już musisz zacząć. Dla bogatych (mam 4GB eMMC na próbkach pilotażowych) jest wyjście na dystrybucję deweloperom dystrybucji, która pozwoli im szybko dostarczyć coś, czego aktualnie brakuje, a wtedy zawsze będziemy mogli zebrać listy pakietów i stworzyć listę dla docelowy rootfs.
Ten artykuł nie jest nowy i zawiera prostą instrukcję kopiowania i wklejania.
Celem artykułu jest zbudowanie rootfów Ubuntu dla płyt ARM (w moim przypadku w oparciu o Colibri imx7d).
Budowanie wizerunku
Montujemy docelowe pliki rootfs do replikacji.
Rozpakowywanie bazy Ubuntu
Uwolnienie wybieramy sami w oparciu o potrzebę i własne preferencje. Tutaj dałem 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
Sprawdzanie obsługi BINFMT w jądrze
Jeśli masz wspólną dystrybucję, to jest obsługa BINFMT_MISC i wszystko jest skonfigurowane, jeśli nie, to jestem pewien, że wiesz, jak włączyć obsługę BINFMT w jądrze.
Upewnij się, że BINFMT_MISC jest włączone w jądrze:
Pliki nagłówkowe jądra i moduły to osobna sprawa. Oczywiście nie będziemy instalować bootloadera, jądra, modułów, drzewa urządzeń poprzez Ubuntu. Przyjdą do nas z zewnątrz lub sami je zmontujemy lub otrzymamy od producenta deski, w każdym razie wykracza to poza zakres tej instrukcji.
Do pewnego stopnia rozbieżności wersji są akceptowalne, ale lepiej jest je wziąć z kompilacji jądra.
# apt install --yes linux-headers-generic
Zobaczmy, co się stało i okazało się wiele:
# apt clean
# du -d 0 -h / 2>/dev/null
770M /
Nie zapomnij ustawić hasła.
Pakowanie obrazu
$ sudo tar -C rootfs --transform "s|^./||" --numeric-owner --owner=0 --group=0 -c ./ | tar --delete ./ | gzip > rootfs.tar.gz
Dodatkowo możemy zainstalować etckeeper z ustawieniem autopush
Cóż, powiedzmy, że rozdystrybuowaliśmy nasz zestaw, rozpoczęły się prace nad tym, jak najlepiej złożyć późniejsze różne wersje naszego systemu.