Загрузка raw-диска windows 10 vm в virtualbox загружается в оболочку grub - PullRequest
0 голосов
/ 29 июня 2018

У меня установлена ​​двойная загрузка с Windows 10 и Kubuntu 18. Следуя инструкциям, найденным здесь и там, мне удалось заставить Windows работать в качестве гостя на хосте Kubuntu в качестве виртуальной машины с использованием VirtualBox.

sudo usermod -a -G disk $USER
VBoxManage internalcommands createrawvmdk -filename "/path/to/vm/win10.vmdk" -rawdisk /dev/sda -partitions 1,3,4 -relative

Первая строка - избегать запуска VirtualBox с правами суперпользователя.
Когда я загружаю виртуальную машину, я кратко вижу сообщение об ошибке

Boot Failed. EFI DVD/CDROM
SystemBootOrder not found. Initializing defaults.
Creating boot entry "Boot0003" with label "ubuntu" for file "\EFI\ubuntu\shimx64.efi"

, а затем в конечном итоге в grub shell. Теперь, когда я запускаю команды

insmod chain
set root=(hd0,gpt1)
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
boot

Windows загружается и работает просто отлично, но вводить их каждый раз не совсем гладко. Есть идеи, как навсегда это исправить? Обратите внимание, что я все еще хотел бы иметь возможность физически загружаться в обеих ОС.

Спасибо

1 Ответ

0 голосов
/ 04 февраля 2019

У меня была такая же проблема. Я исправил это, но затем обновил свое ядро, и поэтому grub переустановил его для меня! Во второй раз выяснить это было быстрее, но я подумал, что в следующий раз будет еще быстрее найти ответ на StackOverflow!

Мой файл grub.cfg в / boot / efi / EFI / ubuntu выглядел так:

search.fs_uuid 47d6233f-c0ae-4f89-bf18-184452eac803 root hd0,gpt6
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

Поскольку мы настроили для работы файл vmdk VirtualBox только с выбранными разделами для Windows, команда search.fs_uuid не работала, $ root был пуст и поэтому grub не может найти $ prefix / grub.cfg (/ boot / grub / grub.cfg в моем rootfs linux, который находится на sda6 == gpt6)

Я автоматизировал это, изменив EFI grub.cfg, обратите внимание, что мой системный раздел EFI равен 2, а не 1, как в вашем примере:

search.fs_uuid 47d6233f-c0ae-4f89-bf18-184452eac803 root hd0,gpt6 
set prefix=($root)'/boot/grub'
if [ -f $prefix/grub.cfg ]
then
    configfile $prefix/grub.cfg
else
    insmod chain
    set root=(hd0,gpt2)
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
    boot
fi

Теперь, если grub сможет найти файл cfg, он даст мне меню для выбора загрузки, как и раньше, но если он не сможет - когда я нахожусь в VirtualBox - он просто загрузится прямо в Win10.

Надеюсь, это поможет!

...