I just installed quite a lot of 12.10 updates, was prompted to reboot, and then found that I couldn't boot.
Grub2 – Fix ‘Error: File Not Found’ Followed by ‘Grub Rescue>’ After Update
grub2grubrescue
Related Solutions
Grub has a small core image that is loaded at boot time. The core image dynamically loads modules which provide further functionality. i386-pc/normal.mod not found
indicates that grub can not load normal.mod, which is a grub module that provides the normal command. To load normal.mod you need to tell grub where it is. To do this you can use the grub command-line (aka Rescue Console). Grub will start the command-line if there is a problem booting, or you can start it manually by holding the shift key as grub starts (to force show the grub menu), and then pressing the 'c' key.
Using grub you can explore the drives, partitions, and filesystems. You need to:
- locate the grub install using ls or search.file
- set grub variables $prefix and $root
- load and run the normal module
Example
The following is just an example. You will need to adapt it to your local drive and partition setup.
where is normal.mod? look in some likely locations
grub> search.file /i386-pc/normal.mod
error: no such device: /i386-pc/normal.mod
grub> search.file /grub/i386-pc/normal.mod
error: no such device: /grub/i386-pc/normal.mod
grub> search.file /boot/grub/i386-pc/normal.mod
hd0,msdos1
If you get "Unknown command 'search.file'"
this means that the search.file command is not available. This is probably because you are at the grub rescue>
prompt and not grub>
prompt. In this case you can still carry on and use the ls
command and your knowledge of your partition layout to find normal.mod
.
found it at (hd0,msdos1)
grub> ls (hd0,msdos1)/boot/grub/i386-pc/normal.mod
normal.mod
why did grub not find it?
check $prefix - absolute location of the grub directory
(this is set when grub is installed by grub-install)
grub> echo $prefix
(hd0,msdos2)/boot/grub
check $root - default device for paths that do not include a device
grub initially sets this to the device from $prefix
grub> echo $root
hd0,msdos2
root and prefix are pointing to the wrong partition (hd0,msdos2)
set $root and $prefix to the partition where we found normal.mod (hd0,msdos1)
grub> set root=(hd0,msdos1)
grub> set prefix=(hd0,msdos1)/boot/grub
load and run normal module
grub> insmod normal
grub> normal
Some other commands that may be helpful
ls list all devices and partitions
grub> ls
(hd0) (hd0,msdos5) (hd0,msdos1)
ls partition
grub> ls (hd0,msdos1)
Partition hd0,msdos1: Filesystem type ext* - Last modification time
2014-05-08 15:56:38 Thursday, UUID c864cbdd-a2ba-43a4-83a3-66e305adb1b6 -
Partition start at 1024KiB - Total size 6290432Kib
ls filesystem (note / at end)
grub> ls (hd0,msdos1)/
lost+found/ etc/ media/ bin/ boot/ dev/ home/ lib/ lib64/ mnt/ opt/ proc/
root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ vmlinuz initrd.img cdrom/
look inside /boot/grub
presence of i386-pc directory means this is a BIOS install
presence of x86_64-efi directory would indicate an EFI install
grub> ls (hd0,msdos1)/boot/grub
i386-pc/ locale/ fonts/ grubenv grub.cfg
- Grub Manual: Troubleshooting: GRUB only offers a rescue shell covers the basic recovery method described above
- For available commands and variables see Grub Manual: The list of command-line and menu entry commands and Special environment variables.
- It may be possible to load other missing modules e.g. if the
search
orsearch.file
commands are not recognised set$prefix
correctly and then doinsmod search
, forls
doinsmod ls
etc. Runfind /boot/grub -name *.mod
on a working Linux install to see all of the dynamically loaded Grub modules. - You can always just boot from external media and re-install Grub.
=> Syslinux MBR (4.04 and higher) is installed in the MBR of /dev/sda. => Syslinux MBR (4.04 and higher) is installed in the MBR of /dev/sdb. sda1: __________________________________________________________________________ File system: ntfs Boot sector type: Windows 7/2008: NTFS Boot sector info: No errors found in the Boot Parameter Block. Operating System: Boot files: /bootmgr /boot/bcd sda2: __________________________________________________________________________ File system: ntfs Boot sector type: Windows 7/2008: NTFS Boot sector info: No errors found in the Boot Parameter Block. Operating System: Boot files: /bootmgr /Boot/BCD sda3: __________________________________________________________________________ File system: ntfs Boot sector type: Windows Vista: NTFS Boot sector info: No errors found in the Boot Parameter Block. Operating System: Windows 7 Boot files: /bootmgr /Windows/System32/winload.exe sda4: __________________________________________________________________________ File system: Extended Partition Boot sector type: - Boot sector info: sda5: __________________________________________________________________________ File system: ntfs Boot sector type: Windows 7/2008: NTFS Boot sector info: According to the info in the boot sector, sda5 starts at sector 2048. Operating System: Boot files: sdb1: __________________________________________________________________________ File system: vfat Boot sector type: SYSLINUX 4.07 2013-07-25 Boot sector info: Syslinux looks at sector 58112 of /dev/sdb1 for its second stage. SYSLINUX is installed in the /uui directory. No errors found in the Boot Parameter Block. Operating System: Boot files: /boot/grub/grub.cfg /casper/vmlinuz.efi.signed /EFI/BOOT/grubx64.efi
The boot-repair log clearly shows that there is no sign of installed Ubuntu on your HDD. Maybe your Ubuntu partition got formatted or something else. So please try to reinstall Ubuntu on a separate partition wherever you want.
Best Answer
Use Boot Repair to fix your bootloader.
Open a terminal, and add the Boot Repair PPA
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
Install Boot Repair
sudo apt-get install -y boot-repair && boot-repair
Launch and use, see https://help.ubuntu.com/community/Boot-Repair#Using_Boot-Repair for more details