まあ、OSは何ですか インストール 最初はブートローダなので、明らかにそれをある程度制御しています。
UEFIファームウェアには、メニューの選択やその他のパラメータを次のように保存する統合ブートマネージャがあります。 EFI変数 といった Boot0001
、 BootOrder
、 BootNext
。
それらは他のファームウェア設定と同じNVRAMに保存されています - 実際、多くのファームウェア設定もEFI変数として公開されています - そしてオペレーティングシステムはEFIコードを呼び出すことによってそれらを読み書きすることができます。 (UEFIインターフェースの定義が多少良くなっている点を除けば、古いスタイルの割り込みでBIOSを呼び出すのと似ています。)
# ls /sys/firmware/efi/efivars/Boot*
/sys/firmware/efi/efivars/Boot0003-8be4df61-93ca-11d2-aa0d-00e098032b8c
/sys/firmware/efi/efivars/Boot0004-8be4df61-93ca-11d2-aa0d-00e098032b8c
/sys/firmware/efi/efivars/Boot0005-8be4df61-93ca-11d2-aa0d-00e098032b8c
/sys/firmware/efi/efivars/Boot0006-8be4df61-93ca-11d2-aa0d-00e098032b8c
/sys/firmware/efi/efivars/BootCurrent-8be4df61-93ca-11d2-aa0d-00e098032b8c
/sys/firmware/efi/efivars/BootOrder-8be4df61-93ca-11d2-aa0d-00e098032b8c
# efibootmgr --verbose
BootCurrent: 0004
Timeout: 2 seconds
BootOrder:0004,0003,0005,0006 Boot0003 * WindowsブートマネージャHD(1、GPT、785c8ca2-bb16-48fd-917b-19d69543338f、0x800,0x32000)/ファイル(\ EFI \ Microsoft \ Boot \ bootmgfw.efi)
Boot0004 * LinuxブートマネージャHD(1、GPT、785c8ca2-bb16-48fd-917b-19d69543338f、0x800,0x32000)/ファイル(\ EFI \ gummiboot \ gummibootx64.efi)
Boot0005 *ハードドライブ掲示板(HD 、、 0x0)P0:ST9640320AS。
Boot0006 * CD / DVDドライブ掲示板(CD-ROM 、、、 0x0)P1:SlimtypeDVD A DS8A5SH。
#efibootmgr --bootnext 0003 BootNext:0003 BootCurrent:0004
タイムアウト:2秒
BootOrder:0004,0003,0005,0006
...
#efivar --print --name 8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0004
GUID:8be4df61-93ca-11d2-aa0d-00e098032b8c
名前: "Boot0004"
属性:
不揮発性
ブートサービスへのアクセス
ランタイムサービスアクセス
値:
00000000 01 00 00 00 72 00 4c 00 69 00 6e 00 75 00 78 00 | .... r.L.i.n.ux. |
00000010 20 00 42 00 6f 00 6f 00 74 00 20 00 4d 00 61 00 | 。ブート。 。
00000020 6e 00 61 00 67 00 65 00 72 00 00 00 04 01 2a 00 | n.a.g.e.r ..... * | |
00000030 01 00 00 00 00 00 00 00 00 00 00 20 03 00 | ............... |
00000040 00 00 00 00 a2 8c 5c 78 16 bb fd 48 91 7b 19 d6 | ...... \ x ... H。{.. |
00000050 95 43 33 8f 02 02 04 04 44 00 5c 00 45 00 46 00 | .C3 ..... D \ \ E.F. |
00000060 49 00 5c 00 67 00 75 00 6d 00 6d 00 69 00 62 00 | I。\。g.u.m.m.i.b |
00000070 6f 00 6f 00 74 00 5c 00 67 00 75 00 6d 00 6d 00 | o.o.t \ \ g.u.m.m |
00000080 69 00 62 00 6f 00 6f 00 74 00 78 00 36 00 34 00 | i.b.o.o.t.x.6.4 |
00000090 2e 00 65 00 66 00 69 00 00 7f ff 04 00 | ..e.f.i ....... |
#efivar --print --name 8be4df61-93ca-11d2-aa0d-00e098032b8c-BootNext
GUID:8be4df61-93ca-11d2-aa0d-00e098032b8c
名前: "BootNext"
属性:
不揮発性
ブートサービスへのアクセス
ランタイムサービスアクセス
値:
00000000 03 00 | .. |
このリストには、UEFIブートローダーと「BIOS互換モード」MBRディスクの両方が含まれていることがよくあります。
BIOSシステムでは、この設定に直接アクセスすることはできません。しかし、OSはもちろん既存のブートセクタを自分自身で上書きすることができ、実際にはほとんどの場合そうします。 なぜなら 設定はありません。例えばWindowsをインストールする 常にWindowsのブートセクタを書き込みます 。
サイドノート: "EFI変数"はEFIに固有のものではありません - 同様のテクニックも存在していました ARCシステム 元々Windows NTが開発されたもの。 Windowsで使用されるNTLDRブートローダと "boot.ini"ファイルは、 エミュレーション ARCが本来提供していたものについて。