FreeBSD 8.0でZFS
ZFSを使ってみたいのでFreeBSD 8.0をインストールしてみる。
現在のインストーラだとZFSに対応していないので
RootOnZFS/GPTZFSBoot - FreeBSD Wiki
を、参考にして FreeBSD Root on ZFS using GPT を構築する。
準備
8.0-RELEASE-amd64-memstick.imgだと Live FS とインストールデータ両方入っているので、これを使う。
http://ftp.jaist.ac.jp/pub/FreeBSD/ISO-IMAGES-amd64/8.0/
DDでUSBメモリに書き込む(Ubuntuを使った)
$ sudo dd if=8.0-RELEASE-amd64-memstick.img of=/dev/sdb bs=10240 conv=sync
sysinstall
USBから起動してsysinstallからfixitを。(/dev/da0 になるように 1番ポートにつけること)
Country Selection -> 110 Japan System Console Keymap -> USA CapsLock->Ctrl Fixit -> 3 USB
Fixit
SSDがつながってる ad4 にインストール
GPT作成
Fixit# gpart create -s gpt ad4
Fixit# gpart add -s 64K -t freebsd-boot ad4 Fixit# gpart add -t freebsd-zfs -l disk0 ad4
ブートコードをインストール
Fixit# gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad4
ZFSモジュールロード
Fixit# kldload /mnt2/boot/kernel/opensolaris.ko Fixit# kldload /mnt2/boot/kernel/zfs.ko
ZFSプール作成
Fixit# mkdir /boot/zfs Fixit# zpool create zroot /dev/gpt/disk0 Fixit# zpool set bootfs=zroot zroot
ZFSファイルシステム構造作成
(追記) HDDに余裕があれば、こんなに細かくやらなくてもいいと思う。あとはどの単位でスナップショットを取りたいかとか
Fixit# zfs set checksum=fletcher4 zroot Fixit# zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp Fixit# chmod 1777 /zroot/tmp Fixit# zfs create zroot/usr Fixit# zfs create zroot/usr/home Fixit# cd zroot ; ln -s /usr/home home Fixit# zfs create -o compression=lzjb -o setuid=off zroot/usr/ports Fixit# zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles Fixit# zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages Fixit# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/usr/src Fixit# zfs create zroot/var Fixit# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash Fixit# zfs create -o exec=off -o setuid=off zroot/var/db Fixit# zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg Fixit# zfs create -o exec=off -o setuid=off zroot/var/empty Fixit# zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log Fixit# zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail Fixit# zfs create -o exec=off -o setuid=off zroot/var/run Fixit# zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/tmp Fixit# chmod 1777 /zroot/var/tmp
(追記 2010.3.5 細かく分割しない場合) Fixit# zfs set checksum=fletcher4 zroot Fixit# mkdir zroot/tmp Fixit# mkdir zroot/usr Fixit# mkdir zroot/usr/home Fixit# mkdir zroot/var Fixit# mkdir zroot/var/tmp Fixit# chmod 1777 /zroot/tmp Fixit# chmod 1777 /zroot/var/tmp Fixit# cd zroot ; ln -s /usr/home home
FreeBSDインストール
Fixit# cd /dist/8.0-RELEASE Fixit# export DESTDIR=/zroot Fixit# for dir in base catpages dict doc games info lib32 manpages ports; do (cd $dir ; ./install.sh) ; done Fixit# cd src ; ./install.sh all Fixit# cd ../kernels ; ./install.sh generic Fixit# cd /zroot/boot ; cp -Rlp GENERIC/* /zroot/boot/kernel/
/var/empty readonly
Fixit# zfs set readonly=on zroot/var/empty (追記 2010.3.5 細かく分割しなかった場合は無し)
Fixit# chroot /zroot
/etc/rc.conf作成
Fixit# echo 'zfs_enable="YES"' > /etc/rc.conf
/boot/loader.conf作成
Fixit# echo 'zfs_load="YES"' > /boot/loader.conf Fixit# echo 'vfs.root.mountfrom="zfs:zroot"' >> /boot/loader.conf
ZFSインストール
Fixit# echo 'LOADER_ZFS_SUPPORT=YES' > /etc/src.conf Fixit# mount -t devfs devfs /dev Fixit# export DESTDIR="" Fixit# cd /usr/src/sys/boot/ Fixit# make obj Fixit# make depend Fixit# make Fixit# cd i386/loader Fixit# make install
rootパスワード設定
Fixit# passwd
タイムゾーン設定
Fixit# tzsetup
/etc/mail/aliases.db作成
Fixit# cd /etc/mail Fixit# make aliases
chroot抜ける
Fixit# umount /dev Fixit# exit
zpool.cacheインストール
Fixit# cp /boot/zfs/zpool.cache /zroot/boot/zfs/zpool.cache
/etc/fstab作成
Fixit# touch /zroot/etc/fstab
ライブラリパス
Fixit# export LD_LIBRARY_PATH=/mnt2/lib
アンマウントZFS
Fixit# cd / Fixit# zfs unmount -a
マウントポイント設定
Fixit# zfs set mountpoint=legacy zroot Fixit# zfs set mountpoint=/tmp zroot/tmp Fixit# zfs set mountpoint=/usr zroot/usr Fixit# zfs set mountpoint=/var zroot/var
(追記 2010.3.5 細かく分割しなかった場合) Fixit# zfs set mountpoint=legacy zroot
Fixit終了
Fixit# exit
sysinstall終了
Please choose a fixit option -> X Exit sysinstall Main Menu -> X Exit Install