On 08/10/2011 10:26 PM, Jordan Uggla wrote:
On Wed, Aug 10, 2011 at 8:01 PM, robert<[email protected]> wrote:
Ok. Here's the problem.
Running a debian-based o/s, in /etc/grub.d/40_custom (set to rwx-r_x-r_x)
I have this:
#!/bin/sh
exec tail -n +3 $0
menuentry "Sysrescue" {
set root=(hd1,2)
linux /sysrcd/rescuecd subdir=sysrcd
initrd /sysrcd/initram.igz
}
then
$sudo update-grub
well and good. "Sysrescue" shows up in the grub boot menu
However, when I select that menu item, I get:
error: hd1,2 cannot get C/H/S values
error: you need to load the kernel first
but, when I boot to a grub prompt and issue the following commands:
grub>set root(hd1,2)
The syntax is "set root=(hd1,2)" not "set root(hd1,2)" (not to mention
that it's more reliable to search by UUID). This could be the source
of the difference between executing the menu entry and using the grub
shell (by having a typo that causes $root not to be changed you are
likely allowing it to keep its current value, which is likely the
correct one and "(hd1,2)" is incorrect). Even if that is not the exact
difference you are almost certainly typing something different at the
grub shell compared to what is in your grub.cfg as there should be no
difference in the way they these lines would be interpreted (other
than needing to run "boot" explicitly at the grub shell).
grub>linux /sysrcd/rescuecd subdir=sysrcd
grub>initrd /sysrcd/initram.igz
grub>boot
everything goes swimmingly. machine boots to the requested o/s
any suggestions?
Thanks in advance.
Robert
My previous post set up a hypothetical using hd1,2. I have corrected that to
reflect the exact parameters of the problem ... so ... hd1,5 it should be.
<<<set root(hd1,5)>>> was a 'typo' in my previous e-mail. I am issuing the
command correctly. I boot to grub from a thumbdrive and enter:
grub> set root=(hd1,5)
grub> linux /sysrcd/rescuecd subdir=sysrcd
grub> initrd /sysrcd/initram.igz
grub> boot
and THAT works, the machine boots to the requested o/s
however, as mentioned earlier, THE VERY SAME lines in my generated grub menu
produce:
error: hd1,5 cannot get C/H/S values
error: you need to load the kernel first
Here's a copy-paste of the relevant lines from grub.cfg:
### BEGIN /etc/grub.d/40_custom ###
exec tail -n +3 $0
menuentry "Sysrescue" {
set root=(hd1,5)
linux /sysrcd/rescuecd subdir=sysrcd setkmap=us
initrd /sysrcd/initram.igz
}
### END /etc/grub.d/40_custom ###
/etc/default/grub contains:
#GRUB_DISABLE_LINUX_UUID=true
so apparently update-grub uses UUID. however, grub.cfg DOES NOT contain UUID.
should I explicitly place UUID in file /etc/grub.d/40_custom?? if so, what is
the syntax?
any further suggestions?
thanks.
robert
_______________________________________________
Help-grub mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-grub