FreeBSD13のインストール

FreeBSD 13.0-RELEASEをインストールしてみる。 本記述は13.0-BEATA1時点での内容であるが、13.0がリリースされた後、微調整する。

前提条件

設定目標

インストール設定

以下のパーティション構成を組む。ブート環境に応じて選択する。

BIOSブート環境

パーティション番号

パーティション種別

用途

サイズ

注意

-

GPTヘッダー

Protected MBR ブート

40 ブロック 

UEFIブート環境では Protected MBR は参照されない。

1

freebsd-boot

BIOS用FreeBSDブート領域

984 ブロック 

UFS領域を512KB境界(ブートローダーのサイズ制限)に設置するためのサイズを指定。

2

freebsd-ufs

UFS領域(/boot として使用)

8387584 ブロック 

ZFS領域を4GB境界に設置するためのサイズを指定。

3

freebsd-zfs

ZFS領域(/ として使用)

※都度計算※

スワップ領域を1GB境界に設置するためのサイズを指定。

4

freebsd-swap

スワップ領域(搭載メモリの2倍≦8GB)

16777216 ブロック~

8GB+補正分。

UEFIブート環境

パーティション番号

パーティション種別

用途

サイズ

注意

-

GPTヘッダー

-

40 ブロック 

1

efi

UEFI領域(FAT32フォーマット)

409560 ブロック 

UFS領域を200MB境界に設置するためのサイズを指定。

2

freebsd-ufs

UFS領域(/boot として使用)

7979008 ブロック 

ZFS領域を4GB境界に設置するためのサイズを指定。

3

freebsd-zfs

ZFS領域(/ として使用)

※都度計算※

スワップ領域を1GB境界に設置するためのサイズを指定。

4

freebsd-swap

スワップ領域(搭載メモリの2倍≦8GB)

16777216 ブロック~

8GB+補正分。

環境確認方法

OS起動後になるが、以下のコマンドで環境を確認できる。実際にインストール時に確認すること。 以下はある環境での実行結果である。

check-list-environment.png

ブート環境

sysctl machdep.bootmethod

この時「BIOS」と表示されればBIOSブート環境、「UEFI」とあればUEFIブート環境である。

ディスク一覧

geom disk status

ディスク一覧が表示される(この時 Status と Components が N/A となるのは無視して良い)。 下記は実行例であるが、下記の例の場合、インストール先メディアを選ぶこと(mmcsd0 または ada0)。

root@:~ # geom disk status
       Name  Status  Components
     mmcsd0     N/A  N/A
mmcsd0boot0     N/A  N/A
mmcsd0boot1     N/A  N/A
       ada0     N/A  N/A

TRIM/UNMAP対応の確認

sysctl kern.geom.disk.デバイス名.flags

先に確認したインストール先メディア(デバイス)に対して上記コマンドを実行する。CANDELETE の表示があれば、対応している。

AES/SHA-NI対応の確認

sysctl dev.aesni.0.%desc

この時「AES-XTS」の表示があること(あればAES-NIに対応)。「SHA256」の表示があること(あればSHA-NIに対応)。

時刻およびCMOSクロックのタイムゾーンの確認

sysctl machdep.wall_cmos_clock
date

sysctl machdep.wall_cmos_clock の結果が0であること。date の結果が日本時間から9時間前で「UTC」を含むこと。

インストール

インストールメディアの入手

インストールメディアの起動とコンソールへ

ISOイメージからシステムがブートすると下記の画面が表示される。表示されない場合は起動順序に問題がある(ほぼこれ)、認識してない(挿入ミス、接続されてないなど、希に)ので確認する(確認手順は難しいのでここでは省略)。 10秒カウントダウンの後、OSが起動するので、その前に「3」を押す。あるいはスペースキーを押すとカウントダウンが止まる。

beastie-on-boot.png

3を押すと下記のようにプロンプトが表示されるので、

prompt-on-boot.png

以下のコマンドを入力して起動する(実施しなかったとしてもペナルティは無い)。

