Я ломаю голову над очень простой задачей. У меня есть файл IMG, который содержит файловую систему с 2 разделами. Как показано в некоторых уроках, я расширил доступное пространство следующим образом:

dd if=/dev/zero of=./temp_image bs=1 count=1 seek=3G
cat temp_image >> orig_image.img
losetup --offset [offset of the second partition*512] /dev/loop0 orig_image.img
e2fsck -f /dev/loop0
resize2fs -f /dev/loop0
losetup -d /dev/loop0

Но я боюсь, что размер таблицы разделов изменен неправильно:

parted orig_image.img > print
Model:  (file)
Disk /home/user/orig_image.img: 7255MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      4194kB  67,1MB  62,9MB  primary  fat16        lba
 2      67,1MB  4000MB  3933MB  primary  ext4

Но если я вхожу в систему, она действительно находит новое пространство ... Я пропустил несколько шагов?

Я попытался изменить размер раздела, используя gparted, но он не может жаловаться на ошибки во время e2fsck.

2 ответа2

0

Я рекомендую использовать truncate вместо команды quirky dd которая создает разреженный файл 3GiB + нули на 1 байт. truncate использовать разреженный файл, а также. С -s 3G вы получаете изображение с редким файлом 3GiB без нулей (или вы также можете использовать count=0 для dd ):

Я предпочитаю делать это «на месте» с помощью truncate , поскольку cat преобразует разреженный файл в нули (хотя это может быть тем, что вам нужно), что стоит времени, места и чрезмерной записи.

Следующий пример делает это "на месте" (см. Префикс + между -s и 3G в команде truncate ):

Как вы можете видеть, что вам нужно изменить размер раздела (например , с помощью fdisk , а также. Поэтому вам нужно использовать losetup -P вместо простого присоединения раздела, указав смещение. Это то, что вы упустили, поскольку решение, на которое вы ссылались / цитировали, относится только к образу файловой системы.

Когда вы воссоздаете запись раздела после удаления исходного, убедитесь, что он начинается с того же LBA, что и исходный (в примере это 206848), в противном случае файловая система будет потеряна.

0

Никогда не тестировал описанный способ, но если вы имеете дело с SD-картой, у меня работает следующее.

  1. dd изображение без изменений на SD-карту с dd if=my.img of=/dev/mmcblk0 bs=1M

  2. sync после этого

  3. Использование fdisk для d далить 2 - го раздела. Затем создайте раздел РЭБ n и принимать все значения по умолчанию. Тогда w обряд таблицы разделов.
  4. sync снова
  5. Проверьте файловую систему с помощью e2fsck -f /dev/mmcblk0p2
  6. Измените размер FS с помощью resize2fs /dev/mmcblk0p2
  7. sync снова

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .