8
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

WSL? FreeBSDが使いたいんだけど

WSL/WSL2が盛り上がってるけど,やっぱりFreeBSDが使いたい。

オフィシャルイメージを使い,インストールなしでお手軽にHyper-V上にFreeBSDを構築します。Windows側からssh接続で使うことが前提。Power to serveのFreeBSDなので。

Hyper-Vを使うにはWindows 10 Proが必要。

準備

Hyper-Vを有効にする

Windowsの機能の有効化または無効化 > Hyper-V
「検索するには、ここに入力します」(いわゆる検索窓)で「Windowsの機能の」を打つと出てくる。

enable_Hyper-V.png

Windowsを再起動

reboot.png

OpenSSHクライアントのインストール

オプション機能 > 機能の追加 > OpenSSHクライアント

cmd.exe(コンソール,黒い画面)でwhere sshと打ってC:\Windows\System32\OpenSSH\ssh.exeと出ることを確認する。

私の環境では,scoopのOpenSSHはFreeBSDのvi/nvimの編集で画面が乱れた(scoop uninstall opensshで削除した)。

仮想マシンの準備

仮想マシンイメージのダウンロード

FreeBSDDownload FreeBSDで最新版の仮想マシンイメージ(Virtual Machine Images)をダウンロード。執筆時点での最新安定板はFreeBSD12.0-RELEASE。アーキテクチャは多くの場合amd64。Hyper-V用のイメージは拡張子が.vhd.xzのもの(例えばFreeBSD-12.0-RELEASE-amd64.vhd.xz)。

7-zipやunxzなどで解凍して適当な場所に置く。

仮想マシンの作成

Hyper-Vマネージャ > 新規 > 新規仮想マシン...

Hyper-V_manager.png
new_virtual_machine.png

ウィザード

名前は適当につける。
wizard1.png

世代の指定

第1世代。
wizard2.png

メモリの割り当て

wizard3.png

ネットワークの構成

既定ではWindowsと物理インターフェース(Ethernetや無線LANアダプタ)を共有して,内部ネットワークを作る。Windowsからのみアクセスできる。

wizard4.png

仮想ハードディスクの接続

既存の仮想ハードディスクを使用する

wizard5.png

起動

仮想マシンを選択し,接続...をクリック
Hyper-V_manager_connect.png

起動をクリック
connect.png

エクステンションの類を入れなくてもキーボードやマウスの自動キャプチャに対応している。

boot.png

お疲れさまでした。

rootのパスワードは空なのでリターンするだけ。

その他

各種初期設定

一般ユーザの作成

# adduser

追加のグループとしてwheelに入れておく。

パッケージ

最初はboostrapが実行される。

# pkg update

FreeBSDだけどsudoを入れvisudoで以下をアンコメント

## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL

portsコレクションの利用

# portsnap fetch
# portsnap extract

pkg/ports充実してます。バージョンも新しいものが多い。flangとかr-basecdoなど入れました。

ただし,texliveは古いのでtexliveのスクリプトでインストールしました。
* BSD/FreeBSD - TeX Wiki

X11アプリケーション

vcxsrvを使っているがお好きなものをどうぞ。デスクトップを使うのでなければxorgなどは不要。

xuthと確認のためxclockxeyesをインストール。

# pkg install xauth xclock xeyes
/etc/ssh/sshd_config
X11Forwarding yes
XAuthLocation /usr/local/bin/xauth

残念ながらX11Forwardingはうまくいかない。WSLやHyper-VのUbuntu 19.04からだとうまくいく。仕方がないので.shrcDISPLAY=WindowsのIPアドレス:0.0と書いておく。

LAN内の別のマシンからアクセスする場合

仮想スイッチマネージャーで仮想スイッチを作る。外部ネットワークを選ぶ。一つしかない場合は「管理オペレーティングシステム(つまりWindows)にこのネットワークアダプターの共有を許可する」にチェックするしかない。ネットワークアダプタが複数あれば,チェックせずにWindowsとFreeBSDに別々の物理インターフェースを割り当ててもよい。

仮想マシン(FreeBSD12)の設定...で作成したスイッチを選択する。

IPアドレスを固定する

ハンドブック11.5参照。

IPアドレス等はあくまでも例なので環境に合わせて変更すること。(当然の注意で恐縮だが「ネットに出ていたことを何も考えずにコピペしましたが動きません」という若者が多いのでご容赦を。)

/etc/rc.confに指定するIPアドレス(例 192.168.1.99),netmask(例 255.255.255.0),ゲートウェイ(defaultrouter,例 192.168.1.254)を書く。rootになって編集。

/etc/rc.conf
ifconfig_hn0="192.168.1.99 netmask 255.255.255.0"
defaultrouter="192.168.1.254"

ネームサーバは/etc/resol.confに書く(例 192.168.1.254)。

/etc/resolv.conf
nameserver 192.168.1.254

よく使うコマンド確認

ネットワークインターフェースの確認

仮想マシンをWindowsのhosts%sytemroot%\System32\drivers\etc/hosts%system%はたぶんC:\Windows)に書いておくといいかも。内部ネットワークだと起動のたびにIPアドレスが変わる。

$ ifconfig -a

inetに書いてある数字がIPアドレス。

ネットワークの状態の確認

$ netstat -rn

インタフェースの再起動

管理者(root)で行う。

# service netif restart

ルーティングの再起動

# service routing restart
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
8
Help us understand the problem. What are the problem?