Sometimes an article starts with a simple question or a single message on one of the available social platforms. This is the case today with this article where @ooberober asked:
How small can the root get in its most minimal setup, as far as you know, with pkgbase(8)?
Tiny OS installations sounds similar to me to tiny houses … not sure why.

I wrote about many/most aspects of PKGBASE in the Brave New PKGBASE World article … but not the installation size. I checked one of my FreeBSD 15.0 PKGBASE installations and replied right away – 450 MB of disk space … but maybe that can be pushed further?
What I am gonna share with You today is unsupported – probably unrecomended – you may render your system broken. Only use it in test environment – as I did in a fresh Bhyve VM. You have been warned.
To make you interested – this is what I was able to achieve with FreeBSD 15.0-RELEASE with PKGBASE installation.
root@space:~ # df -m
Filesystem 1M-blocks Used Avail Capacity Mounted on
zroot/ROOT/default 7437 150 7287 2% /
devfs 0 0 0 0% /dev
/dev/gpt/efiboot0 255 1 254 0% /boot/efi
zroot/home 7287 0 7287 0% /home
zroot/tmp 7287 0 7287 0% /tmp
zroot/usr/ports 7287 0 7287 0% /usr/ports
zroot/var/log 7287 0 7287 0% /var/log
zroot/var/mail 7287 0 7287 0% /var/mail
zroot/usr/src 7287 0 7287 0% /usr/src
zroot/var/tmp 7287 0 7287 0% /var/tmp
zroot/var/audit 7287 0 7287 0% /var/audit
zroot/var/crash 7287 0 7287 0% /var/crash
About 150 MB of physically used space. I used zstd-19 ZFS compression at bsdinstall(8) installer.
I started with simple plain FreeBSD 15.0-RELEASE installation with these options:
Select Installation Type
- Packages (Tech Preview)
Network or Offline Installation
- Offline (Limited Packages)
Partitioning
- Auto (ZFS)
- ZFS Configuration
- ZFS Pool Options: -O compression=zstd-19
Select System Components
- [X] base
If you select that [X] base option you will end up with 450 MB of physical space used and these sets installed.
root@space:~ # pkg sets | grep :
FreeBSD-set-base-15.0:
FreeBSD-set-devel-15.0:
FreeBSD-set-minimal-15.0:
FreeBSD-set-optional-15.0:
As we are working with PKGBASE world – for a start will will try to make sure pkg(8) preserves our ‘cuts’.
root@space:~ # pkg info -d pkg
pkg-2.4.2:
FreeBSD-libarchive-15.0 (libarchive.so.7)
FreeBSD-clibs-15.0 (libc.so.7)
FreeBSD-clibs-15.0 (libm.so.5)
FreeBSD-clibs-15.0 (libthr.so.3)
FreeBSD-openssl-lib-15.0 (libcrypto.so.35)
FreeBSD-openssl-lib-15.0 (libssl.so.35)
FreeBSD-runtime-15.0 (libelf.so.2)
FreeBSD-runtime-15.0 (libjail.so.1)
FreeBSD-runtime-15.0 (libutil.so.10)
FreeBSD-zlib-15.0 (libz.so.6)
So in theory these are the PKGBASE packages we must preserve to keep pkg(8) alive.
root@space:~ # 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 root@space:~ # pkg info -d pkg | awk '{print $1}' | sed 1d | sort -u | while read I; do echo -n "$I: "; pkg info ${I} | grep set; done | column -t FreeBSD-clibs-15.0: set : minimal,minimal-jail FreeBSD-libarchive-15.0: set : optional,optional-jail FreeBSD-openssl-lib-15.0: set : optional,optional-jail FreeBSD-runtime-15.0: set : minimal,minimal-jail FreeBSD-zlib-15.0: set : minimal,minimal-jail
As we want to keep both FreeBSD-set-base and FreeBSD-set-minimal sets – that gives us these:
root@space:~ # pkg info -d pkg | awk '{print $1}' | sed 1d | sort -u | while read I; do echo -n "$I: "; pkg info ${I} | grep set; done | column -t | grep -v minimal
FreeBSD-libarchive-15.0: set : optional,optional-jail
FreeBSD-openssl-lib-15.0: set : optional,optional-jail
So in theory we can remove all packages of FreeBSD-set-devel and FreeBSD-set-minimal sets and just keep these FreeBSD-libarchive and FreeBSD-openssl-lib packages to have working pkg(8) right?

