FreeBSDインストール

前項でファイルシステム構築済みであること。

# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
tank                     16.0G   897G    21K  legacy
tank/home                  21K   897G    21K  legacy
tank/ports                 63K   897G    21K  legacy
tank/ports/distfiles       21K   897G    21K  legacy
tank/ports/packages        21K   897G    21K  legacy
tank/src                   21K   897G    21K  legacy
tank/swap                  16G   913G    16K  -
zroot                     366K  46.8G    21K  legacy
zroot/system              210K  46.8G    21K  legacy
zroot/system/sysroot       21K  46.8G    21K  legacy
zroot/system/usr           21K  46.8G    21K  legacy
zroot/system/var          147K  46.8G    21K  legacy
zroot/system/var/crash     21K  46.8G    21K  legacy
zroot/system/var/db        42K  46.8G    21K  legacy
zroot/system/var/db/pkg    21K  46.8G    21K  legacy
zroot/system/var/empty     21K  46.8G    21K  legacy
zroot/system/var/mail      21K  46.8G    21K  legacy
zroot/system/var/run       21K  46.8G    21K  legacy
# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
zroot                    8.00G   905G    21K  legacy
zroot/home                 21K   905G    21K  legacy
zroot/ports                63K   905G    21K  legacy
zroot/ports/distfiles      21K   905G    21K  legacy
zroot/ports/packages       21K   905G    21K  legacy
zroot/src                  21K   905G    21K  legacy
zroot/swap                  8G   913G    16K  -
zroot/system              252K   905G    21K  legacy
zroot/system/sysroot       21K   905G    21K  legacy
zroot/system/usr           21K   905G    21K  legacy
zroot/system/var          189K   905G    21K  legacy
zroot/system/var/crash     21K   905G    21K  legacy
zroot/system/var/db        42K   905G    21K  legacy
zroot/system/var/db/pkg    21K   905G    21K  legacy
zroot/system/var/empty     21K   905G    21K  legacy
zroot/system/var/log       21K   905G    21K  legacy
zroot/system/var/mail      21K   905G    21K  legacy
zroot/system/var/run       21K   905G    21K  legacy
zroot/system/var/tmp       21K   905G    21K  legacy

インストール

Mount Point Settings

zfs領域をマウント
ここでは/tをインストールするファイルシステムのルートディレクトリとし、各zfs領域をマウントしていく。
# mkdir /t
# mount -t zfs zroot/system/sysroot /t
# cd /t
# ls
# mkdir /t/tmp
# chmod 1777 /t/tmp
# ls
tmp
# mkdir /t/usr
# mount -t zfs zroot/system/usr /t/usr
# ls
tmp     usr
# mkdir /t/usr/home
# mount -t zfs tank/home /t/usr/home
# ln -s /t/usr/home /t/home
# ls
home    tmp     usr
# mkdir /t/usr/ports
# mount -t zfs tank/ports /t/usr/ports
# mkdir /t/usr/ports/distfiles
# mount -t zfs tank/ports/distfiles /t/usr/ports/distfiles
# mkdir /t/usr/ports/packages
# mount -t zfs tank/ports/packages /t/usr/ports/packages
# mkdir /t/usr/src
# mount -t zfs tank/src /t/usr/src
# mkdir /t/var
# mount -t zfs zroot/system/var /t/var
# mkdir /t/var/crash
# mount -t zfs zroot/system/var/crash /t/var/crash
# mkdir /t/var/db
# mount -t zfs zroot/system/var/db /t/var/db
# mkdir /t/var/db/pkg
# mount -t zfs zroot/system/var/db/pkg /t/var/db/pkg
# mkdir /t/var/empty
# mount -t zfs zroot/system/var/empty /t/var/empty
# mkdir /t/var/mail
# mount -t zfs zroot/system/var/mail /t/var/mail
# mkdir /t/var/run
# mount -t zfs zroot/system/var/run /t/var/run
# mkdir /t/var/tmp
# mount -t zfs zroot/system/var/tmp /t/var/tmp
# chmod 1777 /t/var/tmp
# mkdir /t/var/log
# mkdir /t
# mount -t zfs zroot/system/sysroot /t
# cd /t
# ls
# mkdir /t/tmp
# chmod 1777 /t/tmp
# ls
tmp
# mkdir /t/usr
# mount -t zfs zroot/system/usr /t/usr
# ls
tmp     usr
# mkdir /t/usr/home
# mount -t zfs zroot/home /t/usr/home
# ln -s /t/usr/home /t/home
# ls
home    tmp     usr
# mkdir /t/usr/ports
# mount -t zfs zroot/ports /t/usr/ports
# mkdir /t/usr/ports/distfiles
# mount -t zfs zroot/ports/distfiles /t/usr/ports/distfiles
# mkdir /t/usr/ports/packages
# mount -t zfs zroot/ports/packages /t/usr/ports/packages
# mkdir /t/usr/src
# mount -t zfs zroot/src /t/usr/src
# mkdir /t/var
# mount -t zfs zroot/system/var /t/var
# mkdir /t/var/crash
# mount -t zfs zroot/system/var/crash /t/var/crash
# mkdir /t/var/db
# mount -t zfs zroot/system/var/db /t/var/db
# mkdir /t/var/db/pkg
# mount -t zfs zroot/system/var/db/pkg /t/var/db/pkg
# mkdir /t/var/empty
# mount -t zfs zroot/system/var/empty /t/var/empty
# mkdir /t/var/log
# mount -t zfs zroot/system/var/log /t/var/log
# mkdir /t/var/mail
# mount -t zfs zroot/system/var/mail /t/var/mail
# mkdir /t/var/run
# mount -t zfs zroot/system/var/run /t/var/run
# mkdir /t/var/tmp
# mount -t zfs zroot/system/var/tmp /t/var/tmp
# chmod 1777 /t/var/tmp

