2と3のリビジョン間の差分
2021-02-12 00:00:54時点のリビジョン2
サイズ: 9487
コメント:
2021-02-12 02:43:12時点のリビジョン3
サイズ: 13944
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 3: 行 3:
本記述は13.0-BEATA1時点での内容であるが、13.0がリリース後微調整する。 本記述は13.0-BEATA1時点での内容であるが、13.0がリリースされた微調整する。
行 12: 行 12:
 * CPUについては特に明記しないし、1コアからでも使用できるが、2コア以上をお勧めしたい。
   * 使用する用途に応じてCPU数や動作周波数、アーキテクチャを選ぶこと。
   * 基本的には「時間」に影響出るが、投入したリソースに応じて反比例(少ないと時間がかかる、多いと時間が短縮される)する。
行 14: 行 17:
   * FreeBSD本体のビルドに6GBは必要なので、3GBや2GBだとスワップアウトがキツイ。    * FreeBSD本体のビルドに6GBは必要なので、3GBや2GBの環境だとスワップアウトがキツイ。
行 20: 行 23:
 * インストール先メディア(ストレージ)に応じてデバイス名を読み替えること。今回、ここでは vtbdn(n≧0) を使用する。
   * ada: SATA接続のHDDおよびSSD
   * da: USB/SAS/SCSI接続の(マスストレージ)HDDおよびSSD
   * nvd: NVMe接続SSD
   * mmscd: eMMC(内蔵メモリカード)
   * vtbd: バーチャルI/Oストレージ(QEMU、BHyVe環境他)
   * xbd: Xen準仮想化ドライバ(Xen環境)
 * インストール先メディア(ストレージ)に応じてデバイス名を読み替えること。今回、ここでは vtbd''n''(''n''≧0) を使用する。
   * ada''n'': SATA接続のHDDおよびSSD
   * da''n'': USB/SAS/SCSI接続の(マスストレージ)HDDおよびSSD
   * nvd''n'': NVMe接続SSD
   * mmscd''n'': eMMC(内蔵メモリカード)
   * vtbd''n'': バーチャルI/Oストレージ(QEMU、BHyVe環境他)
   * xbd''n'': Xen準仮想化ドライバ(Xen環境)

== 設定目標 ==
行 33: 行 38:
   * ブートパーティション: BIOS環境=1KB弱、UEFI環境=200MB    * ブートパーティション: BIOS環境=12KB弱、UEFI環境=200MB程度
行 37: 行 42:
 * またパーティション境界を可能な限り「各種」境界を考慮して割り当てるが、とりあえず1MB境界を目指す。  * スワップについてメモ:
   * スワップはおおよそ「搭載メモリの2倍」で確保だが、一定量を超えると使用しなく(て良いように)なるため、この辺りで打ち止めしておくのがよい。
   * またどれほど搭載メモリが多くてもゼロスワップ運用はお勧めしない。
   * カーネルがメモリのガベージコレクトする時にスワップを使用することがあるので、巨大な連続領域を確保できなくなることがありうる。
 * またパーティション境界を可能な限り「各種」境界を考慮して割り当てることを目指す。とりあえず1MB境界で設定する。
行 41: 行 50:
   * HDD SMRのブロック単位(256MB)を考慮し結果    * HDD SMRのブロック単位(256MB)を考慮しての結果
行 43: 行 52:
   * SMRの256MBについては、実運用とのバランスを考えると考慮に値しなくてよい(OS用に使うべきで無い)。
   * SSDのページ、ブロックの単位は大容量化にともない大きくなっていくので、この数字が正しいとは限らない。
 * UFSブート、ZFSルート構成についてのメリットとデメリット。
   * 構造がシンプルでないので若干の小細工が必要。
   * インストーラーからインストールできないので、全ての手順でコマンドを叩く必要がある。
   * その代わりブートローダーがZプールの最新に対応してなくてよいので安心してアップグレードができる。
   * ZFS領域の暗号化(GELI)が可能。
 * ZFS領域とスワップ領域については暗号化を施す。
   * ブート時点からセキュアでは無いが、セキュアブートの仕組みが今のところ確立されてないので、この辺りが限界。
   * クラウド環境でセキュアブートの仕組みが提供されていることがないので、頑張る余地があるか微妙。
   * 逆にクラウド環境では暗号化の仕組みが用意されているのでそちらを利用すること。
   * 個別に本手順を実施する分には問題無いが、イメージそのままでデプロイすると、同じ暗号化鍵を使ったイメージがコピーされるのでよろしい運用では無い。
行 44: 行 65:
== インストール目標 == == インストール設定 ==
行 64: 行 85:
行 66: 行 86:
OS起動後になるが、以下のコマンドで環境を確認できる。 OS起動後になるが、以下のコマンドで環境を確認できる。実際にインストール時に確認すること。
行 100: 行 120:
== 検証環境 == = インストール ==

