公開日: 2021年7月4日
マルチブート事例 1: Windows 10 と FreeBSD と FreeBSD (前編)
Windows 10 と FreeBSD、さらにはバージョンが異なるもう一つの FreeBSD を共存させる方法を紹介します。次のようなケースを想定しています。
- 1 台目のハードディスクに Windows 10 がプリインストールされている。
- 2 台目のハードディスクにバージョンが異なる二つの FreeBSD を共存させる。
前編目次
供試 PC
ドスパラ GALLERIA SG (KTC10/B365ITX)
- CPU: Intel Core i7-9700F 3.00 GHz
- メモリ: 16 GB
- ストレージ 1 台目: SSD (512 GB) Windows 10 プリインストール済み
- ストレージ 2 台目: HDD (2 TB)
- ディスプレイアダプタ: Palit NE6208S019P2-180F (GeForce RTX 2080 SUPER)
- NIC: Intel Ethernet Connection l219-V
- 備考: 起動時 Del キー押しで UEFI 設定、F11 キー押しでブートデバイス選択に移行
用意するもの
- USB メモリ (FreeBSD インストールメディアとして)
- Win32DiskImager (FreeBSD インストールメディアを作成するのに使う)
- FreeBSD インストールイメージFreeBSD-<バージョン>-RELEASE-amd64-memstick.img
- rEFInd
- EFI UFS ドライバ (ufs2_x64.efi)
ハードディスクのパーティション構成を検討する
増設したハードディスクにバージョン違いの FreeBSD を共存させます。それぞれのパーティションを「A 面」「B 面」としておきましょう。こうしておけば RELEASE 版で安定運用しつつ、STABLE 版でいろいろ試したりといった使い方が可能になります。このハードディスクには、元々 NTFS でフォーマットされたパーティションが 1 個だけ存在し、今のところ SSD にプリインストールされた Windows 10 から D ドライブとしてマウントされています。このパーティションをいったん削除して、そこに次のように 5 つのパーティションを作ることにします。
セクタ数 × 論理セクタサイズ = 2699067392 × 512 = 1381922504704
となり、4096 で割り切れる値になっています (わざわざ Excel で表を作って確認したので、合っているはず…)。
- Windows 10 のユーザデータ用パーティション
- FreeBSD 用スワップパーティション (A 面、B 面共通)
- FreeBSD パーティション (A 面)
- FreeBSD パーティション (B 面)
- Windows/FreeBSD 共有パーティション
セクタ数 × 論理セクタサイズ = 2699067392 × 512 = 1381922504704
となり、4096 で割り切れる値になっています (わざわざ Excel で表を作って確認したので、合っているはず…)。
- セクタサイズを知るには、Windows 上でコマンドプロンプトを管理者権限で開き、「fsutil fsinfo ntfsinfo D:」のように実行すると表示させることができます。「セクターあたりのバイト数」が論理セクタサイズ、「物理セクターあたりのバイト数」が物理セクタサイズです。
既存パーティションのバックアップを取る
既存のパーティションに消えては困るデータがある場合はバックアップを取っておきます。次の記事を参照してください。
FreeBSD のインストールメディアを作る
FreeBSD のインストールメディアを作る方法はいろいろあると思いますが、ここでは Windows 上で Win32 Disk Imager というソフトを使用します。ソフトをインストールし、起動したら [Image File] 欄で FreeBSD-<バージョン>-RELEASE-amd64-memstick.img を選択し、[Device] 欄で書き込み先 USB メモリのドライブレターを選択します。[Hash] 欄でアルゴリズムを選択して [Generate] ボタンを押すとイメージファイルのハッシュ値を表示させることができます。[Write] ボタンを押すと、USB メモリへの書き込みが始まり、「Write Successful.」と表示されたら完成です。
ハードディスクに新しいパーティションを作成する
FreeBSD インストーラの Shell モードを利用して、インストール先のハードディスクに新しいパーティションを作成します。先ほど作成したインストールメディアからパソコンを起動するために、UEFI 設定画面で CSM (Compatibility Supported Module) と Secure Boot を無効にし、 USB メモリから起動されるようにブートデバイスの優先順位を設定します。設定を保存してパソコンを再起動すると、FreeBSD のインストーラが起動するので、メニューから [Shell] を選択し、下記のようにコマンドを実行します (一度実行してしまうと後戻りが利かないので、慎重にお願いします)。
# gpart list
# gpart show -l ada0
# gpart destroy -F ada0
# gpart create -s gpt ada0
# gpart add -t ms-basic-data -b 2048 -s 2699067392 ada0
# gpart add -t ms-basic-data -b -s 67108864 ada0
# gpart add -t ms-basic-data -b -s 536870912 ada0
# gpart add -t ms-basic-data -b -s 536870912 ada0
# gpart add -t ms-basic-data -b -s 67108864 ada0
# gpart show -l ada0
=> 40 3907029088 ada0 GPT (1.8T)
40 2008 - free - (1.0M)
2048 2699067392 1 (null) (1.3T)
2699069440 67108864 2 (null) (32G)
2766178304 536870912 3 (null) (256G)
3303049216 536870912 4 (null) (256G)
3839920128 67108864 5 (null) (32G)
3907028992 136 - free - (68K)
1行目: | gpart list コマンドの出力 (掲載は省略) を見て、目的のハードディスクを見つける。ここでは ada0 がそれと判断した。くれぐれも他のハードディスクと間違えないように。 |
2行目: | ada0 の現在のパーティションレイアウトを確認する。 |
3行目: | 既存のパーティションをすべて削除する。 |
4行目: | GPT を指定してパーティショニングスキームを作成する。 |
5~9行目: | 事前に決めた構成に従ってパーティションを作る。 |
10行目: | 変更後のパーティションレイアウトを確認する。 |
FreeBSD 用のパーティション (ada0p2 から p4) を含め、すべてのパーティションのタイプに ms-basic-data を指定していますが、あとで変更するので問題ありません。むしろここで freebsd-swap や freebsd-ufs などを指定してしまうと、あとで FreeBSD をインストールするときに「パーティションの上書きができません」というようなメッセージが表示されて先に進めなくなる現象が見られたので2)、いろいろ試した結果このようにしています。
- 具体的には "The chosen root partition has a preexisting filesystem." と表示され、それでも進めようとすると "Error while extracting base.txz: Can't unlink already-existing object" と表示され、インストーラの先頭に戻ることしかできなくなります。個人的には、ここまで来たら強制的に上書きしてもらっても良いのですが、こういう仕様のようです。