Unfortunately no – as master Yoda once said – “No, there is another.” – and the answer is that both FreeBSD-xz-lib and FreeBSD-libucl packages to not keep you waiting – but we will come to that later.
For a start lets check FreeBSD-libarchive and FreeBSD-openssl-lib packages.
root@space:~ # pkg info -d FreeBSD-set-devel-15.0 | wc -l 70 root@space:~ # pkg info -d FreeBSD-set-devel-15.0 | grep -v -e FreeBSD-libarchive-15 -e FreeBSD-openssl-lib-15 | wc -l 70 root@space:~ # pkg info -d FreeBSD-set-optional-15.0 | wc -l 93 root@space:~ # pkg info -d FreeBSD-set-optional-15.0 | grep -v -e FreeBSD-libarchive-15 -e FreeBSD-openssl-lib-15 | wc -l 91
So they are both in FreeBSD-set-optional set.
We can now lock needed ones.
root@space:~ # pkg lock -y FreeBSD-libarchive Locking FreeBSD-libarchive-15.0 root@space:~ # pkg lock -y FreeBSD-openssl-lib Locking FreeBSD-openssl-lib-15.0
We should also create a ‘backup’ ZFS Boot Environment before we potentially break our system.
root@space:~ # bectl create backup
Now … if we start deleting these – we will come to this point below.
(...)
Installed packages to be REMOVED:
FreeBSD-xz-lib: 15.0
Number of packages to be removed: 1
[1/1] Deinstalling FreeBSD-xz-lib-15.0...
[1/1] Deleting files for FreeBSD-xz-lib-15.0: 100%
ld-elf.so.1: Shared object "liblzma.so.5" not found, required by "libarchive.so.7"
ld-elf.so.1: Shared object "liblzma.so.5" not found, required by "libarchive.so.7"
ld-elf.so.1: Shared object "liblzma.so.5" not found, required by "libarchive.so.7"
(...)
Same with the other one.
(...)
Installed packages to be REMOVED:
FreeBSD-libucl: 15.0
Number of packages to be removed: 1
[1/1] Deinstalling FreeBSD-libucl-15.0...
[1/1] Deleting files for FreeBSD-libucl-15.0: 100%
ld-elf.so.1: Shared object "libprivateucl.so.1" not found, required by "pkg"
ld-elf.so.1: Shared object "libprivateucl.so.1" not found, required by "pkg"
ld-elf.so.1: Shared object "libprivateucl.so.1" not found, required by "pkg"
(...)
… and yes – we do not want that.
The pkg-static(8) will still work fortunately.
The disappointing thing about so called experience is that you get it just after you needed it – and its no different this time.
So – we also need to lock these:
- FreeBSD-xz-lib
- FreeBSD-libucl
- FreeBSD-libcasper
Lets do that.
root@space:~ # pkg lock -y FreeBSD-xz-lib Locking FreeBSD-xz-lib-15.0 root@space:~ # pkg lock -y FreeBSD-libucl Locking FreeBSD-libucl-15.0 root@space:~ # pkg lock -y FreeBSD-libcasper Locking FreeBSD-libcasper-15.0
Now – we can remove these sets and packages.
Lets just make sure that lock really works.
root@space:~ # pkg delete -fy FreeBSD-libarchive
Checking integrity... done (0 conflicting)
The following package(s) are locked or vital and may not be removed:
FreeBSD-libarchive
1 packages requested for removal: 1 locked, 0 missing
Yep. Works. Lets go hunting.
root@space:~ # pkg lock -l Currently locked packages: FreeBSD-libarchive-15.0 FreeBSD-libucl-15.0 FreeBSD-openssl-lib-15.0 FreeBSD-xz-lib-15.0 FreeBSD-libcasper-15.0 root@space:~ # pkg info -d FreeBSD-set-devel-15.0 | tr ':' ' ' | while read PKG; do pkg delete -fy ${PKG}; done root@space:~ # pkg info -d FreeBSD-set-optional-15.0 | tr ':' ' ' | while read PKG; do pkg delete -fy ${PKG}; done
After these operations … and needed locks for three mentioned packages You should have a working FreeBSD 15.0-RELEASE system that takes about 150 MB of space.
The downside? The pkg(8) will still try to reinstall most/all the removed packages during upgrade.
root@space:~ # pkg upgrade Updating FreeBSD-ports repository catalogue... Fetching meta.conf: 100% 179 B 0.2 k/s 00:01 Fetching data: 100% 10 MiB 514.3 k/s 00:21 Processing entries: 100% FreeBSD-ports repository update completed. 36679 packages processed. Updating FreeBSD-ports-kmods repository catalogue... Fetching meta.conf: 100% 179 B 0.2 k/s 00:01 Fetching data: 100% 35 KiB 35.7 k/s 00:01 Processing entries: 100% FreeBSD-ports-kmods repository update completed. 239 packages processed. Updating FreeBSD-base repository catalogue... Fetching meta.conf: 100% 179 B 0.2 k/s 00:01 Fetching data: 100% 80 KiB 81.5 k/s 00:01 Processing entries: 100% FreeBSD-base repository update completed. 496 packages processed. All repositories are up to date. Updating database digests format: 100% Checking for upgrades (9 candidates): 100% Processing candidates (9 candidates): 100% The following 79 package(s) will be affected (of 0 checked): New packages to be INSTALLED: FreeBSD-atf-dev: 15.0 [FreeBSD-base] FreeBSD-audit-dev: 15.0 [FreeBSD-base] FreeBSD-blocklist-dev: 15.0 [FreeBSD-base] FreeBSD-bluetooth-dev: 15.0 [FreeBSD-base] FreeBSD-bmake: 15.0 [FreeBSD-base] FreeBSD-bootloader-dev: 15.0 [FreeBSD-base] FreeBSD-bsnmp-dev: 15.0 [FreeBSD-base] FreeBSD-bzip2-dev: 15.0 [FreeBSD-base] FreeBSD-clang: 15.0 [FreeBSD-base] FreeBSD-clang-dev: 15.0 [FreeBSD-base] FreeBSD-clibs-dev: 15.0 [FreeBSD-base] FreeBSD-clibs-lib32: 15.0 [FreeBSD-base] FreeBSD-ctf: 15.0 [FreeBSD-base] FreeBSD-ctf-dev: 15.0 [FreeBSD-base] FreeBSD-ctf-lib: 15.0 [FreeBSD-base] FreeBSD-devmatch-dev: 15.0 [FreeBSD-base] FreeBSD-dtrace-dev: 15.0 [FreeBSD-base] FreeBSD-efi-tools-dev: 15.0 [FreeBSD-base] FreeBSD-fetch-dev: 15.0 [FreeBSD-base] FreeBSD-flua-dev: 15.0 [FreeBSD-base] FreeBSD-kerberos-dev: 15.0 [FreeBSD-base] FreeBSD-kyua: 15.0 [FreeBSD-base] FreeBSD-lib9p-dev: 15.0 [FreeBSD-base] FreeBSD-libarchive-dev: 15.0 [FreeBSD-base] FreeBSD-libbegemot-dev: 15.0 [FreeBSD-base] FreeBSD-libblocksruntime-dev: 15.0 [FreeBSD-base] FreeBSD-libbsdstat-dev: 15.0 [FreeBSD-base] FreeBSD-libcasper-dev: 15.0 [FreeBSD-base] FreeBSD-libcompat-dev: 15.0 [FreeBSD-base] FreeBSD-libcompiler_rt-dev: 15.0 [FreeBSD-base] FreeBSD-libcuse-dev: 15.0 [FreeBSD-base] FreeBSD-libdwarf-dev: 15.0 [FreeBSD-base] FreeBSD-libevent1-dev: 15.0 [FreeBSD-base] FreeBSD-libexecinfo-dev: 15.0 [FreeBSD-base] FreeBSD-libipt-dev: 15.0 [FreeBSD-base] FreeBSD-libldns-dev: 15.0 [FreeBSD-base] FreeBSD-libmagic-dev: 15.0 [FreeBSD-base] FreeBSD-libmilter-dev: 15.0 [FreeBSD-base] FreeBSD-libpathconv-dev: 15.0 [FreeBSD-base] FreeBSD-librpcsec_gss-dev: 15.0 [FreeBSD-base] FreeBSD-librss-dev: 15.0 [FreeBSD-base] FreeBSD-libsqlite3-dev: 15.0 [FreeBSD-base] FreeBSD-libthread_db-dev: 15.0 [FreeBSD-base] FreeBSD-libucl-dev: 15.0 [FreeBSD-base] FreeBSD-libvgl-dev: 15.0 [FreeBSD-base] FreeBSD-libvmmapi-dev: 15.0 [FreeBSD-base] FreeBSD-libyaml-dev: 15.0 [FreeBSD-base] FreeBSD-lld: 15.0 [FreeBSD-base] FreeBSD-lldb: 15.0 [FreeBSD-base] FreeBSD-lldb-dev: 15.0 [FreeBSD-base] FreeBSD-local-unbound-dev: 15.0 [FreeBSD-base] FreeBSD-mtree: 15.0 [FreeBSD-base] FreeBSD-natd-dev: 15.0 [FreeBSD-base] FreeBSD-ncurses-dev: 15.0 [FreeBSD-base] FreeBSD-netmap-dev: 15.0 [FreeBSD-base] FreeBSD-openssl-dev: 15.0p2 [FreeBSD-base] FreeBSD-pf-dev: 15.0 [FreeBSD-base] FreeBSD-pmc-dev: 15.0 [FreeBSD-base] FreeBSD-runtime-dev: 15.0 [FreeBSD-base] FreeBSD-set-devel: 15.0 [FreeBSD-base] FreeBSD-set-optional: 15.0 [FreeBSD-base] FreeBSD-smbutils-dev: 15.0 [FreeBSD-base] FreeBSD-sound-dev: 15.0 [FreeBSD-base] FreeBSD-ssh-dev: 15.0 [FreeBSD-base] FreeBSD-tcpd-dev: 15.0 [FreeBSD-base] FreeBSD-toolchain: 15.0 [FreeBSD-base] FreeBSD-toolchain-dev: 15.0 [FreeBSD-base] FreeBSD-ufs-dev: 15.0 [FreeBSD-base] FreeBSD-utilities-dev: 15.0 [FreeBSD-base] FreeBSD-xz-dev: 15.0 [FreeBSD-base] FreeBSD-yp: 15.0 [FreeBSD-base] FreeBSD-zfs-dev: 15.0 [FreeBSD-base] FreeBSD-zlib-dev: 15.0 [FreeBSD-base] Installed packages to be UPGRADED: FreeBSD-devmatch: 15.0 -> 15.0p2 [FreeBSD-base] FreeBSD-kernel-generic: 15.0 -> 15.0p2 [FreeBSD-base] FreeBSD-openssl: 15.0 -> 15.0p2 [FreeBSD-base] FreeBSD-rescue: 15.0 -> 15.0p2 [FreeBSD-base] FreeBSD-runtime: 15.0 -> 15.0p2 [FreeBSD-base] FreeBSD-utilities: 15.0 -> 15.0p1 [FreeBSD-base] Number of packages to be installed: 73 Number of packages to be upgraded: 6 The process will require 458 MiB more space. 190 MiB to be downloaded. Proceed with this action? [y/N]: n
We can overcome that by removing the base/FreeBSD-set-devel dependency on base/FreeBSD-set-base.
This way pkg(8) would not want to reinstall base/FreeBSD-set-devel next time during upgrade.
Before we do that we will backup the pkg(8) SQLite database at /var/db/pkg/local.sqlite file.
root@space:~ # cp /var/db/pkg/local.sqlite /var/db/pkg/local.sqlite.BACKUP root@space:~ # pkg shell sqlite> .header on sqlite> .mode column sqlite> .tables annotation pkg_annotation pkg_provides categories pkg_categories pkg_requires config_files pkg_conflicts pkg_script deps pkg_directories pkg_shlibs_provided directories pkg_groups pkg_shlibs_required files pkg_licenses pkg_users groups pkg_lock provides licenses pkg_lock_pid requires lua_script pkg_lua_script script option pkg_option shlibs option_desc pkg_option_default users packages pkg_option_desc
The two important tables that are in our interest are deps and packages here.
This is how relation between these two tables look in DBeaver tool.

