Несколько лет назад я делал обратную операцию — перенос Ubuntu из VMware на раздел диска, однако с появлением у Windows 7 возможности загружаться с VHD-образа, решил перейти на такой вид виртуализации — чтобы все дополнительные ОС были в образах, а реально установлена на раздел была только одна основная. У меня, например, это до сих пор WinXP.
И перенести (а затем загрузить) в образ уже установленную Ubuntu гораздо проще, чем сделать тоже самое с Windows. Всё время в основном займет только копирование файлов.
Для осуществления этого даже не нужен какой-то специальный софт для создания образов (типа Acronis'а, etc.), всё необходимое есть в самой Ubuntu (и в любом линуксе).
А для непосредственно загрузки понадобится загрузчик из Wubi.
Создание образа
Потребуется загрузиться с LiveCD (я использовал ту же убунту), потому что скопировать файлы запущенной ОС не получится.
Для создания пустого RAW-образа размером 6 ГБ и сохранения его на NTFS-разделе используйте dd:
sudo su dd bs=1M count=6144 if=/dev/zero of=/media/WINXP/ubuntu/disks/root.disk |
Можно использовать и меньший размер, например 3 ГБ, ещё меньше не рекомендуется.
Здесь и далее некоторые очевидные команды вроде монтирования раздела с Windows или создания директорий для точек монтирования пропущены!
Теперь нужно инициализировать диск и создать и файловую систему (я использую ext3, но можно и ext4).
Я не знаю, как разбить диск при помощи отдельных команд (и есть ли вообще другие способы), но fdisk'ом это делается так:
fdisk /media/WINXP/ubuntu/disks/root.disk |
далее, находясь уже в оболочке fdisk, нужно последовательно выбрать такие команды:
o создание новой пустой таблицы разделов DOS w запись таблицы разделов на диск и выход |
ВАЖНЫЙ момент:
Как нетрудно заметить, сами разделы на диске НЕ создаются, поэтому корнем файловой системы будет устройство /dev/sda, а не sda1 как обычно.
Это сделано так, потому что при обычной установке Wubi из-под Windows, образ создаётся также без разделов. Но по идее создание разделов ничем не грозит, и образ будет загружаться тоже. Пробуйте сами)
Создание ФС:
mkfs.ext3 /media/WINXP/ubuntu/disks/root.disk -L UBUNTU |
Монтирование образа:
mount -o loop /media/WINXP/ubuntu/disks/root.disk /mnt/disk |
Копирование файлов с раздела текущей установки Ubuntu (смонтированной в /media/UBUNTU) в образ:
cp -axv /media/UBUNTU/* /mnt/disk/ |
Установка GRUB2 в образ и настройка
grub-install --force --no-floppy /dev/loop2 |
См. также примечание о параметре --allow-floppy.
В данном примере установка GRUB2 производится в блочное устройство /dev/loop2 (куда был смонтирован образ), узнать номер loopX можно в выводе mount.
Установка через grub-install может быть неудачной с первого раза, если это так, просто попробуйте ещё раз.
Конфиг /mnt/disk/etc/grub.d/40_custom:
#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry 'Ubuntu [WUBI]' --class ubuntu --class gnu-linux --class gnu --class os { insmod ntfs set uuid='XXXXXXXXXXXXXXXX' set disk='/ubuntu/disks/root.disk' search --no-floppy --fs-uuid --set=root $uuid loopback loop0 $disk set root='(loop0)' linux /vmlinuz root=UUID=$uuid loop=$disk ro vt.handoff=7 initrd /initrd.img } menuentry 'Ubuntu (recovery mode) [WUBI]' --class ubuntu --class gnu-linux --class gnu --class os { insmod ntfs set uuid='XXXXXXXXXXXXXXXX' set disk='/ubuntu/disks/root.disk' search --no-floppy --fs-uuid --set=root $uuid loopback loop0 $disk set root='(loop0)' echo 'Loading Linux ...' linux /vmlinuz root=UUID=$uuid loop=$disk ro single echo 'Loading initial ramdisk ...' initrd /initrd.img } |
Этот конфиг отличается от дефолтного, который устанавливает Wubi.
Не забудьте указать:
— свои пути к ядру (параметр linux
) и initrd-образу (параметр initrd
);
— правильный UUID NTFS-раздела на котором лежит образ root.disk (узнать можно в выводе команд ls -l /dev/disk/by-uuid или blkid) (параметр set uuid
).
После сохранения файла необходимо сделать chroot в ФС образа и обновить конфиг GRUB'а:
mount -o bind /dev /mnt/disk/dev mount -o bind /proc /mnt/disk/proc mount -o bind /sys /mnt/disk/sys chroot /mnt/disk update-grub exit umount /mnt/disk/sys umount /mnt/disk/proc umount /mnt/disk/dev |
ИЛИ:
Можно сохранить файл как /mnt/disk/boot/grub/custom.cfg, но сразу начиная с menuentry
, БЕЗ первых двух строк!
В таком случае изменения загрузочного меню будут применяться сразу же, и выполнять update-grub не нужно.
Однако, из-за бага #927157 (фикс которого выпущен для 12.10 не так давно, но у меня ничего не изменилось!), записи из custom.cfg не появляются в меню [почти никогда]. Может быть когда-нибудь это изменится:) Если у вас так сработает — то хорошо, ибо это лучший вариант.
Установка wubildr на NTFS-раздел
Скачайте отсюда wubi.exe и распакуйте при помощи 7z в корень раздела с Windows 2 файла загрузчика Wubi:
apt-get install p7zip-full 7z e -o/media/WINXP/ ./wubi.exe winboot/wubildr 7z e -o/media/WINXP/ ./wubi.exe winboot/wubildr.mbr |
Настройка основного загрузчика
Далее нужно настроить ваш основной загрузчик на запуск wubildr.
Для menu.lst GRUB1 (Legacy) и GRUB4DOS:
title Ubuntu [WUBI] chainloader /wubildr.mbr |
Для boot.ini Windows XP:
C:\wubildr.mbr="WUBI" |
BAT-файл для создания загрузочной записи в BCD Windows Vista/7:
@echo off Setlocal for /f "tokens=2" %%A in ('bcdedit.exe /create /d "WUBI" /application bootsector') do set guid=%%A bcdedit.exe /set %guid% device boot bcdedit.exe /set %guid% path \wubildr.mbr bcdedit.exe /displayorder %guid% /addlast endlocal |
Иногда после успешной загрузки Wubi появляется консоль GRUB2 и больше ничего не происходит. В таком случае нужно ввести:
configfile (hd0)/boot/grub/grub.cfg |
— должно появиться меню из конфига выше.
Таким образом, процесс загрузки будет происходить в несколько шагов:
1) Загрузчик вашей основной ОС загружает wubildr;
2) wubildr находит образ и передаёт управление GRUB2, находящемуся внутри него;
3) GRUB2 загружает ядро Ubuntu;
4) Наконец — PROFIT!!!!
Недостатки
Как всегда без минусов не обошлось:
— так же как и при аналогичном способе загрузки Win7 (ссылка в самом начале), гибернация НЕ работает;
— из-за фрагментации NTFS-раздела с образом система может работать медленнее, чем при обычной установке.
P.S. после небольшой модификации конфига GRUB2 можно запускать тот же образ в виртуальной машине. Об этом я напишу в следующий раз.
Последние комментарии