GPT диски & UEFI загрузка

Виртуальные машины и среды исполнения

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

GPT диски & UEFI загрузка

Непрочитанное сообщение Olej » 17 сен 2012, 11:57

Вопрос такой:

- всякая система управления виртуальными машинами (QEMU, VirtualBox, Bochs, Virtual PC, VMware, Xen, ... ) использует некоторый образ системного диска VM (исключая экзотические случаи, такие как "прямая загрузка" Linux в QEMU, когда указываются прямо файлы ядра и initrd); этот образ может быть файлом образа (чаще всего), но может быть и реальным устройством: диском, partition реального диска, USB флешкой и др. - но это раздичие совершенно не важно для дальнейшего вопроса...

- для загрузки VM используется некоторый эмулятор BIOS (многими заимствованный из проекта Bochs, где он поставляется в виде отдельного файла и может быть подменен)...

- но сейчас на смену MBR таблице разделов диска (реального или виртуального) идёт структура GPT дисков + вместо программного кода BIOS - UEFI (стандарт этот весьма давний, представленный Intel, известный тогда ещё под именем EFI)

- диски GPT (вместо MBR) имеют свою таблицу размещения partition (до 128 шт. вместо 4-х в MBR), свои ID типов разделов (разделы для Linux файловых систем = 8300 вместо 83 в MBR, для большинства Windows разделов - 0700 вместо множественных 0b, 0c, 0e, 0f и мн. других ранее), другие программы обслуживания разделов - gdisk вместо fdisk...

- различий множество ... но их корректная поддержка - это дело самой установленной виртуальной машины! ... и современные Linux дистрибутивы с этим замечательно справляются, как на реальных дисках, так и на виртуальных ...

- кроме одного: UEFI загрузка!

- для обеспечения UEFI загрузки для диска GPT (помимо соблюдения прочих соглашений в структуре самого GPT диска), требуется программный код UEFI вместо кода BIOS ...

- в железках (особенно массово в последних моделях ноутбуков) этот программный код UEFI зашит в ROM (флеш) железки ... но для виртуальных машин его может обеспечить только менеджер виртуальных машин (конкретно вот те: QEMU, VirtualBox, Bochs, Virtual PC, VMware, Xen, ... );

- но ни в одном из них я не нахожу следов (опций, конфигураций) кода UEFI загрузчика ... может не там и не то ищу?

- ведь при начавшемся массовом переходе производителей железок на UEFI, тот менеджер виртуальных машин, который не предоставит UEFI загрузчика ... "ещё вчера" - просто сойдёт со сцены средств виртуализации, а это на сегодня рынок жесточайшей конкуренции, как мало какой другой в IT...

Что происходит?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPT диски & UEFI загрузка

Непрочитанное сообщение Olej » 17 сен 2012, 12:16

Olej писал(а): - но ни в одном из них я не нахожу следов (опций, конфигураций) кода UEFI загрузчика ... может не там и не то ищу?
Одна из лучших работ относительно UEFI загрузки, мне известных, это то, что делает Roderick W. Smith:

1. The rEFInd Boot Manager
Originally written: 3/14/2012; last Web page update: 8/12/2012, referencing rEFInd 0.4.5
...
In theory, EFI implementations should provide boot managers. Unfortunately, in practice these boot managers are often so poor as to be useless.
2. Gigabyte's Hybrid EFI

3. присутствующая уже практически во всех дистрибутивах, наиболее "дееспособная" утилита работы с GPT - gdisk - это его же работа.

Вот и появилось такое соображение: нельзя ли использовать эти наработки для загрузки VM из образов виртуальных GPT дисков?

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPT диски & UEFI загрузка

Непрочитанное сообщение Olej » 17 сен 2012, 12:26

