たまには技術ネタでも。
そろそろ以前買ったatomマシンにFreeBSDを入れることにした。で、FreeBSD8.0系からZFSが実験的レベルからプロダクションレベルに引き上げられたので、是非この先進的なファイルシステムを使ってみたいと思い、数日間寝る前に色々格闘した結果、案外簡単にOS立ち上げまで辿り着けたので、環境構築手順をメモっておく。
まぁ偉そうにいっても、ほとんどwiki.freebsd.org[1]に書かれている内容の真似事である。
ただ、記憶領域がSSDの40GBでそんなに余裕が無い為、swap領域は別パーティションで用意せずにzfsの機能を利用させてもらっている。
まず、公式からiso-imgのFreeBSD-8.1-RELEASE-i386-memstick.imgを取得し、USBメモリに移す。isoイメージの書き込みにはWin32DiskImagerってツールを使用した。
USBメモリからbootし、以下の手順で環境を構築。http://gist.github.com/615329
とりあえずここまでやれば
システムログイン画面までいける!いっつもsysinstallでやっていたから楽々だったけど手動インストールは結構めんどい。実際に何回かやり直しもしている。Welcome to FreeBSDの文字が表示されて嬉しく思うのは初インストール以来だろうか。
ちなみに貧弱なシェルで上記コマンドを打つのは結構な苦行だ。特にzfsファイルシステム作成のあたりとか泣きそうになる。実際に自分は一回他のwindowsマシンで上記コマンドをzfs_install_helper.shみたいな名前のシェルスクリプトに纏めてUSBメモリに書き写し、OSインストール中のマシンで以下のコマンドを実行し一気に作業を進めている。
mount_msdosfs /dev/da0s1 /mnt
sh /mnt/zfs_install_helper.sh
8.0の段階ではi386じゃメモリ不足によりZFS無理って評価が圧倒的に多かったので、メモリチューニング&カーネル再構築は必須かと思っていたが意外にも大丈夫だった。まぁメモリ絡みの設定はもう少しアプリ入れてからやってみることにしよう。
うーん、恥ずかしながら後半のexport LD_LIBRARY_PATH=/mnt2/lib
が何の為にやっているのか分からん...。システム環境変数なのでOSの挙動に影響しているのは分かったがzfs unmount -aが影響を受けるのだろうか...?
[2010/10/09]これでswap領域も共有されて...と思ったが、よくよく考えたら-V指定でサイズを指定しているので結局パーティション切った同じだ!...orz
echo 'cpufreq_load="YES"' >> /boot/loader.conf を削除。組み込まれているのでいちいち指定する必要はもう無い。http://gihyo.jp/admin/clip/01/fdt/200707/09
[参考]
[1]RootOnZFS/GPTZFSBoot/RAIDZ1 - FreeBSD Wiki
[2]ESXiのゲストOS FreeBSD 8.1 + ZFSの導入メモ [ESXi/FreeBSD](fkimura.com)
[3]~nabeken/diary/ : FreeBSD 8.1-RELEASEでZFS on ROOT
[4]On-line Manual of "gpart"