[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug #28206] grub2 sees wrong partition table and refuse to boot winxp t
From: |
dimas |
Subject: |
[bug #28206] grub2 sees wrong partition table and refuse to boot winxp through chainloader |
Date: |
Sun, 06 Dec 2009 19:15:40 +0000 |
User-agent: |
Opera/9.80 (X11; Linux i686; U; en) Presto/2.2.15 Version/10.10 |
URL:
<http://savannah.gnu.org/bugs/?28206>
Summary: grub2 sees wrong partition table and refuse to boot
winxp through chainloader
Project: GNU GRUB
Submitted by: dimas000
Submitted on: Sun 06 Dec 2009 07:15:38 PM GMT
Category: Disk & Partition
Severity: Major
Priority: 5 - Normal
Item Group: Software Error
Status: None
Privacy: Public
Assigned to: None
Originator Name:
Originator Email:
Open/Closed: Open
Discussion Lock: Any
Release:
Release: 1.97
Reproducibility: None
Planned Release: None
_______________________________________________________
Details:
i want to describe interesting bug about how grub2 sees discs and partitions.
grub version is 1.97beta4 (default in Ubuntu 9.10)
first of all, user has 3 OSes - Ubuntu 9.10, winXP and vista. grub2 menu
looks like this:
ubuntu ...
....
Windows loader
when users chooses "windows loader" entry, NTLDR boots with option whether to
boot xp or vista. vista boots normally, but if choose xp, computer reboots.
if change boot disc in bios to one which xp installed on - computer boots
with NTLDR and both win-systems boot normally.
if user tries to boot through grub2 console via "set root - chainloader -
boot", we see strange behaviour:
set root=(hd2,1)
chainloader +1
the answer is "error: no such partition"
set root=(hd1,1)
chainloader +1
boot
NTLDR boots, but if choose xp - reboot
set root=(hd2.1) //dot instead of comma!
chianloader +1
boot
NTLDR and both vista and xp boots!!
ok, trying last succesfull way. adding entry to 40_custom with dot used:
set root (hd2,1)
chainloader +1
when user selects new custom entry, the answer is "No partition"
and here is the most interesting thing - what "ls" command of grub2 console
says. it sees 4 HDDs instead of 3! (see real partition table below to
compare)
(hd0) (hd0,5) (hd0,3) (hd0,1) (hd1) (hd1,5) (hd1,1) (hd2) (hd2,5) (hd2,2)
(hd3) (hd3,5) (hd3,1) (fd0)
here is windows entry in grub.cfg:
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows Vista (loader) (on /dev/sdc1)" {
insmod ntfs
set root=(hd2,1)
search --no-floppy --fs-uuid --set 502c43172c42f78c
chainloader +1
}
### END /etc/grub.d/30_os-prober ###
there is no (hd2,1) seen by "ls", but this entry boots to NTLDR! but the same
through console - no. if, according to "ls" answer, try "set root (hd2,2)":
set root=(hd2,2)
chainloader +1
boot
black screen appears with blanking cursor in upper-left, and computer doesn't
respond to anything except reset.
if try "(hd2,5":
set root=(hd2,5)
chainloader +1
boot
it displays this error message:
"A disk read error occured
Press Ctrl+Alt+Del to restart"
but if use "set root=(hd2)" - grub2 boots NTLDR and both vista and xp works.
here is grub.cfg:
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
if [ -s /boot/grub/grubenv ]; then
have_grubenv=true
load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
saved_entry=${prev_saved_entry}
save_env saved_entry
prev_saved_entry=
save_env prev_saved_entry
fi
insmod ext2
set root=(hd0,3)
search --no-floppy --fs-uuid --set 4114af30-8ee5-4708-91df-28c7de457098
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=640x480
insmod gfxterm
insmod vbe
if terminal_output gfxterm ; then true ; else
# For backward compatibility with versions of terminal.mod that don't
# understand terminal_output
terminal gfxterm
fi
fi
if [ ${recordfail} = 1 ]; then
set timeout=-1
else
set timeout=10
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/white
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-14-generic" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,3)
search --no-floppy --fs-uuid --set 4114af30-8ee5-4708-91df-28c7de457098
linux /boot/vmlinuz-2.6.31-14-generic
root=UUID=4114af30-8ee5-4708-91df-28c7de457098 ro quiet splash
initrd /boot/initrd.img-2.6.31-14-generic
}
menuentry "Ubuntu, Linux 2.6.31-14-generic (recovery mode)" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
insmod ext2
set root=(hd0,3)
search --no-floppy --fs-uuid --set 4114af30-8ee5-4708-91df-28c7de457098
linux /boot/vmlinuz-2.6.31-14-generic
root=UUID=4114af30-8ee5-4708-91df-28c7de457098 ro single
initrd /boot/initrd.img-2.6.31-14-generic
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows Vista (loader) (on /dev/sdc1)" {
insmod ntfs
set root=(hd2,1)
search --no-floppy --fs-uuid --set 502c43172c42f78c
chainloader +1
}
### 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 "Microsoft Windows XP Professional RU (on /dev/sdс1)" {
set root=(hd2)
chainloader +1
}
### END /etc/grub.d/40_custom ###
here is device.map (as we see, everything is right in it):
(hd0) /dev/sda
(hd1) /dev/sdb
(hd2) /dev/sdc
here is list of REAL discs and partitions (sudo fdisk -l):
/dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x9a88315d
//boot drive in bios
Устр-во Загр Начало Конец Блоки
Id Система
/dev/sda1 * 1 3010 24177793+ 7 HPFS/NTFS ###
vista
/dev/sda2 3011 37587 277739752+ 5 Extended
/dev/sda3 37588 38913 10651095 83 Linux ###
ubuntu
/dev/sda5 3011 37587 277739721 7 HPFS/NTFS
/dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xc28db982
##### just file storage, no systems here #####
Устр-во Загр Начало Конец Блоки
Id Система
/dev/sdb1 2 30342 243714082+ f W95 расшир.
(LBA)
/dev/sdb2 30343 60801 244661917+ 7 HPFS/NTFS
/dev/sdb5 2 30342 243714051 7 HPFS/NTFS
/dev/sdc: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0x17cec2b9
Устр-во Загр Начало Конец Блоки
Id Система
/dev/sdc1 * 1 2550 20482843+ 7 HPFS/NTFS ###
xp
/dev/sdc2 2551 19457 135805477+ f W95 расшир.
(LBA)
/dev/sdc5 2551 19457 135805446 7 HPFS/NTFS ###
just files
after adding this to 40_custom:
menuentry "Microsoft Windows Loader (on /dev/sdс1)" {
set root=(hd2)
chainloader +1
}
everything boots!
the problem started from installation of Ubuntu 9.10, grub2 wasn't
reinstalled after. on grub-legacy everything was fine.
+for russian-speaking developers: you can read original story here -
http://forum.ubuntu.ru/index.php?topic=73097.0
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?28206>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/
- [bug #28206] grub2 sees wrong partition table and refuse to boot winxp through chainloader,
dimas <=