Olej писал(а): 2. Gigabyte's Hybrid EFI
Автор описывает установки для Debian (Ubuntu?) - http://www.rodsbooks.com/gb-hybrid-efi/:
A variant on this procedure is to store rEFInd as EFI/Microsoft/Boot/bootmgfw.efi rather than EFI/Boot/bootx64.efi. If you do this, the firmware will probably detect it and add an entry to its boot manager list, but you can do this manually with the Linux efibootmgr utility if it doesn't. You must boot using EFI—I find that an Ubuntu installer booted in its "live CD" mode works well for this purpose, since you can install efibootmgr by typing sudo apt-get install efibootmgr. Thereafter, typing sudo efibootmgr -c -l \\EFI\\Microsoft\\Boot\\bootmgfw.efi -L rEFInd as root tells the firmware about the boot manager. (Note the use of double backslashes to separate directory elements with efibootmgr.) Using the default name of EFI/Boot/bootx64.efi is simpler and probably more reliable, but you can try this alternative if you can't get EFI/Boot/bootx64.efi to work.
... но, как оказывается, его проекты включены (и даже установлены по дефаулту) в последние дистрибутивы:

Код: Выделить всё

bash-4.2$ yum list all efi*
...
Установленные пакеты
efibootmgr.i686                                      0.5.4-12.fc17                                       @russianfedora/$releasever

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPT диски & UEFI загрузка

Непрочитанное сообщение Olej » 17 сен 2012, 20:08

Olej писал(а): - для обеспечения UEFI загрузки для диска GPT (помимо соблюдения прочих соглашений в структуре самого GPT диска), требуется программный код UEFI вместо кода BIOS ...
...
- но ни в одном из них я не нахожу следов (опций, конфигураций) кода UEFI загрузчика ... может не там и не то ищу?
VirtualBox:
-fedora.17 - Свойства.png
-fedora.17 - Свойства.png (62.79 КБ) 7173 просмотра
Оно? ;-)

P.S. Не знаю, с какой версии появилось, это 4.1.22, ... сегодня обновлял, а релиз:
07-Sep-2012
Но в предыдущем 4.1.20 эта "галка" тоже была ... просто не обращал на неё внимания из-за ненадобности ;-)

P.P.S. см. комментарий, который пишет VirtualBox внизу скриншота.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPT диски & UEFI загрузка

Непрочитанное сообщение Olej » 18 сен 2012, 11:02

Olej писал(а): Оно? ;-)
VM Fedora 17 с установленным флагом EFI слетает "на дух" ... не успеваешь в терминале увидеть ...
Только в логах VirtualBox и удаётся увидеть:
Unexpected trap during early EFI bootstrap!!

Olej писал(а): P.S. Не знаю, с какой версии появилось, это 4.1.22, ... сегодня обновлял, а релиз:
07-Sep-2012
Но в предыдущем 4.1.20 эта "галка" тоже была ... просто не обращал на неё внимания из-за ненадобности ;-)
В переводе документации VirtualBox - Alternative firmware (EFI):
Начиная с версии 3.1, VirtualBox имеет экспериментальную поддержку Extensible Firmware Interface (EFI), являющийся новым промышленным стандартом, предназначенный для замены BIOS - первому интерфейсу, обеспечивающим загрузку компьютера и некоторых системных служб.

По умолчанию, VirtualBox использует BIOS. Для использования EFI в виртуальной машине, вы должны включить EFI в окне "Свойства" (см. раздел “вкладка "Материнская плата" ”). Вы можете также использовать VBoxManage:

VBoxManage modifyvm "VM name" --firmware efi
Для возврата к использованию BIOS, выполните команду:

VBoxManage modifyvm "VM name" --firmware bios
...
Видео режимы EFI

EFI поддерживает два видео интерфейсв: GOP (Graphics Output Protocol) и UGA (Universal Graphics Adapter). Mac OS X использует GOP, а Linux более склонен к UGA. VirtualBox позволяет управлять размером framebuffer обоих интерфейсов.

