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