1

Создание в виртуальной машине из CD-ISO образа загружаемого виртуального диска VMDK

0. Здесь речь о некоторых особенностях использования Линукс систем. Установка Windows выполняется (как правило) с установочного дистрибутивного диска, создает виртуальный жесткий диск и проблем почти не имеет. Сама же виртуальная машина интересна тем, что в ней можно установить различные системы (GUEST) и переключаться между ними не выходя из главной (HOST)системы, в которой виртуальная машина загружена. Даже в 32-битном Линуксе пользователю доступно 3.5 ГБ оперативной памяти, а при условии выделения каждой GUEST-OS памяти по 256--512 МБ можно получить достаточную мобильность без перезагрузки компьютера - это все конечно "азы".

1. Работа в виртуальной машине (Vmware Player, Oracle VirtualBox) настроена (в первую очередь) на использование CD-ISO образа той или иной операционной системы.
   Образы ОС в виде Live-CD (DVD) предусматривают установку ОС на реальный раздел физического жесткого диска (HDD или "винчестера"), но из виртуальной машины это не всегда возможно, а в случае "маленьких" Linux-OS это особенно проблематично. Кроме того "плодить" разделы на физическом жестком диске не всегда возможно/нужно.

2. Но виртуальные машины имеют в своем составе так называемый виртуальный жесткий диск, который устанавливается по умолчанию как устройство SCSI-0.0 Hard-Disk. При этом испытуемую ОС чаще всего можно установить только на устройство IDE Hard-Disk.

3. Надо удалить (или не удалять) устройство SCSI Hard-Disk и добавить новое устройство IDE Hard-Disk.
   IDE необходимо для того, чтобы из загруженной с CD-ISO образа виртуальной машины (с виртуальной ОС) без проблем перенести эту машину-ОС на то, что позволит настаивать, сохранять изменения и повторно загружать систему и даже сохранять ее различные варианты.

4. Исходный CD-ISO образ загруженный в виртуальной машине изменить невозможно. Но можно его "развернуть" на виртуальный диск, сконфигурировать и сохранить в измененном виде. Для этого виртуальный диск надо "оформить" также, как и реальный физический. То есть создать на нем таблицу разделов, создать на нем хотя бы один раздел (ext2/ext3/ext4 для Unix-Linux, fat32/ntfs для Windows). Для этого нужна программа gparted (или аналог).

5. Скопировать загруженную систему на вновь созданный раздел виртуального диска /dev/sda1 - здесь надо понимать, что реально необходимо, а что лишнее. Советов дать не могу - надо читать, думать и конечно пробовать.

6. Теперь этот диск надо сделать загружаемым - для этого есть как минимум lilo, syslinux/isolinux, grub. В связи с "широким распространением" линукс-загрузчика grub-2 и из соображений совместимости с последними "большими" Линуксами, выбран именно он (хотя использование grub-legacy (просто grub), или grub4dos много проще и понятней).
   Диск монтируется в /mnt и по этому "адресу" в него переписывается/копируется стандартный набор /bin /etc /home /root ... ... ..., /boot в случае Live-CD может отсутствовать, тогда надо добавить его вручную.
   Затем на этот диск (имя его скорее всего будет /sda - так устроен gparted) устанавливается загрузчик. Файл конфигурации загрузчика вероятно придется создавать вручную, но даже если установка загрузчика создаст файл grub.cfg (что в виртуальной машине не всегда происходит) его все равно придется править и помещать в "правильное" место.
   Авторы загрузчика grub-2 по всей видимости предполагают, что система (каноническая) уже установлена, имеет /boot /etc и ждет "оплодотворения" в эти директории от загрузчика, а это не всегда так в случае с маленькими Линуксами (они нередко устроены несколько иначе, чем например Linux-Ubuntu - хотя бы в части /dev).

7. Важный момент - как именовать новый диск и новый раздел на нем для загрузчика в новом файле grub.cfg - вот реальный пример этого файла для работы со сверх-маленьким Live-линуксом на основе ядра 3.2.0 от Юбунты:
    для загрузки в виртуальной машине CD-ISO образа

    menuentry "3 SFSL 121114 (Ubuntu-12.10)" {
        set root='(cd)'
        linux /CDlinux/_sfsl/live/vmlinuz320  <ключи загрузки ядра пропускаю>
        initrd /CDlinux/_sfsl/live/initrd320.img
    }

    а для загрузки новоиспеченного виртуального диска (CD-ISO образ отключается за ненадобностью)

     menuentry "3 SFSL 121114 (Ubuntu-12.10)" {
        set root=(hd0,1)
        linux /CDlinux/_sfsl/live/vmlinuz320 root=(hd0,1) <ключи загрузки ядра пропускаю>
        initrd /_sfsl-121114/live/initrd320.img
    }

   Установка переменной для обозначения корня диска отличается и если set root='(cd)' необходим для загрузки "никакого" диска с образа CD-ISO, то для загрузки IDE-Hard-Disk (который в системе /dev/sda --> sda1) нужен канонический set root=(hd0,1) Если поменять их местами, то обе загрузки станут нерабочими.

