2016年12月23日金曜日

今更ながら,UEFI 環境での grub-install と update-grub 方法

長らく BIOS派 だっただ私も,一年半くらい前にパソコンを買い換えたときに突然 UEFI環境 に変わり,Windows と Ubuntu のデュアルブート環境を構築するのに手間取り,あれこれと調べまくった苦い思い出がある.

UEFI 関連では,GPT の話とか色々と思い出されるが,それについは以下の記事を参照していただくことにして,
WM×LI: 【Linux】HDDにパーティションを作成する.(GPT編)


今回は,UEFI環境 での grub-install と update-grub の方法について書きたいと思う.(今更!)

BIOS だったころは,概ね以下のような感じで grubローダー のアップデートができたはずだ.
# grub-install /dev/sda
# update-grub

気をつけなければいけないのは,sda1 とかでなく,sda のみを引数にとること.
詳しいことは理解していないが,MBR はパーティションの先頭にインストールされるので云々...ということだ!

このとき,MBR(/dev/sdaの先頭?) は完全に置き換わってしまうので,他のインストール済みのOSのことは特に気にせず,grubローダーさんの力に任せておけばよかった.

しかし,UEFI環境 では,インストール済みの 全OS で efiパーティション(マウントポイントは/boot/efi) を共有して使うので,簡単に update-grub とかして大丈夫なの?という疑問が浮かぶ.

そこでまず,/boot/efi ディレクトリに移り,ディレクトリのコピーなんてしてみると,
# cd /boot/efi/EFI
# cp -r ubuntu ubuntu16.04

パソコン起動時の UEFI設定画面 で,すんなり ubuntu16.04 が見えて,意外と単純な作りになっていることがわかる.
つまり,バックアップさえしておけば,後でなんとでも修復できるわけだ!.(確信は無い)
# mkdir efi_backup
# cp -r /boot/efi/EFI efi_backup/

バックアップをとったら,あとは色々と試してみる.
grub-install の manページ を見て,--efi-directory と --bootloader-id の2つのオプションを使ってみる.
root@gauss:# grub-install --efi-directory /boot/efi --bootloader-id test
Installing for x86_64-efi platform.
Installation finished. No error reported.

すんなりインストールが完了し,実際 lsコマンド で /boot/efi/EFI の中を見てみると,
# ls -l /boot/efi/EFI
合計 24
drwx------ 2 root root 4096  4月 22  2015 Boot
drwx------ 3 root root 4096  4月 22  2015 Dell
drwx------ 4 root root 4096  4月 22  2015 Microsoft
drwx------ 2 root root 4096 12月 23 12:05 test
drwx------ 3 root root 4096  7月  6 22:33 ubuntu
drwx------ 3 root root 4096 12月 18 11:06 ubuntu16.04

# ls -l /boot/efi/EFI/test
合計 3588
-rwx------ 1 root root 1271672 12月 23 12:05 MokManager.efi
-rwx------ 1 root root     126 12月 23 12:05 grub.cfg
-rwx------ 1 root root 1103224 12月 23 12:05 grubx64.efi
-rwx------ 1 root root 1289424 12月 23 12:05 shimx64.efi


きちんと test という名前で grubローダー がインストールされており,実際に UEFI設定画面 で test を起動すると,grubローダー の画面が表示された.

これにて一見落着!

あれ? grub-update コマンドは?...(苦笑)

0 件のコメント:

コメントを投稿