set hint.psm.0.disabled="1"
set kern.geom.label.disk_ident.enable="0"
boot

setting-on-boot.png

環境によっては、下記の追加設定を実施しても良い。ただしキー入力を受け付けなくなることがあるので、要動作確認のこと。

set hint.atkbdc.0.disabled="1"
set hint.atkbd.0.disabled="1

今時のハードウェアだと、この手のレガシー(PS/2接続)デバイスのエミュレーションが甘い(遅い等)ことがあるので、可能な限り積極的に設定してみることをお勧めする。

start-bsdinstall.png

上記画面が表示されるので、「<Live CD>」を選択(カーソルキーで→に移動、エンターキーを押す)する。

start-console-login.png

ログインプロンプトが表示されるので「root」を入力してエンターキーを押す(パスワードは無い)。

コマンド操作によるインストール作業

先に情報収集が成されているものとして以下のコマンドを実行する。

パーティションを切る

BIOSブート環境の場合、以下の手順でパーティションを切る。

gpart destroy -F vtbd0
gpart create -s GPT vtbd0
gpart add -t freebsd-boot -s     984 vtbd0
gpart add -t freebsd-ufs  -s 8387584 vtbd0
gpart add -t freebsd-zfs  -s `gpart show vtbd0 | awk '/- free -/{ st = $1; sz = $2; sw = ( 8 * 1024 * 1024 * 1024 ) / 512; aln = ( 1024 * 1024 * 1024 ) / 512; sz -= sw; sz -= ( st + sz ) % aln; print sz }'` vtbd0
gpart add -t freebsd-swap            vtbd0

UEFIブート環境の場合、以下の手順でパーティションを切る。

gpart destroy -F vtbd0
gpart create -s GPT vtbd0
gpart add -t efi          -s  409560 vtbd0
gpart add -t freebsd-ufs  -s 7979008 vtbd0
gpart add -t freebsd-zfs  -s `gpart show vtbd0 | awk '/- free -/{ st = $1; sz = $2; sw = ( 8 * 1024 * 1024 * 1024 ) / 512; aln = ( 1024 * 1024 * 1024 ) / 512; sz -= sw; sz -= ( st + sz ) % aln; print sz }'` vtbd0
gpart add -t freebsd-swap            vtbd0

ファイルシステムをフォーマットする

TRIM/UNMAP対応の場合、以下の手順でフォーマットする。

newfs -U -j -E -t /dev/vtbd0p2

TRIM/UNMAPに未対応の場合、以下の手順でフォーマットする。

newfs -U -j /dev/vtbd0p2

更にUEFIブート環境の場合、以下の手順でフォーマットする。

newfs_msdos -F 32 -c 1 -L EFISYS /dev/vtbd0p1

フォーマットしたらファイルシステムをマウントしてディレクトリを準備する

以下の手順を実施する。

mount -t ufs -o rw,noatime /dev/vtbd0p2 /mnt
mkdir -p /mnt/boot/efi

更にUEFIブート環境の場合、以下の手順を実施する。

mount -t msdosfs /dev/vtbd0p1 /mnt/boot/efi
mkdir -p /mnt/boot/efi/EFI/BOOT

パーティションを暗号化(GELI)する

ZFSパーティションにGELIで暗号化を施す。

kldload geom_eli

dd if=/dev/random of=/mnt/boot/geli.key bs=4096 count=1
chmod 0400 /mnt/boot/geli.key

geli init -b -B none -e AES-XTS -l 256 -a HMAC/SHA256 -s 4096 -K /mnt/boot/geli.key /dev/vtbd0p3

ブートローダーをインストールする

BIOSブート環境の場合、以下の手順で。 UEFIブート環境の場合、以下の手順で。

インストール後初期設定

よくある質問とその答え

Q.SHA-NIに対応したCPUなんてあるんですか?

A.2021年2月現在のIntel製CPUにおいて、サーバー・デスクトップ向けでは存在しない。 AMD製CPUにおいてZENアーキテクチャから対応してるので、RYZENシリーズ(EPICシリーズ)では当たり前に対応してると言える。

参考文献