Grub2 setup question

Madison Kelly linux-5ZoueyuiTZhBDgjK7y7TUQ at
Thu Nov 19 21:43:00 UTC 2009

Jamon Camisso wrote:
> Madison Kelly wrote:
>> Hi all,
>>   So I'm back to square one in my understanding of grub with v2. I'm 
>> hoping someone can help me out and/or point me to a decent tutorial on 
>> the new system.
>>   I've picked up an eSATA drive that I've installed CentOS5 on. I did 
>> this with my main Ubuntu 9.10 hard drive unplugged just to be sure 
>> that I didn't accidentally muck it up. So now I am finished the 
>> install and back under Ubuntu.
>>   I've trying to sort out how to add the CentOS install to my Ubuntu's 
>> grub. I dare not randomly try things as I normally would, given the 
>> potential of an unbootable system.
>>  So, given:
>> /dev/sda (hd0,x) = Ubuntu
>> /dev/sdb (hd1,x) = CentOS
>>   What is the safe way of setting up grub with an option to boot off 
>> the second drive?
> The annoying part is that with grub2, partitions start at 1 instead of 0 
> now, e.g. I have a /boot partition that used to be hd0,0 and is now 
> hd0,1 with grub2. Take a bit of getting used to.
> With a /boot partition on /dev/sdb that is the first partition on a 
> disk, entries would look like this (use UUID or LABEL for root= devices 
> to be sure you are using the right disk(s)):
> menuentry "Ubuntu foo" {
>    insmod ext2
>    set root=(hd0,1)
>    linux   /boot/vmlinuz-foo root=/dev/sda1
>    initrd  /boot/initrd.img-foo
> }
> menuentry "Centos foo" {
>    insmod ext2
>    set root=(hd1,1)
>    linux   /boot/vmlinuz-foo root=/dev/sdb1
>    initrd  /boot/initrd-foo.img
> }
> This assumes you have the whole installation on one partition which is 
> likely not the case? If you have a separate /boot partition, each 
> linux/initrd entry doesn't need the leading /boot part. And like I said, 
> use UUIDs or LABELs to keep from getting partitions confused.
> I'd expect your Centos install is using LVM whereas Ubuntu is not, so 
> you'd probably just end up with a busybox shell once the Centos initrd 
> got to the point of switchroot failing :) But it is easy to avoid that 
> problem entirely.
> HTH, Jamon

Thanks Jamon,

   I am trying to avoid directly editing files unless that is what I am 
supposed to do. The reason being that when a new kernel is released now, 
the grub tools rerun and regenerate the boot.cfg file. I see that there 
is now an '/etc/grub.d/' directory that I think I am supposed to work with.

   After sending the email, I came across a doc that said to run 
'update-grub2'. When I do this with the CentOS drive connected, it shows 
it but when I reboot, the entry isn't in grub:

root at lework:/etc/grub.d# update-grub2
Generating grub.cfg ...
Found Debian background: Windbuchencom.tga
Found linux image: /boot/vmlinuz-2.6.31-14-generic
Found initrd image: /boot/initrd.img-2.6.31-14-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows Vista (loader) on /dev/sda1
Found CentOS release 5.3 (Final) on /dev/sdb3

'cat'ing 'grub.cfg' then shows the usual (headers skipped):

### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-14-generic" {
         if [ -n ${have_grubenv} ]; then save_env recordfail; fi
	set quiet=1
	insmod ext2
	set root=(hd0,3)
	search --no-floppy --fs-uuid --set a5597100-8f9c-4dc6-a023-d67f5a5023e6
	linux	/boot/vmlinuz-2.6.31-14-generic 
root=UUID=a5597100-8f9c-4dc6-a023-d67f5a5023e6 ro   quiet splash
	initrd	/boot/initrd.img-2.6.31-14-generic
menuentry "Ubuntu, Linux 2.6.31-14-generic (recovery mode)" {
         if [ -n ${have_grubenv} ]; then save_env recordfail; fi
	insmod ext2
	set root=(hd0,3)
	search --no-floppy --fs-uuid --set a5597100-8f9c-4dc6-a023-d67f5a5023e6
	linux	/boot/vmlinuz-2.6.31-14-generic 
root=UUID=a5597100-8f9c-4dc6-a023-d67f5a5023e6 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/sda1)" {
	insmod ntfs
	set root=(hd0,1)
	search --no-floppy --fs-uuid --set a418a94d18a91ef4
	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 ###

If I am to add your suggestion directly, where would be safest?

The Toronto Linux Users Group.      Meetings:
TLUG requests: Linux topics, No HTML, wrap text below 80 columns

More information about the Legacy mailing list