USBストレージにUEFI対応Ubuntu環境を作る

# はじめに

　[自動運転AIチャレンジ2025](https://www.jsae.or.jp/jaaic2025/overview/)の準備のために、Ubuntu(22.04.5 LTS)環境を作ります。
今回、とある事情により、UEFI対応で作る必要がありましたので、作成したものはUEFI対応のものになります。UEFI非対応で起動できるかどうかは未確認です。
　また、今回の手順ではどうしても、Ubuntuのインストール後にブートローダの再設定が必要になりますので、その手順も記載しています。
# 本記事でできること
- USB SSD ストレージにUEFI対応したどのPCでも起動できるUbuntu環境を構築できる(多分)
# 用意するもの
- UEFIモードで起動されているWindows PC
- インターネット接続環境
(余談ですが、インターネットには、追加ドライバ無しでつながるPCの構成(有線LANなど)が望ましいです。例えば、USBドングルでWifiにつながっている場合、Ubuntuの起動後、USBドングル用のドライバを設定することになるととても苦労します)
- USBメモリ 8GB以上 (筆者の使用したもの：[KIOXIA LU301W064GG4 64GB](https://www.amazon.co.jp/dp/B088PCD5ZQ?ref=ppx_yo2ov_dt_b_fed_asin_title))
- USB SSD 128GB以上 (筆者の使用したもの：[Logitec LMD-SPCH050UAC 500GB](https://www.amazon.co.jp/dp/B0BY7TLLC2?ref=ppx_yo2ov_dt_b_fed_asin_title&th=1))

# 1. Install用のUSBメモリの作成
　まず、Install用のUSBメモリを作ります。
[こちら](https://qiita.com/9ever/items/0b8ad5e54b827891df3a)の記事を参考にさせていただきました。参考の記事から日時が経過していますので、使用しているツールやUbuntuのVersionは新しくなっています。
また、参考先の記事は、UbuntuをTry modeで使用するための手順であるため、当記事では、異なっているところがあります。
## 1.1 Rufusのダウンロード
[こちら](https://rufus.ie/ja/)からRufusをダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1124423/39473c52-c0a8-48f4-8228-a7bb825e88c1.png)
## 1.2 Ubuntuのisoイメージファイルのダウンロード
[こちら](https://releases.ubuntu.com/22.04/?_ga=2.149898549.2084151835.1707729318-1126754318.1683186906&_gl=1*e4sif2*_gcl_au*ODg1ODc5Mi4xNzQ5OTk2Nzc3)からUbuntuのisoイメージファイルをダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1124423/10c3bd53-9d50-422a-b26f-019b48a680cc.png)
## 1.3 Rufusで書き込み
Windows PCにUSBメモリーを挿入し、Rufusを起動します。
参考先の記事と同様に書き込みをしますが、参考先の記事と異なり、永続化領域は設定しません。
```USB接続のHDDを一覧表示```にチェックを入れて、```デバイス```の選択項目にUSBメモリが表示されているのを確認します。
続いて、```選択```ボタンから、Ubuntuのisoイメージファイルを選択します。筆者の場合は下図のような設定になりました。
(デバイス名にはUSBメモリのボリューム名が表示されます。筆者の場合、何回かトライしているので、以前に設定したボリューム名が表示されています。また、イメージファイル名に(1)がついているのは、筆者が2回ISOイメージファイルをダウンロードしたためです。一度目にダウンロードしたファイルでUbuntuを起動したら画面が緑色(!!)になっていましたので、再ダウンロードしました)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1124423/0ce7ee67-925a-4547-a61e-caefaac22ff4.png)
```スタート``` を押します

この後、筆者の環境では下記の表示が出ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1124423/9b68e832-3d9f-458d-b2ab-ec867fbc34bd.png)
```はい```を押すと、「警告：デバイス"～(G:)[64 GB]"のデータは消去されます」と警告表示がでますが、選んでいるデバイスは正しいので、そのまま```OK```を押します。
Grubのダウンロードが行われ、続いて、10分ほどでUSBメモリの作成が完了します。

:::note warn
このときWindowsPCがUEFIモードで起動されていなかった場合は、できあがったUSBメモリはUEFI有効なBIOSではSecurityErrorがでて起動できませんでした。このUSBメモリの作成時からUEFIモードでWindowsを起動しておく必要があります。
:::

# 2. USB ドライブへのインストール
　以降の手順は[こちら](https://zenn.dev/engineercafe/articles/ba2c32bc605d69)の記事を参考にさせていただきました。
なお、当記事ではUEFI対応にするので、参照先の記事にある、Secure Bootをオフにする操作はせずに、UEFIは有効なままにします。

USBメモリができあがったら、そのままPCを再起動し、BIOS設定画面(起動時に```DEL```,```F2```,```F8```等を押すことでBIOS設定画面、あるいは、起動選択画面が表示されます)で、PCの起動順をUSBメモリから起動するように変更します（BIOSの設定方法については、それぞれのPCの説明書を参照してください）。

:::note info
以降の作業では、本記事を作業中のPCでは参照できないのでスマートフォンや別PCなどで表示しておきましょう
:::

USBメモリからUbuntuが起動したら、インストール先のSSD USBドライブをPCに挿入します。
以下、Ubuntuのインストール画面での操作です。

:::note alert
下記の手順の5. 6.でインストール先のデバイスを選択していますが、この選択を誤るとWindowsが起動しなくなったり、大切なデータが消えます。不安な場合は大切なディスクは物理的に外しておきましょう。
:::

1. 言語は```日本語```を選び、```Ubuntuをインストール```を選びます
1. キーボードは```Japanese``` - ```Japanese```を選びます
1. ```通常のインストール```or```最小インストール```のどちらかを選びます。
その他のオプションでは、```Ubuntuのインストール中にアップデートをダウンロードする```にはチェックを入れますが、```グラフィックスとWi-fi・・・```にはチェックを入れませんでした。（UEFI対応の場合、パスワード設定が関係しそうですがそのあたりの知見が筆者にないため(汗)）
1. インストールの種類は、```それ以外```を選択します
1. 続いて表示される画面下部の```ブートローダをインストールするデバイス```のプルダウンメニューから、インストールするSSD USBドライブを選択します。（筆者環境では ``` /dev/sde ```）
1. 同画面でSSD USBドライブの下にパーティションが確保されていれば``` - ```をクリックして削除します
1. 先頭にEFIパーティションを確保します。(サイズは128MBもあれば十分なようです。**このEFIパーティションの準備もポイントです。** 参照先の記事が参考にしている記事ではEFIパーティションが準備されておらず、そちらに従って作成した筆者は、はまりました・・・）
1. 残りのパーティションはext4を指定してマウントポイントには``` / ```を設定します
1. 最終的には下記のようになります
``` /dev/sde1 ```が```EFI```
``` /dev/sde2 ```が```ext4 /```

以上の設定で、```インストール```を押すと下記の画面が表示されます。初期化されるパーティションのデバイスを再度確認しておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1124423/62e3f9ae-1fdc-4c86-9ae5-a485f5bfa4c4.png)

上記で```続ける```を押すことで、選択されたデバイスにインストールが始まります。
以降、画面表示に従って、PC名やユーザーID、パスワードの設定などを行います。

:::note warn
選択したデバイスがSSD USBドライブであることを再度確認しておきましょう
:::
:::note info
残念ながら、ここで、ブートローダをインストールするデバイスを選択しても、WindowsのブートローダのあるデバイスにUbuntuのブートローダが書き込まれてしまいます。Ubuntuのインストーラの不具合のように感じています。
:::

　インストールが終わると再起動を促す表示が表示されます。表示に従って、USBメモリを取り外し、再起動時のBIOS設定画面で、ブートローダの配置を確認します。
 Ubuntuのブートローダが手順 **5.** で指定されたデバイスにインストールされていればここで作業は終わりです。
筆者は毎回Windowsのブートローダのあるデバイスにインストールされるので、毎回下記のブートローダの変更作業を行っています。

# 3. ブートローダの再設定
ブートローダの再設定の手順は、***USBドライブへのインストール***で参照した[こちら](https://zenn.dev/engineercafe/articles/ba2c32bc605d69)の手順のままですが、一部、環境により異なる部分がありますので、以下に記載します。
## 3.1 Ubuntuでの再設定
### 3.1.1 Ubuntuの起動
BIOSのBOOT Device選択画面で、'ubuntu'を選択して、Ubuntuを起動します。

:::note info
Ubuntuでは、ブラウザとしてFireFoxが使えます。FireFoxで本記事を表示しておくとコマンドをコピーできて便利です。
:::
### 3.1.2 GRUB(ブートローダ)の再インストール
Ubuntuが起動したら、Terminal(端末)を起動します。
Terminal(端末)は、画面左下のボタン
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1124423/fa9b78af-8d74-4b4a-8461-c75e59f1e277.png)

からアプリケーション画面を開いて、「端末」と書かれているアプリを起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1124423/de2d9227-46d9-4cb9-88d3-e7610deceb71.png)

Terminal(端末)で、下記に示すコマンドを１行ずつ実行します。

なお、最初のコマンドでパスワードが求められますが、OSインストール時に設定したパスワードでOKです。

また、```/dev/sdx1```, ```/dev/sdx2``` は、Ubuntuをインストールしたデバイス(USBドライブへのインストール手順の5.で選択したデバイス)になります。筆者の場合は```/dev/sde1```, ```/dev/sde2```でした。

```
sudo -s
mkdir /chroot
mount /dev/sdx2 /chroot
mount --bind /dev /chroot/dev
mount --bind /dev/pts /chroot/dev/pts
mount --bind /proc /chroot/proc
mount --bind /sys /chroot/sys
mount --bind /run /chroot/run
chroot /chroot

mount /dev/sdx1 /boot/efi
grub-install --efi-directory=/boot/efi
update-grub
```

### 3.1.3 fstabの変更
つづきて、下記のコマンドでUUIDを表示します(ここで、sdxは読者の環境に合わせて設定します)。
```
blkid /dev/sdx1
```
例えば、```/dev/sdx1: UUID="9xx4-Bxx7" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="00xxbxx3-01"```
といった感じで表示されますので、
```UUID="9xx4-Bxx7"```の値(""の中身)をコピーします。

続いて、下記のコマンドで、```nano editor```を起動して```fstab```を変更します。
```
nano /etc/fstab
```
編集画面で、```/boot/efi```を探し、その左の```UUID=``` に先ほどコピーしたUUIDをペーストします。

筆者の環境では下記のように表示されていました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1124423/3eea55c5-1e1e-44e3-aef1-9a18fa2882d5.png)
UUID行の直上のコメントで、本来```/dev/sde1```に設定されるべき```/boot/efi```が```/dev/sda1```に入れられたことになっています・・・。

```ctrl```+```x```を押し、```Y```で保存して終了します。

以上で、Ubuntu側の再設定は終わりです。

続いて下記のコマンドで、再起動します。
```
sudo reboot
```
再起動時、BIOSのBOOT Device選択画面で、'Windows'を選択して、Windowsを起動します。

## 3.2 Windowsでの設定変更
　以降の作業は[参照先](https://zenn.dev/engineercafe/articles/ba2c32bc605d69)に記載された作業の通りですので、記載を割愛します。
　なお、Windowsの時間ずれ対策についても実施が必要です。

# おわりに
　参考にさせていただいた記事の著者に感謝いたします。これらの記事のおかげでかなりスムーズに環境構築ができました。
　本記事が既存のWindowsPCを利用して、競技会用のUbuntu環境を構築したい方の参考になれば幸いです。
　なお、本記事は筆者の作業を元に記載しました。理解の誤っているところなどありましたらご指摘いただけると幸いです。

# 参考にした記事

https://qiita.com/9ever/items/0b8ad5e54b827891df3a

https://zenn.dev/engineercafe/articles/ba2c32bc605d69