Topics

Blogblog

WindowsとLinuxのデュアルブート環境を吹っ飛ばしたのでUSB SSDに頼ったらいろいろ大変だった話

Sorry, this entry is only available in 日本語. For the sake of viewer convenience, the content is shown below in the alternative language. You may click the link to switch the active language.

はじめに

この記事は、Zennに投稿した以下の記事の裏話である。

USBストレージに Ubuntu環境を作ってWindowsとデュアルブートする
https://zenn.dev/engineercafe/articles/ba2c32bc605d69

発端は、Unity製自動運転シミュレータを動かすためのUbuntu環境が必要になったことだった。

Unity製自動運転シミュレータのAWSIMをうごかしてみた
https://zenn.dev/engineercafe/articles/bc95f19ff7ab4a

普段、開発などでLinux環境が必要になると、WSLやDockerでサクッと準備して捨てるのが日常になっていた。

ところが、今回は以下の様な事情があった。

・搭載されているGPUやCPUの能力がギリギリだったのでフルに使いたかった
・後日ワークショップで共通のLinux環境が欲しかった
・DockerやWSLの導入後の初学者向けトラブルシューティングを減らしたかった

その結果、WindowsとUbuntuのデュアルブートを選択したが、これが苦労の始まりである。

また、リーズナブルにパワフルなGPUがガン積みできないMacについては今回考えないものとする。

デュアルブートを選択

デュアルブートも以下の方針とした。

・WindowsのブートローダとUbuntuのブートローダを完全に分離する
・UbuntuはUSBストレージにインストールする

これは先行事例の検索により、Windows Updateなどによるブートローダの不可解な破壊が話題になっていたから、というのと、少し前にHDDに入れたデュアルブート環境を壊してしまい、Windowsまでクリーンインストールする羽目になった友人が近くに居たからだ。

昔の記憶をたどりながらインストール

最後にデュアルブートしたのはもう何年前だろうか……
専用の端末を買うお金が無く、ジャンクPC1台だけでネットワーク技術者の仲間入りをした20代の頃以来だったか……

最新の事情を調査したところ、BIOSではなくUEFIからのブートになっており、Windows Boot ManagerとGrub(Ubuntuのブートローダ)はディスク内の別パーティションに共存することも、別パーティションにインストールすることも可能になっていた。

UEFIに移行する頃や、Secure Bootがトラブル続きだった頃の脳内イメージを更新できた。

うまくいかない

公式の手順通り、USBメモリにインストールイメージを転送し、そこから起動し、別のUSBストレージにインストールを試みた。
「別のUSBストレージ」として使用したのは以下の製品である。

 

https://www.buffalo.jp/product/detail/ssd-put500u3-bkc.html

USBメモリの形をしたSSDなので高速である。256GBでも十分だが、512GBを購入した。
以下、このストレージをUSB-SSDと呼ぶ。

この記事に記したとおり、
https://zenn.dev/engineercafe/articles/ba2c32bc605d69

ブートローダのインストール先を内蔵SSDではなくUSB-SSDを指定してインストールは完了し、再起動するとUbuntuは起動する。
しかし、UEFI設定画面からブートするストレージを確認すると、なんと内蔵SSDにブートローダだけインストールされている!


画像の中で「OM3PDP3-AD NVMe KDI」と表示されているのが内蔵SSDを指す。
ubuntuもWindows Boot Managerも内蔵SSDの型番が表示されている。

試行錯誤

USB-SSDの方のEFIパーティションがうまく認識されていないのか?
SSDの相性問題など疑っていろいろ試してみたが、無関係のようだった。

別端末でも状況は再現した。
内蔵のSSDを無効にしてインストールすると問題は解決したが、今回の対象はノートPCを想定していたので、現実的では無かった。

対症療法

対症療法として、以下の手順に落ち着いた。

USBブートしてUSB-SSDにインストール(GRUBが内蔵SSDにインストールされる)

Ubuntuを起動してGRUBをUbuntuのパーティションにインストールする

Windowsを起動して内蔵SSDのEFIパーティション内にあるUbuntuの起動エントリ&ディレクトリを削除する

※UbuntuとWindowsの作業が逆になると起動できなくなるので注意

具体的な作業は以下のエントリを参照。
https://zenn.dev/engineercafe/articles/ba2c32bc605d69

作業が終わると、以下の画像のようになり、正常化する。

「OM3PDP3-AD NVMe KDI」はWindows Boot Managerのところにだけ表示され、UbuntuがインストールされているUSB-SSDは別の型番が表示されている

※このスクリーンショットは上で紹介しているUSB-SSDとは別の型番でテストしたときのものだが、同じようにうまくいくことは確認済

まとめ

結論として、とてもとても面倒である。

DockerからGPU使うのもわりとちゃんと動くようになっているようなので、マシンスペックに余裕があるならそちらでセットアップした方が楽かもしれない。

それでもUSB-SSDに環境が分離できる安心感は素晴らしい。もしやってみたい人がいれば挑戦を。

SHARE ON