Bug 202710

Summary: freebsd-update fails to properly detect kernel directory when booted via grub
Product: Base System Reporter: pbd
Component: binAssignee: freebsd-bugs (Nobody) <bugs>
Status: New ---    
Severity: Affects Some People CC: emaste, h2+fbsdports, pbd
Priority: ---    
Version: 10.2-RELEASE   
Hardware: Any   
OS: Any   

Description pbd 2015-08-28 12:04:53 UTC
The /usr/sbin/freebsd-update tool is using output from "sysctl -n kern.bootfile" command when detecting kernel directory. Unfortunately, when booted from GRUB, this returns only "/kernel" (although the system is in fact booted from /boot/kernel/kernel). This results in backup_kernel() function of freebsd-update copying entire / into /boot/kernel.old, thus failing freebsd-update install process.

I used grub2-2.00_7 and it's default option for booting FreeBSD (10.2, amd64), as autoconfigured by /usr/local/etc/grub.d/10_kfreebsd. The autoconfigured boot menu entry is:

menuentry 'FreeBSD' --class freebsd --class bsd --class os $menuentry_id_option 'kfreebsd-simple-5512983a8bce973b' {
        insmod part_msdos
        insmod ufs2
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root  5512983a8bce973b
        else
          search --no-floppy --fs-uuid --set=root 5512983a8bce973b
        fi
        echo                    'Loading kernel of FreeBSD kernel ...'
        kfreebsd                /boot/kernel/kernel 
        kfreebsd_loadenv        /boot/device.hints
        insmod part_msdos
        insmod ufs2
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root  5512983a8bce973b
        else
          search --no-floppy --fs-uuid --set=root 5512983a8bce973b
        fi
        kfreebsd_module_elf     /boot/kernel/ufs.ko
        set kFreeBSD.vfs.root.mountfrom=ufs:ufsid/5512983a8bce973b
        set kFreeBSD.vfs.root.mountfrom.options=rw
}
Comment 1 Ed Maste freebsd_committer freebsd_triage 2016-12-20 22:03:39 UTC
*** Bug 207377 has been marked as a duplicate of this bug. ***