Date: Sun, 02 Nov 2025 12:41:30 +0000 From: bugzilla-noreply@freebsd.org To: pkg@FreeBSD.org Subject: [Bug 290393] 15.0-BETA4: pkg blocks boot process waiting for console input Message-ID: <bug-290393-32340-2iE5UCxeIF@https.bugs.freebsd.org/bugzilla/> In-Reply-To: <bug-290393-32340@https.bugs.freebsd.org/bugzilla/>
index | next in thread | previous in thread | raw e-mail
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=290393 --- Comment #4 from Jimmy Olgeni <olgeni@FreeBSD.org> --- Made a quick experiment to get some more info. This put it back into shape: ========== diff --git a/usr.sbin/freebsd-update/freebsd-update.sh b/usr.sbin/freebsd-update/freebsd-update.sh index 7815502dba39..85ed026b6aae 100644 --- a/usr.sbin/freebsd-update/freebsd-update.sh +++ b/usr.sbin/freebsd-update/freebsd-update.sh @@ -667,9 +667,15 @@ upgrade_check_kmod_ports() { local report local w - if ! pkg -N 2>/dev/null; then - echo "Skipping kernel modules check. pkg(8) not present." - return + # Check if the real pkg binary exists (not just the bootstrap wrapper) + # /usr/sbin/pkg is the bootstrap wrapper, /usr/local/sbin/pkg is the real pkg + if [ ! -x /usr/local/sbin/pkg ]; then + echo "pkg is not bootstrapped. Attempting to bootstrap..." + if ! env ASSUME_ALWAYS_YES=yes pkg bootstrap >/dev/null 2>&1; then + echo "Failed to bootstrap pkg. Skipping kernel modules check." + return + fi + echo "pkg successfully bootstrapped." fi # Most modules are in /boot/modules but we should actually look @@ -1102,13 +1108,23 @@ IDS_check_params () { # Return 0 if the system is managed using pkgbase, 1 otherwise. check_pkgbase() { - # Packaged base requires that pkg is bootstrapped. - if ! pkg -r ${BASEDIR} -N >/dev/null 2>/dev/null; then + # Check if the real pkg binary exists (not just the bootstrap wrapper) + # /usr/sbin/pkg is the bootstrap wrapper, /usr/local/sbin/pkg is the real pkg + if [ ! -x "${BASEDIR}/usr/local/sbin/pkg" ]; then + # pkg is not bootstrapped, attempt to bootstrap it non-interactively + if ! env ASSUME_ALWAYS_YES=yes pkg -r ${BASEDIR} bootstrap >/dev/null 2>&1; then + return 1 + fi + fi + + # Verify pkg is functional + if ! pkg -N >/dev/null 2>&1; then return 1 fi + # uname(1) is used by pkg to determine ABI, so it should exist. # If it comes from a package then this system uses packaged base. - if ! pkg -r ${BASEDIR} which /usr/bin/uname >/dev/null; then + if ! pkg -r ${BASEDIR} which /usr/bin/uname >/dev/null 2>&1; then return 1 fi return 0 ========== Then I found the issue! :D root@freebsd-15:/usr/sbin # pkg -N pkg: pkg is not installed root@freebsd-15:/usr/sbin # pkg -N -r / pkg: pkg is not installed root@freebsd-15:/usr/sbin # pkg -r / -N The package management tool is not yet installed on your system. Do you want to fetch and install it now? [y/N]: -N is not happy about the positioning of -r, so the "pkg -r ${BASEDIR} -N" is causing the hang. -- You are receiving this mail because: You are on the CC list for the bug.home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-290393-32340-2iE5UCxeIF>