FreeBSD Install

インストール先ルートディレクトリを環境変数DESTDIRに設定
# cd /8.2-*
# setenv DESTDIR '/t'
# cd /8.2-*
# setenv DESTDIR '/t'
# env
USER=root
LOGNAME=root
HOME=/root
MAIL=/var/mail/root
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin
TERM=xterm
FTP_PASSIVE_MODE=YES
BLOCKSIZE=K
SHELL=/bin/csh
SSH_CLIENT=192.168.xxx.xxx 1461 22
SSH_CONNECTION=192.168.xxx.xxx 1461 192.168.xxx.xxx 22
SSH_TTY=/dev/pts/0
HOSTTYPE=FreeBSD
VENDOR=unknown
OSTYPE=FreeBSD
MACHTYPE=unknown
SHLVL=1
PWD=/8.2-RELEASE
GROUP=wheel
HOST=
REMOTEHOST=192.168.xxx.xxx
EDITOR=vi
PAGER=more
DESTDIR=/t
各オプションをインストール
多分、DistributionでDeveloperを選んだ場合と同等かプラスαぐらい。
# cd base/
# ./install.sh
You are about to extract the base distribution into /t - are you SURE
you want to do this over your installed system (y/n)? y
# cd ../catpages/
# ./install.sh
# cd ../dict/
# ./install.sh
# cd ../doc/
# ./install.sh
You are about to extract the doc distribution into /t - are you SURE
you want to do this over your installed system (y/n)? y
# cd ../info/
# ./install.sh
# cd ../lib32/
# ./install.sh
# cd ../manpages/
# ./install.sh
# cd ../ports/
# ./install.sh
Extracting ports tarball into /t/usr
# cd ../proflibs/
# ./install.sh
# cd ../src/
# ./install.sh all
Extracting sources into /t/usr/src...
  Extracting source component: base
  Extracting source component: bin
  Extracting source component: cddl
  Extracting source component: contrib
  Extracting source component: crypto
  Extracting source component: etc
  Extracting source component: games
  Extracting source component: gnu
  Extracting source component: include
  Extracting source component: krb5
  Extracting source component: lib
  Extracting source component: libexec
  Extracting source component: release
  Extracting source component: rescue
  Extracting source component: sbin
  Extracting source component: secure
  Extracting source component: share
  Extracting source component: sys
  Extracting source component: tools
  Extracting source component: ubin
  Extracting source component: usbin
Done extracting sources.
# cd ../kernels/
# ./install.sh generic
# cd /t/boot/
# cp -Rlp GENERIC/* kernel/
# ls
base            catpages        dict            doc             games           info            kernels         lib32           manpages        ports           proflibs        src
# cd base
# ./install.sh
You are about to extract the base distribution into /t - are you SURE
you want to do this over your installed system (y/n)? y
# cd ../catpages/
# ./install.sh
# cd ../dict/
# ./install.sh
# cd ../doc/
# ./install.sh
You are about to extract the doc distribution into /t - are you SURE
you want to do this over your installed system (y/n)? y
# cd ../info/
# ./install.sh
# cd ../lib32/
# ./install.sh
# cd ../manpages/
# ./install.sh
# cd ../ports/
# ./install.sh
Extracting ports tarball into /t/usr
# cd ../proflibs/
# ./install.sh
# cd ../src/
# ./install.sh all
Extracting sources into /t/usr/src...
  Extracting source component: base
  Extracting source component: bin
  Extracting source component: cddl
  Extracting source component: contrib
  Extracting source component: crypto
  Extracting source component: etc
  Extracting source component: games
  Extracting source component: gnu
  Extracting source component: include
  Extracting source component: krb5
  Extracting source component: lib
  Extracting source component: libexec
  Extracting source component: release
  Extracting source component: rescue
  Extracting source component: sbin
  Extracting source component: secure
  Extracting source component: share
  Extracting source component: sys
  Extracting source component: tools
  Extracting source component: ubin
  Extracting source component: usbin
