ROSA и UEFI-режим в VirtualBox

Материал из Rosalab Wiki
Версия от 19:18, 5 февраля 2015; CaptainFlint (обсуждение | вклад) (Описаны последние изменения инсталлятора)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Если вам хочется поэкспериментировать с реализацией UEFI в ROSA Desktop, а соответствующего оборудования под рукой нет, можно воспользоваться эмуляцией UEFI в VirtualBox. Поскольку его реализация очень ограничена и не полностью соответствует стандарту, придётся выполнить несколько ручных действий. Также не забывайте, что UEFI в ROSA поддерживается только в 64-битной версии.

  • VirtualBox не поддерживает UEFI-загрузку с оптических дисков, а загрузка с USB-устройств в нём крайне проблематична. Поэтому для запуска установки в UEFI-режиме нам потребуется дополнительный виртуальный жёсткий диск. Загрузив ISO-образ дистрибутива ROSA, сконвертируйте его в VDI следующей командой:
VBoxManage convertfromraw <путь к ISO-образу> <путь к VDI-файлу>
  • Теперь создаём новую виртуальную машину и включаем в ней режим UEFI (страница настроек «System», опция «Enable EFI»). На странице Storage к основному жёсткому диску добавляем ещё один — тот VDI, который мы получили из ISO-образа. Прочие параметры настраиваются как обычно.
  • Запускаем виртуальную машину, загрузка должна начаться с нашего второго (образного) диска. Если что-то пошло не так, можно перезапустить машину, нажать F2 или F12 и в разделе Boot Manager выбрать нужный диск вручную.
  • Загрузился инсталлятор ROSA. Делаем всё, как обычно, за исключением следующих моментов:
    • Таблицу разделов желательно делать в GPT, с MBR могут возникать странные проблемы; причины пока не выяснены.
    • Также не забываем, что для UEFI-загрузки необходим дополнительный раздел специального типа «EFI», монтирующийся в /boot/efi. Размер можно выставлять от 16 Мб, файлов там будет немного (но лучше 32 Мб или выше, чтобы форматирование выполнилось в FAT32, а не FAT16). Вообще-то, если вы забудете про этот раздел, инсталлятор должен запретить установку и вернуть в диалог разбивки диска, но, как показывает практика, некоторые пользователи как-то ухитряются обойти это ограничение и получают нерабочую систему. Если вам удастся найти этот обходной путь, пожалуйста, сообщите о нём.
    • При установке загрузчика предлагаются не диски, как обычно, а EFI-разделы, а в новых образах эта опция и вовсе заблокирована. Это нормально, поскольку в EFI-режиме grub2 может быть установлен только в раздел /boot/efi, и больше никуда.

После завершения установки мы получаем рабочую систему. Но есть нюанс: VirtualBox не запоминает список зарегистрированных UEFI-загрузчиков. Поэтому как только вы выключите виртуальную машину, следующая попытка загрузки выбросит вас в страшное чёрное окно UEFI-консоли. Чтобы обойти эту проблему, необходимо в EFI-разделе создать файл startup.nsh, в котором будет указан команда запуска нашего EFI-загрузчика. Для этого в UEFI-консоли выполните команды:

fs0:
edit startup.nsh

(Если у вас несколько EFI- и FAT-разделов, то в fs0: вместо нуля укажите тот номер, который соответствует разделу /boot/efi — список доступных файловых систем отображается над консольным приглашением.)
В открывшемся редакторе введите строчку:

\EFI\rosa\grubx64.efi

Далее жмём F2 (или Ctrl+S), Enter для сохранения файла, затем F3 (или Ctrl+Q) для выхода. Теперь можно перезагрузить машину. Через 5 секунд ожидания скрипт startup.nsh автоматически выполнится, запустив тем самым grub2.
Кстати, этот файл можно создать и заранее, в процессе установки, переключившись в соседний терминал по Ctrl+Alt+F2 (или в обычную графическую консоль, если вы устанавливаете из Live-режима), только имейте в виду, что файл должен быть сохранён в кодировке UTF-16LE с BOM-сигнатурой.

P.S. Диск с дистрибутивом Росы можно отключить, а можно оставить на случай будущих переустановок. К сожалению, жёсткие диски, в отличие от оптических, в VirtualBox нельзя менять на лету, когда гостевая система работает или находится в сохранённом состоянии, поэтому каждое такое переподключение потребует завершения работы гостевой системы.