Posts Tagged: Hardware


15
Фев 09

Изготовление загрузочной флешки с эмулятором EFI — DUET

В прошлом посте я описал возможность загрузки в режиме EFI для плат Intel со встроенным (хоть и хорошо замаскированным) «аппаратным» EFI. Теперь как же быть всем остальным, не имеющим «счастья» обладать интеловской материнкой? Тут все чуть сложнее, но выход также есть: существует эмулятор, практически полностью реализующий все функции efi на текущем железе — DUET. Скачать исходники его можно здесь (нужно зарегистрироваться), но для их сборки понадобится windows и visual studio 2005 (2008). Для сборки x64-файлов необходимо при установке Visual Studio 2005/2008 поставить галку «x64 compiler support» (или как-то так, точно не помню) в выборе опций. VS2003 не умеет собирать x64-файлы.

Как собирать?
1. Качаем релиз edk по вышеупомянутой ссылке и распаковываем его в c :\edk.
2. Ищем в интернете masm 6.15 (ссылок полно) и тоже распаковываем его, скажем, в c:\masm615
3. Создаем в папке c:\edk файлик env.cmd следующего содержания:

call "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
set EDK_SOURCE=c:\edk
set MASMPATH=c:\masm615
set EFI_BOOT_DISK=E:

скорректируйте пути, соответственно вашим.

4. редактируем файл c:\Edk\Sample\Platform\DUET\Build\config.env, дабы измнить в нем следующие строки:

EFI_BUILD_TARGET_X64           = YES
USE_VC8                        = YES
USE_VC8_X64                    = YES

5. редактируем файл c:\Edk\Sample\Platform\DUET\Build\duet.env, если хотим убрать/добавить какие-либо efi-фичи.

6. запускаем консоль (cmd.exe) и в ней:

c:\edk\env.cmd
cd c:\Edk\Sample\Platform\DUET\
nmake uefi64 (или uefi32)

сборка может занять продолжительное время.

7. готовим флешку: у меня она прописана в env.cmd как диск E:. Внимание: на флешине должна присутствовать mbr (т.е. она должна быть загрузочной, сделать ее такой можно с помощью, например, программки flashboot).

cd uefi64  (или uefi32)
nmake createusb

перевтыкните флешку и:

nmake usb

8. Готово, можно загружаться! С помощью этой флешки каждый теперь может получить вполне работающую систему с efi на любой плате!


13
Фев 09

Загрузка в режиме EFI на плате Intel DP35DP

Многие из обладателей интеловских плат (DP35DP, DX38BT, BadAxe2 и пр.) слышали или читали о поддержке UEFI, но воспользоваться этим способом загрузки было не просто. Здесь я приведу детальное руководство для всех желающих поэкспериментировать в этой области.

На самом деле, на этих платах EFI (точнее, x64 UEFI) конечно же есть, но с двумя упущениями: полностью отсутствует консоль (shell) и… поддержка режима AHCI. Последнее особенно странно, учитывая, что в CSM («эмулятор» биоса, через который мы обычно работаем) эта поддержка реализована. Возможно, в более современных биосах или платах на P45 или X58 она и добавилась, но на моей DP35DP с bios 0517 ее нету.

Все дальнейшее описание производится для операционных систем типа FreeBSD или Mac OS X. Впрочем, найти руководство по работе с разделами GPT EFI под Windows при помощи diskpart совсем несложно. Много полезного содержится, например, тут. Итак приступим:

1. монтируем efi-раздел (для загрузки в EFI необходим GPT-диск!):

sudo mkdir /Volumes/EFI

sudo mount -t msdos /dev/disk0s1 /Volumes/EFI

2. кидаем в него shell в папке /efi/boot/ (например этот, от Tianocore EDK) или любой другой efi-модуль, названный bootx64.efi (этот путь обязателен: /efi/boot/bootx64.efi!) и имеющий x64-архитектуру.

3. перезагружаемся и переключаем контроллер в ide-режим, сохраняем настройки и заходим в экран Boot Options (F10).

Должна получится примерно такая картина (Windows Boot Manager не в счет — запись в nvram осталась в наследство от давно снесенной висты):

efi boot options

4. выбираем «Internal EFI Shell — Hard Drive» и грузим наш efi-shell (или что-нить другое). Если надпись не появляется, система виснет при загрузке или возвращается обратно в boot options — обновите биос (у меня на 0517 все гарантировано работает, на 03ХХ и 04ХХ были проблемы) и убедитесь в том, что загрузочный efi-файл имеет архитектуру x64.

5. ура, мы в консоли:

efi shell dp35dp