「GRUB/EFI サンプル」の版間の差分
(同期) |
(同期) |
||
(同じ利用者による、間の1版が非表示) | |||
41行目: | 41行目: | ||
{{ic|fs1}} は UEFI システムパーティションに、{{ic|\EFI\arch_grub\grubx64.efi}} は {{ic|grub-install}} コマンドの {{ic|--bootloader-id}} の値に置き換えてください。 |
{{ic|fs1}} は UEFI システムパーティションに、{{ic|\EFI\arch_grub\grubx64.efi}} は {{ic|grub-install}} コマンドの {{ic|--bootloader-id}} の値に置き換えてください。 |
||
− | 一時的に UEFI ブートオプションが追加され Arch を起動できます。Arch を起動したら、{{ic|efivars}} を modprobe して {{ic|efibootmgr}} が何もエラーを返さないことを確認してください (UEFI モードで起動していることを |
+ | 一時的に UEFI ブートオプションが追加され Arch を起動できます。Arch を起動したら、{{ic|efivars}} を modprobe して {{ic|efibootmgr}} が何もエラーを返さないことを確認してください (UEFI モードで起動していることを確認)。それから [[GRUB#UEFI システム]]に書かれていることをもういちど実行すれば UEFI メニューに永続的にブートエントリが追加されます。 |
=== ux32vd === |
=== ux32vd === |
||
47行目: | 47行目: | ||
{{Note|EFI ブートエントリが正しく設定されていない場合 BIOS は GPT ディスクからの起動を許可しません。その場合 BIOS からディスクが確認できません。EFI ブートエントリを正しく作成すれば解決します。}} |
{{Note|EFI ブートエントリが正しく設定されていない場合 BIOS は GPT ディスクからの起動を許可しません。その場合 BIOS からディスクが確認できません。EFI ブートエントリを正しく作成すれば解決します。}} |
||
+ | マシンを MBR から起動した場合、grub-install (あるいは efibootmgr) が以下のエラーで efi ブートエントリの作成に失敗します: |
||
− | There is a caveat. If the machine was booted from MBR then grub-install (or efibootmgr) will fail to create |
||
− | the efi boot entry with the following error: |
||
EFI variables are not supported on this system |
EFI variables are not supported on this system |
||
+ | EFI でマシンを起動してブートエントリを作成する必要があります。Z68 ファミリーと同じ方法で起動できます。起動できたら grub-install や efibootmgr でブートエントリを作成することが可能になります。 |
||
− | You first need to boot the machine with EFI and then create the boot entry. This can be done the way described for Z68 Family: by copying /boot/efi/EFI/arch_grub/grubx64.efi into /boot/efi/shellx64.efi and selecting "Launch EFI shell from filesystem device". |
||
− | After successful boot it is possible to create a boot entry using grub-install or efibootmgr. |
||
=== P8Z77 ファミリー === |
=== P8Z77 ファミリー === |
||
77行目: | 75行目: | ||
Shell> bcfg boot add 1 fs0:\EFI\arch\grubx64.efi "Arch Linux (grub manually added)" |
Shell> bcfg boot add 1 fs0:\EFI\arch\grubx64.efi "Arch Linux (grub manually added)" |
||
Shell> exit |
Shell> exit |
||
+ | * マシンを再起動して BIOS を開いてください。 |
||
− | * Reboot the machine and enter the BIOS. |
||
− | * |
+ | * 'Boot' セクションからブート順序を変更して "Arch Linux (grub manually added)" を一番最初にしてください。 |
+ | * エントリを起動してください。 |
||
− | * Boot to this entry and enjoy. |
||
{{Note|上記の手順は今では必要ない場合が多く、{{ic|efibootmgr -d}} でエントリを作成できます。}} |
{{Note|上記の手順は今では必要ない場合が多く、{{ic|efibootmgr -d}} でエントリを作成できます。}} |
||
110行目: | 108行目: | ||
# cp ~/Shell2/UefiShellX64.efi /mnt/boot/efi/shellx64.efi |
# cp ~/Shell2/UefiShellX64.efi /mnt/boot/efi/shellx64.efi |
||
+ | シェルアプリケーションが必要になるのは efibootmgr コマンドが grub-install の中で失敗するからです (特にエラーは吐きません)。 |
||
− | The reason that we need this shell application is that the efibootmgr command will fail silently during grub-install. |
||
− | + | その後 UEFI セットアップ/メニューから UEFI Shell を起動してください (ASUS の UEFI BIOS では、アドバンスモードに切り替えて、右上の Exit を押して "Launch EFI shell from filesystem device" を選択します)。UEFI シェルが表示されます。そこから GRUB の UEFI アプリをブートローダーに追加してください: |
|
Shell> bcfg boot add 3 fs0:\EFI\Arch_Grub\grubx64.efi "Arch_Grub" |
Shell> bcfg boot add 3 fs0:\EFI\Arch_Grub\grubx64.efi "Arch_Grub" |
||
+ | {{ic|fs0}} は UEFI システムパーティションのマッピングに置き換えてください。{{ic|3}} はゼロ始まりのブートエントリのインデックスです。 |
||
− | where {{ic|fs0}} is the mapping corresponding to the UEFI System Partition and {{ic|3}} is the zero based boot entry index. |
||
{{Note|大抵の UEFI Shell コマンドは {{ic|-b}} オプションをサポートしており、ページの後に出力を停止することができます。{{ic|map}} は認識されているファイルシステム ({{ic|fs0}}, ...) とデータストレージデバイス ({{ic|blk0}}, ...) を表示します。利用可能なコマンドを確認したいときは {{ic|help -b}} を実行してください。[[Unified_Extensible_Firmware_Interface#重要な UEFI シェルコマンド]]も参照。}} |
{{Note|大抵の UEFI Shell コマンドは {{ic|-b}} オプションをサポートしており、ページの後に出力を停止することができます。{{ic|map}} は認識されているファイルシステム ({{ic|fs0}}, ...) とデータストレージデバイス ({{ic|blk0}}, ...) を表示します。利用可能なコマンドを確認したいときは {{ic|help -b}} を実行してください。[[Unified_Extensible_Firmware_Interface#重要な UEFI シェルコマンド]]も参照。}} |
||
133行目: | 131行目: | ||
# efibootmgr -c -g -d /dev/sda -p 1 -w -L "Arch Linux (GRUB)" -l /EFI/grub/grubx64.efi |
# efibootmgr -c -g -d /dev/sda -p 1 -w -L "Arch Linux (GRUB)" -l /EFI/grub/grubx64.efi |
||
+ | |||
+ | == Dell == |
||
+ | === PowerEdge T30 === |
||
+ | Dell の UEFI 実装は GRUB をロードするのに[[GRUB#UEFI ファームウェアの応急処置|ファイルの名前を変更]]する必要があります。そうしないと "no OS found" 画面が表示されます。 |
||
+ | |||
+ | == MSI == |
||
+ | === B250M PRO-VH === |
||
+ | |||
+ | MSI 製の B250M PRO-VH マザーボードは GRUB がインストールする場所とは別のところに EFI プログラムを必要とします。[[GRUB]] をインストールした後に以下のコマンドを実行してください: |
||
+ | |||
+ | # mkdir /boot/EFI/BOOT |
||
+ | # cp /boot/EFI/grub/grubx64.efi /boot/EFI/BOOT/shellx64.efi |
||
+ | |||
+ | {{Note|上記のコマンドは他の MSI マザーボードでも使える可能性があります。}} |
||
== HP == |
== HP == |
||
163行目: | 175行目: | ||
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="Red Hat Enterprise Linux" --recheck --debug |
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="Red Hat Enterprise Linux" --recheck --debug |
||
+ | |||
+ | === X270 Thinkpad === |
||
+ | |||
+ | X270 では[[GRUB#UEFI ファームウェアの応急処置|パスの修正]]が必要になります: |
||
+ | |||
+ | # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub |
||
+ | # mkdir /boot/efi/EFI/boot |
||
+ | # cp /boot/efi/EFI/arch_grub/grubx64.efi /boot/efi/EFI/boot/bootx64.efi |
||
== VirtualBox == |
== VirtualBox == |
2018年3月11日 (日) 22:08時点における最新版
関連記事
マザーボードメーカーによって UEFI はバラバラに実装されていることはよく知られています。このページの目的は efi モードで GRUB をインストール・リストするときに使用するハードウェア特有の手順を示すことです。
目次
Apple Mac EFI システム
macOS の中から bless コマンドを使って grubx64.efi
をデフォルトのブートオプションに設定してください。パソコンに Linux しかインストールしていない場合は、macOS のインストールディスクを起動して、そこからターミナルを起動することもできます。ターミナルから、ディレクトリを作成して EFI System Partition をマウントしてください:
# cd /Volumes # mkdir efi # mount -t msdos /dev/disk0s1 /Volumes/efi
そして grub.efi
と EFI パーティションを指定して bless を実行してデフォルトのブートオプションに設定します。
# bless --folder=/Volumes/efi --file=/Volumes/efi/efi/arch_grub/grubx64.efi --setBoot # bless --mount=/Volumes/efi --file=/Volumes/efi/efi/arch_grub/grubx64.efi --setBoot
詳しくは https://help.ubuntu.com/community/UEFIBooting#Apple_Mac_EFI_systems_.28both_EFI_architecture.29 を参照。
Asus
Z68 ファミリーと U47 ファミリー
# cp /boot/efi/EFI/arch_grub/grubx64.efi /boot/efi/shellx64.efi
上記のコマンドを実行した後、UEFI セットアップ/メニューから UEFI Shell を起動してください (ASUS の UEFI BIOS の場合、アドバンスモードに切り替えて、右上の Exit を押してから "Launch EFI shell from filesystem device" を選択します)。GRUB2 のメニューが表示されるのでシステムを起動することができます。その後、efibootmgr を使ってメニューエントリを設定することが可能です。例えば uefi パーティションが /dev/sda1
の場合 (Unified_Extensible_Firmware_Interface を参照):
efibootmgr -c -g -d /dev/sda -p 1 -w -L "Arch Linux (GRUB)" -l /EFI/arch_grub/grubx64.efi
マザーボードにオプションが存在しない場合、UEFI シェル (Unified_Extensible_Firmware_Interface#UEFI_シェル) を使って一時的に Arch パーティションの UEFI ブートオプションを作成できます。
EFI シェルを起動したら、以下のようにして UEFI ブートメニューエントリを追加:
Shell> bcfg boot add 0 fs1:\EFI\arch_grub\grubx64.efi "Arch Linux (GRUB2)"
fs1
は UEFI システムパーティションに、\EFI\arch_grub\grubx64.efi
は grub-install
コマンドの --bootloader-id
の値に置き換えてください。
一時的に UEFI ブートオプションが追加され Arch を起動できます。Arch を起動したら、efivars
を modprobe して efibootmgr
が何もエラーを返さないことを確認してください (UEFI モードで起動していることを確認)。それから GRUB#UEFI システムに書かれていることをもういちど実行すれば UEFI メニューに永続的にブートエントリが追加されます。
ux32vd
マシンを MBR から起動した場合、grub-install (あるいは efibootmgr) が以下のエラーで efi ブートエントリの作成に失敗します:
EFI variables are not supported on this system
EFI でマシンを起動してブートエントリを作成する必要があります。Z68 ファミリーと同じ方法で起動できます。起動できたら grub-install や efibootmgr でブートエントリを作成することが可能になります。
P8Z77 ファミリー
- ライブメディアを起動して chroot してください。
- 100 MB の fat32 パーティションが "EFI System" になっていることを確認 (gdisk では十六進コード ef00 が使われます)。
- chroot の中から以下を実行:
# mount -t vfat /dev/sdXY /boot/efi # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch --recheck # grub-mkconfig -o /boot/grub/grub.cfg # wget https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/ShellBinPkg/UefiShell/X64/Shell.efi # umount /boot/efi
EFI パーティションには以下の2つのファイルがあるはずです:
/Shell.efi /EFI/arch/grubx64.efi
- 再起動して BIOS を起動 (Delete キーで BIOS が開きます)。
- 方向キーを使って 'exit' メニューに移動して EFI シェルを起動。
- Arch のエントリをメニューに追加します。詳しくは UEFI#UEFI シェルの起動を見てください。
- EFI シェルの中から以下を実行:
Shell> bcfg boot dump -v Shell> bcfg boot add 1 fs0:\EFI\arch\grubx64.efi "Arch Linux (grub manually added)" Shell> exit
- マシンを再起動して BIOS を開いてください。
- 'Boot' セクションからブート順序を変更して "Arch Linux (grub manually added)" を一番最初にしてください。
- エントリを起動してください。
M5A97
標準の Arch のインストールが完了したら、grub をインストールしてハードディスクを GPT としてパーティションしてください。
UEFI システムパーティションは GRUB のインストールスクリプトから認識されるように /boot/efi/
にマウントする必要があります:
# mkdir -p /boot/efi # mount -t vfat /dev/sdXY /boot/efi
X は起動するハードディスクの番号に、Y は先に作成した EFI パーティションに置き換えてください。
GRUB UEFI アプリケーションを /boot/efi/EFI/arch_grub
に、モジュールを /boot/grub/x86_64-efi
にインストール:
# modprobe dm-mod # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub --recheck --debug # mkdir -p /boot/grub/locale # cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo
GRUB の設定を作成:
# grub-mkconfig -o /boot/grub/grub.cfg
modified UEFI Shell v2 バイナリ の UefiShellX64.efi を ESP のルートディレクトリにコピー:
# cp ~/Shell2/UefiShellX64.efi /mnt/boot/efi/shellx64.efi
シェルアプリケーションが必要になるのは efibootmgr コマンドが grub-install の中で失敗するからです (特にエラーは吐きません)。
その後 UEFI セットアップ/メニューから UEFI Shell を起動してください (ASUS の UEFI BIOS では、アドバンスモードに切り替えて、右上の Exit を押して "Launch EFI shell from filesystem device" を選択します)。UEFI シェルが表示されます。そこから GRUB の UEFI アプリをブートローダーに追加してください:
Shell> bcfg boot add 3 fs0:\EFI\Arch_Grub\grubx64.efi "Arch_Grub"
fs0
は UEFI システムパーティションのマッピングに置き換えてください。3
はゼロ始まりのブートエントリのインデックスです。
現在存在するブートエントリのリストを確認するには:
Shell> bcfg boot dump -v
Asrock
Z97M Pro4
Asus Z68 ファミリーの手順と似ています。Z97M Pro4 BIOS P1.90 で確認済みです。
# cp /boot/efi/EFI/grub/grubx64.efi /boot/efi/shellx64.efi
上記のコマンドを実行した後、UEFI セットアップ/メニューから UEFI シェルを起動してください (ASROCK の UEFI BIOS では、Exit タブを開いて "Launch EFI Shell From Filesystem Device" を選択します)。GRUB2 のメニューが表示され、システムを起動することができます。その後、efibootmgr を使ってメニューエントリを設定することが可能です。例えば uefi パーティションが /dev/sda1
にある場合 (Unified Extensible Firmware Interface を参照):
# efibootmgr -c -g -d /dev/sda -p 1 -w -L "Arch Linux (GRUB)" -l /EFI/grub/grubx64.efi
Dell
PowerEdge T30
Dell の UEFI 実装は GRUB をロードするのにファイルの名前を変更する必要があります。そうしないと "no OS found" 画面が表示されます。
MSI
B250M PRO-VH
MSI 製の B250M PRO-VH マザーボードは GRUB がインストールする場所とは別のところに EFI プログラムを必要とします。GRUB をインストールした後に以下のコマンドを実行してください:
# mkdir /boot/EFI/BOOT # cp /boot/EFI/grub/grubx64.efi /boot/EFI/BOOT/shellx64.efi
HP
EliteBook 840 G1
詳しくは HP EliteBook 840 G1#UEFI の設定を見て下さい。
Intel
S5400 ファミリー
このボードは BIOS と EFI モードのどちらかで起動します。BIOS モードでは MBR でパーティションされたハードドライブが必要で EFI では GPT ハードドライブが必要です。Intel の EFI v1.10 の仕様に従っており、i386 しか使えません。UEFI における通常のインストールの手順に従ってよいですが、以下の例外が存在します。
grub-efi-x86_64
パッケージを使うかわりにgrub-efi-i386
を使用してください。- UEFI (v2.0) 以前のファームウェアでは
bcfg
コマンドが使えません。EFI パーティションのルートディレクトリにあるstartup.nsh
ファイルを使ってブートローダーのパスを指定してください。例えばfs0:\EFI\arch_grub\boot.efi
をstartup.nsh
ファイルの中に記述してください。 grub.cfg
ファイルは GRUB の EFI ファイルと同じディレクトリに配置してください。そうしないと GRUB からファイルを認識できずシェルが起動します。
Lenovo
K450 IdeaCentre
起動するには "EFI System" パーティションに EFI\Boot\bootx64.efi
ファイルが必要です。ファイルが存在しない場合、"Error 1962: No operating system found. Boot sequence will automatically repeat." と表示されます。"EFI System" パーティションを /boot/efi
にマウントしている場合:
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub --recheck --debug # mkdir /boot/efi/EFI/Boot # touch /boot/efi/EFI/Boot/bootx64.efi
上記は UEFI 実装のバグに対処する回避策です。
M92p ThinkCentre
efi ラベルによるホワイトリストが存在します。"Red Hat Enterprise Linux" という名前のラベルからしか起動しません。ブートローダー id をそれに合わせて指定するようにしてください:
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="Red Hat Enterprise Linux" --recheck --debug
X270 Thinkpad
X270 ではパスの修正が必要になります:
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch_grub # mkdir /boot/efi/EFI/boot # cp /boot/efi/EFI/arch_grub/grubx64.efi /boot/efi/EFI/boot/bootx64.efi