kyb
@kyb
любозналельный программист, сисадмин, эмбеддер

Как сделать загрузку ОС через VirtualBox или живьём (EFI)?

У маков есть классная фича. Однажды установленная Windows через bootcamp может быть подхвачена виртуальной виртуальной машиной Parallels. Это значит что сидя в основной ОС я могу подгружать винду через виртуалку, а если надо дать винде полный доступ к железу, например, к видеокарте, чтобы поиграть полноценно то запускаю через bootcamp.

У меня не мак. Я пользуюсь Ubuntu. И нередко Windows. Кофигурация железа достаточно высокая, чтобы запускать тяжёлые Windows-приложения через VirtualBox из Ubuntu. Однако содержать две системы - одну для живой загрузки и одну для виртуальной - не удобно.

Ищу идеи и решения для реализации возможности запускать один и тот же Windows как живьём, так и через виртуальную машину. Из возможных инструментов предполагаю VirtualBox, rEFInd (сам ищет все ОС с efi-загрузчиком).
  • Вопрос задан
  • 1014 просмотров
Решения вопроса 1
kyb
@kyb Автор вопроса
любозналельный программист, сисадмин, эмбеддер
Хвала всем светлым богам, я это сделал!!! Мечта сбылась.

У меня на одном физическом диске установлены Ubuntu и Windows 10. Таблица разделов GPT. Соответственно загружается через EFI. По идее с MBR проблем не будет. Всего разделов 8, 1 efi, 1 ubuntu, 1 swap, 4 windows со своими recovery, 1 пользовательский.

Итак, мы уже в Ubuntu (вероятно другой debian-based тоже катит), и VirtualBox последней версии установлен. Тогда Поехали.
  1. Дать доступ к разделу пользователю или группе. Создаем/редактируем файлик
    sudo nano /lib/udev/rules.d/99-vbox-disk-rights.rules

    Пишем в него строчку KERNEL=="sdb", OWNER="user" или KERNEL=="sdb", GROUP="vboxusers". Я предпочел записать группу, и добавил в неё себя sudo adduser $USER vboxusers. Reboot. Проверяем
    kyb@kyb-ubuntu-pc:~$ ls -la /dev/sd*
    		brw-rw---- 1 root disk      8,  0 Фев 21 01:57 /dev/sda
    		brw-rw---- 1 root disk      8,  1 Фев 21 01:57 /dev/sda1
    		brw-rw---- 1 root disk      8,  2 Фев 21 01:57 /dev/sda2
    		brw-rw---- 1 root vboxusers 8, 16 Фев 21 02:25 /dev/sdb
    		brw-rw---- 1 root disk      8, 17 Фев 21 01:57 /dev/sdb1
    		brw-rw---- 1 root disk      8, 18 Фев 21 01:57 /dev/sdb2
    		...
    spoiler
    Это не очень правильно давать доступ на весь диск, особенно если на нём же стоит хост-система, но я так оно работает, иначе надо извращаться. позже. В [1] хорошо расписано, что касается MBR, до GPT, насколько я нагуглил/яндесил ещё не добрались.

  2. Создать сырой виртуальный диск, по сути ссылку на "живой" диск.
    VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sdb
    spoiler
    Опять же это не очень правильно давать доступ ко всему диску, но сейчас главное толкнуть телегу, а не бежать по граблям. Правильно было бы как-то так.
    VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sdb -partitions 1,2,6,7 -relative
    Не проверял.

  3. Создать виртуальную машину. Всё как обычно, и подключаем новоявленный виртуальный диск. Я также поставил 2 галочки в настройках Система -> Материнская плата -> EFI, и Носители -> имя-моего-диска -> твердотельный диск.
  4. Взлетаем! Я очень удивился ;) Полёт нормальный.
    spoiler
    d84b829fd43f4482aa0b1ba1ac34edb6.png


Ссылки: (огромная благодарность авторам за помощь)
1. Работа с RAW дисками в VirtualBox. Рекомендуется к прочтению.
2. Add user to existing Group

Также рекомендую:
1. rEFInd - суперская программа которая запускается после EFI и ищет все EFI-совместимые системы на всех дисках. Понимает видовсы и линуксы. С ней необязательно прописывать ОС (efi-файлы) в efi-раделе. Установка в 4 команды из-под linux.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы