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で、インストールできますので、さまざまなサイトで導入は紹介されています。まずは、デフォルトで運用して様子を見てから変更してください。

【前提条件】

  1. rEFIndで運用済み。(refind.confの設定は完了している。)
  2. ブートマネジャの役割がわかっている。
  3. パーティションの構成が理解できている。
  4. カーネル(カーネルイメージ)が何かがわかっている。
  5. vim(他のエディタでも可)の操作ができる。

<手順>

  1. grubx64.efiでブートする設定を残す。
  2. Ubuntuのカーネルイメージから起動する設定を記述。
  3. 動作確認。

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) ディスク・ユーティリティで、ルート(/)のディバイスを確認する。

カーネルイメージはふつうルート(/)に保存されています。

Screenshot from 2016-08-12 16-06-58ss

図5:ルート(/)のディバイスは、/dev/sda5である。第5パーティションにカーネルが保存されている。

カーネルのイメージは、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先生にお尋ねください。