色々な環境でのEFI(&uEFI)
・Itanium2サーバー(IA64) 元祖EFI環境。 EFIシェルが標準で起動。 (弄ったのが大分昔なので細かい所は忘れてます(汗)) UEFIとはある程度互換性ありそうだが、実質別物。
・IBM System x UEFI対応マシンは、同時にIMM(WEB経由で電源操作とかをできるサーバー管理プロセッサ)を搭載している場合がほとんど BIOS設定メニューで、EFIブートローダのエントリー追加・削除・優先順位変更が出来る。 ファイルブラウザを使って指定したEFIアプリケーション(ブート)を任意実行する事も可能 隠し機能でデフォルト状態でEFIシェルを起動する事も出来るらしいが詳細不明。
・その他サーバーPC 一見BIOS PCに見えるが、実はUEFIベースとゆうものがほとんど 設定メニューの深くにさりげなくUEFI関連の設定があるとか、見た目は殺されてるとか・・・ サーバーPCは一般向けのPCと違い、管理プロセッサやセキュリティ機能等が必須なため、使用出来るメモリ空間が狭すぎるBIOSでは制御コードを格納しきれないとゆうのが実情。 しかし、ユーザーは変化を嫌う事例が多いので見た目だけでも同じにしてるとゆう事
・Sandy Bridge (Intel6シリーズチップセットマザーの一部) GUIメニューでの操作を主体に構成されている ブートローダーは実質任意メディアの「bootx64.efi」1択。 ASUSのマザーの場合、BIOS設定の終了メニューの中に「EFIシェルの起動」がある(シェルのファイル自体は持っていない)
UEFI用GRUB2のビルド&構成(Fedora14 x86_64)
パッケージを取得 http://www.gnu.org/software/grub/grub-download.en.html 今回は 1.99rc1 を使用 ftp://alpha.gnu.org/gnu/grub/grub-1.99~rc1.tar.gz
ローカルにコピーして展開 tar xfv grub-1.99~rc1.tar.gz
autogenパッケージを取得&インストール http://www.gnu.org/software/autogen/ http://ftp.gnu.org/gnu/autogen/5.11.8/autogen-5.11.8-5.x86_64.rpm # rpm ivh autogen-5.11.8-5.x86_64.rpm
ビルドの準備 # cd ./grub-1.99~rc1 # ./autogen.sh
ビルドする環境を指定(x86 64ビット環境EFI用grub2) # ./configure --with-platform=efi --target=x86_64
ビルド # make
実行ファイルを作成 # ./grub-mkimage -d ./grub-core -o ./grub.efi -O x86_64-efi -p /efi/grub2 boot cat chain configfile echo help linux ls reboot search minicmd normal ext2 fat part_gpt
設定ファイル(grub.cfg)の作成
EFIパーティションにコピー(EFIパーティションを /efi にマウントしてる場合) # cp ./grub.efi /efi/efi/grub2
デフォルトブートローダーに指定 # efibootmgr
efibootmgr [-a] [-A] [-b XXXX] [-B XXXX] [-c] [-d DISK] [-e 1|3|-1] [-E NUM] [-g] [-H XXXX] [-i NAME] [-l NAME] [-L LABEL] [-n XXXX] [-N] [-o XXXX,YYYY,ZZZZ ...] [-O] [-p PART] [-q] [-t seconds] [-T] [-u] [-U XXXX] [-v] [-V] [-w] [-@ file] OPTIONS The following is a list of options accepted by efibootmgr:
-a | --active Sets bootnum active
-A | --inactive Sets bootnum inactive
-b | --bootnum XXXX Modify BootXXXX (hex)
-B | --delete-bootnum Delete bootnum (hex)
-c | --create Create new variable bootnum and add to bootorder
-d | --disk DISK The disk containing the loader (defaults to /dev/sda)
-e | --edd 1|3|-1 Force EDD 1.0 or 3.0 creation variables, or guess.
-E | --device NUM EDD 1.0 device number (defaults to 0x80)
-g | --gpt Force disk with invalid PMBR to be treated as GPT
-H | --acpi_hid XXXX set the ACPI HID (used with -i)
-i | --iface NAME create a netboot entry for the named interface
-l | --loader NAME Specify a loader (defaults to \\elilo.efi)
-L | --label LABEL Boot manager display label (defaults to "Linux")
-n | --bootnext XXXX Set BootNext to XXXX (hex)
-N | --delete-bootnext Delete BootNext
-o | --bootorder XXXX,YYYY,ZZZZ Explicitly set BootOrder (hex)
-O | --delete-bootorder Delete BootOrder
-p | --part PART Partition number containing the bootloader (defaults to 1)
-q | --quiet Quiet mode - supresses output.
--test filename Don't write to NVRAM, write to filename.
-t | --timeout seconds Boot Manager timeout, in seconds.
-T | --delete-timeout Delete Timeout variable.
-u | --unicode | --UCS-2 pass extra command line arguments as UCS-2 (default is ASCII)
-U | --acpi_uid XXXX set the ACPI UID (used with -i)
-v | --verbose Verbose mode - prints additional information
-V | --version Just print version string and exit.
-w | --write-signature write unique signature to the MBR if needed
-@ | --append-binary-args append extra variable args from file (use - to read from stdin). Data in file is appended as command line arguments to the boot loader command, with no modification to the data, so you can pass any binary or text data necessary.
何も指定しないで実行した場合:
BootCurrent: 003D Timeout: 2 seconds BootOrder: 0011,000F,000E,0000,0002,0001,000C,0003,0004,0005,0006,0007,0008,0009,000A,000B,000D Boot0000* CD/DVD Rom Boot0001* Floppy Disk Boot0002* Hard Disk 0 Boot0003* PXE Network Boot0004* Hard Disk 1 Boot0005* Hard Disk 2 Boot0006* Hard Disk 3 Boot0007* Hard Disk 4 Boot0008* USB Storage Boot0009* Diagnostics Boot000A* iSCSI Boot000B* iSCSI Critical Boot000C* Legacy Only Boot000D* Embedded Hypervisor Boot000E* Windows Boot Manager Boot000F* GRUB Legacy Boot0011* GRUB 2
ここに詳しく書いてあった・・・orz http://grub.enbug.org/TestingOnUEFI
|
|