[Bug 221550] kern.bootfile returns only /kernel on mips64 (ERL) platform

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Tue Aug 15 23:07:16 UTC 2017


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=221550

            Bug ID: 221550
           Summary: kern.bootfile returns only /kernel on mips64 (ERL)
                    platform
           Product: Base System
           Version: CURRENT
          Hardware: mips
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: lidl at FreeBSD.org

The kern.bootfile sysctl returns just /kernel on an ERL, using the stock
configuration where the boot filesystem (a FAT32 filesystem) is mounted
into /boot.

root at erl2-148: df
Filesystem  1K-blocks    Used    Avail Capacity  Mounted on
/dev/da0s2a  28810359 9965044 16540487    38%    /
devfs               1       1        0   100%    /dev
/dev/da0s1     262008  181248    80760    69%    /boot
fdescfs             1       1        0   100%    /dev/fd
tmpfs         2062880       4  2062876     0%    /tmp

>From the perspective of the uboot system, this is correct, as my uboot
boot command is similar to the ones referenced at rtfm.net:

setenv boot_freebsd 'fatload usb 0 $loadaddr kernel/kernel ; bootoctlinux
$loadaddr coremask=0x3'

However, since the uboot boot partition is mounted as /boot, the sysctl answer
is wrong.

Why do I care?

Because the logic that backs up the old kernel to kernel.old when running
'make installkernel' doesn't work right - my existing kernel is always
destroyed and the new kernel installed as /boot/kernel.

e.g.:

thiskernel=`sysctl -n kern.bootfile` ;  if [ ! "`dirname "$thiskernel"`" -ef
/boot/kernel ] ; then  chflags -R noschg /boot/kernel ;  rm -rf /boot/kernel ; 
rm -rf /usr/lib/debug/boot/kernel ;  else  if [ -d /boot/kernel.old ] ; then 
chflags -R noschg /boot/kernel.old ;  rm -rf /boot/kernel.old ;  fi ;  mv
/boot/kernel /boot/kernel.old ;  if [ -n "/usr/lib/debug" -a  -d
/usr/lib/debug/boot/kernel ]; then  rm -rf /usr/lib/debug/boot/kernel.old ;  mv
/usr/lib/debug/boot/kernel /usr/lib/debug/boot/kernel.old ;  fi ;  sysctl
kern.bootfile=/boot/kernel.old/"`basename "$thiskernel"`" ;  fi
mkdir -p /boot/kernel
install -p -m 555 -o root -g wheel kernel /boot/kernel/

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list