FreeBSD 9.0-RELEASEのインストール(zfs環境構築)
目標よりも遅れてしまいましたが,FreeBSD 9.0-Rへの移行を開始しました.
移行するにあたって,次の2つを目的としました.
bootをZFSにするかどうかは迷いましたが,すべてZFSで構築することにしています.
先達の報告を読むかぎり問題はなさそうです.
謝辞
分かりやすい手順を書いてくれていた,kinusatiさんとgkontosさんに感謝します.
このポストの後半はお2人の書かれた内容を併せた形になっています.
次の「参考資料」のリンク先も参照してください.
参考資料
- kinusatiさん
http://wiki.kinusati.net/index.php/FreeBSD:FreeBSD9.0(amd64)_on_ZFS
http://www.kinusati.net/2011/11/20/freebsd-9-0prerelease-on-zfs/
- gkontosさん
http://www.aisecure.net/2011/11/28/root-zfs-freebsd9/
- FreeBSD ハンドブック
環境
- PC:ThinkPad X60
- CPU:Core 2 Duo T7200 2.0[GHz]
- Memory:4[GiB]
- HDD:300[GB]
準備
バックアップ
既存のデータで必要なものはバックアップしておく.
ホームディレクトリのファイル以外では,以下をバックアップしておいた.
- /etc以下
- /boot/loader.conf
- pkg_infoの結果
- Xorgの設定ファイル(/usr/local/etc/hal/fdi/policy以下にある)
インストール
Shellに入るまで
ここからは,コマンドラインでの操作となる.
/tmpを書き込み可能にする
# umount -f /dev/md1 # mdmfs -s 512M md1 /tmp
デバイス名を調査
# dmesg | fgrep MB ada0: 150.000MB/s transfers (SATA 1.x, UDMA6, PIO 8192bytes) ada0: 305245MB (625142448 512 byte sectors: 16H 63S/T 16383C) da0: 40.000MB/s transfers da0: 15360MB (31457280 512 byte sectors: 255H 63S/T 1958C)
今回は,ada0が対象ディスク
パーティション作成
# gpart create -s gpt ada0 ada0 created # gpart add -b 34 -s 94 -t freebsd-boot ada0 ada0p1 added # gpart add -t freebsd-zfs -l disk0 ada0 ada0p2 added # gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0 bootcode written to ada0
poolの作成
# zpool create zroot /dev/gpt/disk0
bootfsの設定
# zpool set bootfs=zroot zroot # zfs set checksum=fletcher4 zroot # zfs set mountpoint=/mnt zroot
zpoolのエクスポートとインポート
# zpool export zroot # zpool import -o cachefile=/var/tmp/zpool.cache zroot
パーティション作成
# zfs create zroot/usr # zfs create zroot/usr/home # zfs create zroot/var # zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp # zfs create -o compression=lzjb -o setuid=off zroot/usr/ports # zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles # zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages # zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/usr/src # zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash # zfs create -o exec=off -o setuid=off zroot/var/db # zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg # zfs create -o exec=off -o setuid=off zroot/var/empty # zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log # zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail # zfs create -o exec=off -o setuid=off zroot/var/run # zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/tmp
SWAP領域の確保
# zfs create -V 4G zroot/swap # zfs set org.freebsd:swap=on zroot/swap # zfs set checksum=off zroot/swap
シンボリックリンク,stickyビットの設定
# chmod 1777 /mnt/tmp # cd /mnt ; ln -s usr/home home # chmod 1777 /mnt/var/tmp
FreeBSDを展開(インストール)
# sh # cd /usr/freebsd-dist # export DESTDIR=/mnt # for file in base.txz lib32.txz kernel.txz doc.txz ports.txz src.txz games.txz; # do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); done
zpool.cacheをコピー
# cp /var/tmp/zpool.cache /mnt/boot/zfs/zpool.cache
ZFSの有効化
# echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf # echo 'zfs_load="YES"' >> /mnt/boot/loader.conf # echo 'vfs.root.mountfrom="zfs:zroot"' >> /mnt/boot/loader.conf # touch /mnt/etc/fstab
アンマウントして,マウントポイントを設定
# zfs set readonly=on zroot/var/empty # zfs umount -af # zfs set mountpoint=legacy zroot # zfs set mountpoint=/tmp zroot/tmp # zfs set mountpoint=/usr zroot/usr # zfs set mountpoint=/var zroot/var
ホスト名,ネットワークインタフェース,キーマップを設定
# vi /etc/rc.conf hostname="hoge" ifconfig_em0="DHCP" keymap="jp.106"
完了
# sync;sync;sync # reboot
再起動してあとは環境構築