Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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
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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .