PC-BSD 8.1 を使って ZFS boot な FreeBSD をインストールする
[PC-BSD](http://www.pcbsd.org/) と言えば、
FreeBSD をベースにしてより優れたデスクトップ環境を提供する
プロジェクトと一般に認識されているわけですが、
実は PC-BSD 8.0 以降では FreeBSD の GUIインストーラとしても動作するようになっています。
1. [PC-BSD 8.0登場、FreeBSD 8.0インストーラ](http://journal.mycom.co.jp/news/2010/02/23/049/index.html)
2. [EuroBSDCon2010 – PC-BSD 9はKDE、GNOME、XFce4に対応](http://journal.mycom.co.jp/articles/2010/10/18/eurobsdcon2010-pc-bsd-9/index.html)
FreeBSD のインストーラではなく PC-BSD をインストーラとして使う利点として一番大きいのは、
ZFS、UFS、UFS+Softupdates、UFS+SUJ といったファイルシステムに対応していることでしょう。
PC-BSD 8.1 ではルートパーティションをZFSに出来る(ZFS root)だけでなく、
ZFS対応のboot loaderをインストールすることも出来、
完全に「UFS free」な環境を手軽に作ることが出来ます。
また、zpool mirror、zpool raidz などの構成も、
インストーラで選択するだけで簡単に作ることが出来ます。
FreeBSD で ZFS を使うのであれば、PC-BSD 8.1 をインストーラとして使うのが
一番お手軽で良い方法だと思います。
ただし、パーティションの構成以外、ユーザ追加以外の設定は、
まだほとんど出来ないという状態です。
例えばネットワークの設定画面はなく、自動的にDHCPになってしまいます。
まぁ、インストール後に /etc/rc.conf を編集すればいいだけなんですが、
まだまだ「初心者にオススメ」とは言えないな、という感じです。
この辺はそのうち改善されていくことでしょう。
### インストール手順
#### ダウンロード
[PC-BSD 8.1のダウンロードページ](http://www.pcbsd.org/content/view/169/11/)
に行き、手近なミラーを選択してインストーラをダウンロードします。
#### 起動
インストーラを起動すると、どこかで見た画面が上がってくるので、
「1. Boot Installer [default]」を選択します。
#### 言語選択
インストーラのOSが上がってくると、言語の選択画面になります。
ちゃんと「Japanese」も選択出来、選択するとこれ以降のメニューが日本語に切り替わります。
#### キーボード選択
次はキーボード選択画面。ここでも英語キーボードだけでなく日本語キーボードが選択可です。
#### インストールの種類の選択
次はインストールするもの、手段の選択です。
ここで「インストールするシステム」として「FreeBSD」を選択します。
#### ディスクの設定
次がいよいよパーティションの設定です。
まず、「ディスクレイアウトの設定」を「ディスクパーティションの手動設定(上級者向け)」
に変更します。次に、その下の画面の「+」をクリックします。
すると、パーティション設定画面が表示されるので、まず種類を「ZFS」にします。
次に「ZFSプールタイプ」を選択します。「mirror」「raidz」なども選択可能です。
「mirror」「raidz」など、複数台のHDDを使う構成の場合は、
「追加可能なZFSプールデバイス」で2台目、3台目のHDDを選択します。
最後に、「ZFSファイルシステム/マウントポイント」のところで「追加」をクリックし、
ファイルシステムを追加します。最低でも「/」(ルートパーティション)は必要です。
すべて設定したら、「保存」をクリックします。
なお、「ディスクの設定」画面から「次へ」をクリックすると、
「スワップ空間が設定されていませんが、続行しますか?」と出ますが、
ここは構わず「Yes」を押します。
本当はswapの設定が出来れば良いのですが、やり方がわからないので…
#### ユーザーの作成
次は root パスワードの設定およびユーザーの作成です。
必要なユーザーを追加しましょう。
#### タイムゾーンの設定
「Asia/Tokyo」を選択します。また、この画面でNTPを有効にすることが出来ます。
#### オプション機能を選択
ports や src をインストールすることが出来るみたいです。
#### インストール前の最終確認
ここまで来ると、今までの設定内容の確認画面が出ます。
確認後、問題なければ次に進みましょう。
#### インストール完了
しばらく待つと「インストール完了」の画面が出ます。
お疲れ様でした!
### インストールログ
インストール後の /root/pc-sysinstall.log に
インストール時のログが記録されています。
これを見るとわかるのですが、パーティション関係の操作は
すべて gpart で出来るようになってるんですね。
Running: find-update-parts
mount: no : No such file or directory
kern.geom.debugflags: 0 -> 16
Deleting all gparts
Running: dd if=/dev/zero of=/dev/ad0 count=3000
3000+0 records in
3000+0 records out
1536000 bytes transferred in 0.267599 secs (5739929 bytes/sec)
Cleaning up ad0
Running: dd if=/dev/zero of=/dev/ad0 count=2048
2048+0 records in
2048+0 records out
1048576 bytes transferred in 0.150276 secs (6977659 bytes/sec)
Running gpart on ad0
Running: gpart create -s GPT ad0
ad0 created
Running: gpart add -b 34 -s 128 -t freebsd-boot ad0
ad0p1 added
Stamping boot sector on ad0
Running: gpart bootcode -b /boot/pmbr ad0
ad0 has bootcode
Running: gpart add -s 20475M -t freebsd-zfs ad0
ad0p2 added
Running: gpart bootcode -p /boot/gptzfsboot -i 1 ad0
NEWFS: /dev/ad0p2 – ZFS
Running: zpool create -m none -f tank0 raidz ad0p2 ad1 ad3
Running: zfs set atime=off tank0
Running: zfs set mountpoint=/mnt tank0
Running: zfs set atime=off tank0
zfs create -p tank0/usr
Running: zfs create -p tank0/usr
Running: zfs set mountpoint=/mnt/usr tank0/usr
Running: zfs set atime=off tank0/usr
zfs create -p tank0/var
Running: zfs create -p tank0/var
Running: zfs set mountpoint=/mnt/var tank0/var
Running: zfs set atime=off tank0/var
FOUND DVD: /dev/acd0
pc-sysinstall: Starting Extraction
pc-sysinstall: Extraction Finished
Running chroot command: /usr/bin/cap_mkdb /etc/login.conf
Setting em0 to DHCP on the system.
Setting hostname: freebsd-1529
Setting root password
Running chroot command: cat /.rootpw | pw usermod root -h 0
Running: rm /mnt/.rootpw
### 追記
FreeBSD Daily Topics で取り上げていただきました。ありがとうございます。
– [2010年11月17日 PC-BSD 8.1でフルZFSなFreeBSDをインストールする方法](http://gihyo.jp/admin/clip/01/fdt/201011/17)
諸々補足
– [PC-BSD 8.1 を使って ZFS boot な FreeBSD をインストールする 〜補足〜](http://lovepeers.org/2010/11/22/install_zfs-boot-enabled-freebsd_using_pcbsd_2/)