Мне предоставлен архив .tar.gz содержащий файлы из файловой системы ВМ (но не самой файловой системы), и мне нужно распаковать их в сырой образ диска, чтобы я мог смонтировать их как ВМ.

Как создать пустой образ диска и поместить в него файловую систему, а затем распаковать архив в него?

Я подозреваю, что тогда мне нужно будет установить загрузчик и создать раздел подкачки.

3 ответа3

0

Вы не указали, что архив находится в какой файловой системе виртуальной машины. Если вы работаете на VMWare Workstation, просто добавьте новый диск из интерфейса, загрузите машину любым загрузчиком, скопируйте в нее файл tar с помощью любого ftp-файла и распакуйте его. Если это точный tar работающей виртуальной машины, то ваша машина будет загружаться в следующий раз даже без загрузчика.

0

Сначала я создал созданное устройство loopback (/dev/loop0) из чистого необработанного образа диска объемом 25 ГБ и разделил его на раздел размером 20 ГБ для файловой системы и остаток для раздела подкачки.

Не забудьте использовать kpartx на устройстве loopback, чтобы «найти» новые разделы:

    # kpartx -a /dev/loop0
    # ls /dev/mapper/
    control  loop0p1  loop0p2

Я не был уверен, какую файловую систему использовать, поэтому я консервативно решил создать файловую систему ext2 в первом разделе:

    # mkfs.ext2 /dev/mapper/loop0p1
    mke2fs 1.41.12 (17-May-2010)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    1313760 inodes, 5245214 blocks
    262260 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=4294967296
    161 block groups
    32768 blocks per group, 32768 fragments per group
    8160 inodes per group
    Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000

    Writing inode tables: done
    Writing superblocks and filesystem accounting information: done

    This filesystem will be automatically checked every 23 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.

Создайте точку монтирования и смонтируйте раздел устройства loopback:

    # mkdir /mnt/disk
    # mount /dev/mapper/loop0p1 /mnt/disk

Перейдите в каталог монтирования и распакуйте архив:

    # cd /mnt/disk
    # tar xzvf /path/to/disk_archive.tar.gz

Используйте chroot для монтирования нового образа диска в качестве корневой файловой системы:

    # mount -t proc none /mnt/disk/proc
    # mount -o bind /dev /mnt/disk/dev
    # chroot /mnt/disk /bin/bash

Внесите все необходимые изменения в файловую систему (например, установите пакеты grub!)

Выйдите из chroot, размонтируйте и отсоедините все:

   # umount /mnt/disk/dev
   # umount /mnt/disk/proc
   # umount /mnt/disk
   # kpartx -d /dev/loop0
   # losetup -d /dev/loop0

Наконец я создал виртуальную машину с этим в качестве жесткого диска. Я использовал Super Grub2 Disk для решения любых дальнейших проблем с загрузчиком.

0

Это скорее стратегия, чем идеальное руководство, но оно должно помочь.

Создайте свой "виртуальный компьютер", то есть создайте пустой жесткий диск. Тогда, с моей точки зрения, это лучший вариант узнать, какой дистрибутив Linux находится внутри вашего .tar.gz-файла. Представьте, что это система openSUSE версии 12.1 (она должна работать с любым другим дистрибутивом аналогичным образом). Загрузите исходный образ диска (CD) для настройки базовой системы вашего дистрибутива в правильной версии и установите его на вновь созданную виртуальную машину. Таким образом, вы можете создавать файловые системы и разделы (включая swap), устанавливать grub или аналогичные и т.д. И тестировать виртуальную машину. Как только это будет сделано, загрузитесь в свою виртуальную машину с системой жизни Linux. Перейдите в «/» - папку вашей виртуальной машины (не в системе life-system) и переименуйте несколько папок (как root): bin, boot и т.д., Lib, opt, root, sbin, srv, tmp, usr, var (при условии, что ни один из них не находится на отдельных разделах) в нечто вроде bin-old, boot-old ... Теперь распакуйте свою старую виртуальную машину в то же место. Должны быть новые папки boot, bin ... рядом со старыми переименованными. Теперь вам нужно изменить некоторые файлы вашей старой виртуальной машины, чтобы загрузить старую систему внутри новой виртуальной машины. Предполагая, что старая виртуальная машина использовала grub, вам, например, нужно настроить файлы в /boot, используя /boot-old в качестве справки.

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