2号サブ機は、UEFI配下で、Ubuntu16.04とWindows10とのデュアルブート(どちらも64bit版)をGrub2ではなく、GUIのブートメニュー管理ユーティリティrEFIndに任せています。(rEFIndは、カーネルイメージやブートマネジャを自動で認識して登録する。ブートマネジャーには、Windows Boot ManagerやGrub2もありますが、テキストベースの表示です。)
今回は、rEFIndに、使いたいUbuntuのカーネルイメージを直接指定したメニューを追加する設定です。デフォルトでは、rEFIndのメニュに表示されたUbuntuのアイコンをクリックすると、「grubx64.efi」がGrub2を起動させるので、再度、grubメニューからubuntuを選択するという2度手間が発生します。
今回は、これを、rEFIndのメニュー画面に表示されたUbuntuのアイコンをクリックしたらすぐにUbuntuが起動できるように設定します。(図3,図4)
その前に、危険性を理解しておきます。設定を間違えてしまうと、kernel panicが発生し、PCが起動しなくなります。保険をかけておきます。それは、デフォルトのUbuntuの設定をそのままリネームして、利用します。つまり、Grub2が起動する設定は残しておきます。ここでは、図1の、ペンギンのアイコンです。このペンギンのアイコンをクリックすると、図2と同じGrub2のメニューが表示されます。これで、もし、kernel panicが発生しても、ペンギンのアイコンをクリックすればUbuntuが起動します。refind.confの設定もできます。
前提条件になりますが、ここでは、すでにrEFIndを運用しています。つまり、UbuntuもWindows10もきちんとブートします。
Ubuntuでは、sudo apt-get install refindで、インストールできますので、さまざまなサイトで導入は紹介されています。まずは、デフォルトで運用して様子を見てから変更してください。
【前提条件】
- rEFIndで運用済み。(refind.confの設定は完了している。)
- ブートマネジャの役割がわかっている。
- パーティションの構成が理解できている。
- カーネル(カーネルイメージ)が何かがわかっている。
- vim(他のエディタでも可)の操作ができる。
<手順>
- grubx64.efiでブートする設定を残す。
- Ubuntuのカーネルイメージから起動する設定を記述。
- 動作確認。
1.grubx64.efiでブートする設定を残す。
設定を間違えて、kernel panicになっても、Grubから起動できるようにしておきます。
$ sudo vi /boot/efi/EFI/refind/refind.conf
# A sample entry for loading Ubuntu using its standard name for
# its GRUB 2 boot loader. Note uses of Linux-style forward slashes
menuentry "Ubuntu" {
loader /EFI/ubuntu/grubx64.efi
icon /EFI/refind/icons/os_linux.png
disabled
}
refind.conf内のmenuentry “Ubuntu”をmenuentry “Grub”に書き換えます。さらに、disabledをコメントアウトしておきます。理由は、scanfor をoptical,manualだけにすると、disabledでは、メニューに表示されないからです。
$ sudo vi /boot/efi/EFI/refind/refind.conf
# A sample entry for loading Ubuntu using its standard name for
# its GRUB 2 boot loader. Note uses of Linux-style forward slashes
menuentry "Grub" {
loader /EFI/ubuntu/grubx64.efi
icon /EFI/refind/icons/os_linux.png
#disabled
}
2.Ubuntuのカーネルイメージから起動する設定を記述。
(1) カーネルイメージが保存されているディバイスのGUIDとUUIDを確認する。
(1-1) ディスク・ユーティリティで、ルート(/)のディバイスを確認する。
カーネルイメージはふつうルート(/)に保存されています。
カーネルのイメージは、Ubuntuでは、/boot直下に保存されています。実際には、2号サブ機の構成では、第5パーティション(/dev/sda5)内の/boot直下ということになります。端末から、ls -la /boot を見ればわかります。カーネルイメージ(例:vmlinuz-3.13.0-92-genericのような感じ。)が複数あるはずです。最低1つは必要です。
(1-2)カーネルイメージが保存されているディバイスのGUIDとUUIDを確認します。
(1-1)で確認したルートディバイスは、/dev/sda5でした。これを利用して、コマンドで、確認します。
$ blkid /dev/sda5
/dev/sda5: UUID="f42ad7e6-9171-4ca7-9716-d929fc8db6c8" TYPE="ext4" PTTYPE="dos" PARTLABEL="Ubuntu" PARTUUID="f78b0606-d7bc-46f7-838b-f5d4eec7970c"
これから、UUIDは、f42ad7e6-9171-4ca7-9716-d929fc8db6c8
GUIDは、f78b0606-d7bc-46f7-838b-f5d4eec7970c
です。
または、GUIDは、sudo sgdisk -i 5 /dev/sda でも調べられます。この時は、Partition unique GUID: の値を読み取ってください。
これらを元に、refind.confを編集します。
(2) ひな形のコピー。
そのまえに、設定のひな形をコピーします。まず、refindディレクトリ内にあるrefind.conf-sampleを開き、menuentry "Linux"
セクションをコピーし、refind.confの適当な場所、menuentry “Grub”セクションの下あたりに、貼り付けます。
$ sudo vi /boot/efi/EFI/refind/refind.conf
menuentry "Grub" {
volume KERNELS
loader /EFI/ubuntu/grubx64.efi
icon /EFI/refind/icons/os_linux.png
# disabled
}
menuentry "Linux" {
icon EFI/refind/icons/os_linux.png
volume 904404F8-B481-440C-A1E3-11A5A954E601
loader bzImage-3.3.0-rc7
initrd initrd-3.3.0.img
options "ro root=UUID=5f96cafa-e0a7-4057-b18f-fa709db5b837"
disabled
}
(3) ひな形をUbuntuブート用に書き換える。
ここで、volumeの値にGUIDを、optionsの値のroot=UUIDに、前述確認したUUIDを記入し、置き換えます。さらに、必要なところを書き換えて、下記の用になりました。
# Ubuntu setting
menuentry "Ubuntu" {
icon /EFI/refind/icons/os_ubuntu.png
volume f78b0606-d7bc-46f7-838b-f5d4eec7970c
loader /boot/vmlinuz-4.4.0-34-generic.efi.signed
initrd /boot/initrd.img-4.4.0-34-generic
options "ro root=f42ad7e6-9171-4ca7-9716-d929fc8db6c8 quiet splash"
#disabled
}
デフォルトのルートは、/boot/efi直下です。したがって、iconのディレクトリは、/EFI/refind/iconsとなります。しかし、カーネルイメージとその関連ファイルは、GUIDで/dev/sda5を指定しているので、/boot配下に存在しています。
3.動作確認。
動作確認の前に、いくつかrefind.confの設定を見なおして追記します。
(1) メニュー表示時間を7秒に。
timeout 7
(2) EFIのスキャンをDVD、CDとマニュアルのみに。
scanfor optical,manual
デフォルトのままだと、refindが自動で登録したカーネルやブートマネジャをすべて表示するので、不要なものを表示させないため。また、disalbedをコメントアウトしていないと、manualの場合は、refindに表示されません。
(3) Ubuntuのアイコンが選択状態になる。
default_selection “Ubuntu”
(4) Windows7の設定。
menuentry "Windows 7" {
loader \EFI\Microsoft\Boot\bootmgfw.efi
# disabled
}
(2)の理由により、disabledをコメントアウトにする。また、Windows 7をWindows 10としてもよいが、運用に影響がないのでそのままにしています。
(5) 不要な設定はすべてコメントアウトする。
menuentryで、使わないものはすべてコメントアウトします。
(6) 動作確認。
緊張の瞬間です。再起動して、動作を確認します。図3が表示されて図4のようになり、kernel panicが発生せずに、Ubuntuのログイン画面が表示されれば成功です。
もし、途中でkernel panicなどエラーが起きたら、まずは、落ち着いて電源ボタンを長押しして、シャットダウンします。そのあと、電源を入れ、refindが起動したら、先ほど「1」で用意したペンギンのアイコン(Grub2)をクリックして、grubメニューを表示させUbuntuをクリックして起動させ、refind.confの設定を確認します。一番多いミスは、スペルミスです。ていねいに確認します。
また、エラーメッセージをデジカメに撮っておいて、その内容を参考に、Google先生にお尋ねください。