Deaktivieren Sie die Erweiterung des Dateisystems vorübergehend während des ersten Startvorgangs

13

Ich möchte ein firmeninternes Raspberry Pi-Image auf Basis von Raspbian Lite erstellen, das bereits mit dem richtigen Gebietsschema, der richtigen Zeitzone usw. konfiguriert ist. Leider ändern aktuelle Versionen von Raspbian-Images automatisch die Größe des Dateisystems und starten dann neu.

Ich möchte den Ärger der Verkleinerung des Dateisystems vermeiden, indem verhindert wird, dass die Größe jemals geändert wird. Wie bearbeite ich das Image nach dem Brennen, um die automatische Größenänderung des Dateisystems vorübergehend zu deaktivieren?

Zur Verdeutlichung bearbeitete Effekte sollten reversibel sein; Das heißt, ich möchte, dass mein angepasstes Image beim ersten Start erweitert wird.

patricktokeeffe
quelle
Dies ist möglicherweise nicht die ideale Lösung. Sie haben jedoch in Erwägung gezogen, eine kleine 4-GB-Karte zu verwenden, bei der dies kein solches Problem darstellen würde.
Steve Robillard
2
Interessante Idee .. Brennen auf eine kleine Karte, wodurch die Größe effektiv begrenzt wird. Ich würde eine direkte Lösung vorziehen, aber dies ist eine anständige Alternative. Vielen Dank
patricktokeeffe
2
Das ist ziemlich nervig. Ich bin mir sehr sicher, dass dies über ein einfaches selbstauslöschendes Boot-Skript raspi-configerfolgt, das beim ersten Start ausgeführt wird und leicht zu deaktivieren wäre. Ich kann nachsehen, aber ich muss ein neues Bild herunterladen, das letzte, das ich habe, ist von Mai. Versuchen Sie es in ein paar Stunden noch einmal.
Goldlöckchen

Antworten:

13

Es gibt einen zweiteiligen Mechanismus, der bei Raspbian die Verantwortung dafür übernimmt. wahrscheinlich ist die beste Idee, sich um beide Teile zu kümmern, wenn sie aktiviert sind.

Das erste ist, dass das Original dies /boot/cmdline.txtbeinhaltet:

init=/usr/lib/raspi-config/init_resize.sh

Verweisen auf ein Skript mit diesem Pfad auf der Root-Partition, das beim Booten als Init- Prozess verwendet wird. Ohne dieses Bit würde standardmäßig ein Wert in den Kernel eingebaut,/sbin/init . Dies ist in Raspbian eine symbolische Verknüpfung zu /lib/systemd/systemd.

Durch Entfernen dieses Teils von cmdline.txt sollte das System normal starten.

Das Skript ändert die Größe der Partition auf der SD-Karte. Dies unterscheidet sich von der Größenänderung des Dateisystems in der Partition. 1 , das ist das, was als nächstes passiert.

Dies geschieht, indem das System sofort normal neu gestartet wird (dh über systemd) und ein init.dSkript so eingestellt wird, dass es frühzeitig ausgelöst wird. Dieses Skript sollte aus der zweiten Partition entfernt werden:

/etc/init.d/resizefs_once

Und die symbolische Verknüpfung dazu, die ebenfalls entfernt werden sollte:

/etc/rc3.d/S01resizefs_once

Sie können eine Kopie für eine spätere Verwendung aufbewahren raspi-config, sie jedoch erneut erstellen (eingebettet in das raspi-configShell-Skript). Wenn es tatsächlich ausgeführt wird, löscht es sich selbst, sodass es nicht noch einmal vorkommt.

Außerdem wird die Größe des Dateisystems in der Partition geändert, deren Größe geändert wurde.

Es sollte kein Schaden angerichtet werden, wenn nur der eine oder andere Teil passiert. Im ersten Fall haben Sie ein Dateisystem, das die vergrößerte Partition nicht ausfüllt, im zweiten Fall passiert nichts, da das Dateisystem die Partition bereits ausfüllt.

Wenn Sie raspi-configdas Dateisystem später vergrößern, ändert sich die Größe der Partition sofort und das Init-Skript wird eingerichtet (wie bereits erwähnt).

Das Bearbeiten cmdline.txtder ersten Partition ist auf jedem Computer einfach, da es sich um eine VFAT-Partition handelt. Zum Entfernen der init.dDatei ist ein System erforderlich, das auf ext4-Dateisysteme zugreifen und diese bearbeiten kann.

Beide Aufgaben können stattdessen vor dem Brennen der Karte an der Image-Datei selbst ausgeführt werden. Informationen zum Mounten und Ändern eines Raspbian-Images auf einem GNU / Linux-System finden Sie hier . Für Windows gibt es parallele Fragen und Antworten .

Dies ist auch umkehrbar, aber Sie müssen beide Teile des Mechanismus, wie gerade beschrieben, zurücksetzen, da der erste nicht automatisch den zweiten inszeniert.


  1. Obwohl eine Fehlermeldung aus diesem Skript diese Begriffe möglicherweise durch die Behauptung verwirrt, dass die Größe des Root- Dateisystems nicht geändert werden konnte, ist die Größe der Partition, auf der sich das Root-Dateisystem befindet, nicht wirklich zu ändern . Das eine zu tun, führt nicht automatisch zum anderen.
Goldlöckchen
quelle
1
Kommentare sind nicht für längere Diskussionen gedacht. Diese Unterhaltung wurde in den Chat verschoben .
Ghanima
@ Goldilocks Deaktivierung init=/usr/lib/raspi-config/init_resize.shvon /boot/cmdline.txtArbeiten an Ubuntu Kumpel auch und scheint genug für sich. Ich habe ein 4 GB Ubuntu Mate-Image auf eine 32 GB SD-Karte geflasht und es hält die Partitionsgrößen auf der ursprünglichen Bildgröße. Auch /etc/init.d/resizefs_onceund /etc/rc3.d/S01resizefs_onceexistieren nicht nach dem ersten Booten auf Ubuntu Mate.
Sith
Nur zur Bestätigung: Ermöglicht das Wiederherstellen von cmdline.txtund init.dsowie von rc3.dDatei und Link, dass der nächste Start die Größe von selbst ändert, oder muss ich raspi-configihn manuell ausführen und ausführen?
Oxwivi
@Oxwivi Es sollte ja. Ich habe diesen ganzen Beitrag geklärt und am Ende einen expliziten Kommentar dazu abgegeben.
Goldlöckchen
Ja Dankeschön. Es ist auch zu beachten, dass IDK seit welcher Version, mindestens jedoch in der neuesten Version, nicht die von Ihnen erwähnten Skriptreferenzen zur Größenänderung enthält cmdline.txt. Ich habe das Raspbian-Image mit gebootet systemd-nspawnund immer noch Fehlerprotokolle erhalten, die versucht haben, die Größe zu ändern, nachdem ich das cmdline.txtDing entfernt habe.
Oxwivi