Windows PCに安定したネイティブLinux環境を構築する方法
はじめに
この記事を、WindowsとLinuxのデュアルブート環境を構築してOS両方吹き飛ばしたことのある全ての人に捧げます。
人類はなぜデュアルブート環境のOSを両方ふっとばすのか
主語が大きければ「人類」を「おろかな、からあげ」に置き換えてください。
「Linux試してみよー」と雑誌やネット記事に書いてあるままに、気軽にデュアルブート環境構築した人類には以下のようなワナが待ち受けています。
- Linux環境が壊れて道連れでWindowsもブートしなくなる
- Linuxの再インストールに失敗してWindowsが吹き飛ぶ
- Windowsの再インストールしたらLinuxが吹き飛ぶ
- Windowsの大型アップデートでLinux環境が吹き飛ぶ
多くの人は、その後「二度とLinuxなんて入れるか!」と思ったり、一部のマニアはLinux専用機を買ったりするのではないでしょうか。
古いPCで遊ぶだけならそれでも良いですが、近年のAI(ディープラーニング)の流行などで「WindowsもLinuxも高価なGPUを使いたい」「なるべく仮想環境は使いたくない」というニーズから、1台のPCで安定してWindowsとLinux両方を気軽に切り替えられる環境が求められているのではないかと思います。
やりたいこと
前置きが長くなりましたが、今回やりたいことは安定したWindowsとLinuxのデュアルブート環境の構築です。具体的には以下を実施します。
- 1台のPCでネイティブのWindows環境/Linux環境を使えるようにします
- WindowsとLinuxは完全にディスクを分けます。今回はプライマリ(1台目)のディスクにWindowsを入れて、セカンダリ(2台目)のディスクにLinuxを入れます
ポイントは、ずばりブートローダー含めて、Windows側のデバイスには一切Linuxの環境を入れないことです。
これにより、どちらかのOSが死んでも、共倒れせず気軽にOSを入れなおすことができます。Linux環境が不要になれば、セカンダリのディスクを外せば、ただのWindows機となります。
この方法だと、通常起動はWindowsが立ち上がり、Linuxを起動するときはブートメニューからセカンダリディスクを選択することとなります。起動時にブートメニューを立ち上げる1手間が必要なのが少し手間ですが、何度もデュアルブートにチャレンジしては、Windowsを吹き飛ばしてきた経験上、これが(自分にとっては)ベストソリューションではないかと思っています。
同じようなことしている人はいると思うのですが、ネット探しても10年くらい前の情報がでてきたり、なかなかそのものずばりの方法が書いてなかったりしたので、まとめておきます。
Linuxのインストール作業は、間違えるとOSごとふっ飛ばしたりするので、ふっとばす覚悟した上でこのあとの作業に取り組んでください。また、MBRとかパーティションなどの詳しい説明は飛ばしていきます(あんまり詳しくない)ので、ご了承ください。間違えてたら優しく教えてください。
また、最後の方に書きますが、Windowsの大型アップデートで吹き飛ぶ可能性があるので、決して完璧な方法ではありません。一番は、PCをOSごとに分ける、ストレージごと毎回入れ替えるが安全な運用となります。
ハードウェアの前提
- WindowsPC(周辺機器は省略)
- セカンダリディスク
- Ubuntuブートディスク(USBメモリ)
PCは私の場合はデスクトップPC(PC工房のゲーミングPC)ですが、ノートPCでも同じ要領でセットアップできます。
セカンダリのディスクとしては、外付けのUSBのドライブを用意すれば、持ち運べるポータブルなLinux環境となってオススメです。使用するディスクに関しては、以下のブログ記事を参照ください。
BIOSの起動方法とブートメニューの起動方法はハードウェアにより異なるのであらかじめ確認しておきましょう。私の場合は、BIOSは起動時にDELETE連打、ブートメニューは起動時にF7連打でした。
Linuxのインストール
Linuxのブートディスクの作り方は省略します。以下記事など参考ください。
ブートディスクでLinuxをインストールしていきます。途中手順も省略します(基本デフォルトです)。
Ubuntuのバージョンは20.04/22.04で実績があります。画面は基本22.04のものですが、他のバージョンでも基本は同じです(あんまり古いと違います)。
インストールの種類のところから解説します。ここでは「それ以外」を選択します。
このあと、セカンダリのHDDにLinuxをインストールするように設定します。セカンダリディスクのデバイス名は、環境により違いますので、確認ください。Windowsが入ってない方ですね。WIndows Boot Managerとか書いてある方のディスクはWindowsが入っているので、消さないように注意しましょう。自分の環境ではセカンダリディスクは /dev/sdd/
でした。
デスクトップPCで、PCの組み立てなれている人は、いっそWindowsのドライブを一時的に抜いてしまうと、間違えてWindowsのファイルを消すことがなくて良いかもしれません。
最終的な設定は、以下の画面の通りです。
設定のポイントは以下です。
ブートローダ
「ブートローダをインストールするデバイス」にセカンダリディスクを選択します。ここが重要です。
これにより、通常はWindowsが起動し、セカンダリディスクからブートしたときのみLinuxが起動するようになります。
パーティションの削除
最初に、セカンダリディスクで -
を選択して、パーティションを削除します。
パーティションの作成
パーディション削除したのち、セカンダリディスクで +
を選択してパーティションを作成していきます。全て基本パーティションです(論理パーティションは5つ以上のパーティションに分ける場合に必須となりますが、ここでは詳しくは説明しません)。
パーティションの分け方は2例記載しています。あんまりこだわりないので適当です。よくわからなければ/
に全容量をつぎ込んでおけばオッケーです。
後でスワップ領域(swap)増やしたくなったら以下記事を参照すれば大丈夫です。
例1
とりあえずスワップ領域に100GBつぎ込む。AIとかでメモリがたくさんいるときのため。他は全部/
につぎ込む。
マウントポイント | タイプ | サイズ |
---|---|---|
/ |
ext4 | 900GB |
swap | 100GB |
例2
/
と/home
を分けて、スワップはメインメモリの2倍くらい割り当てる例。
マウントポイント | タイプ | サイズ |
---|---|---|
/ |
ext4 | 100GB |
swap | 64GB | |
/home |
ext4 | 残り全部 |
実際の運用
インストールが完了したらOKです。
再起動してWindowsの起動画面が出たらOKです。普通にWindows機として使えます。プライマリのディスクにはWindowsしか入っていないし、ブートローダもそのままなので当たり前ですね。
えっ、Linuxが立ち上がる?それはそれは…ご愁傷様です…Windows OSを再インストールからはじめましょう。
Linuxを立ち上げたい場合は、ブート選択画面を立ち上げます(PCの機種によって操作方法が変わります)。
ここでLinuxを選択すればLinuxが立ち上がります。
以下は運用上のポイントや注意点です。
Windowsの時間が9時間ずれる
Linux側のターミナルで以下実行すればOKです。
$ sudo timedatectl set-local-rtc true
OSの再インストール
デュアルブート環境だとトラブルになりやすいOSの再インストールですが、この構成なら簡単です(多分)。
Linuxの再インストールは、この記事の内容を繰り返すだけです。可能ならWindows側のディスクを外しておけば安心でしょう。
Windowsに関しては、セカンダリのディスクを外せば、完全に普通のWindows機なのでLinuxを意識する必要はなく、普通に再インストールできます。
複数のOS環境を手軽に入れ替える
異なるOS環境を増やしたいときは、外付けディスクを変えて同じことをすれば、いくらでもOS環境を増やすことができます。
ラズパイでSD毎環境を入れ替えるように、PCでもディスク毎環境を入れ替えると、あたかもPCが大きいラズパイ(?)みたいな感覚で使えますね。世の仮想環境とは完全に逆方向の物理で殴っていく方向の運用ですね(笑)
Windows大型アップデートには要注意
この環境なら完璧だろ!と思っていたら、Windowsのアップデートだと、別ドライブのLinuxを破壊するという情報が続々と…恐ろしいなWindows。
一番確実なのは、普段はLinux側のディスクを外しておくことですね。内蔵してしまうと非現実的なので、USBの外付けディスクにLinuxを入れて、使うときに繋ぐというのが現実的かと思います。
危ないのは、Windowsの大型アップデートのときみたいなので、そのときだけ外すという選択肢もあるかもしれません。いずれにしてもやはり壊れる可能性があるということで、この環境でも完璧ではないみたいです。
再インストールしました(追記)
大型アップデートの影響かはわかりませんが、WindowsのSSDが死に、同時にLinuxも起動しなくなりました。やはり同じマシンだとどうしても同時に死ぬ危険ありますね。ソフト的、物理的な距離は重要かもしれません。
Windowsの再セットアップの方法は以下参照ください。
今回はLinuxは外付けのSSDにインストールしてブートする形にしました。
Amazon: バッファロー SSD 外付け 1.0TB USB3.2 Gen1 読込速度430MB/秒 PS5/PS4メーカー動作確認済 コンパクト 超小型 ブラック SSD-PUT1.0U3BC/N
まとめ
Windows機で安定したネイティブLinux環境を構築する方法を紹介しました。
知っている人には当たり前ですし、やっている人も多そうなのですが、意外にネットに最近の情報がなかったので書いてみました。
仮想環境も充実してきているので、需要自体少ないのかもしれませんが、誰かの役に立つことを願って記事公開します。
参考リンク
関連ページ
変更履歴
- 2023/04/01 Ubuntu22.04に関して追記
- 2022/09/25 再インストールに関して追記
Discussion
今ならUSBメモリ型のSSDに入れて使うときだけ刺すのが安全そうですよねぇ
勝手に電源立ち上げてWindowsUpdate実行してくれちゃったりしますし
ちなみに私もWindowsUpdateで
デフォルトの起動をGRUBからWindowsのブートローダに変更されたり
別ディスクに入れてたLinuxをUpdateで破壊されたりした経験者です
@坦々狸さん
続々とLinux破壊仲間が出てきて、自分だけじゃないとちょっとだけ安心したのは内緒ですw
Windows Update、気をつけたいと思います!
(Linuxに詳しくないので力技ですが・・・)
こちらの記事を見て2つの別種のSSDにLinuxを入れて、それぞれ抜き差しして稼働させようとすると、どうも最後の方のSSDだけ起動可になってしまいました。ブートのところで引っかかります。
色々と調べたのですが(22.04LTSにて)
と同じ症状でUbuntuのインストーラーのブートローダーの指定がうまく動作していないようです。力技の手順だけをまとめると
・既に書き込まれたWindowsのドライブに書き込まれたブートローダーを削除(実際に書き込まれていた・・・) ・Windowsの入っているSSDを物理的に外す。
・入れたい各SSDにUbuntuをインストールする。入れるときに「EFIシステムパーティションの作成」をする。もしかしたらここは簡易設定でよければ「ディスクを削除してUbuntuをインストール」でも良いかもしれません。
・起動等を確認。必要な台数を繰り返す。
・WindowsのSSDを戻す
で、たぶん独立した環境になった気がします。ブート選択画面で、Ubuntu(”インストールしているドライブ名”)という形で表示されます。
#Ubuntuのインストーラーのブートローダーの指定が正しく動作しさえすれば、この力技は不要かと思います。
@showyake さん
ありがとうございます。勝手にブートローダー書き込むのはやめて欲しいですね…
SSDはずすのは確実ですね。PC、Windowsも含めて、ディスクは全部外付けにして、簡単に入れ替えできるのが良いなと最近思います。