Зачастую на компьютере установлено несколько операционных систем. Например, Windows с переменным успехом дружит с разными версиями GRUB и вполне уживается с Linux в пределах одного компьютера. Но часто из системы в систему не попрыгаешь даже в текущих реалиях жизни, где сплошь и рядом SSD и молниеносные дисковые операции. Для каких-то вещей вполне хватило бы виртуалки со второй системой, но настраивать всё заново долго, а быстрые гигабайты стоят по-прежнему космических денег.
Рассмотрим использование в Virtualbox под Ubuntu установленного на соседнем разделе Windows.
Основной принцип заключается в том, чтобы подмонтировать в качестве VMDK-образа гостевой системы Virtualbox установленную на физический раздел копию Windows. Но просто так винда не стартует, ей нужен собственный загрузчик. Его нет на диске с Windows, потому что там прописан GRUB. Его можно либо каждый раз восстанавливать при запуске гостя, либо воспользоваться дополнительным, взятым из отдельного ISO-образа, монтируемого вместе с виртуальной машиной.
Дабы не следить особо за правами на чтение дисков, образов и прочего, в начале наших манипуляций дадим своему пользователю доступ до всего необходимого:
sudo adduser $(whoami) vboxusers sudo adduser $(whoami) disk
После перезагрузки нам будет доступно использование vboxmanage без суперпользовательских привилегий.
С помощью fdisk -l находим диск и загрузочный раздел с Windows, он будет помечен звездочкой
fdisk -l Диск /dev/sdb: 120.0 Гб, 120034123776 байт 255 головок, 63 секторов/треков, 14593 цилиндров, всего 234441648 секторов Units = секторы of 1 * 512 = 512 bytes Размер сектора (логического/физического): 512 байт / 4096 байт I/O size (minimum/optimal): 4096 bytes / 4096 bytes Идентификатор диска: 0x44e9d489 Устр-во Загр Начало Конец Блоки Id Система /dev/sdb1 * 2048 104859647 52428800 7 HPFS/NTFS/exFAT /dev/sdb2 104859648 184860671 40000512 83 Linux /dev/sdb3 184860672 216860671 16000000 82 Linux своп / Solaris
Создаем виртуальную машину через GUI Virtualbox, указываем необходимые для работы параметры на свой вкус. На вопрос о создании жесткого диска отвечаем отрицательно.
Затем идем в папку с этой виртуальной машиной на диске (для удобства дальнейшие операции будут проводиться там) и создаем образ с загрузчиком:
cd /media/xandros/data/VirtualBox/win7 mkdir -p .iso/boot/grub touch .iso/boot/grub/grub.cfg
D этот файл кладём содержимое своего пункта меню Windows из файла /boot/grub/grub.cfg, предварительно указав минимальные параметры для ускорения запуска
insmod part_msdos set default=0 set timeout=0 menuentry 'Windows 7 (loader) (на /dev/sdb1)' --class windows --class os $menuentry_id_option 'osprober-chain-686CD2336CD1FBAE' { insmod part_msdos insmod ntfs set root='hd1,msdos1' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1 686CD2336CD1FBAE else search --no-floppy --fs-uuid --set=root 686CD2336CD1FBAE fi parttool ${root} hidden- chainloader +1 }
Создаем непосредственно ISO-файл:
grub-mkrescue --output=/media/xandros/data/VirtualBox/win7/grub2.iso /media/xandros/data/VirtualBox/win7/.iso/ xorriso 1.3.2 : RockRidge filesystem manipulator, libburnia project. Drive current: -outdev 'stdio:/media/xandros/data/VirtualBox/win7/grub2.iso' Media current: stdio file, overwriteable Media status : is blank Media summary: 0 sessions, 0 data blocks, 0 data, 38.9g free Added to ISO image: directory '/'='/tmp/grub.Sb4dZZ' xorriso : UPDATE : 281 files added in 1 seconds Added to ISO image: directory '/'='/media/xandros/data/VirtualBox/win7/.iso' xorriso : UPDATE : 284 files added in 1 seconds xorriso : NOTE : Copying to System Area: 512 bytes from file '/usr/lib/grub/i386-pc/boot_hybrid.img' xorriso : UPDATE : 100.00% done xorriso : UPDATE : 100.00% done ISO image produced: 2536 sectors Written to medium : 2536 sectors at LBA 0 Writing to 'stdio:/media/xandros/data/VirtualBox/win7/grub2.iso' completed successfully.
Теперь создадим образ .vmdk, который будет ссылаться на диск /dev/sdb с разделом sdb1 в качестве целевого (здесь relativeиспользуется для относительной адресации разделов)
VBoxManage internalcommands createrawvmdk -filename /media/xandros/data/VirtualBox/win7/win7sdb1.vmdk -rawdisk /dev/sdb -partitions 1 -relative RAW host disk access VMDK file /media/xandros/data/VirtualBox/win7/win7sdb1.vmdk created successfully.
Теперь входим в настройки нашей системы в Virtualbox, выбираем Носители — Контроллер SATA. Жмем на первую кнопку снизу «добавить» и выбираем наш VMDK образ. В контроллере IDE выбираем ISO-образ с загрузчиком.
Пробуем загрузиться.
P.S. Во время работы с Windows в качестве гостевой можно монтировать любые оптические диски и образы, загрузчик будет необходим только при запуске.
Ссылки: