公開日: 2021年7月4日 / 最終更新日: 2023年9月17日

番外編: VMware Player を使って Windows 10 に FreeBSD をお招きする

VMware Player を使って Windows 10 の上で FreeBSD を動かす方法を紹介します。別の記事でわざわざマルチブートを実現する方法を書いておきながら元も子もないのですが、私の場合、そんなにたいした用事で FreeBSD を使うこともなく(汗)、Windows 上で動かせるならそのほうがありがたかったりします。スクリーンショットを撮るのも楽だし。なお VMware を話題にするとき「ホスト OS」といえば VMware をインストールした OS を指し、「ゲスト OS」といえば その VMware の上で動かす OS を指します。この記事では、ホスト OS が Windows 10 で、ゲスト OS が 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 キー押しでブートデバイス選択に移行

用意するもの

VMware Player のインストール

基本的にインストールウィザードの表示に従って [次へ] をクリックしていけばインストールが完了します (図 1)。Windows 機能互換性 (図 1(c))、ユーザーエクスペリエンスの設定 (図 1(f))、ショートカットの作成 (図 1(e)) などは必要に応じて設定してください。
図 1
図 1

仮想マシンの初期設定

VMware Player をインストールしたら、始めに仮想マシンを作成します。
  1. VMware Player を起動するとライセンスの確認などののち、「ようこそ」画面になるので、[新規仮想マシンの作成] を選択する (図 2(a-c))。
  2. [あとで OS をインストール] を選択する (図 2(d))。
  3. ゲスト OS [その他]、バージョン [FreeBSD 12 (64 ビット)] を選択する (図 2(e))。
  4. 仮想マシンの名前と、仮想マシンを置くフォルダへのパスを入力する (図 2(f))。ここで入力したパスに仮想マシンのハードディスク等が置かれることになるので、それなりの空き容量が必要になる。
  5. 仮想マシンのハードディスクサイズを指定する。また、[仮想ディスクを単一ファイルとして格納] と [仮想ディスクを複数のファイルに分割] のどちらかを選ぶ (図 3(a))。パフォーマンス重視なら前者。仮想マシンを別のパソコンに移動したりバックアップデータを取ったりするには後者のほうが都合がいい。
  6. 「仮想マシンを作成する準備完了」と表示されるが、完了ボタンをポチる前に[ハードウェアをカスタマイズ] を実行する (図 3(b))。
  7. ハードウェアのカスタマイズ画面にて [メモリ] を選択する。推奨メモリサイズとして 256 MB が設定されているが、これではちょっと悲しいので 1024 MB くらいにする (図 3(c))。
  8. また、このあと FreeBSD のインストール作業を行うため、仮想光学ドライブに FreeBSD インストールディスクの ISO イメージをマウントする。デバイスから [新規 CD/DVD (IDE)] を選択し、[ISO イメージファイルを使用する] を有効にして ISO イメージファイルへのパスを入力する (図 3(d))。
  9. ネットワークアダプタの設定 (図 3(e))。たいていはデフォルトの NAT で問題ないと思われるが、私は LAN につながっている他のマシンの探しやすさから、ブリッジ (物理ネットワークに直接接続) を選択した。その場合、[アダプタの設定] ボタンで使用するネットワークアダプタを選択する (図 3(f))。
  10. 以上を設定の上、仮想マシンの作成を完了させると、VMware Player のメイン画面に戻り、画面左側に今作成した仮想マシンが表示されている (図 4)。これを選択し、[仮想マシンの再生] をクリックすると FreeBSD のインストールが始まる。
図 2
図 2
図 3
図 3
図 4
図 4

FreeBSD のインストール

FreeBSD の ISO イメージファイルをマウントして仮想マシンを起動すると FreeBSD のインストールが始まります (図 5(a))。この状態ではホスト OS (Windows) からのキー入力を受け付けてくれません。ゲスト OS でキー入力を有効にするには Ctrl+G を押すか VMware Player の画面をマウスでクリックします。ホスト OS に戻るには Ctrl+Alt を押します。画面が猫の額ほどの広さしかありませんが、次の節で Xorg を導入するまでの辛抱です。

インストール手順はマルチブート事例 1 の記事に書いた手順とだいたい同じですが、パーティションエディタのところが違います。仮想ディスクのアライメントを一生懸命考えても仕方がないので、ここは「Auto (UFS)」を選択し (図 5(b))、続いて「ディスク全体を FreeBSD で使用するか?」は [Entire Disk] を、「パーティションスキーム」は [GPT] を選択します (図 5(c, d))。結果、図 5(e) のようなレイアウトになりました。

図 5
図 5

インターネット接続

インターネットへの接続は、有線 LAN の場合は実マシンと同様ですので、そちらの記事を参照してください。無線 LAN の場合については未確認なので、ここでは省略します。

Xorg と Open VM Tools の導入

マルチブートの話題からは完全に外れますが、ついでに Xorg と Open VM Tools の導入をやってしまいます。まずは packages を利用して xorg、open-vm-tools、xf86-video-vmware、xf86-input-vmmouse をインストールします。
# pkg install -y xorg open-vm-tools xf86-video-vmware xf86-input-vmmouse
/etc/rc.conf に次の 1 行を追記します。
/etc/rc.conf
dbus_enable="YES"
モニタ解像度を設定するために /usr/local/etc/X11/xorg.conf.d/screen-resolution.conf を新規作成します。内容は次のとおり。ただし、「Modes」の行のモニタ解像度はお使いのモニタに合わせて変更してください。
/usr/local/etc/X11/xorg.conf.d/screen-resolution.conf
Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        SubSection "Display"
        Modes      "1920x1200"
        EndSubSection
EndSection
次にマウスの設定です。同じディレクトリに input-vmmouse.conf を新規作成します。vmmouse ドライバを指定することで、マウスポインタがホスト OS とゲスト OS の間をシームレスに移動してくれるらしいです。
/usr/local/etc/X11/xorg.conf.d/input-vmmouse.conf
Section "InputClass"
        Identifier      "Mouse0"
        Driver          "vmmouse"
        MatchIsPointer  "on"
EndSection
X Window System の個人設定ファイル (.xinitrc) のひな型をホームディレクトリにコピーし、実行可能にしておきます。
% cp /usr/local/etc/X11/xinit/xinitrc ~/.xinitrc
% chmod 755 ~/.xinitrc
で、次のように "twm &" と書かれた行の下あたりに 1 行追加します。これをやっておくと、ゲストとホストの間でのマウスカーソルの移動やコピペが容易になります。
~/.xinitrc
...
twm &
nohup vmware-user-suid-wrapper 2>&1 > /dev/null &
...
では startx コマンドで X を起動してみます。図 6 のように表示されました? VWware Player のツールバーにある "フルスクリーンモード" ボタンを押せば全画面表示も可能です。
% startx
図 6
図 6: 懐かしの twm

時刻を合わせる

以前は VMware Player 側の仮想マシン設定で時刻同期をオンにし、~/.xinitrc に "vmware-toolbox-cmd timesync enable" と 1 行書いておけば、ゲスト側の時刻をホスト側の時刻に同期させることができていました。ところが今回 (VMware Workstation 17 Player と FreeBSD 13.2-R の組み合わせ) はうまくいかず…。ホスト側もゲスト側も JST に設定してあるのになぜか 9 時間ずれます。原因がよくわからないので、ひとまず NTP で時刻を合わせることにしました。
  1. 仮想マシンの時刻同期設定をオフにする。VMware Player のホーム画面で仮想マシンを選択し、[仮想マシン設定の編集] > [オプション] タブ > [VMware Tools] > [ホストとゲスト時間を同期] のチェックを外す。
  2. 仮想マシンにインストールされた FreeBSD を起動する。
  3. /etc/rc.conf に下記を追記する。
    /etc/rc.conf
    ntpdate_enable="YES"
    ntpdate_hosts="ntp.jst.mfeed.ad.jp"
    
  4. /etc/wall_cmos_clock を新規作成する。中身は空でよい。
    # touch /etc/wall_cmos_clock
    
  5. FreeBSD を再起動する。
ここまで終われば、あとの作業は基本的に実機の場合と同じです。それぞれの FreeBSD 関連記事を参照してください。特に Windows 側とファイルのやり取りをするために Samba を導入しておくとよいと思います。