== インストールメディアの入手 ==
 * [[https://download.freebsd.org/ftp/releases/ISO-IMAGES/13.0/|Index of /ftp/releases/ISO-IMAGES/13.0]]より、
 * `FreeBSD-13.0-amd64-disc1.iso` というISOイメージファイルをダウンロードする。
   * 今回 amd64 環境、いわゆる x86_64 環境にインストールするものとする。
   * arm64 と名称が似ているが、arm64-aarch64 なので別物である。
   * また dvd1 ではなく disc1 である。幸い dvd1 は disc1 を内包しているので、無駄を承知で使用してもよい。
 * このISOイメージをCDメディアとして認識させる。
   * 物理的にはもちろん、CD-Rに焼いてもかまわない。
   * 個人的には [[https://www.hagisol.co.jp/products/usb_cdmemory2/|Hagiwara Solutions 社製 CD Memory2]] の使用をお勧めする。
   * 入手性については [[https://online.plathome.co.jp/|ぷらっとオンライン]] が一番確実である。
   * ISOイメージの書き込みに専用ソフト([[https://www.hagisol.co.jp/download/cd_memory/cdm2_writer/|CDM2 Writer]])を必要とするが、
   * 読み取り処理はCDROMドライブのエミュレーションしか行わないので、非常に互換性が高い。
   * 似たようなハードは売られているので、使い慣れた物を使用するのも問題無い。

= 参考文献 =
 * [[https://www.freebsd.org/releases/13.0R/announce/|FreeBSD 13.0-RELEASE Announcement]]
 * [[https://www.freebsd.org/releases/13.0R/relnotes/|FreeBSD 13.0-RELEASE Release Notes]]
 * [[https://www.freebsd.org/cgi/man.cgi?adjkerntz(8)|adjkerntz(8)]]

FreeBSD13のインストール

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

前提条件

  • CMOS(BIOS)クロックのタイムゾーンをUTCとする。
    • ほとんどのクラウド環境では本設定を変更することができないか、極めて困難である。
    • 物理環境では変更しやすいし、メンテナナンス性も高いのだが、設定の統一性から見なかったことにする。
    • よく出来た物理環境では、内部時間と表示時間(タイムゾーン情報を有す)を変えられるものも出てきたので、昔ほどJSTにこだわらなくてもよい。
  • CPUについては特に明記しないし、1コアからでも使用できるが、2コア以上をお勧めしたい。
    • 使用する用途に応じてCPU数や動作周波数、アーキテクチャを選ぶこと。
    • 基本的には「時間」に影響出るが、投入したリソースに応じて反比例(少ないと時間がかかる、多いと時間が短縮される)する。
  • 搭載メモリはできれば4GB以上にしておきたい。
    • カツっカツにチューニングすれば512MBでも動作するが、その後はあまりできることが少ない。
    • FreeBSD本体のビルドに6GBは必要なので、3GBや2GBの環境だとスワップアウトがキツイ。
    • これはC++のコンパイル負荷によるものなので、搭載メモリが少ない環境でのビルド(サードパーティ製含む)は諦めた方がよい。
    • 良好に使用するなら8GB以上は欲しいところではある。
  • 搭載ストレージもできれば50GB以上は欲しいところ。
    • 30GB程度では一通りのセットアップで埋まってしまう程度の容量なので、大きめに欲しいところ。
    • 用途にもよるがログ保存等を考慮すると100GB程度あれば安心である(こまめに圧縮する前提で)。
  • インストール先メディア(ストレージ)に応じてデバイス名を読み替えること。今回、ここでは vtbd≧0) を使用する。

    • ada: SATA接続のHDDおよびSSD

    • da: USB/SAS/SCSI接続の(マスストレージ)HDDおよびSSD

    • nvd: NVMe接続SSD

    • mmscd: eMMC(内蔵メモリカード)

    • vtbd: バーチャルI/Oストレージ(QEMU、BHyVe環境他)

    • xbd: Xen準仮想化ドライバ(Xen環境)

設定目標

  • 全てGPTパーティション(領域)で組むものとして、BIOSまたはUEFI環境での起動を前提とする(マルチブートは考えない)。
    • BIOSまたはUEFIがブート用に認識するパーティション
    • /boot 用パーティション(UFSで構成する)
    • / 用のパーティション(ZFSで構成する)
    • スワップパーティション
  • またこの時以下のサイズを割り当てる。
    • ブートパーティション: BIOS環境=512KB弱、UEFI環境=200MB程度
    • UFSパーティション: 4GB ※実用512KB・2倍の1GB程度はあった方がよい
    • ZFSパーティション: 残りサイズを計算して割り当て
    • スワップパーティション: 8GB ※搭載メモリの2倍で最大8GB程度に
  • スワップについてメモ:
    • スワップはおおよそ「搭載メモリの2倍」で確保だが、一定量を超えると使用しなく(て良いように)なるため、この辺りで打ち止めしておくのがよい。
    • またどれほど搭載メモリが多くてもゼロスワップ運用はお勧めしない。
    • カーネルがメモリのガベージコレクトする時にスワップを使用することがあるので、巨大な連続領域を確保できなくなることがありうる。
  • またパーティション境界を可能な限り「各種」境界を考慮して割り当てることを目指す。とりあえず1MB境界で設定する。
    • 1ブロック512バイトが最小単位であるが、
    • 4KBセクタードライブであったり、
    • SSDのページ単位(2KB~)・ブロック単位(128KB~)を考慮したり、
    • HDD SMRのブロック単位(256MB)を考慮しての結果。
    • 容量とのバランスで1MB程度にしておく。そのうち1GB単位にしてもいいかもしれない。
    • SMRの256MBについては、実運用とのバランスを考えると考慮に値しなくてよい(OS用に使うべきで無い)。
    • SSDのページ、ブロックの単位は大容量化にともない大きくなっていくので、この数字が正しいとは限らない。
  • UFSブート、ZFSルート構成についてのメリットとデメリット。
    • 構造がシンプルでないので若干の小細工が必要。
    • インストーラーからインストールできないので、全ての手順でコマンドを叩く必要がある。
    • その代わりブートローダーがZプールの最新に対応してなくてよいので安心してアップグレードができる。
    • ZFS領域の暗号化(GELI)が可能。
  • ZFS領域とスワップ領域については暗号化を施す。
    • ブート時点からセキュアでは無いが、セキュアブートの仕組みが今のところ確立されてないので、この辺りが限界。
    • クラウド環境でセキュアブートの仕組みが提供されていることがないので、頑張る余地があるか微妙。
    • 逆にクラウド環境では暗号化の仕組みが用意されているのでそちらを利用すること。
    • 個別に本手順を実施する分には問題無いが、イメージそのままでデプロイすると、同じ暗号化鍵を使ったイメージがコピーされるのでよろしい運用では無い。

インストール設定

以下のパーティション構成を組む。

BIOSブート環境

パーティション番号

パーティション種別

用途

サイズ

注意

-

GPTヘッダー

Protected MBR ブート

32 ブロック 

UEFIブート環境では使用しない。またエントリ数(128)は変更しない(起動しない)。

-

フリー領域

境界補正

8 ブロック 

次のパーティションの開始を4KB境界に補正する(無い環境もある)。

1

freebsd-boot

BIOS用FreeBSDブート領域

984 ブロック 

UFS領域を512KB境界に補正するためのサイズを指定。

2

freebsd-ufs

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

8387584 ブロック 

ZFS領域を1MB境界に補正するために、4GBに-512KB(ブート領域分)を指定。

3

freebsd-zfs

ZFS領域(/ として使用)

※都度計算※

スワップを 2048 ブロック(=1MB)境界に補正するためのサイズを指定。

4

freebsd-swap

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

16777216 ブロック~

8GB+補正分。

UEFIブート環境

パーティション番号

パーティション種別

用途

サイズ

注意

-

GPTヘッダー

Protected MBR ブート

32 ブロック 

UEFIブート環境では使用しない。またエントリ数(128)は変更しない(起動しない)。

-

フリー領域

境界補正

8 ブロック 

次のパーティションの開始を4KB境界に補正する(無い環境もある)。

1

uefi

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

409560 ブロック 

UFS領域を200MB境界に補正した(-40ブロック)サイズを指定。

2

freebsd-ufs

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

8388608 ブロック 

4GBフルサイズを指定(自動的に境界配置となるため)。

3

freebsd-zfs

ZFS領域(/ として使用)

※都度計算※

スワップを 2048 ブロック(=1MB)境界に補正するためのサイズを指定。

4

freebsd-swap

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

16777216 ブロック~

8GB+補正分。

環境確認方法

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

ブート環境

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

時刻

sysctl machdep.wall_cmos_clock
date

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

= インストール ==

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

  • Index of /ftp/releases/ISO-IMAGES/13.0より、

  • FreeBSD-13.0-amd64-disc1.iso というISOイメージファイルをダウンロードする。

    • 今回 amd64 環境、いわゆる x86_64 環境にインストールするものとする。
    • arm64 と名称が似ているが、arm64-aarch64 なので別物である。
    • また dvd1 ではなく disc1 である。幸い dvd1 は disc1 を内包しているので、無駄を承知で使用してもよい。
  • このISOイメージをCDメディアとして認識させる。
    • 物理的にはもちろん、CD-Rに焼いてもかまわない。
    • 個人的には Hagiwara Solutions 社製 CD Memory2 の使用をお勧めする。

    • 入手性については ぷらっとオンライン が一番確実である。

    • ISOイメージの書き込みに専用ソフト(CDM2 Writer)を必要とするが、

    • 読み取り処理はCDROMドライブのエミュレーションしか行わないので、非常に互換性が高い。
    • 似たようなハードは売られているので、使い慣れた物を使用するのも問題無い。

参考文献

FreeBSD/FreeBSD13-install (最終更新日時 2021-05-30 15:13:44 更新者 NorikatsuShigemura)