I'm using a FS laptop where Lubuntu, Xubuntu, and Puppy Linux are already installed. I'm using a GRUB boot loader which works as expected with the above.

I thought to give Debian a try, so I installed it in a free partition of the HD. As I didn't want to mess my existing GRUB configuration, I didn't install the GRUB during installation, thinking to do it manually afterwards. However, I can't get it to work. I've added this on my menu.lst:

title Debian
uuid 5329c69c-c525-4e0e-8026-3418a0db8fb2
kernel vmlinuz root=/dev/sda6 ro
initrd initrd.img

'Debian' shows up, but when I select it I get a "Filename must be either an absolute pathname or blocklist" error.

Could someone give me a clue as to what's wrong with the menu.lst entry? I've made sure the uuid code is right (as is the partition number).

  • Doesn't one of the 3 installations, the one that manages /boot, have an update-grub that scans all the partitions and creates the correct menu entry?
    – Anthon
    Jan 10 '16 at 11:07
  • I tried that, and it gives an entry similar as my manual one, but omitting the last line initrd intrd.img which I found odd. Trying to run it anyway, I get a "kernel panic-not syncing: VFS: unable to mount root fs on unknown block(0,0)" error. Jan 10 '16 at 11:25

I'm answering my own question in case anyone else is trying to figure this one out. I discovered my two errors: a) the path wasn't right - I should've used kernel /boot/vmlinuz b) the kernel & initrd names were not right. The following is now working:

title Debian
  uuid 5329c69c-c525-4e0e-8026-3418a0db8fb2
  kernel /boot/vmlinuz-3.16.0-4-586 root=/dev/sda6 ro
  initrd /boot/initrd.img-3.16.0-4-586

You need to specify the absolute path to the kernel file. An absolute path starts at the root directory and starts with a /. If /boot is on the root partition, that means

kernel /boot/vmlinuz

If /boot is on a separate partition, that means

kernel /vmlinuz

The same goes for initrd.img.

In addition, you may need a root statement, to point Grub to the partition where those files are. In Grub legacy, that's something like root (hd0,5) for what Linux calls /dev/sda6 (Grub numbers partitions from 0, Linux numbers partitions from 1). The uuid directive plays the same role, if your version of Grub supports it.

In a normal Debian installation, /boot/vmlinuz and /boot/initrd.img are symbolic links that point to a file called vmlinuz-VERSION (resp. initrd.img-VERSION), where VERSION designates the latest kernel version that's installed. Depending on the configuration, those symbolic may be in the root directory instead (but that doesn't work if /boot is in a separate partition). Grub can read symbolic links (as long as they're within the same partition), so you can use them to avoid hard-coding the kernel version number in the bootloader configuration.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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