2020年2月3日月曜日

WindowsPC上で、UEFIブートのUbuntu(18.04.3)をUSBメモリにインストール

ここ数年、あちこちのマシン上にデュアルブートでUbuntuの環境作るの面倒になってきたので、USBメモリにUbuntuインストールして持ち歩いてます。
例えば、自宅のMacBook上で資料なりツールなり作っておいて、出先で持ち歩き用の11.6インチWindows PCで見せたり動かすとか。

そのUSBメモリを、内部ディスク等にWindowsがインストールされているPC上で作成すると、ブートローダがUSBメモリにインストールされません。WindowsのEFIパーティションにインストールされてしまいます。
なので、そのUSBメモリは他のPCでは起動できません。

内部ディスクを外してインストールできればいいんですが、ノートPCたど外すの面倒くさかったり保証受けられなくなったり、そもそもeMMCなんかだと直付けされてたりするので、なんとか付けたままでインストールしたい。

以下そのための手順です。デバイス名等はASUS Vivobook E200HAのもので、内蔵eMMCは/dev/mmcblk0でUSBメモリは/dev/sdaです。

  • インストールメディアからTry ubuntu without installingでシステムを立ち上げて、Install Ubuntu 18.04.3LTSを起動してインストール
----------------------------------------------------------------
インストールに関してはざっくり省略
----------------------------------------------------------------
  • 再起動前にTerminalを立ち上げ、UbuntuのEFIパーティション、WindowsのEFIパーティションをマウント
----------------------------------------------------------------
# mount /dev/sda1 /target/boot/efi
# mount /dev/mmcblk0p2 /mnt
----------------------------------------------------------------
  • ubuntuのブートローダーをWindowsのEFIパーティションからUbuntuのEFIパーティションへ移動
----------------------------------------------------------------
# mkdir /target/boot/efi/EFI
# cd /mnt/EFI
# mv ubuntu /target/boot/efi/EFI/
----------------------------------------------------------------
  • 一部のWindowsPCやMacではデフォルトのEFIブートローダー名じゃないと立ち上がらなかったりするので、デフォルト名のも作ります。
----------------------------------------------------------------
# cd /target/boot/efi/EFI
# cp -r ubuntu boot
# cd boot
# mv grubx64.efi bootx64.efi
----------------------------------------------------------------

  • ここで注意点ですが、boot/bootx64.efiで起動してもgrub.cnfファイルはubuntuの下のを参照するので、cpではなくmvするとgrub-shellでエラーになります。

  • /etc/fstabにEFIパーティションをマウントする記述があり、これもWindowsのものを参照しているので書き換えます。まずblkidコマンドでUbuntuのEFIパーティションのUUIDを調べて、/etc/fstabを書き換えます。
----------------------------------------------------------------
# blkid /dev/sda1
/dev/sdb1: UUID="C3C3-529C" TYPE="vfat" PARTUUID="e116e9b3-b110-4d0f-95d0-1e0fa76420c2"
# vi /etc/fstab
UUID=C3C3-529C  /boot/efi       vfat    umask=0077      0       1
----------------------------------------------------------------

以上で完了、PCの設定画面でUSBメモリの起動順を一番上にしてリブートすればUbuntuが立ち上がります。
このメモリをMacBookに挿して、起動後ALTでUSBメモリが出てきます。