コマンドラインによるFreeBSD起動パーティションの作成など

fdisk, disklabel, はもう古いので、知識のアップデートを兼ねて。

MBR時代は fdisk コマンドでスライス切って、disklabel でパーティション分けていたが、GPTが主流になり、パーティションが128個つくれるようになったので、gpartで必要な数のパーティションにわけるのが主流になっているようだ。

新規のドライブなら必要ないが、以前に使用していたのを再利用するなら、以前に使用していたのを再利用するなら、残っているパーティション情報などを削除するために destroy する。 

本来であれば、残っているパーティションを1個ずつ delete コマンドで削除して、最後に destroy しないと消すことができないが、destroy に -F オプションで強制削除もできる。

# gpart show ada1
# gpart delete -i 1 ada1

# gpart destroy -F ada1

パーティションを削除したら、新しくGPTでパーティションを作成してく。

# gpart create -s GTP ada1

ブートコードの書き込み

# gpart add -t freebsd-boot -b 40 -s 512 ada1
-t パーティションタイプ
-b スタートブロック
-s サイズ

# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada1
-b ディスクのブートコード
-p パーティションのブートコード
-i パーティション番号

自分は gmirror にするので、gptboot をインストールしたが、zfsにしたければ、gptzfsboot をインストールする。 以前は freebsd-boot の領域は64kでもまにあっていたのだが、11-RELEASE になってから、gptzfsboot のファイルサイズが増えたりしているので、多めにしておくのがいいらしいが、最大サイズは 545Kまでという制限もある。

EFIブートコードのインストール

# gpart add -t efi -b 1m -s 100m ada1
# dd if=/boot/boot1.efifat of=/dev/ada1p2

EFI用のパーティションを作成して、EFI Application をインストールする。これをしておかないとEFIを使用して起動できない。

EFI Application の本体は /boot/boot1.efi で、EFI パーティションはFAT32にしておけば直接コピーすることも可能

# gpart add -t efi -b 1m -s 100m ada1
# newfs_msdos /dev/ada1p2
# mount -t msdosfs /dev/ada1p2 /mnt
# mkdir -p /mnt/EFI/BOOT
# copy /boot/boot1.efi /mnt/EFI/BOOT/BOOTx64.EFI

SWAP、UFSパーティションの作成

ここまでできれば後は普通にswapパーティションや、ufsパーティションを作成していく

# gpart add -t freebsd-swap -s 16G ada1
# gpart add -t freebsd-ufs ada1
  • s で良を指定しなければ、取れる最大の領域で作成してくれる。