windows entry for grub2

David Benfell benfell at parts-unknown.org
Wed Aug 5 03:15:42 UTC 2015


Quoting Cary <cary at sdf.org>:

> David Benfell wrote:
>> Quoting CeDeROM <cederom at tlen.pl>:
>>
>>> Hello David :-)
>>>
>>> EFI is different than MBR/BIOS. I did not manage to boot Grub2/Linux on my
>>> new EFI machine. Only FreeBSD and Windows starts.
>>
>> It *is* a very weird and poorly documented process and I haven't actually
>> checked to see yet if I succeeded in getting grub to work.
>
> Do you see any output after running grub-mkconfig(8) ?

Yes, and this (but see below for the resulting grub.cfg) looks like  
more trouble:

home-desktop# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found kernel of FreeBSD: /boot/kernel/kernel
Found kernel module directory: /boot/kernel
grub-probe: error: cannot find a GRUB drive for /dev/da0p1.  Check  
your device.map.
grub-probe: error: cannot find a GRUB drive for /dev/da1p1.  Check  
your device.map.
done

I don't have even the first idea why it's looking for /dev/da0p1 or  
/dev/da1p1. I've tried both creating /boot/grub/device.map with just  
an entry for /dev/ada0 and deleting it.

I managed to copy in the EFI directory from my other local system. I'm  
in the middle of stuff right now, so I haven't yet tested this.  
grub-mkconfig does, however, create /boot/grub/grub.cfg which, among  
other things, appears to contain entries (see below) for Windows (and  
Dell) stuff.

And grub-install appears to work:

home-desktop# mount /boot/efi
home-desktop# grub-install --target x86_64-efi /dev/ada0
Installing for x86_64-efi platform.
Installation finished. No error reported.
home-desktop# ls -al /boot/efi/EFI
total 192
drwxr-xr-x  1 root  wheel  16384 Jan 21  2015 .
drwxr-xr-x  1 root  wheel  16384 Dec 31  1979 ..
drwxr-xr-x  1 root  wheel  16384 Jan 21  2015 Boot
drwxr-xr-x  1 root  wheel  16384 Jul  5  2014 Dell
drwxr-xr-x  1 root  wheel  16384 Jan 21  2015 Microsoft
drwxr-xr-x  1 root  wheel  16384 Aug  4 17:01 grub

One thing that is surprising is that I am no longer having to switch  
the partition type back and forth between bios-boot and efi. I don't  
know what changed here--oops.

grub.cfg contains:

home-desktop# cat /boot/grub/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /usr/local/etc/grub.d and settings from /usr/local/etc/default/grub
#

### BEGIN /usr/local/etc/grub.d/00_header ###
insmod part_gpt
if [ -s $prefix/grubenv ]; then
   load_env
fi
set default="0"

if [ x"${feature_menuentry_id}" = xy ]; then
   menuentry_id_option="--id"
else
   menuentry_id_option=""
fi

export menuentry_id_option

if [ x"${gelipassphrase}" != x ]; then
   set pass="$gelipassphrase"
   export pass
fi

if [ "${prev_saved_entry}" ]; then
   set saved_entry="${prev_saved_entry}"
   save_env saved_entry
   set prev_saved_entry=
   save_env prev_saved_entry
   set boot_once=true
fi

function savedefault {
   if [ -z "${boot_once}" ]; then
     saved_entry="${chosen}"
     save_env saved_entry
   fi
}

function load_video {
   insmod vbe
   insmod vga
   insmod video_bochs
   insmod video_cirrus
}

if [ x$feature_default_font_path = xy ] ; then
    font=unicode
else
insmod part_gpt
insmod zfs
if [ x$feature_platform_search_hint = xy ]; then
   search --no-floppy --fs-uuid --set=root  55b27d6ad121af05
else
   search --no-floppy --fs-uuid --set=root 55b27d6ad121af05
fi
     font="/share/grub/unicode.pf2"
fi

if loadfont $font ; then
   if [ x"${grub_platform}" = xpc ] ; then
     set gfxmode=auto
     load_video
     insmod gfxterm
   else
     # EFI
     insmod efi_gop
     insmod gfxterm
     insmod font
     insmod videotest
     insmod videoinfo
     set gfxmode=auto
   fi
fi
terminal_output gfxterm
set timeout=15
### END /usr/local/etc/grub.d/00_header ###