8. Виртуальный IDE-Hard-Disk, имеющий таблицу разделов, из VMware-Player можно примонтировать в материнскую (HOST) /mnt и смотреть и править, если что-то не так.

9. Для более продуктивной работы с готовыми Live-CD-ISO образами можно/нужно распаковать их во временный рабочий каталог на HOST-машине (например архиватором file-roller или peazip) и в процессе изменений-совершенствования паковать в CD-ISO образ снова и загружать в виртуальную машину. Вот как это может выглядеть:
   /home/<имя_пользователя>/"Рабочий стол"/cd-dir/<распакованный_ISO-образ>
   /cd-dir/mkisofs.sh такого содержания (пример для загрузчика eltorito-grub - это grub-2):

    #!/bin/bash
    #
    # build CD-sfsl ISO image

    MKISO=`type -p genisoimage 2>/dev/null` ||
    MKISO=`type -p mkisofs 2>/dev/null` || {
      type -a xorriso 2>/dev/null &&
      set `xorriso --version 2>/dev/null |
           sed -n 's/^xorriso version\s*:\s*//p' |
           tr . " "` 0 &&
      [ $1 -ge 1 ] &&
      [ $2 -ge 1 ] &&
      MKISO="xorriso -as mkisofs"
    } || {
      echo "Sorry, genisoimage, mkisofs, or xorriso 1.1.0+ is needed."
      exit 1
    }

    $MKISO    -v -R -J -joliet-long -input-charset utf8 \
        -c boot.cat -hide boot.cat -b CDlinux/boot/i386-pc/eltorito.img \
        -no-emul-boot -boot-load-size 4 -boot-info-table \
        -o /tmp/sfsl121114grub2.iso `dirname "$0"`

   Этот скрипт пытается использовать genisoimage, mkisofs, или xorriso для создания CD-ISO образа из содержимого каталога /cd-dir и пишет его в /tmp под именем sfsl121114grub2.iso (в данном примере).
   Далее этот образ можно переместить, если надо, а можно из /tmp загружать в виртуальную машину.
   Загрузчик eltorito-grub взят из дистрибутива (Live-CD-ISO) CDlinux, который и сам по себе интересен:
  http://www.cdlinux.info/wiki/doku.php/

10. Упомянутый выше для примера дистрибутив SFSLinux еще более интересен:
   http://uco.puppyrus.org/forum/thread176.html
   Автор скромно, но с юмором назвал его так: "SFSLinux. Самоделка. Попытка скрестить Debian с Puppy". Создал несколько версий от CrunchBang до Linux-Ubuntu 12.10 и переключился на другие задачи.
   А интересен дистрибутив своей идеологией и производными от нее возможностями. К ядру системы подключается один или более модуль, упакованный в squashfs. Модулей может быть много или мало. Их можно создавать в системе самому, можно использовать готовые sfs-пакеты из репозитория Puppy-Linux, а можно устанавливать готовые deb-пакеты из репозиториев Debian и Ubuntu.
   Можно сохранять содеянное, а можно завершать работу без сохранения. И много чего еще интересного. Но Linux-Ubuntu 12.10 "уложенная" в ISO-образ размером 180 MB вызывает удивление и восхищение. Можно почитать от самого автора. Сейчас он тоже самое проделал с Arch-linux (но есть реализации и с другими "донорами"):
   http://forum.puppyrus.org/index.php/topic,13843.0.html

11. Тоже самое проделал с дистрибутивом Slitaz-Linux 4.0 - погонял несколько раз cd-dir <--> CD-ISO и перенес на виртуальный IDE-Hard-Disk - файл *.vmdk подключается и в VirtualBox машине.
   В Slitaz-Linux есть gparted - им отформатировал виртуальный диск. Загрузчик в Slitaz-Linux по умолчанию grub-legacy, воспользовался им для установки загрузчика на виртуальный диск /dev/sda. Slitaz имеет свой встроенный установщик на HDD/FlashDisk с его помощью установил систему на виртуальном диске.
   Выключение виртуальной машины. Отключение в настройках загрузки с CD-ISO образа и включение загрузки с виртуального диска IDE Hard-Disk, на котором теперь стоит полноценная система Slitaz-Linux с загрузчиком. Загрузившись с такого диска можно дальше настраивать/переделывать систему под свои нужды, можно сохранять промежуточные результаты в архив на HOST-диске. Можно такой диск (а это файл *.vmdk) переносить на флэшке в другие места, передавать друзьям (на новом месте нужна установленная виртуальная машина).

12. Все это можно выполнить и в VMware и в VirtualBox и при этом нет нужды устанавливать дополнения типа wm-ware-tools. Выбор машины - дело вкуса/привычки.

Модератору: Если такая тема уже освещалась, а я не увидел, то смело удаляйте.