freebsd:001_020_proliant_microserver高機能nas化計画_osインストール編

文書の過去の版を表示しています。


ProLiant MicroServer高機能NAS化計画(OSインストール編)

RAMディスクを作ってシステムをコピー

# mdconfig -a -t malloc -s 2048M -u 10
# newfs -U /dev/md10
# mkdir /mdisk
# mount /dev/md10 /mdisk
# cp -pR /dist /mdisk

読み書き可能な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: ********

パーティションテーブル初期化

本来は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 1443870247 -t freebsd-zfs -l boot0a ada0
# gpart add -s 1443870247 -t freebsd-zfs -l boot0b ada1
# gpart show
=>        34  1465149101  ada0  GPT  (699G)
          34           6        - free -  (3.0K)
          40         128     1  freebsd-boot  (64K)
         168    20971520     2  freebsd-swap  (10G)
    20971688  1443870247     3  freebsd-zfs  (688G)
  1464841935      307200        - free -  (150M)

=>        34  1465149101  ada1  GPT  (699G)
          34           6        - free -  (3.0K)
          40         128     1  freebsd-boot  (64K)
         168    20971520     2  freebsd-swap  (10G)
    20971688  1443870247     3  freebsd-zfs  (688G)
  1464841935      307200        - free -  (150M)

ブートコード書き込み

# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada1

ZFSプールの作成

# zpool create zroot mirror /dev/gpt/boot0a /dev/gpt/boot0b
# zpool set bootfs=zroot zroot

ファイルシステムの作成と色々設定

# zfs set checksum=fletcher4 zroot
# zfs set compression=on zroot
# zfs create -o exec=on -o setuid=off zroot/tmp
# chmod 1777 /zroot/tmp

# zfs create zroot/usr
# zfs create -o compression=gzip-9 zroot/usr/include
# zfs create -o compression=gzip-9 zroot/usr/src
# zfs create zroot/usr/home

# cd /zroot; ln -s /usr/home home
# zfs create -o compression=gzip-9 -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 zroot/var
# zfs create -o exec=off -o setuid=off zroot/var/crash
# zfs create -o exec=off -o setuid=off zroot/var/db
# zfs create -o exec=on -o setuid=off zroot/var/db/pkg
# zfs create -o exec=off -o setuid=off zroot/var/empty
# zfs create -o exec=off -o setuid=off zroot/var/log
# zfs create -o exec=off -o setuid=off zroot/var/mail
# zfs create -o exec=off -o setuid=off zroot/var/run
# zfs create -o exec=on -o setuid=off zroot/var/tmp
# chmod 1777 /zroot/var/tmp
# cd /
# sh
# cd /8.2-RELEASE
# export DESTDIR=/zroot
# for dir in base catpages dict doc games info lib32 manpages ports; do (cd $dir ; ./install.sh) ; done
You are about to extract the base distribution into /zroot - are you SURE
you want to do this over your installed system (y/n)? y
You are about to extract the doc distribution into /zroot - are you SURE
you want to do this over your installed system (y/n)? y
Extracting ports tarball into /usr

# cd src ; ./install.sh all
# cd ../kernels ; ./install.sh generic
# cd /zroot/boot ; cp -Rlp GENERIC/* /zroot/boot/kernel/

# zfs set readonly=on zroot/var/empty
# mount -t devfs devfs /zroot/dev
# chroot /zroot
# /usr/sbin/sysinstall

Configure

Root Password
Networking
Time Zone

/boot/loader.confの設定

# cat << EOF > /boot/loader.conf
ahci_load="NO"
opensolaris_load="YES"
zfs_load="YES"
vfs.root.mountfrom="zfs:zroot"
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

メールのエイリアスの生成

# cd /etc/mail
# make aliases

chroot環境から抜ける

# exit
# umount /zroot/dev
# cd /
# zpool export zroot && zpool import zroot
# cp /boot/zfs/zpool.cache /zroot/boot/zfs/
# cat << EOF > /zroot/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
# export LD_LIBRARY_PATH=/lib
# zfs unmount -a
# zfs set mountpoint=legacy zroot
# zfs set mountpoint=/tmp zroot/tmp
# zfs set mountpoint=/usr zroot/usr
# zfs set mountpoint=/var zroot/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

参考サイト

  • freebsd/001_020_proliant_microserver高機能nas化計画_osインストール編.1316358835.txt.gz
  • 最終更新: 2011-09-19 00:13
  • by Decomo