Короче говоря, мне нужно выполнить все это автоматически при загрузке (встроенная система).
Наши инженеры перенесут изображения на производственные устройства. Эти изображения будут содержать небольшую таблицу разделов. При загрузке мне нужно автоматически развернуть последний раздел (# 3), чтобы использовать все доступное пространство на диске.
Вот что я получаю, когда смотрю на свободное место на моем диске.
> 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
Мне нужно расширить раздел 3 на N (30,5 ГБ) число байтов
Как мне выполнить этот шаг автоматически, без подсказки? Это должно работать с динамическим размером пространства, доступного после 3-го раздела.
resizepart
команду, и она работает, но требует точного размера. Мне нужно, чтобы оно было динамичным.resize2fs
может быть то, что я ищу. linux.die.net/man/8/resize2fsОтветы:
В текущих версиях
parted
,resizepart
должны работать для раздела (parted
понимает100%
или вещи , как-1s
, последние потребности также--
прекратить разбор параметров на CmdLine). Для того, чтобы определить точное значение , которое вы можете использоватьunit s
,print free
.resize2fs
приходит позже для файловой системы.В старых версиях
parted
былаresize
команда, которая за один раз изменяла размеры как раздела, так и файловой системы, она даже работалаvfat
.В модификации Kobo ereader я использовал это, чтобы максимально изменить размер 3-го раздела внутренней памяти: (он слепо предполагает, что 4-го раздела, таблицы msdos и прочего не существует)
Таким образом, вы также можете получить значения,
/sys/block/.../
если ядро его поддерживает. Ноparted
удалилиresize
команду, так что вам нужно сделать два шага сейчас,resizepart
чтобы увеличить раздел, и любой инструмент, предоставляемый вашей файловой системой, чтобы увеличить его, например,resize2fs
дляext*
.источник
parted
поддерживает автоматическое расширение из командной строки? Потому что он поддерживает это в интерактивном режиме. Если запустить в интерактивном режиме, он спросит, хотите ли вы исправить таблицу разделов GPT, чтобы соответствовать размеру диска (типfix
), и затем вы можете запуститьresizepart 3 -1
. Я пытался выяснить, как заставить это сделать это из командной строки.Будучи не в состоянии правильно выполнить скрипт parted (он запросил подтверждение, потому что раздел был смонтирован и вопреки другим ответам, которые я нашел, не понял
-1s
или100%
), я просто нашел инструмент growpart, который делает именно это.Использовать просто:
growpart /dev/sda 3
(а затемresize2fs /dev/sda3
или другую подходящую команду для используемого типа файловой системы).В Debian и Ubuntu он упакован как cloud-guest-utils .
источник
Правильный способ сделать это - использовать тот факт, что parted имеет понятие процентов. Так
источник
В Ubuntu 18.04 я могу изменить размер, чтобы заполнить нераспределенное пространство в скрипте следующим образом:
Возможно, нет необходимости монтировать перед изменением размера. Я сделал это, чтобы подавить запрос от resize2fs для пользовательского ввода.
источник