### BEGIN /usr/local/etc/grub.d/10_kfreebsd ###
menuentry 'FreeBSD' --class freebsd --class bsd --class os  
$menuentry_id_option 'kfreebsd-simple-55a8c7840b09a772' {
	insmod part_gpt
	insmod zfs
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root  55a8c7840b09a772
	else
	  search --no-floppy --fs-uuid --set=root 55a8c7840b09a772
	fi
	echo			'Loading kernel of FreeBSD kernel ...'
	kfreebsd		/boot/kernel/kernel
	kfreebsd_loadenv	/boot/device.hints
	insmod part_gpt
	insmod zfs
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root  55a8c7840b09a772
	else
	  search --no-floppy --fs-uuid --set=root 55a8c7840b09a772
	fi
	kfreebsd_module_elf	/boot/kernel/ufs.ko
	set kFreeBSD.vfs.root.mountfrom=ufs:ufsid/55a8c7840b09a772
	set kFreeBSD.vfs.root.mountfrom.options=rw
}
submenu 'Advanced options for FreeBSD' $menuentry_id_option  
'kfreebsd-advanced-55a8c7840b09a772' {
	menuentry 'FreeBSD, with kFreeBSD kernel' --class freebsd --class bsd  
--class os $menuentry_id_option  
'kfreebsd-kernel-advanced-55a8c7840b09a772' {
		insmod part_gpt
		insmod zfs
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root  55a8c7840b09a772
		else
		  search --no-floppy --fs-uuid --set=root 55a8c7840b09a772
		fi
		echo			'Loading kernel of FreeBSD kernel ...'
		kfreebsd		/boot/kernel/kernel
		kfreebsd_loadenv	/boot/device.hints
		insmod part_gpt
		insmod zfs
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root  55a8c7840b09a772
		else
		  search --no-floppy --fs-uuid --set=root 55a8c7840b09a772
		fi
		kfreebsd_module_elf	/boot/kernel/ufs.ko
		set kFreeBSD.vfs.root.mountfrom=ufs:ufsid/55a8c7840b09a772
		set kFreeBSD.vfs.root.mountfrom.options=rw
	}
	menuentry 'FreeBSD, with kFreeBSD kernel (recovery mode)' --class  
freebsd --class bsd --class os $menuentry_id_option  
'kfreebsd-kernel-recovery-55a8c7840b09a772' {
		insmod part_gpt
		insmod zfs
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root  55a8c7840b09a772
		else
		  search --no-floppy --fs-uuid --set=root 55a8c7840b09a772
		fi
		echo			'Loading kernel of FreeBSD kernel ...'
		kfreebsd		/boot/kernel/kernel -s
		kfreebsd_loadenv	/boot/device.hints
		insmod part_gpt
		insmod zfs
		if [ x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root  55a8c7840b09a772
		else
		  search --no-floppy --fs-uuid --set=root 55a8c7840b09a772
		fi
		kfreebsd_module_elf	/boot/kernel/ufs.ko
		set kFreeBSD.vfs.root.mountfrom=ufs:ufsid/55a8c7840b09a772
		set kFreeBSD.vfs.root.mountfrom.options=rw
	}
}

### END /usr/local/etc/grub.d/10_kfreebsd ###

### BEGIN /usr/local/etc/grub.d/10_ktrueos ###
### END /usr/local/etc/grub.d/10_ktrueos ###

### BEGIN /usr/local/etc/grub.d/30_os-prober ###
menuentry "Chainload Disk (hd0 - /EFI/Boot/bootx64.efi)" {
    set root=('hd0,gpt1')
    chainloader /EFI/Boot/bootx64.efi
}

menuentry "Chainload Disk (hd0 - /EFI/Microsoft/Boot/bootmgr.efi)" {
    set root=('hd0,gpt1')
    chainloader /EFI/Microsoft/Boot/bootmgr.efi
}

menuentry "Chainload Disk (hd0 - /EFI/Microsoft/Boot/memtest.efi)" {
    set root=('hd0,gpt1')
    chainloader /EFI/Microsoft/Boot/memtest.efi
}

menuentry "Chainload Disk (hd0 - /EFI/Microsoft/Boot/bootmgfw.efi)" {
    set root=('hd0,gpt1')
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Chainload Disk (hd0 - /EFI/Dell/Boot/bootmgfw.efi)" {
    set root=('hd0,gpt1')
    chainloader /EFI/Dell/Boot/bootmgfw.efi
}

menuentry "Chainload Disk (hd0 - /EFI/Dell/Boot/bootmgr.efi)" {
    set root=('hd0,gpt1')
    chainloader /EFI/Dell/Boot/bootmgr.efi
}

menuentry "Chainload Disk (hd0 - /EFI/Dell/Boot/bootx64.efi)" {
    set root=('hd0,gpt1')
    chainloader /EFI/Dell/Boot/bootx64.efi
}

menuentry "Chainload Disk (hd0 - /EFI/Dell/Boot/memtest.efi)" {
    set root=('hd0,gpt1')
    chainloader /EFI/Dell/Boot/memtest.efi
}

menuentry "Chainload Disk (hd0 - /EFI/grub/grubx64.efi)" {
    set root=('hd0,gpt1')
    chainloader /EFI/grub/grubx64.efi
}

menuentry "Chainload Disk (hd1)" {
    set root=(hd1)
    chainloader +1
}
menuentry "Chainload Disk (hd2)" {
    set root=(hd2)
    chainloader +1
}
### END /usr/local/etc/grub.d/30_os-prober ###

### BEGIN /usr/local/etc/grub.d/40_custom.dist ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /usr/local/etc/grub.d/40_custom.dist ###

### BEGIN /usr/local/etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
   source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
   source $prefix/custom.cfg;
fi
### END /usr/local/etc/grub.d/41_custom ###

### BEGIN /usr/local/etc/grub.d/50_otherbe ###
### END /usr/local/etc/grub.d/50_otherbe ###

I'm hoping for the best. As soon as I get through with all this other  
stuff, I'll attempt a reboot and see if I can actually get into 1)  
grub, and 2) Windows. The latter, as previously mentioned, might fail  
because the files I copied in are from Windows 8.1 rather than Windows  
10.

I do have another Windows 10 installation lying about but I haven't  
found how reliably to get into the firmware to boot it under something  
else that will let me actually copy the files from its EFI partition.  
This other system is a super-cheap Asus laptop and Google is not being  
my friend.

-- 
David Benfell <benfell at parts-unknown.org>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: PGP Digital Signature
URL: <http://lists.freebsd.org/pipermail/freebsd-questions/attachments/20150804/e447c0f6/attachment.bin>


More information about the freebsd-questions mailing list