ページ

2025年3月21日金曜日

UEFI環境でUSBメモリにLinuxをインストールしてポータブルな開発環境を作成する

今から10年以上前のまだ学生だった頃,当時はBIOSが主流だったのでUbuntuをインストールしたUSBメモリを常にカバンに入れておき,何かあればそれをブートしてPCのメンテをやったりしていた.(起動しなくなったPCからデータをサルベージしてほしい.という友人からのヘルプ要請に応じるのが主な用途だった.笑)

それがUEFIが主流になって以降,作り方がわからず半ば諦めていたが,最近はノートPCに挿しっぱなしできるようなドングルタイプで128GBを超えるようなUSBメモリが安価で手に入ることを知り,ポータブルLinuxを手に入れたい衝動が再燃し,本腰を入れて取り組んでみた.


乗り越えなければならない課題は2つあり,ひとつはLinuxのインストール先となるUSBメモリのEFIパーティションにブートローダをインストールすること.もうひとつは,USBメモリ内のブートローダを起動することだ.

前者については,同様のことをトライした人なら知っていると思うが,Linuxのインストール時に,せっかくUSBメモリにEFIパーティションを作成しても,インストーラーが母艦PCのSSD上にあるEFIパーティションの方にブートローダーをインストールしてしまい,USBメモリ内にはブートローダーがインストールされない.という問題だ.

調べてみると,Linuxのインストーラーを起動する前に,EFIパーティションのESPフラグを落としてやることでインストーラーがEFIパーティションを認識しなくなり,USBメモリに作成したEFIパーティションにブートローダーがインストールされるようだ.
ともの技術メモ:UEFI環境でUSBメモリにLinuxをインストールする

ただ,色々と面倒そうだったので,要するに母艦PCのEFIパーティションを認識しなくなれば良い.というのであれば,もういっそのことEFIパーティションを削除してやれば良い.と横着することにした.

運良く,データを全削除しても問題ないPCが手元にあったので,そいつでLinuxのインストーラーをブートし,パーティション設定時に,PC側のパーティションテーブルを削除したうえで,USBメモリにLinuxをインストールした結果,難しい設定は何もせずにUSBメモリ内のEFIパーティションにブートローダーのGRUBがインストールされた.(なお,今回はLinuxとしてDebianを使用した)


ただし,このUSBメモリをPCに挿して,そのままブートさせようとしてもGRUBをうまく起動できない.これが2つめの課題である.
これを解決するために,いったんWindowsとLinuxのデュアルブート環境でGRUBを起動させる方法と同様にUSBメモリ内のEFI/debian/shimx64.efi をブートポイントとして追加し,USBメモリにインストールしたDebianを起動させた.

目標は,このUEFIの設定変更を実施せずに,USBメモリをブートデバイスに指定するだけでGRUBが起動するようにすることだが,Linuxのインストーラーがまさにこれをやっているので,Debianのインストーラーが入っているUSBメモリのEFIディレクトリを調べてみると,以下のような構成になっていた.
 $ tree EFI
 EFI
 └── boot
     ├── bootx64.efi
     └── grubx64.efi

 2 directories, 2 files

この構成をそのままパクれば起動するのでは?と調べてみると案の定,ブートデバイスを指定した場合,EFI/boot/bootx64.efiがデフォルトで呼び出されることがわかったので,EFI/debian/shimx64.efiをEFI/boot/bootx64.efiに置き換えてやることにした.(bootx64.efiの他にも必要そうなファイルが多数あったので,debianディレクトリごとbootディレクトリにコピーし,shimx64.efiをbootx64.efiにリネームした.)
 # cd /boot/efi/EFI
 # cp -r debian boot
 # cd boot
 # mv shimx64.efi bootx64.efi


そして,PCを再起動し,ブートデバイスとしてUSBメモリを選択するとGRUBが起動した!(数年来の課題のひとつが解決したので,だいぶ感動モノだった).その後,Debianも問題なく起動し,数年ぶりにポータブルLinuxを作成することに成功した.

これがなんの役に立つかまだわからないが,今回は転がっていた旧型USBメモリで試行したので,とりあえず本番用にAmazonでドングルタイプで128GBのUSBメモリをポチったので,週末はDebianのインストールに勤しむことになりそうだ.

0 件のコメント:

コメントを投稿