Для управления GOP, используется команда VBoxManage :

VBoxManage setextradata "VM name" VBoxInternal2/EfiGopMode N
Где N может одно значение из 0,1,2,3,4, что соответствует разрешениям 640x480, 800x600, 1024x768, 1280x1024, 1440x900.

Для изменения разрешений UGA используйте:

VBoxManage setextradata "VM name" VBoxInternal2/UgaHorizontalResolution 1440
VBoxManage setextradata "VM name" VBoxInternal2/UgaVerticalResolution 900
Видео режимы GOP и UGA можно изменять только для выключенных ВМ и остаются неизменными до следующего изменения.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: GPT диски & UEFI загрузка

Непрочитанное сообщение Olej » 18 сен 2012, 20:44

Olej писал(а):
Вы можете также использовать VBoxManage:

VBoxManage modifyvm "VM name" --firmware efi
Для возврата к использованию BIOS, выполните команду:

VBoxManage modifyvm "VM name" --firmware bios
Видео режимы EFI
EFI поддерживает два видео интерфейсв: GOP (Graphics Output Protocol) и UGA (Universal Graphics Adapter). Mac OS X использует GOP, а Linux более склонен к UGA. VirtualBox позволяет управлять размером framebuffer обоих интерфейсов.

Для управления GOP, используется команда VBoxManage :

VBoxManage setextradata "VM name" VBoxInternal2/EfiGopMode N
Где N может одно значение из 0,1,2,3,4, что соответствует разрешениям 640x480, 800x600, 1024x768, 1280x1024, 1440x900.

Для изменения разрешений UGA используйте:

VBoxManage setextradata "VM name" VBoxInternal2/UgaHorizontalResolution 1440
VBoxManage setextradata "VM name" VBoxInternal2/UgaVerticalResolution 900
Видео режимы GOP и UGA можно изменять только для выключенных ВМ и остаются неизменными до следующего изменения.
Теперь с этим придётся изрядно влезать в командный режим VirtualBox!

Но для этого нужна техдокументация по VBoxManage ...

1.

Код: Выделить всё

[olej@nvidia ~]$ man VBoxManage
Нет справочной страницы для VBoxManage
2.

Код: Выделить всё

[olej@nvidia ~]$ VBoxManage --help
Oracle VM VirtualBox Command Line Management Interface Version 4.1.22
...
VBoxManage modifyvm         <uuid|name>
...
                            [--firmware bios|efi|efi32|efi64]
...
VBoxManage setextradata     global|<uuid>|<name>
                            <key>
                            [<value>] (no value deletes key)
3.

Код: Выделить всё

[olej@nvidia ~]$ VBoxManage getextradata     global enumerate
Key: GUI/DetailsPageBoxes, Value: general,system,preview,display,storage,audio,network,usb,sharedFolders,description
Key: GUI/HostScreenSaverDisabled, Value: false
Key: GUI/Input/AutoCapture, Value: false
Key: GUI/Input/HostKeyCombination, Value: 65300
Key: GUI/LastVMSelected, Value: 40ea310b-e42f-4d83-8c90-392acb76393c
Key: GUI/LastWindowPosition, Value: 82,130,803,548
Key: GUI/MaxGuestResolution, Value: auto
...

Код: Выделить всё

[olej@nvidia ~]$ VBoxManage getextradata "fedora.17-UEFI" enumerate
Key: GUI/LastCloseAction, Value: powerOff
Key: GUI/LastGuestSizeHint, Value: 640,480
Key: GUI/LastNormalWindowPosition, Value: 41,47,640,524
4. UserManual.pdf:
8 VBoxManage
8.1 Introduction

As briefly mentioned in chapter 1.14, Alternative front-ends, page 30, VBoxManage is the
command-line interface to VirtualBox. With it, you can completely control VirtualBox from the
command line of your host operating system.
...

Ответить

Вернуться в «Виртуализация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 12 гостей