You are not logged in.
Hello every one, I'm a Gentoo user who wants to try something different. So I thought I'd install Arch on my new laptop.
Anyhow, this is my first proper UEFI install on real hardware. So I might be doing something stupid here, but I've searched all over the forums and the internet and can't seem to find anything similar about it. So please excuse me if there is already a similar or very similar topic
Since I'm new to Arch I followed the Beginner's guide. Everything went fine, install was very quick compared to Gentoo phew... anyhow there came the tricky part, the bootloader install, as I am a real total noob with EFI. I followed the instructions carefully.
The result is: I now have 4 entries in my GRUB menu, 2 are Arch and its fallback, one is Windows 8 detected by osprober, and one is my custom Windows 8 with the usual chain loading setup that i've always used (with some fixes found on the 'net). Arch boots fine, but Windows doesn't; I get booted down to the recovery console, with an error that GRUB cannot find /boot/grub/x86_64-efi/normal.mod. Even though the file is of course existing. I tried to "insmod part_gpt" and others, and it couldn't find any of them, except part_msdos. Yeah I know, it's weird. Unfortunately I need to use Windows sometimes for some programs like Guitar Rig which need a good native audio connection.
My opinion is that there must be some place where the paths are not correct. But I keep looking at the config files and I can't find anything wrong with them...
The system had a Linux Mint 14 install on it previously but it bricked itself while updating to Mint 15. And I only really had Mint on there because of the automatic bootloader setup. Which worked well up to when I got rid of Mint (it was on /dev/sda8, where Arch is now). I hope it doesn't complicate the matter.
My EFI system partition is /dev/sda2. There are so many partitions because it's a Samsung laptop and there's a partition for samsung recovery, one for windows 8 recovery, and so on... The only "real" partitions are /dev/sda2 for EFI, /dev/sda4 for Windows, and /dev/sda8 for Arch.
Here are some command outputs to show you what my system is like. I hope they are helpful. If there's anything missing I shall supplement it of course!
Thanks in advance
sudo efibootmgr -v
BootCurrent: 0002
Timeout: 0 seconds
BootOrder: 0002,0001,0006,0003,0000
Boot0000* Windows Boot Manager Vendor(99e275e7-75a0-4b37-a2e6-c5385e6c00cb,)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}....................
Boot0001* linuxmint HD(2,fa000,96000,f718c38a-c1d8-4c72-9b59-e098594840a2)File(\EFI\linuxmint\grubx64.efi)
Boot0002* arch_grub HD(2,fa000,96000,f718c38a-c1d8-4c72-9b59-e098594840a2)File(\EFI\arch_grub\grubx64.efi)
Boot0003* Windows Boot Manager HD(2,fa000,96000,f718c38a-c1d8-4c72-9b59-e098594840a2)File(\EFI\Microsoft\Boot\bootmgfw.efi)
Boot0006* Windows Boot Manager HD(6,3a186001,200000,d41549d3-0b93-40ef-4173-636c65706975)File(\EFI\Microsoft\Boot\bootmgfw.efi)
mount
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sys on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
dev on /dev type devtmpfs (rw,nosuid,relatime,size=2997764k,nr_inodes=749441,mode=755)
run on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755)
/dev/sda8 on / type ext4 (rw,relatime,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /sys/fs/cgroup type tmpfs (rw,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=35,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
tmpfs on /tmp type tmpfs (rw)
mqueue on /dev/mqueue type mqueue (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
/dev/sda2 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=100)
[james@James-Laptop ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 499M 0 part
├─sda2 8:2 0 300M 0 part /boot
├─sda3 8:3 0 128M 0 part
├─sda4 8:4 0 342.4G 0 part
├─sda5 8:5 0 23.8G 0 part
├─sda6 8:6 0 1G 0 part
├─sda7 8:7 0 977K 0 part
├─sda8 8:8 0 91.8G 0 part /
└─sda9 8:9 0 5.9G 0 part [SWAP]
[james@James-Laptop ~]$ cat /boot/grub/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
insmod part_gpt
insmod part_msdos
if [ -s $prefix/grubenv ]; then
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="0"
fi
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi
export menuentry_id_option
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 {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}
if [ x$feature_default_font_path = xy ] ; then
font=unicode
else
insmod part_gpt
insmod ext2
set root='hd0,gpt8'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt8 --hint-efi=hd0,gpt8 --hint-baremetal=ahci0,gpt8 7e2ee467-3fd3-41b3-8c1f-62cc45f2d098
else
search --no-floppy --fs-uuid --set=root 7e2ee467-3fd3-41b3-8c1f-62cc45f2d098
fi
font="/usr/share/grub/unicode.pf2"
fi
if loadfont $font ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=en_GB
insmod gettext
fi
terminal_input console
terminal_output gfxterm
set timeout=5
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Arch Linux, with Linux core repo kernel' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-true-7e2ee467-3fd3-41b3-8c1f-62cc45f2d098' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 ECB7-2436
else
search --no-floppy --fs-uuid --set=root ECB7-2436
fi
echo 'Loading Linux core repo kernel ...'
linux /vmlinuz-linux root=UUID=7e2ee467-3fd3-41b3-8c1f-62cc45f2d098 rw quiet
echo 'Loading initial ramdisk ...'
initrd /initramfs-linux.img
}
menuentry 'Arch Linux, with Linux core repo kernel (Fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-fallback-7e2ee467-3fd3-41b3-8c1f-62cc45f2d098' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 ECB7-2436
else
search --no-floppy --fs-uuid --set=root ECB7-2436
fi
echo 'Loading Linux core repo kernel ...'
linux /vmlinuz-linux root=UUID=7e2ee467-3fd3-41b3-8c1f-62cc45f2d098 rw quiet
echo 'Loading initial ramdisk ...'
initrd /initramfs-linux-fallback.img
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/sda2)' --class windows --class os $menuentry_id_option 'osprober-efi-ECB7-2436' {
insmod part_gpt
insmod fat
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 ECB7-2436
else
search --no-floppy --fs-uuid --set=root ECB7-2436
fi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/40_custom ###
# 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.
menuentry "Windows 8" {
insmod part_gpt
insmod fat
insmod search_fs_uuid
insmod chain
search --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 ECB7-2436
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
### END /etc/grub.d/40_custom ###
### BEGIN /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 /etc/grub.d/41_custom ###
### BEGIN /etc/grub.d/60_memtest86+ ###
### END /etc/grub.d/60_memtest86+ ###
Last edited by jabonz2048 (2013-09-19 15:07:34)
Offline
Welcome to Arch.
What command did you use to install grub to disk?
Was your EFI partition mounted at /boot when you executed grub-install and grub-mkconfig?
CLI Paste | How To Ask Questions
Arch Linux | x86_64 | GPT | EFI boot | refind | stub loader | systemd | LVM2 on LUKS
Lenovo x270 | Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz | Intel Wireless 8265/8275 | US keyboard w/ Euro | 512G NVMe INTEL SSDPEKKF512G7L
Offline
Hello cfr,
Thanks for your reply!
Yes, I had /dev/sda2, my EFI partition, mounted at /boot when I did grub-install and grub-mkconfig. I also had the efivars filesystem unmounted, and ran rmmod plus modprobe on efivars as written.
umount /sys/firmware/efi/efivars
# modprobe -r efivars
# modprobe efivars
My command was exactly the same as the beginner's guide, and it was
grub-install --efi-directory=/boot --bootloader-id=arch_grub --recheck
Now looking at that command, I am wondering, should it have been "--efi-directory=/boot/EFI" or something similar like that? But the fact that Arch boots and runs fine kind of shows the bootloader did indeed install correctly... Or partially at least.
Maybe an ls -l of some of my /boot directories might be useful. Thanks!
ls -l /boot
total 16352
drwxr-xr-x 39 root root 4096 Nov 17 2012 Boot
-r-xr-xr-x 1 root root 398156 Jul 25 2012 bootmgr
-rwxr-xr-x 1 root root 1 Jun 2 2012 BOOTNXT
drwxr-xr-x 6 root root 4096 Aug 26 15:28 EFI
drwxr-xr-x 6 root root 4096 Aug 26 17:39 grub
-rwxr-xr-x 1 root root 10351180 Aug 26 14:19 initramfs-linux-fallback.img
-rwxr-xr-x 1 root root 2185900 Aug 26 14:18 initramfs-linux.img
-rwxr-xr-x 1 root root 3782368 Aug 21 11:53 vmlinuz-linux
[james@James-Laptop teamviewer]$ ls -l /boot/EFI
total 16
drwxr-xr-x 2 root root 4096 Aug 26 15:28 arch_grub
drwxr-xr-x 2 root root 4096 May 22 20:53 Boot
drwxr-xr-x 2 root root 4096 May 22 20:53 linuxmint
drwxr-xr-x 3 root root 4096 Nov 17 2012 Microsoft
[james@James-Laptop teamviewer]$ ls -l /boot/grub/
total 48
drwxr-xr-x 2 root root 4096 Aug 26 15:28 fonts
-rwxr-xr-x 1 root root 4767 Aug 26 17:39 grub.cfg
-rwxr-xr-x 1 root root 4063 Aug 26 14:22 grub.cfg.example
-rwxr-xr-x 1 root root 1024 Aug 26 15:28 grubenv
drwxr-xr-x 2 root root 4096 Aug 26 15:28 locale
drwxr-xr-x 3 root root 4096 Aug 26 15:28 themes
drwxr-xr-x 2 root root 20480 Aug 26 15:28 x86_64-efi
Offline
No --efi-directory=/boot is definitely correct if that's where your EFI partition is mounted. You would use /boot/efi only if you were mounting it in the traditional place i.e. /boot/efi.
Does https://wiki.archlinux.org/index.php/Grub#With_Windows help at all?
EDIT: I think you are trying to use Windows's boot loader rather than boot Windows. That's why I think maybe the stanza is wrong. But if that was autogenerated by grub, it really should get it right...
Note that I should say before this point that I know nothing whatsoever about Windows. Even less, in fact, that I know about Linux .
Last edited by cfr (2013-08-27 22:57:30)
CLI Paste | How To Ask Questions
Arch Linux | x86_64 | GPT | EFI boot | refind | stub loader | systemd | LVM2 on LUKS
Lenovo x270 | Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz | Intel Wireless 8265/8275 | US keyboard w/ Euro | 512G NVMe INTEL SSDPEKKF512G7L
Offline
Uhm I thought that was how it was supposed to work in UEFI, basically just pass the ball to Windows's bootloader and let it do its thing.
I did read that page quite thoroughly as it's my first time with GRUB and UEFI and I know it was going to be a lot of new stuff for me. Specifically, I mostly followed https://wiki.archlinux.org/index.php/Gr … I-GPT_mode but the custom entry I created, as you see, is extremely similar to the autogenerated config from osprober. It gives the same error message. And the error... I mean, grub _does_ find the Windows boot loader. I tried changing the Microsoft bootloader's path from /EFI/Microsoft/ etc to a gibberish path and the error message changed to be related to that.
The only thing I can think of is something path related. As in, in the error message, it is looking for "/boot/grub/x86_64-efi/normal.mod". And all the other paths in the config file are specified relative to /boot, like vmlinuz, /EFI/Microsoft, and so on. Maybe it is looking for an absolute path inside a relative root, so of course it can't find "/boot/boot/grub" etc.. But that's just a hypothesis. And I wouldn't know where to correct such a fault.
Should I try re-installing grub, or would that just complicate things?
Thanks for your help!
Offline
Can you boot Windows from one or other of the entries in the EFI boot menu? Just to be sure everything is still OK with Windows itself.
I think you are right about chainloading the boot loader, though. See http://rodsbooks.com/efi-bootloaders/grub2.html. This is written by somebody who knows this stuff inside out and his example does it that way. I think you do probably need to set root in your stanza but that's already in the automated one and you say that doesn't boot either.
I'm assuming you have secure boot disabled or else you wouldn't be able to boot anything at all.
EDIT: I would try adding echo statements in the Windows stanza so you can test if it is getting anywhere or not.
Last edited by cfr (2013-08-27 23:52:57)
CLI Paste | How To Ask Questions
Arch Linux | x86_64 | GPT | EFI boot | refind | stub loader | systemd | LVM2 on LUKS
Lenovo x270 | Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz | Intel Wireless 8265/8275 | US keyboard w/ Euro | 512G NVMe INTEL SSDPEKKF512G7L
Offline
No, I can't boot Windows by selecting any of the other boot options in the actual EFI menu (as in, selecting them in the EFI "BIOS", I know what you mean). This stopped working as soon as I installed Linux Mint. I just assumed that was normal, as Windows was actually booting fine from GRUB at the time. Man, I wish I had saved the grub.cfg file... I don't have the laptop with me at the moment, I'll post the actual error it gives. As far as I remember it then referred back to GRUB and the same error with normal.mod, which kind of makes me worried...
Yes of course I have secure boot disabled. Thanks for that link, it was a very interesting read! I could try setting the root directly instead of calling "search" like the automated one does. I'll also add the echoes so I can see exactly where it stops.
I just wanted to point out the tool I used to get Windows to boot last time when I had Mint installed: https://help.ubuntu.com/community/Boot-Repair
I don't know if it's worth giving it a try, but I would be able to set up an UEFI system manually instead on relying on the tool's "magic".
Thanks again!
Offline
Remove all the "Windows Boot Manager" entries and then boot into Windows manually. Windows will recreate the correct entry in the firmware boot manager. Then reinstall grub using grub-install and then regenerate grub.cfg. In essence, reset the whole boot loader stuff.
Offline
Do you mean I should remove the entries in /boot/EFI on the EFI system partition? That sounds odd that's why I'm confirming. And by "boot windows manually", I think you mean booting it from the GRUB rescue shell, is that correct? By pointing it to /EFI/Microsoft/boot/bootmgfw.efi ?
Sorry about that but I've never done any kind of bootloader tinkering with EFI before
Offline
Ok so... booting the windows boot entry directly from the bios does give the same error. normal.mod not found. Does that mean I've borked the original windows bootloader, overwritten it with grub or something, or is it normal?
I have tried also booting the other windows files like bootx64.efi. They give the same error.
I also tried booting windows from the grub recovery console. And the results were interesting: I tried browsing around the drive. what I can see by doing "ls -l /" on the recovery console is all of sda8, the main Arch partition, but /boot is empty, as if it weren't mounted at all. I'm not sure if that is normal, I can understand it can't find files in /boot/grub if it doesn't see /boot as mounted.
I've always avoided having a separate boot partition exactly because of issues like these but EFI forces me to have it so.
Any ideas how this could be repaired? I hope this last update added some good info.
Thanks again!
Offline
Hello everyone, just an update, for whoever else is having this same problem: I just guess my system was a bit messed up.
Anyhow I solved it by doing the laptop's recovery, that gave me a fresh Windows 8 boot back. Then I installed Linux Mint, in a small partition. After that, I installed Boot-Repair, launched it with default settings and "yes" when it asks if it wants to fix the Windows bootloader. After that, I have a working dual boot, with Grub starting up and all the options working. Hassle free. Then I just installed Arch Linux into another partition and ran update-grub from Linux Mint. Easy tri-boot with Windows, Linux stable and Linux edge (Arch), the best of all :-)
Thanks everybody for their help anyway, I know mine was a bit of an edge case.
Offline