Доброе времени суток. Понадобилось мне с виртуальной машины на VMWare склонировать виртуальный диск на физический, причем исходный диск был большего размера чем конечный. Если ситуация обратная, исходный меньше чем конечный, проблем никаких не возникает. Обычными простыми способами этого сделать не получалось, утыкался постоянно в какие-то проблемы: то clonezilla отказывалась копировать потому весь виртуальный диск превышал объем физического(хотя в системе занятого пространства всего 17 Гб было), а при выборе пункта меню переделать разделы выходила ошибка, так же пробовал утилитой DD, но при этом система не загружалась и требовалось вручную менять и переустанавливать загрузчик, использование программ Acronis и Paragon тоже успешного результата не дали. Поэтому после 1.5 дней мучений найдет относительно простой способ в интернете, но не с первой попытки, почему-то всего один такой относительно простой способ нашел и только на одном сайте(как раз, если кто-то читал раздел «Об авторе» я описывал зачем я, завел этот блог, это как раз такая ситуация, где информации по такому решению, очень «размазана по сети»).
Для этого «метода» понадобится (как можно увидеть из названия) два образа clonezilla и gparted. (Не буду описывать способы как записать образы на флешку или жесткий диск для загрузки. Самый простой это создать загрузочную флешку через утилиту Ventoy).
- Первым делом загружаемся в gparted и уменьшаем разделы до того объема на который будет развернута операционная система. После изменения можно еще раз загрузится в систему и проверить на работоспособность ОС;
- С помощью clonezilla делаем образ системы на флеш накопитель или жесткий диск;
- Заходим в папку с созданным архивом и нас интересуют 4 файла: blkdev.list, Info-smart.txt, sda-pt.parted, sda-pt.parted.compact. Открываем поочередно каждый файл с помощью блокнота или notepad++.
Файл blkdev.list:
KNAME NAME SIZE TYPE FSTYPE MOUNTPOINT MODEL
loop0 loop0 333.2M loop squashfs /usr/lib/live/mount/rootfs/filesystem.squashfs
sda sda 30G disk VMware Virtual SATA Hard Drive
sda1 |-sda1 953M part ext4
sda2 |-sda2 1K part
sda5 |-sda5 3.7G part swap
sda6 -sda6 17.7G part ext4 sdb sdb 19.5G disk VMware Virtual SATA Hard Drive sdb1
-sdb1 19.5G part ntfs /home/partimag
sr0 sr0 398M rom iso9660 /usr/lib/live/mount/medium VMware Virtual IDE CDROM Drive
В строке sda sda меняем на тот объем диска на котором хотим увидеть ОС, в данном примере у мен 30Гб.
Файл Info-smart.txt:
This image was saved from this machine with hard drive S.M.A.R.T. info at 2024-0325-0836:
***.
For the drive: /dev/sda
smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.5.0-3-amd64] (local build)
Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Device Model: VMware Virtual SATA Hard Drive
Serial Number: 00000000000000000001
Firmware Version: 00000001
User Capacity: 32,212,254,720 bytes [30 GB]
Sector Size: 512 bytes logical/physical
Device is: Not in smartctl database 7.3/5319
ATA Version is: ATA/ATAPI-6 T13/1410D revision 0
Local Time is: Mon Mar 25 08:36:26 2024 UTC
SMART support is: Unavailable — device lacks SMART capability.
В строке User Capacity меняем объем на количество байт, 30 Гб нужно умножить на 1073741824 в байтах это будет 32212254720 байт, 30х(1024х1024х1024)=32212254720.
Файл sda-pt.parted:
Model: ATA VMware Virtual S (scsi)
Disk /dev/sda: 62914560s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 2048s 1953791s 1951744s primary ext4 boot
2 1955838s 46956543s 45000706s extended
5 1955840s 9766911s 7811072s logical linux-swap(v1) swap
6 9768960s 46954495s 37185536s logical ext4
Строка «Disk /dev/sda:» указываем значение секторов, чтобы «перевести» байты в сектора нужно умножить количество байт в файле Info-smart.txt на 0,0019531250, получаем 32212254720х0,0019531250=62914560.
Файл sda-pt.parted.compact:
Model: ATA VMware Virtual S (scsi)
Disk /dev/sda: 30GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1000MB 999MB primary ext4 boot
2 1001MB 24.0GB 23.0GB extended
5 1001MB 5001MB 3999MB logical linux-swap(v1) swap
6 5002MB 24.0GB 19.0GB logical ext4
В строке «Disk /dev/sda:» просто указываем количество GB.
После разворачиваем образ на целевой диск с помощью clonezilla и имеем уже готовую систему без дополнительных настроек. Единственное, что уменьшенные образы так же можно увеличить обратно до первоначального состояния с помощью gparted.
Такой способ мне показался наиболее легким, чем в дальнейшем возится с переустановкой загрузчика и т.д. Возможно есть варианты и проще, но более легкого варианта я не находил. Если кто знает может отписаться в комментариях. Надеюсь моя небольшая заметка кому-нибудь и поможет.