PDA

View Full Version : [ubuntu] Trouble with Grub 2



lilgman
February 5th, 2010, 08:11 AM
HI, I'm a linux newbie . I have Ubuntu 9.10, PuppyLinux431 and Windows XP on a Toshiba laptop. I like Ubuntu, but the speed of PuppyLinux is addictive, so that was my default boot until I upgraded Ubuntu which included an upgrade to Grub2. My problem: Grub2 doesn't recognise PuppyLinux. Using information from https://help.ubuntu.com/community/Grub2?action=fullsearch&context=180&value=linkto%3A%22Grub2%22 I have made an executable file named 07_Puppy in /etc/grub.d and did update-grub from root. Still no luck. I can boot PuppyLinux from the grub command line using the following commands:

set root=(hd0,6)
linux /puppy431/vmlinuz
initrd /puppy431/initrd.gz
boot

Just before grub displays the boot menu, I think I see a very brief message about a syntax error, but it's gone before I can read it.

Here is the contents of my 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,6)
search --no-floppy --fs-uuid --set 9478553b-735d-47ea-a39b-25f3a2ae5f46
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/07_Puppy ###
# 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 "PuppyLinux 4.3.1" {
set root=(hd0,6)
linux /puppy431/vmlinuz
initrd /puppy431/initrd.gz}
### END /etc/grub.d/07_Puppy ###

### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-16-generic" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,6)
search --no-floppy --fs-uuid --set 9478553b-735d-47ea-a39b-25f3a2ae5f46
linux /boot/vmlinuz-2.6.31-16-generic root=UUID=9478553b-735d-47ea-a39b-25f3a2ae5f46 ro quiet splash
initrd /boot/initrd.img-2.6.31-16-generic
}
menuentry "Ubuntu, Linux 2.6.31-16-generic (recovery mode)" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
insmod ext2
set root=(hd0,6)
search --no-floppy --fs-uuid --set 9478553b-735d-47ea-a39b-25f3a2ae5f46
linux /boot/vmlinuz-2.6.31-16-generic root=UUID=9478553b-735d-47ea-a39b-25f3a2ae5f46 ro single
initrd /boot/initrd.img-2.6.31-16-generic
}
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,6)
search --no-floppy --fs-uuid --set 9478553b-735d-47ea-a39b-25f3a2ae5f46
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=9478553b-735d-47ea-a39b-25f3a2ae5f46 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,6)
search --no-floppy --fs-uuid --set 9478553b-735d-47ea-a39b-25f3a2ae5f46
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=9478553b-735d-47ea-a39b-25f3a2ae5f46 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 "Microsoft Windows XP Home Edition (on /dev/sda1)" {
insmod ntfs
set root=(hd0,1)
search --no-floppy --fs-uuid --set 8a6c3da26c3d8a49
drivemap -s (hd0) ${root}
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.
### END /etc/grub.d/40_custom ###

Can anyone help me figure out why Grub2 doesn't see Puppy and let me boot it from the menu? Thanks!

oldfred
February 5th, 2010, 05:23 PM
I do not know enough about puppy to tell if there is any thing else wrong, but the } must be on a separate line.

menuentry "PuppyLinux 4.3.1" {
set root=(hd0,6)
linux /puppy431/vmlinuz
initrd /puppy431/initrd.gz} <= delete this
} <=should be here see all the other entries

darkod
February 5th, 2010, 06:28 PM
Why is set root=(hd0,6) for both ubuntu and puppy? Are you running puppy as file from a folder within ubuntu root, or as separate install?
Unless puppy is installed separately with its own root partition (swap can be shared), you can't expect grub2 to pick it up with update-grub. Because you don't actually have it installed. I know you can run it from cd, so I guess you can run it from file too, but I think grub2 would be able to pick it up only when it's installed on its own partition.

PS. If you are impressed by the speed, puppy would run even faster if installed fully, instead of from a file. Have you considered that?

lilgman
February 6th, 2010, 06:43 AM
Thank you so much for the replies. I am guessing that oldfred identified the problem with the }. I eventually reinstalled Grub legacy and am using my old menu changed to pick up the updated kernel for Ubuntu. Everything works great again. Yes, darkod, Puppy is in the /puppy431 folder in the root of (hd0,6). Grub 1.5 recognizes it fine there, and I could boot it from the Grub2 command line. I'll have to experiment again with Grub2, but for now I'm satisfied that everything is working.

Once Puppy loads into RAM at bootup there is no waiting. I suppose theoretically having it in it's own partition would make it even faster, but it wouldn't be noticeable.

Thanks again for the help!

lilgman