文書の過去の版を表示しています。
ProLiant MicroServer高機能NAS化計画(OSインストール編)
sshで入れるFixit環境の作成
RAMディスクを作ってシステムをコピー
# mdconfig -a -t malloc -s 2048M -u 10 # newfs -U /dev/md10 # mkdir /mdisk # mount /dev/md10 /mdisk # cp -pR /dist /mdisk
umount /dev/md1 mdmfs -s 2048m md1 /tmp mkdir /tmp/dist find . ! -regex '\./tmp' | cpio -pd /tmp/dist
読み書き可能なFixit環境へ入る
# mount -t devfs devfs /mdisk/dist/dev # chroot /mdisk/dist
ネットワークの設定
# ifconfig bge0 192.168.65.1 netmask 255.255.255.0
sshdの起動
# echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config # echo 'sshd_enable="YES"' >> /etc/rc.conf # /etc/rc.d/sshd start
rootパスワードの設定
# passwd Changing local password for root New Password: ******** Retype New Password: ********
ZFSファイルシステムの作成
パーティションテーブル初期化
本来はgpart destroyで消すべきだが、面倒なので…
# dd if=/dev/zero of=/dev/ada0 bs=1m count=1 # dd if=/dev/zero of=/dev/ada1 bs=1m count=1
GPTを作成
# gpart create -s gpt ada0 # gpart create -s gpt ada1
パーティション追加
freebsd-zfs領域をHDD目一杯まで使ってしまうと、HDD交換時に微妙な容量の差でRAIDが組めない事態が起こりうるので、最後の150Mは保険として未使用領域にする。
# gpart add -b 40 -s 64k -t freebsd-boot ada0 # AFT対策としてセクタ40から使う # gpart add -b 40 -s 64k -t freebsd-boot ada1 # gpart add -s 10g -t freebsd-swap -l swap0 ada0 # gpart add -s 10g -t freebsd-swap -l swap1 ada1 # gpart add -s 1443972647 -t freebsd-zfs ada0 # gpart add -s 1443972647 -t freebsd-zfs ada1 # gpart show => 34 1339253 da0 GPT (3.7G) [CORRUPT] 34 128 1 freebsd-boot (64k) 162 1339125 2 freebsd-ufs (653M) => 34 1465149101 ada0 GPT (698G) 34 6 - free - (3.0k) 40 128 1 freebsd-boot (64k) 168 20971520 2 freebsd-swap (10G) 20971688 1443972640 3 freebsd-zfs (688G) 1464944328 204807 - free - (100M) => 34 1465149101 ada1 GPT (698G) 34 6 - free - (3.0k) 40 128 1 freebsd-boot (64k) 168 20971520 2 freebsd-swap (10G) 20971688 1443972640 3 freebsd-zfs (688G) 1464944328 204807 - free - (100M)
ブートコード書き込み
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0 # gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1
gnop create -S 4096 /dev/ada0p3 gnop create -S 4096 /dev/ada1p3
ZFSプールの作成
# zpool create zroot mirror /dev/ada0p3.nop /dev/ada1p3.nop
# zdb zroot:
version: 28
name: 'zroot'
state: 0
txg: 4
pool_guid: 3928702653704672869
hostname: ''
vdev_children: 1
vdev_tree:
type: 'root'
id: 0
guid: 3928702653704672869
create_txg: 4
children[0]:
type: 'mirror'
id: 0
guid: 10151570094065059124
metaslab_array: 30
metaslab_shift: 32
ashift: 12
asize: 739309256704
is_log: 0
create_txg: 4
children[0]:
type: 'disk'
id: 0
guid: 4580562153177664810
path: '/dev/gpt/boot0a.nop'
phys_path: '/dev/gpt/boot0a.nop'
whole_disk: 1
create_txg: 4
children[1]:
type: 'disk'
id: 1
guid: 4968329952742307772
path: '/dev/gpt/boot0b.nop'
phys_path: '/dev/gpt/boot0b.nop'
whole_disk: 1
create_txg: 4
zpool export zroot gnop destroy /dev/ada0p3.nop gnop destroy /dev/ada1p3.nop zpool import zroot
ファイルシステムの作成と色々設定
zfs set checksum=fletcher4 zroot zfs set compression=on zroot zfs create -o normalization=formC zroot/ROOT zfs create -o exec=on -o setuid=off zroot/ROOT/tmp chmod 1777 /zroot/ROOT/tmp zfs create zroot/ROOT/usr zfs create -o compression=gzip-9 zroot/ROOT/usr/include zfs create -o compression=gzip-9 zroot/ROOT/usr/src zfs create zroot/ROOT/usr/home cd /zroot/ROOT; ln -s /usr/home home zfs create -o compression=gzip-9 -o setuid=off zroot/ROOT/usr/ports zfs create -o compression=off -o exec=off -o setuid=off zroot/ROOT/usr/ports/distfiles zfs create -o compression=off -o exec=off -o setuid=off zroot/ROOT/usr/ports/packages zfs create zroot/ROOT/var zfs create -o exec=off -o setuid=off -o compression=gzip-9 zroot/ROOT/var/crash zfs create -o exec=off -o setuid=off zroot/ROOT/var/db zfs create -o exec=on -o setuid=off -o compression=gzip-9 zroot/ROOT/var/db/pkg zfs create -o exec=off -o setuid=off zroot/ROOT/var/empty zfs create -o exec=off -o setuid=off -o compression=gzip-9 zroot/ROOT/var/log zfs create -o exec=off -o setuid=off -o compression=gzip-9 zroot/ROOT/var/mail zfs create -o exec=off -o setuid=off zroot/ROOT/var/run zfs create -o exec=on -o setuid=off -o compression=gzip-9 zroot/ROOT/var/tmp chmod 1777 /zroot/ROOT/var/tmp zpool set bootfs=zroot/ROOT zroot
OSのインストール
# sh # cd /usr/freebsd-dist/ # export DESTDIR=/zroot/ROOT # for file in base.txz lib32.txz kernel.txz doc.txz ports.txz src.txz games.txz ; > do (cat $file | tar --unlink -xpvJf - -C ${DESTDIR:-/}); done # zfs set readonly=on zroot/ROOT/var/empty
chrootして初期設定
# mount -t devfs devfs /zroot/ROOT/dev # chroot /zroot/ROOT # /usr/sbin/sysinstall
Configure
Root Password
NetworkingInterfacesTime Zone
/boot/loader.confの設定
# cat << EOF > /boot/loader.conf opensolaris_load="YES" zfs_load="YES" vfs.root.mountfrom="zfs:zroot/sys" cpufreq_load="YES" vfs.zfs.txg.timeout="3" kern.maxusers=512 vm.kmem_size="4G" vm.kmem_size_max="6G" vfs.zfs.arc_min="512M" vfs.zfs.arc_max="4G" EOF
/etc/rc.confの設定
# cat << EOF >> /etc/rc.conf zfs_enable="YES" powerd_enable="YES" powerd_flags="-a adp -n adp" cpufreq_load="YES" sshd_enable="YES" EOF
swapの設定
# cat << EOF > /etc/fstab #Device Mountpoint FStype Options Dump Pass# /dev/gpt/swap0 none swap sw 0 0 /dev/gpt/swap1 none swap sw 0 0 EOF
メールのエイリアスの生成
# cd /etc/mail # make aliases
chroot環境から抜ける
# exit # umount /zroot/ROOT/dev
zpool.cacheの更新
# cd / # zpool export zroot && zpool import zroot # cp /boot/zfs/zpool.cache /zroot/ROOT/boot/zfs/
マウントポイントの設定
# export LD_LIBRARY_PATH=/lib # zfs unmount -a # zfs set mountpoint=legacy zroot/ROOT # zfs set mountpoint=/tmp zroot/ROOT/tmp # zfs set mountpoint=/usr zroot/ROOT/usr # zfs set mountpoint=/var zroot/ROOT/var
後始末
# exit # shから抜ける # exit # sshから抜ける
STABLEに更新
8.2-RELEASEでAHCIを有効にすると、Marvellのチップを積んだSATAカードからのブートが「ROOT MOUNT ERROR」で失敗するため、STABLEに更新する(参考:kern/153665: [ahci] AHCI module unconsistent behaviour with SATA3 disk and SATA3 enabled controller)。 この情報を見つけるまで、設定を変えたり何度も再インストールしたりと凄く苦労した・・・。
8.3-RELEASE以降では修正されると思われる。
cp /usr/share/examples/cvsup/stable-supfile /usr/local/etc/cvsup/ vi /usr/local/etc/cvsup/stable-supfile /usr/bin/csup -g -L 2 /usr/local/etc/cvsup/stable-supfile