2017年6月16日金曜日

UEFIで起動するUSB3メモリが作れました

普段Windowsを使っているデスクトップPCですが、Ubuntuで仮想マシンを使った実験がしたくてUSB起動ディスクを作成しようとしたのですが、単にUSB3メモリへUbuntuをインストールしただけだと起動ディスクとして認識しない場合があるようです。

私の場合は、MBRブートなPCで作ったUSB3メモリだったためUEFIブートなUSBになっていなかったようでした。

以下のページを参考にしてEFIブートローダをUSB3メモリに置くと、USB3メモリであっても期待通りの起動するディスクになりました。

以下、まんまパクリですが、その手順をおさらいしておきます。

私の環境

·         ASUS P8Z68-M Pro(使用するPCUEFIブート、通常Windowsで使用

·         Intel DH57JG(実験用Ubuntu Live USBを作るPCMBRブート、通常Windowsで使用

·         Ubuntu 14.04 LTS(実験用Ubuntu/インストーラUbuntu

·         USBメモリを2つ(インストーラ用USB2メモリ、インストール先用USB3メモリ)

参考

·         bellbindUSB HDDMBR/EFI両ブート可能なUbuntuイメージを作る方法」

私の手順

インストーラ用USBメモリにUbuntuを焼く

インストーラ用USBメモリにUbuntuを焼きこみます。私はホストOSであるWindowsunetbootin-windows-608.exeを使いUbuntu 14.04 LTSを焼きました。

以下、Intel DH57JGにおける作業になります。

インストーラ用USBメモリで起動し、インストール先用USBメモリのパーティションを再構築します

GPartedを使って、インストール先用USBメモリのパーティションをマニュアル構成します。

·         /dev/sd?1: fat32 128MiB

·         /dev/sd?2: ext4 残り

私の場合は、Intel DH57JGHDD2台搭載してあるのでsddになっていました。

インストール先用USBメモリにUbuntuをインストールする

このステップで特に説明することはないと思います。

以降、Intel DH57JGで起動したインストール先用メモリの話です。ここまでは準備であり、ここからが肝要だと思います。

1.linux-image更新時などで内蔵HDDOSのブートメニューをgrubに登録しないよう抑制します

$ sudo chmod -x /etc/grub.d/30_os-prober

2.EFIgrubブートローダーファイルに必要なパッケージをインストールします

$ sudo apt-get install grub-efi-amd64-bin

3.EFIブートローダーファイルを作成します

EFIブートローダーファイルを`BOOTx64.EFIというファイル名で作成します。

$ grub-mkimage -d /usr/lib/grub/x86_64-efi/ \
  -o BOOTx64.EFI \
  -O x86_64-efi \
  -p "" \
  part_gpt part_msdos ntfs ntfscomp hfsplus fat ext2 \
  normal chain boot configfile linux multiboot

4.作成したEFIブートローダファイルをFAT32領域にコピーします

$ mkdir efi
$ sudo mount /dev/sdb1 efi
$ mkdir -p efi/EFI/BOOT
$ cp BOOTx64.EFI efi/EFI/BOOT/
$ cp -r /usr/lib/grub/x86_64-efi efi/EFI/BOOT/

5./EFI/BOOT/grub.cfgを作成します

configfile (hd0,msdos2)/boot/grub/grub.cfg

ext4にあるパッケージ管理されている/boot/grub/grub.cfg 読み込んで利用するという設定のようです。そして、ディスクパーティションを指す(hd0,msdos2)とは、hd0grubをブートしたディスクであり、 msdos2MBRでの2つ目のパーティションのことだそうです。

終了です。

インストール先用USBメモリで起動します

めでたく?USB3メモリ(USB3ポートに挿したUSB3メモリ)でもUbuntuを起動できました。

 

0 件のコメント:

コメントを投稿