色々第二弾
せんちゃん: Linux都会を出て、BSD村に戻った漢がいたんですよ〜 小野: なぁ〜にぃ〜!? やっちまったなぁ〜! せんちゃん: 漢は黙って 小野: ZFSぅ せんちゃん: 漢は黙って 小野: ZFSぅ せんちゃん: あらら〜 experimental feature かよ〜 小野: 次!インストール!
ごめんなさい。クールポコさん。ファンです。
ということで、まずはインストール。ZFS boot はまだ難しいようですので、ZFS root で参ります。下記のサイトを参考とさせていただきました。
ちなみに、1. に準じた私の前提は下記の通りです。ちなみに、機体は ML115 G1 です。
- ハードディスクは 2台。
- 1台目
- ad4s1a -> / (temporary installed), /boot (finished)
- ad4s1d -> ZFS pool
- 2台目
- ad6 -> /home
- 1台目
- FreeBSD を Minimal でインストール
- Express を選択
- ad4 -> Use Entire Disk
- ad4s1a -> /, 2048M, UFS2, Y(SoftUpdates)
- ad4s1d -> /zfs などで作成後、M でマウントポイントを削除, 容量は残りすべて
- Distributions -> Minimal
Minimal インストール後は、Single User Mode で再起動しての作業となる訳ですが、さすがに sh ですと、かなりキツいので、一連の手順をスクリプト化しておくと、とても楽です。
FreeBSD From Scratch の stage script ほどの美しさはありませんが、実際に使用しているモノを掲載させていただきます。私はこれを USB メモリに収納して実行しています。
これで、ZFS root は完成しました。後は、swap の ZFS 化と、もろもろの設定ですね。
(続く?)
#!/bin/sh -x # zfs.sh enterANS() { echo 'Please enter yes(enter) or no(no).' read ans if [ "${ans}" = "no" ]; then echo 'Stopped this script!' exit 0 fi } rcsDO() { rcsdiff $1 | less ci -l -m"$2" $1 } ## Initialize ## # to set basic information of your machine, for example "Drive Letter", # sourced by CPU name. cpu_name=`dmesg|egrep -i 'CPU:'` # Please change "Opteron or Pentium" to CPU name of your machine, # and set "tank" to Drive Letter of your machine. case ${cpu_name} in *Opteron*) server='opteron' tank='/dev/ad4s1d' ;; *Pentium*) tank='/dev/ad4s1d' ;; *) tank='/dev/ad8s1d' esac ## Boot single user mode, type below and do. ## # mount -w / # mkdir -p ${path} # that included this script. # mount /dev/da0s1d ${path} # sh -x ${path}/zfs.sh zpool create tank ${tank} if [ "${server}" ]; then zpool create datatank /dev/ad6 # for second drive. fi enterANS zfs set mountpoint=none tank if [ "${server}" ]; then zfs set mountpoint=none datatank # for second drive. fi zfs create tank/bsdroot zfs create tank/home zfs create tank/usr zfs create tank/var if [ "${server}" ]; then zfs create datatank/tank1 # for second drive. zfs create datatank/tank2 # for second drive. fi zfs set mountpoint=/tank tank/bsdroot zfs set mountpoint=/tank/home tank/home zfs set mountpoint=/tank/usr tank/usr zfs set mountpoint=/tank/var tank/var df -h zfs list ci -l /etc/rc.conf echo 'zfs_enable="YES"' >> /etc/rc.conf rcsDO /etc/rc.conf 'added zfs.' find -x / | cpio -pmd /tank rm -rf /tank/boot mkdir /tank/bootdir cd /tank ln -s bootdir/boot boot ci -l /boot/loader.conf echo 'zfs_load="YES"' >> /boot/loader.conf echo 'vfs.root.mountfrom="zfs:tank/bsdroot"' >> /boot/loader.conf echo '' >> /boot/loader.conf echo 'tmpfs_load="YES"' >> /boot/loader.conf # not required, if you want. rcsDO /boot/loader.conf 'added zfs and tmpfs.' ci -l /tank/etc/fstab vi /tank/etc/fstab # Please change "/" to "/bootdir". echo '' >> /tank/etc/fstab # tmpfs is not required, if you want. echo 'tmpfs /tmp tmpfs rw,mode=1777 0 0' >> /tank/etc/fstab # echo 'tmpfs /var/tmp tmpfs rw,mode=1777 0 0' >> /tank/etc/fstab rcsDO /tank/etc/fstab 'modified ad4s1a or ad8s1a and added tmpfs.' zfs set mountpoint=/home tank/home zfs set mountpoint=/usr tank/usr zfs set mountpoint=/var tank/var cd / zfs set mountpoint=legacy tank/bsdroot echo "Congratulations. your ZFS settings was done.\n\ Please type below, and reboot your machine.\n\ # umount path # that included this script.\n\ # reboot" exit 0