Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Jun 2025 00:41:56 +0200
From:      =?UTF-8?Q?Olivier_Cochard=2DLabb=C3=A9?= <olivier@freebsd.org>
To:        freebsd-current <freebsd-current@freebsd.org>
Subject:   Broken ZFS boot with current (including June 2025 stabilization week)
Message-ID:  <CA%2Bq%2BTcoApLJVL_YX7RveN%2Bj9Fomy_meU70nUKnTmC=GwmKjHZQ@mail.gmail.com>

index | next in thread | raw e-mail

[-- Attachment #1 --]
I've noticed that a critical library, such as libtpool.so.2 used by ZFS, is
now installed in /usr/lib instead of /lib. This prevents a freshly
installed system from booting properly.
Here is the relevant storage layout triggering it (/usr in a dataset):
NAME USED AVAIL REFER MOUNTPOINT
zroot 87.4G 126G 96K /zroot zroot/ROOT 57.4G 126G 96K none
zroot/ROOT/15.0-CURRENT-20250623.082321 57.3G 126G 24.2G /
zroot/ROOT/default 3.38M 126G 11.2G /
zroot/tmp 102M 126G 102M /tmp
zroot/usr 29.6G 126G 96K /usr
(etc.)

The bootloader can mount /, but once that is done, it calls ZFS to mount
other directories (/usr, /tmp, etc.). The issue is that ZFS requires
libtpool.so.2, which is not mounted at this stage. Consequently, the system
ends up with the error:
Mounting local filesystems:. ld-elf.so.1: Shared object "libtpool.so.2" not
found, required by "zfs"

Regarding upgraded systems, you will have the old libtpool.so.2 in /lib and
the new one in /usr/lib. The old library is the one that allows the system
to finish booting, so it should not be deleted.
Regards,
Olivier

[-- Attachment #2 --]
<div dir="ltr">I&#39;ve noticed that a critical library, such as libtpool.so.2 used by ZFS, is now installed in /usr/lib instead of /lib. This prevents a freshly installed system from booting properly.<br>Here is the relevant storage layout triggering it (/usr in a dataset):<br><font face="monospace">NAME USED AVAIL REFER MOUNTPOINT<br>zroot 87.4G 126G 96K /zroot zroot/ROOT 57.4G 126G 96K none<br>zroot/ROOT/15.0-CURRENT-20250623.082321 57.3G 126G 24.2G /<br>zroot/ROOT/default 3.38M 126G 11.2G /<br>zroot/tmp 102M 126G 102M /tmp<br>zroot/usr 29.6G 126G 96K /usr<br>(etc.)</font><br><br>The bootloader can mount /, but once that is done, it calls ZFS to mount other directories (/usr, /tmp, etc.). The issue is that ZFS requires libtpool.so.2, which is not mounted at this stage. Consequently, the system ends up with the error:<br><font face="monospace">Mounting local filesystems:. ld-elf.so.1: Shared object &quot;libtpool.so.2&quot; not found, required by &quot;zfs&quot;</font><br><br>Regarding upgraded systems, you will have the old libtpool.so.2 in /lib and the new one in /usr/lib. The old library is the one that allows the system to finish booting, so it should not be deleted.<br>Regards,<br>Olivier</div>
home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2Bq%2BTcoApLJVL_YX7RveN%2Bj9Fomy_meU70nUKnTmC=GwmKjHZQ>