Hi all,
First of all I would like to thank the GRUB people for their continued efforts at making our (the common users lives easier), the debian upstream packagers who do the hard job of building something like this & then finally the MOTU (Members of The Universe) in Ubuntu. If the three of them had not come together we would not have a working GRUB 2 (actually 1.95+20070604-)
I am sure some of you guys followed my earlier installation tutorial http://www.techenclave.com/forums/grub-2-installation-92883.html . This is a follow-up on that.
So now in the old GRUB legacy menu you should have atleast 4 items :-
Clicking on chainload to GRUB 2 will give you nothing. Its an empty place.
To have stuff in this we need to edit grub.cfg file.
Now do the following to make sure the grub.cfg file is editable
We are making the file editable by the root only. This is done so we can make changes to the file. Later on, after the changes are done if required or needed, we can chmod it back to 444 for added security. (Kinda like the write-protect but that's putting it pretty simply ).
Now before we proceed, its always a good idea to make a backup of the file in case we make some mistake or do something wrong & then can come back & see.
Hence do :-
The copying is done in the same directory so one does not need to look around for the file.
Now these are the contents of the grub.cfg file :-
Now the first thing is to delete the unifont part simply because there is an issue with the unifont & unifont-bin in gutsy . For others distros, this step is unchanged unless their unifont & unifont-bin has the same bug :bleh:
https://bugs.launchpad.net/ubuntu/+source/unifont/+bug/122565
So now it appears like this :-
What this does is simply remove the graphical progres bar (throbber) of ubuntu booting. At this point we can live with that.
Another thing is to compare the linux stuff from menu.lst to grub.cfg & see if the kernel path is the same or not. look for the title linux in menu.lst
ok now there are some changes, the root as shown by menu.lst shows as hd0, 1 while the one in grub.cfg shows as hd1,1 . Simply change all of them to the existing entry shown in menu.lst. The simplest reason is because if legacy grub works then grub.cfg should work too.
So now grub.cfg looks like :-
Now make sure that the file is saved. Reboot to Grub legacy, Chainload to Grub 2 & boot your kernel.
Obviously the instructions are of this point in time where GRUB 2 is unstable. When it hits stable things would be much more easier. Of course there wouldn't be any menu.lst but lot of great things are expected from it for sure. (Otherwise lot of people wasted lot of valuable time and energy)
Few interesting points to ponder/chew on:-
As always, may you live in intersting times :bleh:
References :-
First of all I would like to thank the GRUB people for their continued efforts at making our (the common users lives easier), the debian upstream packagers who do the hard job of building something like this & then finally the MOTU (Members of The Universe) in Ubuntu. If the three of them had not come together we would not have a working GRUB 2 (actually 1.95+20070604-)
I am sure some of you guys followed my earlier installation tutorial http://www.techenclave.com/forums/grub-2-installation-92883.html . This is a follow-up on that.
So now in the old GRUB legacy menu you should have atleast 4 items :-
Code:
Chainload to GRUB 2
Debian GNU/Linux, kernel 2.6.22-6-generic
Debian GNU/Linux, kernel 2.6.22-6-generic (recovery only)
Debian GNU/Linux, kernel memtest86+
Clicking on chainload to GRUB 2 will give you nothing. Its an empty place.
To have stuff in this we need to edit grub.cfg file.
Code:
sudo update-grub
Updating /boot/grub/grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.22-6-generic
Found initrd image: /boot/initrd.img-2.6.22-6-generic
Found memtest86+ image: /boot/memtest86+.bin
done
Now do the following to make sure the grub.cfg file is editable
Code:
ls -la /boot/grub/grub.cfg
-r--r--r-- 1 root root 1299 2007-06-28 02:30 /boot/grub/grub.cfg
sudo chmod 644 /boot/grub/grub.cfg
ls -la /boot/grub/grub.cfg
-rw-r--r-- 1 root root 1299 2007-06-28 02:30 /boot/grub/grub.cfg
We are making the file editable by the root only. This is done so we can make changes to the file. Later on, after the changes are done if required or needed, we can chmod it back to 444 for added security. (Kinda like the write-protect but that's putting it pretty simply ).
Now before we proceed, its always a good idea to make a backup of the file in case we make some mistake or do something wrong & then can come back & see.
Hence do :-
Code:
sudo cp /boot/grub/grub.cfg /boot/grub/grub.cfgbackup
The copying is done in the same directory so one does not need to look around for the file.
Now these are the contents of the grub.cfg file :-
Code:
#
# DO NOT EDIT THIS FILE
#
# It is automaticaly generated by /usr/sbin/update-grub using templates from /etc/grub.d
# and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
set default=0
set timeout=100
set root=(hd1,1)
font (hd1,1)/usr/share/grub/unifont.pff
set gfxmode=640x480
insmod gfxterm
insmod vbe
terminal gfxterm
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/10_hurd ###
### END /etc/grub.d/10_hurd ###
### BEGIN /etc/grub.d/10_linux ###
menuentry "Debian GNU/Linux, linux 2.6.22-7-generic" {
linux (hd1,1)/boot/vmlinuz-2.6.22-7-generic root=/dev/sdb1 ro
initrd (hd1,1)/boot/initrd.img-2.6.22-7-generic
}
menuentry "Debian GNU/Linux, linux 2.6.22-7-generic (single-user mode)" {
linux (hd1,1)/boot/vmlinuz-2.6.22-7-generic root=/dev/sdb1 ro single
initrd (hd1,1)/boot/initrd.img-2.6.22-7-generic
}
menuentry "Debian GNU/Linux, linux 2.6.22-6-generic" {
linux (hd1,1)/boot/vmlinuz-2.6.22-6-generic root=/dev/sdb1 ro
initrd (hd1,1)/boot/initrd.img-2.6.22-6-generic
}
menuentry "Debian GNU/Linux, linux 2.6.22-6-generic (single-user mode)" {
linux (hd1,1)/boot/vmlinuz-2.6.22-6-generic root=/dev/sdb1 ro single
initrd (hd1,1)/boot/initrd.img-2.6.22-6-generic
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
linux (hd1,1)/boot/memtest86+.bin
}
### END /etc/grub.d/20_memtest86+ ###
Now the first thing is to delete the unifont part simply because there is an issue with the unifont & unifont-bin in gutsy . For others distros, this step is unchanged unless their unifont & unifont-bin has the same bug :bleh:
https://bugs.launchpad.net/ubuntu/+source/unifont/+bug/122565
So now it appears like this :-
Code:
#
# DO NOT EDIT THIS FILE
#
# It is automaticaly generated by /usr/sbin/update-grub using templates from /etc/grub.d
# and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
set default=0
set timeout=100
set root=(hd1,1)
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/10_hurd ###
### END /etc/grub.d/10_hurd ###
### BEGIN /etc/grub.d/10_linux ###
menuentry "Debian GNU/Linux, linux 2.6.22-7-generic" {
linux (hd1,1)/boot/vmlinuz-2.6.22-7-generic root=/dev/sdb1 ro
initrd (hd1,1)/boot/initrd.img-2.6.22-7-generic
}
menuentry "Debian GNU/Linux, linux 2.6.22-7-generic (single-user mode)" {
linux (hd1,1)/boot/vmlinuz-2.6.22-7-generic root=/dev/sdb1 ro single
initrd (hd1,1)/boot/initrd.img-2.6.22-7-generic
}
menuentry "Debian GNU/Linux, linux 2.6.22-6-generic" {
linux (hd1,1)/boot/vmlinuz-2.6.22-6-generic root=/dev/sdb1 ro
initrd (hd1,1)/boot/initrd.img-2.6.22-6-generic
}
menuentry "Debian GNU/Linux, linux 2.6.22-6-generic (single-user mode)" {
linux (hd1,1)/boot/vmlinuz-2.6.22-6-generic root=/dev/sdb1 ro single
initrd (hd1,1)/boot/initrd.img-2.6.22-6-generic
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
linux (hd0,1)/boot/memtest86+.bin
}
### END /etc/grub.d/20_memtest86+ ###
What this does is simply remove the graphical progres bar (throbber) of ubuntu booting. At this point we can live with that.
Another thing is to compare the linux stuff from menu.lst to grub.cfg & see if the kernel path is the same or not. look for the title linux in menu.lst
Code:
# title Linux
# root (hd0,1)
# kernel /vmlinuz root=/dev/hda2 ro
ok now there are some changes, the root as shown by menu.lst shows as hd0, 1 while the one in grub.cfg shows as hd1,1 . Simply change all of them to the existing entry shown in menu.lst. The simplest reason is because if legacy grub works then grub.cfg should work too.
So now grub.cfg looks like :-
Code:
#
# DO NOT EDIT THIS FILE
#
# It is automaticaly generated by /usr/sbin/update-grub using templates from /etc/grub.d
# and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
set default=0
set timeout=100
set root=(hd1,1)
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/10_hurd ###
### END /etc/grub.d/10_hurd ###
### BEGIN /etc/grub.d/10_linux ###
menuentry "Debian GNU/Linux, linux 2.6.22-7-generic" {
linux (hd0,1)/boot/vmlinuz-2.6.22-7-generic root=/dev/sdb1 ro
initrd (hd0,1)/boot/initrd.img-2.6.22-7-generic
}
menuentry "Debian GNU/Linux, linux 2.6.22-7-generic (single-user mode)" {
linux (hd0,1)/boot/vmlinuz-2.6.22-7-generic root=/dev/sdb1 ro single
initrd (hd0,1)/boot/initrd.img-2.6.22-7-generic
}
menuentry "Debian GNU/Linux, linux 2.6.22-6-generic" {
linux (hd0,1)/boot/vmlinuz-2.6.22-6-generic root=/dev/sdb1 ro
initrd (hd0,1)/boot/initrd.img-2.6.22-6-generic
}
menuentry "Debian GNU/Linux, linux 2.6.22-6-generic (single-user mode)" {
linux (hd0,1)/boot/vmlinuz-2.6.22-6-generic root=/dev/sdb1 ro single
initrd (hd0,1)/boot/initrd.img-2.6.22-6-generic
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
linux (hd0,1)/boot/memtest86+.bin
}
### END /etc/grub.d/20_memtest86+ ###
Now make sure that the file is saved. Reboot to Grub legacy, Chainload to Grub 2 & boot your kernel.
Obviously the instructions are of this point in time where GRUB 2 is unstable. When it hits stable things would be much more easier. Of course there wouldn't be any menu.lst but lot of great things are expected from it for sure. (Otherwise lot of people wasted lot of valuable time and energy)
Few interesting points to ponder/chew on:-
- Please note that these guys also have mentioned about GNU hurd. If you look at grub legacy you never see the mention of GNU Hurd. Is it a sign of times, only time will tell
- Also I have not taken into account is XP or any previous windows variant. When you run sudo update-grub it would be automatically found & entered in grub.cfg , the only change one has to make is the location as outlined above.
- Vista however has some issues (they don't want/like GRUB so they have made it difficult).
- There is also work going on so the BIOS is by-passed & one can use GRUB to switch between hard disks as well as OSes. They have met with limited success. What is lacking atm is documentation, have some stability & test-cases (in userland world) where people can play with & give reports on what works & what doesn't so the programmers can identify where things are not working . But all of this is gonna take some time & effort.
As always, may you live in intersting times :bleh:
References :-
- GRUB mailing list :- grub-devel Archives
- GNU Hurd :- The GNU Hurd - GNU Project - Free Software Foundation (FSF) Wikipedia entry Another wikipedia entry
- GRUB 2 site :- GRUB 2
- GSOC 2007 GRUB entry :- GNU GRUB GSOC 2007 page