この記事は、新歓ブログリレー202411日目です。
はじめに
こんにちは、23B[1]のComaviusです。普段は競技プログラミングをしています。
さて、今日は最強のノートPCの話をしようと思います。そのためにはまず、何をもって最強とするか明らかにする必要があります。ある人はRTX3060を載せたゲーミングノートが最強だと主張すれば、他の人はヒンジが360度回るコンバーチブルPCの方が優れていると反論するかもしれません。しかし、私の考える最強の条件は以下の3つです。
- Windowsを含む複数のOSを起動できる(マルチブート)
- どのOSを起動するときもF2を連打する必要がない
- とあるOSに割り当てた記憶域の用途を変えても他のOSに影響が出ない
前提知識
本稿は新歓ブログリレーの記事のため、少し前提知識の補足をします。こんなこと知っているという方は次の章まで飛ばしてください。
- ブート
OSの起動、あるいはそのプロセス - ブートローダー
ブートプロセスを管理してくれる、GRUBはその一種 - ディスク
コンピューター内の記憶媒体、SSD, HDDなどが該当する - パーティション
ディスク内部を区切ったもの、この中にOSやブートローダーを記録する - Linux
OSの一種、この記事で登場するUbuntu[2], Arch Linux[3], NixOS[4]はすべてこれの派生型、macOSの親戚
ここで紹介されていない用語は読み飛ばしても大丈夫です。
作業
方針を立てる
このPCで主に使いたいOSはNixOS[5]とWindows[6]で、他のOSを使いたくなったときに追加できるように予備の領域も確保したいです。また、これらのOSがブートプロセスの呼び出しで依存し合うと条件3を満たせないため、それらとは別にブートローダーを管理する必要があります。
そこで、今回はGRUBとGRUB管理用のArch Linuxを導入しそこから各OSを立ち上げられるようにしました。ここでArchを選んだ理由3つで、1つはArchWikiの記述が充実している点、そしてユーザーが自分で設定できる範囲が広い点、最後は使っているUbuntuで詳細まで設定しながらインストールする方法がわからなかった点、この3点です。
Archを入れる
まずArch Linuxをインストールします。これはArchWikiのインストールガイドの通りに操作すれば大丈夫です。今回は、NixOSがGRUBのインストールされたパーティション(EFIシステムパーティション)に大量のデータを保存する[7]ため、EFIシステムパーティションを通常よりも大きめに設定しました。
NixOSを入れる
次にNixOSをインストールします。本来であればNixOSのインストールガイド通りに操作するだけですが、今回はArchと一緒に導入したGRUBから起動する必要があるため、設定ファイルを編集し[8]EFIシステムパーティションの指定とブートローダーの変更をしました。そして、ArchWikiのGRUBの説明を読みながら、Archを起動するためのGRUBの設定をNixOSを呼び出せるように編集しました。
Windowsを入れる
最後にWindowsをインストールします。まずはWindows本体を導入します。ArchのGRUBからWindowsを起動できるようにしたいところですが、残念ながらWindowsのブートプロセスをGRUBから直接管理することは出来ません。しかし、これもまたArchWikiのGRUBの説明によると、GRUBの設定ファイルを生成するときに使うgrub-mkconfig
というコマンドがWindowsなどの他OSのブートローダーを検出して立ち上げられるようにしてくれる[9]ため、ありがたくその機能を使いました。
完成
これで作業は完了です。まだSSDに250GBの空きがあるため、気が向いたら何か別のOSを入れて遊ぼうと思います。
終わりに
いかがでしたか?専門用語の使用を控えたため一部の方には歯がゆく感じられたかもしれませんが、もし楽しんでいただけたなら幸いです。もっと良い解決策があればTwitterで教えてください。
明日は@YHz_ikiriさんの記事です。お楽しみに!
本記事はCC-BY-SA 4.0のもと公開されます。また、サムネイルは以下の画像が使用されています。
'23年度の学士課程入学者 ↩︎
初心者から上級者まで幅広く利用されている、個人的なおすすめ ↩︎
パワーユーザー、あるいはオタク向け ↩︎
使いたい機能を宣言的に指定できるため環境の再現性に優れる、すごい ↩︎
開発環境用 ↩︎
工学院の講義用 ↩︎
設定をロールバックするためのファイルを保存していくため ↩︎
NixOS(というよりもNixパッケージマネージャー)はNix言語で書かれた設定ファイルをもとに環境を自動生成してくれる、すごい ↩︎
os-proberがmountされたすべてのデバイス内で起動できるOSが無いか探してくれる。詳しくは、https://github.com/campadrenalin/os-prober/blob/master/README ↩︎