Done extracting sources.
# cd ../kernels/
# ./install.sh generic
# cd /t/boot/
# cp -Rlp GENERIC/* kernel/
/var/emptyをReadOnlyに設定
baseをインストールに設定すると、baseインストール時にコケるため、このタイミングで設定する。
# zfs set readonly=on zroot/system/var/empty
# zfs set readonly=on zroot/system/var/empty

事前設定

予め、最低限の設定を施す。

インストール先にチェンジルート
# chroot /t
# chroot /t
# vi /etc/fstab
以下を記述
# Device                Mountpoint      FStype  Options         Dump    Pass#
zroot/system/usr        /usr            zfs     rw              0       0
zroot/system/var        /var            zfs     rw              0       0
zroot/system/var/crash  /var/crash      zfs     rw              0       0
zroot/system/var/db     /var/db         zfs     rw              0       0
zroot/system/var/db/pkg /var/db/pkg     zfs     rw              0       0
zroot/system/var/empty  /var/empty      zfs     ro              0       0
zroot/system/var/mail   /var/mail       zfs     rw              0       0
zroot/system/var/run    /var/run        zfs     rw              0       0
zroot/system/var/tmp    /var/tmp        zfs     rw              0       0
tmpfs                   /tmp       tmpfs rw,mode=1777,size=1073741824 0 0
tmpfs                   /var/log   tmpfs rw,size=1073741824     0       0
#tmpfs                   /ports/tmp tmpfs rw,size=1073741824     0       0
tank/ports             /usr/ports              zfs     rw      0       0
tank/ports/distfiles   /usr/ports/distfiles    zfs     rw      0       0
tank/ports/packages    /usr/ports/packages     zfs     rw      0       0
tank/src               /usr/src                zfs     rw      0       0
# Device                Mountpoint      FStype  Options         Dump    Pass#
zroot/system/usr        /usr            zfs     rw              0       0
zroot/system/var        /var            zfs     rw              0       0
zroot/system/var/crash  /var/crash      zfs     rw              0       0
zroot/system/var/db     /var/db         zfs     rw              0       0
zroot/system/var/db/pkg /var/db/pkg     zfs     rw              0       0
zroot/system/var/empty  /var/empty      zfs     ro              0       0
zroot/system/var/log    /var/log        zfs     rw              0       0
zroot/system/var/mail   /var/mail       zfs     rw              0       0
zroot/system/var/run    /var/run        zfs     rw              0       0
zroot/system/var/tmp    /var/tmp        zfs     rw              0       0
tmpfs                   /tmp       tmpfs rw,mode=1777,size=1073741824 0 0
#tmpfs                   /ports/tmp tmpfs rw,size=1073741824     0       0
zroot/ports             /usr/ports              zfs     rw      0       0
zroot/ports/distfiles   /usr/ports/distfiles    zfs     rw      0       0
zroot/ports/packages    /usr/ports/packages     zfs     rw      0       0
zroot/src               /usr/src                zfs     rw      0       0
参考にしたサイトとは違って、swap領域は自動マウントされる模様。バージョン差?
# vi /etc/rc.conf
以下を記述
zfs_enable="YES"
ifconfig_re0="inet 192.168.xxx.xxx  netmask 255.255.255.0"
defaultrouter="192.168.xxx.xxx"
hostname="example.local"
keymap="jp.106"
powerd_enable="YES"
powerd_flags="-a hiadaptive -b minimum -n hiadaptive"
dumpdev="NO"
sshd_enable="YES"
zfs_enable="YES"
ifconfig_rl0="inet 192.168.xxx.xxx  netmask 255.255.255.0"
defaultrouter="192.168.xxx.xxx"
hostname="example.local"
keymap="jp.106"
powerd_enable="YES"
powerd_flags="-a hiadaptive -b minimum -n hiadaptive"
dumpdev="NO"
sshd_enable="YES"
# vi /boot/loader.conf
以下を記述
ahci_load="YES"
zfs_load="YES"
vfs.root.mountfrom="zfs:zroot/system/sysroot"
ahci_load="YES"
zfs_load="YES"
vfs.root.mountfrom="zfs:zroot/system/sysroot"

# For ZFS
vm.kmem_size="1536M"
vm.kmem_size_max="15360M"
vfs.zfs.arc_max="3584M"
# vi /etc/ssh/sshd_config
PermitRootLogin yes
PermitRootLogin yes

passwd, tzsetupでrootのパスワード・タイムゾーンの設定も忘れずに!

sendmailのエラー防止
# cd /etc/mail && make aliases
chroot環境をexit
# exit

Copy zpool.cache

ブートローダ用にZFSの情報をコピー
# cp /boot/zfs/zpool.cache /t/boot/zfs/zpool.cache
# cp /boot/zfs/zpool.cache /t/boot/zfs/zpool.cache
参考にしたサイトだと、zfs exportとzfs importってやってるけど、exportとimport自体無くなってるから、やらなくていいっぽい。

Home Directory

ユーザ毎にストレージプールを作成する場合、自動マウントを有効化しておくとZFSの恩恵が受けられる
# zfs set mountpoint=/usr/home tank/home

Done.


参考