Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Basically, after I reinstalled grub-legacy (grub1), it expected to have menu.lst at /boot/boot/grub/menu.lst instead of /boot/grub/menu.lst

Thus, when I reboot the system, it stops at the grub command console and I need to manually run configfile /grub/menu.lst to load the configuration file.

I have temporarily symlinked /boot/boot/grub/menu.lst to /boot/grub/menu.lst, but I want to know why reinstalling grub made it look for menu.lst in /boot/boot instead of /boot

One thing I can think of is that I have separate partitions for /boot and /, though I'm not sure whether that makes a difference.

The commands I used to reinstall grub were:

bash> grub
grub> root (hd1,0)
grub> setup (hd1)

where:

  • hd1,0 is my /boot
  • hd1,1 is my /

Before reinstalling grub-legacy, I had grub2 installed.

share|improve this question
add comment

1 Answer

up vote 2 down vote accepted

As you suspected the reason is the separate "boot" partition. The right place for menu.lst (e.g. where grub-legacy expects to find it) is in the /boot/grub folder on the "boot" partition: (hd1,0)/boot/grub. When you mount your "boot" partition into /boot folder of the RootFS, this will translate to: /boot/boot/grub/menu.lst.

Instead of linking /boot/boot/grub/menu.lst (right place) to /boot/grub/menu.lst (wrong place), move your whole /boot/grub folder to /boot/boot/grub. This way the /boot/grub folder of your "boot" partition will be in the right place. After that you may symlink /boot/boot/grub to /boot/grub for convenience.

In short: grub-legacy expects to find /boot/grub folder with menu.lst on your "boot" partition. Which in turn is mounted in /boot folder of your RootFS partition.

I hope I managed to explain this clearly enough.

share|improve this answer
    
Thank you for the answer! Though, I'm looking for a solution for grub to look in /boot/grub for menu.lst. The reason is "update-grub" is still expecting to find menu.lst in /boot/grub. –  Patrick Jun 25 '12 at 23:18
    
I believe the default location is compiled (hardcoded) in the grub binary. You may be able to check it with this command: strings $(which grub) | grep menu.lst (this may prove me wrong on my answer, if so, I may edit the answer with more details) –  0xAF Jun 25 '12 at 23:27
    
@Patrick, the usual solution I've seen is for the "/boot" partition's root directory to have a symlink "boot" pointing to itself, i.e. cd /boot; ln -s . boot. –  mlp Jun 26 '12 at 1:19
    
@0xAF, you're right. Grub binary looks for menu.lst in two locations 1) /menu.lst 2) /boot/grub/menu.lst, but I didn't see /boot/boot/grub/menu.lst ... –  Patrick Jun 26 '12 at 15:29
    
@mlp, thank you for the workaround, but this doesn't solve the mystery why after reinstall grub, it looks for menu.lst in /boot/boot/grub/menu.lst –  Patrick Jun 26 '12 at 15:30
show 1 more comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.