Я скопіював диск USB на .img
використання файлу dd
:
dd if=/dev/sdc of=myimage.img
Я хочу зменшити розмір розділу на зображенні. Я спробував кілька методів і завжди закінчував зображенням, яке монтувалося на петлю, розділ якого все ще є повним розміром USB.
Як змінити
myimage.img
мати менший розділ після того, як буде змонтовано петлю?Чи потрібно копіювати нулі в порожню частину розділу перед тим, як це зробити?
Чи потрібно дефрагментувати, щоб при зменшенні розміру зображення видаляти порожні байти? (З того, що я прочитав, Linux поширюється на весь розділ, тому я не чекаю, що всі дані в кінці зображення будуть нульовими байтами.
ПРИМІТКА. Я не намагаюся заощадити дисковий простір, тому архівування не допоможе мені.
Передумови
У мене встановлений Linux на USB-диску ext4
. Я маю намір дублювати встановлення для декількох пристроїв. Я зробив це успішно, але хотів би створити на одному диску USB розділ лише для читання з системою і невеликий розділ, який дозволяє постійне зберігання. Замість того, щоб зламати USB, я намагаюся змінити копію USB. Я сподіваюся, що ми не будемо відволікатися на цей фон.
Коротше кажучи, я зробив наступне:
# Create mount point in current directory
sudo mkdir mnt
# Loopback mount the image
fdisk -l myimage.img
sudo mount -o offset=<partion_block_start * block_size> myimage.img mnt
# Copy all zeros to remaining space of the image
cd mnt
sudo dd if=/dev/zero of=filler conv=fsync bs=1M
rm filler
cd ..
Спочатку я спробував використати parted
як описано в відповідь суперкористувача і qemu-img
як описано в цей інший відповідь суперкористувача .
sudo umount mnt
parted myimage.img
# At parted command prompt
(parted) resizepart 1
# Entered my end <target size>. Note that parted uses zero-based
# indexing. This could be your final image size. In my case, the way the
# Linux installer worked, the partition started at 1M.
(parted) print
# I see that the partition is now sized as I expect
(parted) exit
# Just another sanity check
sudo parted -m esp3_007.img unit B print
# I see that the partition is now sized as I expect
Коли я намагаюся змонтувати зображення знову, він працює нормально, але df
як і раніше відображається розділ у тому ж розмірі. Тоді я спробував
qemu-img resize myimage.img <target_size>
А тепер, коли я намагаюся встановити зображення, я отримую повідомлення про помилку "mount: wrong fs type, bad option, bad superblock ...".
Потім я спробував використати gparted
як описано в цей пост за межами ділянки . Графічний інтерфейс показав повний розділ, якщо я не побіг parted
на першому місці. Навіть тоді, GUI не дозволив мені змінити розмір розділу.
Щоб спробувати змусити розмір розділу бути меншим, починаючи з нової копії myimage.img
я намагався fdisk
описано в це відповідь AskUbuntu
sudo fdisk myimage.img
Command (m for help): d
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4, default 1): 1
# defaults on the rest seemed to be correct in my case.
Коли я встановив розділ, він все одно показав такий самий розмір.