
2026/02/01 8:15
150 MBでインストールできるMinimal FreeBSD
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
この記事では、最小限の FreeBSD 15.0‑RELEASE PKGBASE インストールを約 450 MB から約 150 MB に削減する方法を示しています。非必須パッケージセットを除外し、コアライブラリをロックすることで実現します。
compression=zstd-19 を使用した ZFS プールと「Packages (Tech Preview)」インストーラを利用して、著者は pkg lock -y で重要なライブラリ(libarchive、openssl-lib、xz-lib、libucl、libcasper)をロックします。インストール後にすべての set‑devel と set‑optional パッケージを削除し(pkg delete -fy)、ベースとミニマルセットのみを残します。通常 pkg upgrade は多くの削除されたパッケージを再インストールするため、著者は /var/db/pkg/local.sqlite を編集して base/FreeBSD-set-devel が base/FreeBSD-set-base に依存しないようにし、アップグレード時に自動的に再インストールされるのを防ぎます。
スペース削減の主な要因は、大きなカーネルモジュール(約 40 MB)と静的
pkg-static(8) バイナリ(13 MB)の除去です。最終的にシステムは物理的に約 150 MB の空間を占め、FreeBSD-set-base、pkg-2.4.2、カーネル、libarchive、openssl-lib およびランタイムライブラリなどの必須パッケージが残ります。
この設定はテスト環境専用です。管理者はベースイメージ(
bectl create backup)をバックアップし、サポート外として扱うべきです。現代システム(2026 年)ではディスク容量の節約は限定的ですが、この演習は PKGBASE のモジュラリティの限界を示しており、将来のリリースでより細かいセットや別の圧縮オプションが提供される可能性を暗示しています。本文
Minimal FreeBSD 15.0‑RELEASE(PKGBASE) – 150 MB インストール
「pkgbase(8) を使った最小構成で、root がどれだけ小さくできるか、ご存知の範囲で教えてください。」
私は、新規に作成した Bhyve VM(FreeBSD 15.0‑RELEASE、ZFS プール、
-O compression=zstd-19)を用いてテストしました。Packages の技術プレビューと base セットのみをインストールした状態で、物理的に使用される領域は 150 MB になりました。
1. 初期状態
$ df -m Filesystem 1M-blocks Used Avail Capacity Mounted on zroot/ROOT/default 7437 150 7287 2% / devfs 0 0 0 0% /dev ...
base セットに含まれるパッケージは次の通りです。
$ pkg sets | grep : FreeBSD-set-base-15.0: FreeBSD-set-devel-15.0: FreeBSD-set-minimal-15.0: FreeBSD-set-optional-15.0:
pkg(8) を動作させるためには、依存しているランタイムライブラリを残す必要があります。
$ pkg info -d pkg | awk '{print $1}' | sed 1d | sort -u FreeBSD-clibs-15.0 FreeBSD-libarchive-15.0 FreeBSD-openssl-lib-15.0 FreeBSD-runtime-15.0 FreeBSD-zlib-15.0
これらのパッケージは minimal と optional セットに属します。
2. 必須パッケージをロック
$ pkg lock -y FreeBSD-libarchive Locking FreeBSD-libarchive-15.0 $ pkg lock -y FreeBSD-openssl-lib Locking FreeBSD-openssl-lib-15.0
ブート環境のバックアップを作成します。
$ bectl create backup
3. 不要なセットとパッケージを削除
pkg delete -fy はロックされたパッケージは無視するため、残りのセットを安全に削除できます。
$ pkg info -d FreeBSD-set-devel-15.0 | tr ':' ' ' | \ while read PKG; do pkg delete -fy ${PKG}; done $ pkg info -d FreeBSD-set-optional-15.0 | tr ':' ' ' | \ while read PKG; do pkg delete -fy ${PKG}; done
削除後でも、
pkg(8) はアップグレード時に多くのパッケージを再インストールしようとします。
4. set-devel の依存関係から set-base を外す
依存関係は SQLite データベースに保存されています。
$ cp /var/db/pkg/local.sqlite /var/db/pkg/local.sqlite.BACKUP $ pkg shell sqlite> delete from deps where origin = "base/FreeBSD-set-devel";
(対話形式を使わずに実行する場合)
$ echo 'delete from deps where origin = "base/FreeBSD-set-devel";' | pkg shell
これで
pkg upgrade が提案する新規パッケージは数件だけになります。
$ pkg upgrade ... New packages to be INSTALLED: FreeBSD-bmake, FreeBSD-ctf-lib, FreeBSD-set-optional, FreeBSD-yp Installed packages to be UPGRADED: FreeBSD-devmatch, FreeBSD-kernel-generic, FreeBSD-openssl, FreeBSD-rescue, FreeBSD-runtime, FreeBSD-utilities
5. 結果として得られたシステム
$ df -h / Filesystem Size Used Avail Capacity Mounted on zroot/ROOT/default 7.3G 150M 7.1G 2% / $ bectl list BE Active Mountpoint Space Created default NR / 150M 2026-01-31 18:23 $ pkg info -as | sort -k 2 -h FreeBSD-set-base-15.0 0.00B FreeBSD-powerd-15.0 23.3KiB ... FreeBSD-kernel-generic-15.0 153MiB
最大のパッケージは
pkg(8)(約 53 MB)で、そのうち約 70 % が静的バイナリ pkg-static です。このバイナリと不要なカーネルモジュール(約40 MB)を削除すれば、システムは 100 MB 未満 にまで縮小できます。
6. 結論
- PKGBASE を使用した Minimal FreeBSD 15.0 のインストールは、物理的に 150 MB まで削減可能です。
- 重要なのはランタイムライブラリ(
,libarchive
等)をロックし、他のすべてのセットを除去することです。openssl-lib - さらにカーネルモジュールや静的
を削除すれば縮小幅が増しますが、レスキュー操作に影響を与える可能性があります。pkg-static
注意: 本手順はサポート対象外であり、システムを破損する恐れがあります。実験環境のみでご利用ください。