Krótko mówiąc, muszę to wszystko wykonać automatycznie podczas rozruchu (system osadzony).
Nasi inżynierowie będą flashować obrazy na urządzeniach produkcyjnych. Te obrazy będą zawierać małą tablicę partycji. Podczas uruchamiania muszę automatycznie rozwinąć ostatnią partycję (# 3), aby wykorzystać całe dostępne miejsce na dysku.
Oto, co otrzymuję, gdy patrzę na wolne miejsce na moim dysku.
> 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
Muszę rozszerzyć partycję 3 o N (30,5 GB) liczby bajtów
Jak wykonać ten krok automatycznie, bez monitu? Musi to działać przy dynamicznym rozmiarze przestrzeni dostępnej po trzeciej partycji.
resizepart
polecenia i działa, ale wymaga dokładnego rozmiaru. Potrzebuję być dynamiczny.resize2fs
może być tym, czego szukam. linux.die.net/man/8/resize2fsOdpowiedzi:
W obecnych wersjach
parted
,resizepart
powinien działać dla partycji (parted
rozumie100%
lub coś takiego-1s
, ta ostatnia musi także--
przestać parsować opcje na cmdline). Aby ustalić dokładną wartość można użyćunit s
,print free
.resize2fs
przychodzi później do systemu plików.Stare wersje
parted
miałyresize
polecenie, które zmieniałoby zarówno partycję, jak i system plików za jednym razem, nawet działałovfat
.W modyfikacji e-czytnika Kobo użyłem tego do zmiany rozmiaru trzeciej partycji pamięci wewnętrznej na maksimum: (ślepo zakłada, że nie ma czwartej partycji i tabeli msdos i rzeczy)
Możesz także uzyskać wartości,
/sys/block/.../
jeśli jądro je obsługuje. Aleparted
usuniętoresize
komendę więc trzeba zrobić dwa kroki teraz,resizepart
aby rosnąć partycję, a co narzędzie system plików zapewnia się rozwijać, że podobnie jakresize2fs
dlaext*
.źródło
parted
obsługuje automatycznego przedłużania z wiersza poleceń? Dlatego, że ma ją wspierać interaktywnie. Jeśli zostanie uruchomiony interaktywnie, zostanie wyświetlone pytanie, czy chcesz naprawić tabelę partycji GPT, aby pasowała do rozmiaru dysku (typufix
), a następnie możesz uruchomićresizepart 3 -1
. Próbowałem dowiedzieć się, jak to zrobić z wiersza polecenia.Nie mogąc poprawnie rozdzielić skryptu (poprosił o potwierdzenie, ponieważ partycja została zamontowana i w przeciwieństwie do innych odpowiedzi, których nie rozumiałem
-1s
lub100%
), właśnie znalazłem narzędzie growpart które właśnie to robi.Użycie jest proste:
growpart /dev/sda 3
(i wtedyresize2fs /dev/sda3
inna odpowiednia komenda dla używanego typu systemu plików).W Debianie i Ubuntu jest spakowany jako cloud-guest-utils .
źródło
Właściwym sposobem na to jest skorzystanie z faktu, że rozstanie ma pojęcie procentowe. Więc
źródło
W Ubuntu 18.04 mogę zmienić rozmiar, aby wypełnić nieprzydzielone miejsce w skrypcie, wykonując następujące czynności:
Montowanie przed zmianą rozmiaru może nie być konieczne. Zrobiłem to, aby ukryć zapytanie resize2fs dla danych wprowadzanych przez użytkownika.
źródło