もう何年も更新をサボっておりました。。。orz
(6年近く経っとるやんけ)
さて、長年使っていた File Server がお亡くなりになりましたので、新しいマシンでも組んでみましょうかねぇ、と思ったのでありました。
そんなわけで、システムドライブを SSD にして FreeBSD 11.0-Release-p1 をインストールしてみました。
システムドライブに SSD を使用する場合、いくつか考慮が必要になります。
それは、以下の点です。
・SSD が TRIM コマンドをサポートしているなら、有効にすべき
・FreeBSD では TRIM コマンドは UFS でしかサポートされていない
・swap で TRIM を有効にしたいなら、UFS 上にファイルで作成すべき
・各パーティションは 1 MB 境界に整列しておいた方が無難
(128 KB 整列でもいいような気はしないでもない)
他に、現在では UEFI なシステムが普通だったりもするので、ここは素直に GPT (GUID Partition Table) を使用しましょうか、とか色々あるわけです。
実際に、どんな形を目指すのかというと、以下のような形にすることを考えます。
・Partition Scheme には GPT を使用
・BIOS のシステムに繋いでも大丈夫なように boot パーティションを作成
・UEFI のシステムから起動できるように efi (EFI System Partition) パーティションを作成
・swap は UFS 上のファイルとする為、swap パーティションは作成しない
・/tmp には tmpfs を使用する為、tmp パーティションは作成しない
・デバイス番号が変化しても問題ない様、GPT パーティションにはラベルを付加
・boot パーティション (freebsd-boot) は 40 Block (20 KB) から始まり、サイズは 512 KB
・efi パーティションは 1 MB (2048 Block) から始まり、サイズは 200 MB
・他の各パーティションは 1 MB 境界に整列する
・バックアップに dump -L を使用できるよう、Soft-Updates Journaling (SUJ) は使用しない
考慮するポイントが色々ある所為で、インストーラの Auto (UFS) や Manual でパーティショニングするのには無理があったりします。
そのため、Partitioning の項では Shell を選びます。
Shell を選んだ場合は、以下の点に注意が必要です。
・Shell を抜ける前に、作成したパーティションを /mnt 以下にマウントしておくこと
・新システム用の fstab の内容を /tmp/bsdinstall_etc/fstab に記入しておくこと
さて、パーティショニングしてみましょう。
使い回しの SSD を使用する場合は、各パーティションとスキームを削除して下さい。
認識されているディスクのパーティション情報を表示
# gpart show
各パーティションを削除
# gpart delete -i {partition#} {device id}
ex.) gpart delete -i 1 ada0
スキームを削除
# gpart destroy {device id}
ex.) gpart destroy ada0
以下のようにパーティショニングを実行します。
GPT を Scheme として使用する
# gpart create -s GPT {device id}
ex.) gpart create -s GPT ada0
以下、device id が ada0 だったものとして記述します。
boot パーティションを作成し、ブートコードを書き込む
# gpart add -t freebsd-boot -l gpboot -b 40 -s 512k ada0
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0
(gpart add の -l オプションは、パーティションラベルの指定です)
(gpart bootcode の -b はディスクに書き込まれるブートコードです)
(gpart bootcode の -p はパーティションに書き込まれるブートコードです)
efi パーティションを作成し、起動用 EFI Application ファイルを格納する
# gpart add -t efi -l gpefiboot -b 1m -s 200m ada0
# newfs_msdos /dev/ada0p2
# mount -t msdosfs /dev/ada0p2 /mnt
# mkdir -p /mnt/EFI/BOOT
# cp -p /boot/boot1.efi /mnt/EFI/BOOT/BOOTx64.EFI
# umount /mnt
(efi パーティションは FAT/FAT32 でフォーマットされている必要があります)
(efi パーティションのサイズは 100MB 以上 1GB 以下である必要があります)
(起動用 EFI Application のデフォルトは /EFI/BOOT/BOOT{マシンタイプ}.EFI です)
(amd64 に対応するマシンタイプは x64 です)
(FreeBSD/i386 は現在非対応です(マシンタイプは IA32 です))
各パーティションを 1 MB 境界で作成し、Soft-Updates と TRIM を有効にする
# gpart add -t freebsd-ufs -l gprootfs -a 1m -s 40g ada0
# gpart add -t freebsd-ufs -l gpvarfs -a 1m -s 20g ada0
# gpart add -t freebsd-ufs -l gpusrfs -a 1m ada0
# newfs -U -t /dev/gpt/gprootfs
# newfs -U -t /dev/gpt/gpvarfs
# newfs -U -t /dev/gpt/gpusrfs
(SUJ には snapshot が取れない問題があり dump -L できないため無効とする)
(dump -L すると Snapshots are not yet supported when running with journaled soft updates: Operation not supported と言われる)
各パーティションをマウントし、swap ファイルを作成する
# mount /dev/gpt/gprootfs /mnt
# mkdir /mnt/swap /mnt/var /mnt/usr
# mount /dev/gpt/gpvarfs /mnt/var
# mount /dev/gpt/gpusrfs /mnt/usr
# dd if=/dev/zero of=/mnt/swap/swapfile bs=128k count=131072
(swap ファイルのサイズは 16 GB(メモリサイズ以上))
fstab を作成する
(echo で追記していますが、vi 等も使用可能です)
# echo "# Device Mountpoint FStype Options Dump Pass#" > /tmp/bsdinstall_etc/fstab
# echo "/dev/gpt/gprootfs / ufs rw 1 1" >> /tmp/bsdinstall_etc/fstab
# echo "md99 none swap sw,file=/swap/swapfile,late 0 0" >> /tmp/bsdinstall_etc/fstab
# echo "/dev/gpt/gpvarfs /var ufs rw 2 2" >> /tmp/bsdinstall_etc/fstab
# echo "tmpfs /tmp tmpfs rw,size=8g,mode=01777 0 0" >> /tmp/bsdinstall_etc/fstab
# echo "/dev/gpt/gpusrfs /usr ufs rw 2 2" >> /tmp/bsdinstall_etc/fstab
Shell を終了する
# exit
こんな感じです。
これで作成したパーティション情報を表示すると、以下のようになります。
# gpart show
=> 40 234441568 ada0 GPT (112G)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 409600 2 efi (200M)
411648 83886080 3 freebsd-ufs (40G)
84297728 41943040 4 freebsd-ufs (20G)
126240768 108199936 5 freebsd-ufs (52G)
234440704 904 - free - (452K)
# gpart show -l
=> 40 234441568 ada0 GPT (112G)
40 1024 1 gpboot (512K)
1064 984 - free - (492K)
2048 409600 2 gpefiboot (200M)
411648 83886080 3 gprootfs (40G)
84297728 41943040 4 gpvarfs (20G)
126240768 108199936 5 gpusrfs (52G)
234440704 904 - free - (452K)
freebsd-boot パーティションの後に 492 KB の free エリアができてしまいますが、そう言うものだと思って諦めて下さい。
今や最初のパーティションを 1 MB の位置から始めるのは普通になりました。
Windows では freebsd-boot パーティションがない分、1 MB 弱が空きになっていると思えば、まだ諦めが付くでしょうか。。。(^^;
まだ SSD をシステムドライブにするには若干面倒な感じがしますが、そのうちインストーラでも簡単にできるようになるでしょう。
それまでは、パーティショニングは Shell で行う必要がありますね。