You are not logged in.

#1 2013-08-27 21:25:32

jabonz2048
Member
Registered: 2013-08-26
Posts: 7

[SOLVED] Having trouble dual booting Windows: normal.mod not found

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 smile

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 smile

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

#2 2013-08-27 21:44:27

cfr
Member
From: Cymru
Registered: 2011-11-27
Posts: 5,675

Re: [SOLVED] Having trouble dual booting Windows: normal.mod not found

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?


How To Ask Questions The Smart Way | Help Vampires

Arch Linux | x86_64 | GPT | EFI boot | grub2 | systemd | LVM2 on LUKS
Lenovo x121e | Intel(R) Core(TM) i3-2367M CPU @ 1.40GHz GenuineIntel | Intel Centrino Wireless-N 1000 | US keyboard with Euro | 320G 7200 RPM Seagate HDD

Offline

#3 2013-08-27 22:29:00

jabonz2048
Member
Registered: 2013-08-26
Posts: 7

Re: [SOLVED] Having trouble dual booting Windows: normal.mod not found

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

#4 2013-08-27 22:54:35

cfr
Member
From: Cymru
Registered: 2011-11-27
Posts: 5,675

Re: [SOLVED] Having trouble dual booting Windows: normal.mod not found

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 smile.

Last edited by cfr (2013-08-27 22:57:30)


How To Ask Questions The Smart Way | Help Vampires

Arch Linux | x86_64 | GPT | EFI boot | grub2 | systemd | LVM2 on LUKS
Lenovo x121e | Intel(R) Core(TM) i3-2367M CPU @ 1.40GHz GenuineIntel | Intel Centrino Wireless-N 1000 | US keyboard with Euro | 320G 7200 RPM Seagate HDD

Offline

#5 2013-08-27 23:21:43

jabonz2048
Member
Registered: 2013-08-26
Posts: 7

Re: [SOLVED] Having trouble dual booting Windows: normal.mod not found

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! smile

Offline

#6 2013-08-27 23:50:37

cfr
Member
From: Cymru
Registered: 2011-11-27
Posts: 5,675

Re: [SOLVED] Having trouble dual booting Windows: normal.mod not found

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)


How To Ask Questions The Smart Way | Help Vampires

Arch Linux | x86_64 | GPT | EFI boot | grub2 | systemd | LVM2 on LUKS
Lenovo x121e | Intel(R) Core(TM) i3-2367M CPU @ 1.40GHz GenuineIntel | Intel Centrino Wireless-N 1000 | US keyboard with Euro | 320G 7200 RPM Seagate HDD

Offline

#7 2013-08-28 12:59:33

jabonz2048
Member
Registered: 2013-08-26
Posts: 7

Re: [SOLVED] Having trouble dual booting Windows: normal.mod not found

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

#8 2013-08-28 17:38:02

the.ridikulus.rat
Member
From: Indiana, USA
Registered: 2011-10-04
Posts: 765

Re: [SOLVED] Having trouble dual booting Windows: normal.mod not found

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

#9 2013-08-29 15:26:35

jabonz2048
Member
Registered: 2013-08-26
Posts: 7

Re: [SOLVED] Having trouble dual booting Windows: normal.mod not found

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 smile

Offline

#10 2013-08-29 18:53:31

jabonz2048
Member
Registered: 2013-08-26
Posts: 7

Re: [SOLVED] Having trouble dual booting Windows: normal.mod not found

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 big_smile 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

#11 2013-09-19 15:14:25

jabonz2048
Member
Registered: 2013-08-26
Posts: 7

Re: [SOLVED] Having trouble dual booting Windows: normal.mod not found

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

Board footer

Powered by FluxBB