Kurz gesagt, ich muss dies alles automatisch beim Booten ausführen (eingebettetes System).
Unsere Ingenieure werden Bilder auf Produktionsgeräte flashen. Diese Images enthalten eine kleine Partitionstabelle. Beim Booten muss ich die letzte Partition (# 3) automatisch erweitern, um den gesamten verfügbaren Speicherplatz auf der Festplatte zu nutzen.
Folgendes erhalte ich, wenn ich den freien Speicherplatz auf meiner Festplatte betrachte.
> parted /dev/sda print free
Model: Lexar JumpDrive (scsi)
Disk /dev/sda: 32.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
17.4kB 1049kB 1031kB Free Space
1 1049kB 25.3MB 24.2MB fat16 primary legacy_boot
25.3MB 26.2MB 922kB Free Space
2 26.2MB 475MB 449MB ext4 primary
3 475MB 1549MB 1074MB ext4 primary
1549MB 32.0GB 30.5GB Free Space
Ich muss Partition 3 um N (30,5 GB) Bytes erweitern
Wie führe ich diesen Schritt automatisch ohne Aufforderung aus? Dies muss mit einer dynamischen Größe des verfügbaren Speicherplatzes nach der 3. Partition funktionieren.
resizepart
Befehl, und es funktioniert, aber es erfordert eine genaue Größe. Ich brauche es, um dynamisch zu sein.resize2fs
Vielleicht ist es das, wonach ich suche. linux.die.net/man/8/resize2fsAntworten:
In der aktuellen Versionen von
parted
,resizepart
sollte für die Partition arbeitet (parted
versteht100%
oder Dinge wie-1s
, letztere auch Bedürfnisse--
zu stoppen Optionen auf dem cmdline Parsing). Um den genauen Wert zu bestimmen können Sie verwendenunit s
,print free
.resize2fs
kommt danach für das Dateisystem.Alte Versionen von
parted
hatten einenresize
Befehl, der sowohl die Partition als auch das Dateisystem in einem Rutsch verkleinerte, es funktionierte sogar fürvfat
.In einer Kobo-Ereader-Modifikation habe ich dies verwendet, um die Größe der dritten Partition des internen Speichers auf das Maximum zu bringen:
Sie können die Werte also auch abrufen,
/sys/block/.../
wenn der Kernel dies unterstützt. Aberparted
entfernt , um denresize
Befehl , so dass Sie nun zwei Schritte tun, umresizepart
die Partition zu wachsen, und was auch immer Werkzeug , um Ihr Dateisystem sieht vor, dass wachsen, wieresize2fs
fürext*
.quelle
parted
unterstützt keine automatische Verlängerung von der Kommandozeile? Denn es ist es interaktiv unterstützen. Bei interaktiver Ausführung werden Sie gefragt, ob Sie die GPT-Partitionstabelle so korrigieren möchten, dass sie der Größe des Datenträgers (Datenträgertypfix
) entspricht. Anschließend können Sie sie ausführenresizepart 3 -1
. Ich habe versucht, über die Befehlszeile herauszufinden, wie ich das erreichen kann.Da das Skript nicht ordnungsgemäß getrennt werden konnte (es wurde um Bestätigung gebeten, da die Partition angehängt war, und im Gegensatz zu anderen Antworten, die ich nicht verstand
-1s
oder fand100%
), habe ich gerade das Growpart-Tool gefunden, das genau dies ausführt .Die Verwendung ist einfach:
growpart /dev/sda 3
(und dannresize2fs /dev/sda3
oder ein anderer geeigneter Befehl für den verwendeten Dateisystemtyp).In Debian und Ubuntu ist es als Cloud-Guest-Utils gepackt .
quelle
Der richtige Weg, dies zu tun, besteht darin, die Tatsache zu nutzen, dass der Begriff "getrennt" Prozentangaben enthält. So
quelle
In Ubuntu 18.04 kann ich die Größe ändern, um nicht zugewiesenen Speicherplatz in einem Skript wie folgt zu füllen:
Es ist möglicherweise nicht erforderlich, vor dem Ändern der Größe eine Montage durchzuführen. Ich habe es getan, um eine Abfrage von resize2fs für Benutzereingaben zu unterdrücken.
quelle