普段Windowsを使っているデスクトップPCですが、Ubuntuで仮想マシンを使った実験がしたくてUSB起動ディスクを作成しようとしたのですが、単にUSB3メモリへUbuntuをインストールしただけだと起動ディスクとして認識しない場合があるようです。
私の場合は、MBRブートなPCで作ったUSB3メモリだったためUEFIブートなUSBになっていなかったようでした。
以下のページを参考にしてEFIブートローダをUSB3メモリに置くと、USB3メモリであっても期待通りの起動するディスクになりました。
以下、まんまパクリですが、その手順をおさらいしておきます。
私の環境
- ASUS P8Z68-M Pro(使用するPC)UEFIブート、通常Windowsで使用
- Intel DH57JG(実験用Ubuntu Live USBを作るPC)MBRブート、通常Windowsで使用
- Ubuntu 14.04 LTS(実験用Ubuntu/インストーラUbuntu)
- USBメモリを2つ(インストーラ用USB2メモリ、インストール先用USB3メモリ)
参考
私の手順
インストーラ用USBメモリにUbuntuを焼く
インストーラ用USBメモリにUbuntuを焼きこみます。私はホストOSであるWindowsでunetbootin-windows-608.exe
を使いUbuntu 14.04 LTS
を焼きました。
以下、Intel DH57JGにおける作業になります。
インストーラ用USBメモリで起動し、インストール先用USBメモリのパーティションを再構築します
GPartedを使って、インストール先用USBメモリのパーティションをマニュアル構成します。
- /dev/sd?1: fat32 128MiB
- /dev/sd?2: ext4 残り
私の場合は、Intel DH57JGにHDDが2台搭載してあるのでsddになっていました。
インストール先用USBメモリにUbuntuをインストールする
このステップで特に説明することはないと思います。
以降、Intel DH57JGで起動したインストール先用メモリの話です。ここまでは準備であり、ここからが肝要だと思います。
1.linux-image更新時などで内蔵HDD内OSのブートメニューをgrubに登録しないよう抑制します
$ sudo chmod -x /etc/grub.d/30_os-prober
2.EFI版grubブートローダーファイルに必要なパッケージをインストールします
$ 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)とは、hd0はgrubをブートしたディスクであり、 msdos2はMBRでの2つ目のパーティションのことだそうです。
終了です。
インストール先用USBメモリで起動します
めでたく?USB3メモリ(USB3ポートに挿したUSB3メモリ)でもUbuntuを起動できました。