bug-grub
[Top][All Lists]
Advanced

[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 &amp; 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/





reply via email to

[Prev in Thread] Current Thread [Next in Thread]