These are the dependencies.
sqlite> select * from deps where origin like '%-set-%'; origin name version package_id ------------------------- -------------------- ------- ---------- base/FreeBSD-set-devel FreeBSD-set-devel 15.0 208 base/FreeBSD-set-minimal FreeBSD-set-minimal 15.0 208 base/FreeBSD-set-optional FreeBSD-set-optional 15.0 208 sqlite> select origin,package_id from deps where origin = 'base/FreeBSD-set-devel'; origin package_id ---------------------- ---------- base/FreeBSD-set-devel 208 sqlite> select id,name from packages where id = 208; id name --- ---------------- 208 FreeBSD-set-base
Now we will DELETE the base/FreeBSD-set-devel dependency on base/FFreeBSD-set-base set.
sqlite> delete from deps where origin = "base/FreeBSD-set-devel"; sqlite> .quit
It can also be done non-interactively this way below.
root@space: # echo 'delete from deps where origin = "base/FreeBSD-set-devel";' | pkg shell
Lets check how pkg(8) upgrade will now behave.
root@space:~ # pkg upgrade Updating FreeBSD-ports repository catalogue... FreeBSD-ports repository is up to date. Updating FreeBSD-ports-kmods repository catalogue... FreeBSD-ports-kmods repository is up to date. Updating FreeBSD-base repository catalogue... FreeBSD-base repository is up to date. All repositories are up to date. Checking for upgrades (9 candidates): 100% Processing candidates (9 candidates): 100% The following 10 package(s) will be affected (of 0 checked): New packages to be INSTALLED: FreeBSD-bmake: 15.0 [FreeBSD-base] FreeBSD-ctf-lib: 15.0 [FreeBSD-base] FreeBSD-set-optional: 15.0 [FreeBSD-base] FreeBSD-yp: 15.0 [FreeBSD-base] Installed packages to be UPGRADED: FreeBSD-devmatch: 15.0 -> 15.0p2 [FreeBSD-base] FreeBSD-kernel-generic: 15.0 -> 15.0p2 [FreeBSD-base] FreeBSD-openssl: 15.0 -> 15.0p2 [FreeBSD-base] FreeBSD-rescue: 15.0 -> 15.0p2 [FreeBSD-base] FreeBSD-runtime: 15.0 -> 15.0p2 [FreeBSD-base] FreeBSD-utilities: 15.0 -> 15.0p1 [FreeBSD-base] Number of packages to be installed: 4 Number of packages to be upgraded: 6 The process will require 1 MiB more space. 63 MiB to be downloaded. Proceed with this action? [y/N]: n
Better.
The pkg(8) no longer wants to reinstall the base/FreeBSD-set-devel set and its packages.
You can also check other Less Known pkg(8) Features here.
So there You have it.
Minimal unsupported FreeBSD 15.0-RELEASE installation in PKGBASE fashion.
To be honest … I was thinking that PKGBASE would be more ‘modular’ to say the least … but seems that packaging/upgrades/integrity are really its goals – not modularity … and in todays world of ‘gigabytes’ and ‘terabytes’ the disk space savings are not that important. Its 2026 … we do not put entire OS into 3.5 inch floppy anymore … nowhere to read or write such floppy either.
Some additional space showing commands.
root@space:~ # df -h / Filesystem Size Used Avail Capacity Mounted on zroot/ROOT/default 7.3G 150M 7.1G 2% / root@space:~ # bectl list BE Active Mountpoint Space Created default NR / 150M 2026-01-31 18:23
List of installed pkg(8) packages.
root@space:~ # pkg info -as | sort -k 2 -h
FreeBSD-set-base-15.0 0.00B
FreeBSD-powerd-15.0 23.3KiB
FreeBSD-certctl-15.0 26.1KiB
FreeBSD-nuageinit-15.0 40.8KiB
FreeBSD-devmatch-15.0 43.8KiB
FreeBSD-hyperv-tools-15.0 43.9KiB
FreeBSD-at-15.0 48.9KiB
FreeBSD-ufs-lib-15.0 50.5KiB
FreeBSD-bzip2-15.0 50.8KiB
FreeBSD-fwget-15.0 54.5KiB
FreeBSD-resolvconf-15.0 56.4KiB
FreeBSD-newsyslog-15.0 57.4KiB
FreeBSD-periodic-15.0 61.6KiB
FreeBSD-bzip2-lib-15.0 80.7KiB
FreeBSD-syslogd-15.0 82.5KiB
FreeBSD-devd-15.0 87.1KiB
FreeBSD-cron-15.0 91.2KiB
FreeBSD-zlib-15.0 99.4KiB
FreeBSD-fetch-15.0 110KiB
FreeBSD-libcasper-15.0 142KiB
FreeBSD-libucl-15.0 142KiB
FreeBSD-dhclient-15.0 150KiB
FreeBSD-efi-tools-15.0 152KiB
FreeBSD-xz-lib-15.0 198KiB
FreeBSD-rc-15.0 406KiB
FreeBSD-geom-15.0 510KiB
FreeBSD-ncurses-15.0 527KiB
FreeBSD-pkg-bootstrap-15.0 579KiB
FreeBSD-ppp-15.0 579KiB
FreeBSD-ncurses-lib-15.0 586KiB
FreeBSD-ufs-15.0 619KiB
FreeBSD-mandoc-15.0 638KiB
FreeBSD-vi-15.0 775KiB
FreeBSD-zoneinfo-15.0 828KiB
FreeBSD-libarchive-15.0 885KiB
FreeBSD-caroot-15.0 1.03MiB
FreeBSD-zfs-15.0 1.25MiB
FreeBSD-vt-data-15.0 1.54MiB
FreeBSD-wpa-15.0 1.59MiB
FreeBSD-kernel-man-15.0 2.63MiB
FreeBSD-clibs-15.0 3.79MiB
FreeBSD-zfs-lib-15.0 4.58MiB
FreeBSD-bootloader-15.0 6.50MiB
FreeBSD-openssl-lib-15.0 7.26MiB
FreeBSD-runtime-15.0 8.81MiB
FreeBSD-firmware-iwm-15.0 13.8MiB
FreeBSD-rescue-15.0 19.0MiB
FreeBSD-locales-15.0 24.3MiB
FreeBSD-utilities-15.0 48.6MiB
pkg-2.4.2 53.4MiB
FreeBSD-kernel-generic-15.0 153MiB
On of the biggest packages is … pkg(8) – and about 70% of that space is the static pkg-static(8) binary.
root@space:~ # pkg info -l pkg | sed 1d | xargs du -smc | sort -n | tail -10
1 /usr/local/share/man/man8/pkg-upgrade.8.gz
1 /usr/local/share/man/man8/pkg-version.8.gz
1 /usr/local/share/man/man8/pkg-which.8.gz
1 /usr/local/share/man/man8/pkg.8.gz
1 /usr/local/share/zsh/site-functions/_pkg
2 /usr/local/lib/libpkg.a
2 /usr/local/lib/libpkg.so.4
2 /usr/local/sbin/pkg
13 /usr/local/sbin/pkg-static
19 total
Lets check the largest one – the FreeBSD kernel package.
This system currently only has zfs.ko kernel module loaded for ZFS support.
root@space:~ # kldstat
Id Refs Address Size Name
1 10 0xffffffff80200000 1f4daa0 kernel
2 1 0xffffffff8214e000 620c10 zfs.ko
Lets check the largest kernel modules we can live without.
root@space:~ # cd /boot/kernel root@space:/boot/kernel # du -skc qat* \ iw* \ if_* \ pmspcv* \ ispfw* \ sfxge* \ ice_ddp* \ hpt27xx* \ cam* \ ipl* \ ocs_fc* \ sctp* 577 qat_200xx_fw.ko 337 qat_4xxx_fw.ko 185 qat_api.ko 69 qat_c2xxx.ko 157 qat_c2xxxfw.ko 577 qat_c3xxx_fw.ko 1413 qat_c4xxx_fw.ko 829 qat_c62x_fw.ko 201 qat_common.ko 625 qat_dh895xcc_fw.ko 105 qat_hw.ko 57 qat.ko 161 iw_cxgbe.ko 133 iwi_bss.ko 129 iwi_ibss.ko 133 iwi_monitor.ko 597 iwm3160fw.ko 537 iwm3168fw.ko 637 iwm7260fw.ko 565 iwm7265Dfw.ko 693 iwm7265fw.ko 1089 iwm8000Cfw.ko 953 iwm8265fw.ko 1385 iwm9000fw.ko 1385 iwm9260fw.ko 233 iwn1000fw.ko 233 iwn100fw.ko 425 iwn105fw.ko 437 iwn135fw.ko 433 iwn2000fw.ko 441 iwn2030fw.ko 109 iwn4965fw.ko 233 iwn5000fw.ko 229 iwn5150fw.ko 281 iwn6000fw.ko 413 iwn6000g2afw.ko 417 iwn6000g2bfw.ko 289 iwn6050fw.ko 41 if_ae.ko 49 if_age.ko 57 if_alc.ko 49 if_ale.ko 9 if_ath.ko 29 if_aue.ko 33 if_axe.ko 33 if_axge.ko 141 if_axp.ko 229 if_bce.ko 37 if_bfe.ko 85 if_bge.ko 221 if_bnxt.ko 49 if_bridge.ko 117 if_bwi.ko 181 if_bwn.ko 1269 if_bxe.ko 45 if_cas.ko 5 if_cc.ko 5 if_ccv.ko 37 if_cdce.ko 29 if_cdceem.ko 25 if_cue.ko 173 if_cxgb.ko 469 if_cxgbe.ko 45 if_cxgbev.ko 5 if_cxl.ko 5 if_cxlv.ko 53 if_dc.ko 21 if_disc.ko 21 if_edsc.ko 237 if_em.ko 145 if_ena.ko 25 if_enc.ko 57 if_enic.ko 25 if_epair.ko 45 if_et.ko 29 if_fwe.ko 37 if_fwip.ko 49 if_fxp.ko 37 if_gem.ko 33 if_gif.ko 41 if_gre.ko 89 if_gve.ko 97 if_iavf.ko 25 if_ic.ko 377 if_ice.ko 1 if_igb.ko 73 if_igc.ko 25 if_infiniband.ko 25 if_ipheth.ko 57 if_ipw.ko 69 if_iwi.ko 781 if_iwlwifi.ko 133 if_iwm.ko 109 if_iwn.ko 185 if_ix.ko 209 if_ixl.ko 1 if_ixlv.ko 157 if_ixv.ko 49 if_jme.ko 29 if_kue.ko 61 if_lagg.ko 33 if_le.ko 33 if_lge.ko 813 if_lio.ko 61 if_malo.ko 93 if_mana.ko 29 if_me.ko 25 if_mgb.ko 33 if_mos.ko 57 if_msk.ko 37 if_muge.ko 105 if_mwl.ko 69 if_mxge.ko 33 if_my.ko 49 if_nfe.ko 41 if_nge.ko 25 if_ntb.ko 113 if_oce.ko 65 if_otus.ko 53 if_ovpn.ko 1317 if_qlnxe.ko 1221 if_qlnxev.ko 69 if_qlxgb.ko 1921 if_qlxgbe.ko 85 if_qlxge.ko 121 if_ral.ko 57 if_re.ko 37 if_rl.ko 69 if_rsu.ko 509 if_rtw88.ko 1441 if_rtw89.ko 65 if_rtwn_pci.ko 97 if_rtwn_usb.ko 29 if_rue.ko 65 if_rum.ko 101 if_run.ko 37 if_sge.ko 37 if_sis.ko 49 if_sk.ko 37 if_smsc.ko 37 if_ste.ko 33 if_stf.ko 37 if_stge.ko 33 if_sume.ko 133 if_ti.ko 45 if_tuntap.ko 53 if_uath.ko 29 if_udav.ko 49 if_upgt.ko 53 if_ural.ko 45 if_ure.ko 33 if_urndis.ko 69 if_urtw.ko 41 if_vge.ko 37 if_vlan.ko 41 if_vmx.ko 41 if_vr.ko 37 if_vte.ko 61 if_vtnet.ko 49 if_vxlan.ko 97 if_wg.ko 93 if_wpi.ko 45 if_xl.ko 69 if_zyd.ko 2033 pmspcv.ko 1329 ispfw.ko 565 sfxge.ko 165 ice_ddp.ko 601 hpt27xx.ko 529 cam.ko 453 ipl.ko 517 ocs_fc.ko 477 sctp.ko 41555 total
Another about 40 MB that can be removed assuming you do not need these kernel modules.
That means we can get even under 100 MB if we remove 40 MB of unused kernel modules and 13 MB of pkg-static(8) binary.
Also keep in mind that You have entire static FreeBSD Rescue System available under /rescue dir.
Not sure how (if anyhow) this helps – but still – wanted to share.
Let me know – if you tried it – if I missed any additional dependencies that should be kept.
EOF