Fedora Linuxを入れているPCをFreeBSDに変えたくなってごっそり入れ直してみた。そのときのメモ。
システム用のドライブ (ada0: SSD)とデータ用のドライブ (ada1: HDD) を別のzfsプールにする。
GPTパーティションとブートデバイスの設定
GPTとしてパーティションテーブル作成
元からGPTにはなっていたが念の為一度削除してから作成する。
gpart destroy -F ada0 gpart create -s gpt ada0 gpart destroy -F ada1 gpart create -s gpt ada1
ブート用パーティションの作成
UEFIとlegacy bootでやり方が違う。両方設定してもいいかもしれないが、今回はUEFIだけにした。
UEFIの場合
自動設定にするとサイトに書かれている内容と違う設定になっていたので、自動設定による設定に合わせる。
パーティションを作る。
gpart add -a 4k -s 260m -t efi -l efiboot0 ada0
FATでフォーマットし、ブートローダを配置する。
まずここに書いてあるとおりにする。
newfs_msdos -F 32 -c 1 /dev/ada0p1 mount -t msdosfs -o longnames /dev/ada0p1 /mnt mkdir -p /mnt/EFI/BOOT cp /boot/loader.efi /mnt/EFI/BOOT/BOOTX64.efi
自動設定にすると以下のファイルが追加されていた。ものは同じ。
mkdir /mnt/EFI/freebsd cp /boot/loader.efi /mnt/EFI/freebsd/
これだけだとUEFIがブートローダを見つけてくれなかったので下記を追加で設定。
efibootmgr -a -c -l /mnt/EFI/freebsd/loader.efi -L 'FreeBSD UEFI'
アンマウントする (/mntはインストール用に後で使う)
umount /mnt
legacy bootの場合
MBR bootの場合はこちら。2つ目のコマンドはPMBRにアクティブフラグを立てる。これがないと起動しないシステムが過去にあったので念の為。
gpart add -a 4k -s 512k -t freebsd-boot -l boot0 ada0 gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0 gpart set -a active ada0
FreeBSDパーティションの作成
パーティション作成
1MBにそろえてパーティションを作成する。
SWAPは最初のディスク(ada0)にのみ作成
1台目
gpart add -a 1m -s 16G -t freebsd-swap -l swap0 ada0 gpart add -a 1m -t freebsd-zfs -l root0 ada0
2台目
gpart add -a 1m -t freebsd-zfs -l data1 ada1
zfsの事前準備
4kセクタ対応はgnopを作る方法ではなく、sysctlにashiftを設定する方法に変更。
kldload zfs sysctl vfs.zfs.min_auto_ashift=12
システム用パーティション作成
システム用プール (rpool) の作成。1つめのpoolはcacheファイルはいらない。
※長いけど1行で入力する。
zpool create -o altroot=/mnt -O compression=lz4 -O checksum=fletcher4 -O atime=off -m none rpool /dev/gpt/root0
各ファイルシステムの作成
zfs create -o mountpoint=none rpool/ROOT zfs create -o mountpoint=/ rpool/ROOT/default zfs create -o exec=on -o setuid=off -o mountpoint=/tmp rpool/tmp zfs create -o canmount=off -o mountpoint=/usr rpool/usr zfs create rpool/usr/src zfs create -o setuid=off rpool/usr/ports zfs create -o canmount=off -o mountpoint=/var rpool/var zfs create -o exec=off -o setuid=off rpool/var/audit zfs create -o exec=off -o setuid=off rpool/var/crash zfs create -o exec=off -o setuid=off rpool/var/log zfs create -o atime=on -o exec=off -o setuid=off rpool/var/mail zfs create -o exec=on -o setuid=off rpool/var/tmp chmod 1777 /mnt/tmp chmod 1777 /mnt/var/tmp zpool set bootfs=rpool/ROOT/default rpool
データ用パーティション作成
データ用プール (tank) の作成。cacheファイルが必要なのでこのタイミングで作成する。
※長いけど1行で入力する。
zpool create -o altroot=/mnt -o cachefile=/mnt/tmp/tank.cache -O compression=lz4 -O checksum=fletcher4 -O atime=off -m none tank /dev/gpt/data1
各ファイルシステムを作成。homeはユーザデータ用、exportはsamba等での共有用。
zfs create -o mountpoint=/home tank/home zfs create -o exec=off -o setuid=off -o mountpoint=/export tank/export
インストール作業
exitでshellから抜けて、インストール (ファイルの展開) をする。
exit
最後の段階でインストール後の設定用shellに入るか聞かれるのでYESでshellに入る。
chroot で /mnt が / になっているので注意。
zfs周りの設定
echo 'zfs_enable="YES"' >> /etc/rc.conf mv /tmp/tank.cache /boot/zfs/
/etc/fstabに以下を追加 (元が空なのですべて記載する。
fdescとprocはなくてもいいが、後で追加することになるので今のうちに入れておく。
# Device Mountpoint FStype Options Dump Pass# /dev/gpt/efiboot0 /boot/efi msdosfs rw 0 0 /dev/gpt/swap0 none swap sw 0 0 fdesc /dev/fd fdescfs rw 0 0 proc /proc procfs rw 0 0
最後に
終わったらexitで抜けるとインストーラ終了のダイアログが表示されるので再起動する。
なぜか、tank/home と tank/export がマウントされなかったので、再起動後にrootでログインし、以下のコマンドを実行し再起動。/home と /export がマウントされていることを確認する。
zpool import -f tank