Chciałbym zbudować własny obraz Raspberry Pi oparty na Raspbian Lite, który jest już skonfigurowany z poprawnymi ustawieniami narodowymi, strefą czasową itp. Niestety dla mnie obecne wersje obrazów Raspbian automatycznie zmieniają rozmiar systemu plików, a następnie uruchamiają ponownie.
Chcę uniknąć kłopotów ze zmniejszeniem rozmiaru systemu plików , uniemożliwiając kiedykolwiek zmianę rozmiaru. Jak mam edytować obraz po nagraniu, aby tymczasowo wyłączyć automatyczną zmianę rozmiaru systemu plików?
Edytowane w celu wyjaśnienia efektów powinny być odwracalne; to znaczy chcę, aby mój dostosowany obraz rozwijał się przy pierwszym uruchomieniu.
raspbian
raspi-config
patricktokeeffe
źródło
źródło
raspi-config
jest uruchamiany przy pierwszym uruchomieniu i można go łatwo wyłączyć. Mogę rzucić okiem, ale muszę pobrać nowy obraz, ostatni mam z maja. Sprawdź za kilka godzin.Odpowiedzi:
Istnieje dwuczęściowy mechanizm, który bierze za to odpowiedzialność na Raspbian; prawdopodobnie najlepszym pomysłem jest dbanie o obie części, jeśli są one włączone.
Po pierwsze, oryginał
/boot/cmdline.txt
zawiera to:Odwoływanie się do skryptu z tą ścieżką na partycji głównej, który będzie używany jako proces inicjujący podczas rozruchu. Bez tego bitu domyślnie byłaby to wartość wbudowana w jądro
/sbin/init
, do którego w Raspbian jest dowiązaniem symbolicznym/lib/systemd/systemd
.Po usunięciu tej części
cmdline.txt
system powinien następnie uruchomić się normalnie.Skrypt faktycznie zmienia rozmiar partycji na karcie SD. Jest to proces odmienny od zmiany rozmiaru systemu plików na partycji 1, co dzieje się później.
Sposób, w jaki się to dzieje, polega na tym, że system jest natychmiast ponownie uruchamiany normalnie (to znaczy przez systemd), a
init.d
skrypt jest uruchamiany wcześnie, co należy usunąć z drugiej partycji:I symboliczny link do niego, który również należy usunąć:
Możesz zachować kopię do późniejszego użytku, jeśli chcesz, ale
raspi-config
możesz utworzyć ją ponownie dla siebie (jest osadzona wraspi-config
skrypcie powłoki). Jeśli faktycznie działa, usuwa się, więc nie powtórzy się.Zmienia również rozmiar systemu plików na nowo zmienionej partycji.
Nie należy wyrządzać szkody, jeśli zdarzy się tylko jedna lub druga część; w pierwszym przypadku skończysz z systemem plików, który nie wypełnia powiększonej partycji, w drugim nic się nie stanie, ponieważ system plików już wypełnia partycję.
Jeśli później użyjesz
raspi-config
do powiększenia systemu plików, rozmiar partycji zostanie natychmiast zmieniony, a następnie skonfigurowany skrypt init (jak już wspomniano).Edycja
cmdline.txt
na pierwszej partycji jest prosta na dowolnym komputerze, ponieważ jest to partycja VFAT. Usunięcieinit.d
pliku wymaga systemu, który może uzyskiwać dostęp i edytować systemy plików ext4.Oba zadania można zamiast tego wykonać w samym pliku obrazu przed wypaleniem karty; aby zamontować i zmodyfikować obraz Raspbian w systemie GNU / Linux, patrz tutaj . Istnieje równoległe pytania i odpowiedzi dla systemu Windows .
Jest to również odwracalne, ale musisz odłożyć obie części mechanizmu, jak opisano powyżej, ponieważ pierwszy nie obejmuje automatycznego ustawiania drugiego.
źródło
init=/usr/lib/raspi-config/init_resize.sh
z/boot/cmdline.txt
utworów na Ubuntu mate również wydaje się wystarczające samo w sobie. Mam 4 GB obraz Ubuntu Mate sflashowany na sdcard 32 GB i trzyma rozmiary partycji w oryginalnym rozmiarze obrazu. Również/etc/init.d/resizefs_once
i/etc/rc3.d/S01resizefs_once
nie istnieją po pierwszym uruchomieniu na Ubuntu Mate.cmdline.txt
i, jakinit.d
irc3.d
pliku i linku pozwoli na zmianę rozmiaru całego rozruchu samodzielnie, czy też będę musiał go uruchomićraspi-config
i uruchomić ręcznie?cmdline.txt
. Uruchomiłem obraz Raspbian za pomocąsystemd-nspawn
i nadal dostaję dzienniki błędów próbujące zmienić rozmiar po usunięciucmdline.txt
rzeczy.