Can't boot Ubuntu from Slackware with lilo
I installed Ubuntu Studio without grub.
Then i added this to my lilo.conf : image = /mnt/hd/sda5/boot/vmlinuz-2.6.27-7-generic root = /dev/sda5 label = UbuntuStudio initrd = /mnt/hd/sda5/boot/initrd.img-2.6.27-7-generic read-only It worked fine until i updated Ubuntu. Now i can't boot neither new or old kernel... I only get a can't find /root error message, and a shell. A detail : my first hd is IDE, so Slack recognize it as hda, and Ubu, sda. Putting root = /dev/sdb5 gives me Fatal: Illegal 'root=' specification: /dev/sdb5 But it worked anyway with root = /dev/sda5 . Any idea ? |
Look at your /ect/fstab file. See it your ubuntu partition is listed correctly. Also check lilo to see if it was changed durning the update.
|
Quote:
- BIOS boot time (lilo menu) - LILO configuration (Slack is booted) - Ubuntu boot time (Ubuntu is booted) At BIOS boot time when lilo displays the boot menu, it uses BIOS disk drive ID's such as 0x80, 0x81, etc. to refer to drives and it uses the sector addresses of files to load the files. The device names in Linux are no longer used by lilo after "lilo" has been installed / updated using the "lilo" configuration command. The "image" and "initrd" options are evaluated when lilo is configured using the "lilo" command in Slack. After you make ANY changes to "lilo.conf" you have to run the "lilo" command and that essentially parses the configuration and writes it to the boot sector for lilo. The "image" and "initrd" information is converted to a hard disk ID 0x80, 0x81, 0x82, etc and sector addresses on the disks. The names of devices are only important for the "lilo" configuration command and are not used by "lilo" when it actually loads the files. So you want "image" and "initrd" to use the device names as Slack knows them NOT Ubuntu. That allows the "lilo" configuration command to figure out the corresponding drive ID and sector addresses for each file. The "root" option is passed to the Linux kernel (Ubuntu) and must be from the perspective of Ubuntu device naming for the root device. The "root" option is not used by "lilo" at all. It is just stored along with other kernel parameters (text) passed to the kernel. Ubuntu is the kernel in this case so "root" must be the correct information for Ubuntu. Ubuntu will use the root device name plus the "read-only" option for mounting the root device AFTER the Ubuntu kernel has initialized. If the root device driver in Ubuntu is a module then you have to make sure that the "initrd" image file loads that module and any other required modules. The standard "initrd" image for Ubuntu probably loads the required driver unless you have an unusual hard disk controller card/chip. The "initrd" image does things from the standpoint of Ubuntu and not Slack and must be built using Ubuntu. Here is my suggestion for a possible solution. Code:
image = /mnt/hd/hda5/boot/vmlinuz-2.6.27-7-generic To clarify how this whole process works here is basically what happens. =========== Slack You edit the "lilo.conf" file using Slack You run the "lilo" command in Slack The "lilo" command converts devices/files to disk ID/sector The "lilo" command writes the "lilo" boot sectors =========== BIOS You start up the computer Lilo loads and displays the menu Lilo uses the disk drive ID and sector information to load the Ubuntu kernel into memory. Lilo uses the disk drive ID and sector information to load the initrd image (RAM disk filesystem) into memory. =========== Ubuntu Kernel Lilo starts the Ubuntu kernel specifying the kernel parameters provided, including information for "root=" and the RAM disk filesystem. Ubuntu mounts and runs the init script for the "initrd" filesystem image. The "initrd" script loads required modules and does other things to make the root device accessible. The "initrd" script mounts the root device (read-only) and then starts the Ubuntu "init" task that completes the initialization of the system. It IS important which operating system you use to run the "lilo" command because device names used in "image" and "initrd" must be for that operating system (not the one ultimately being booted). You may need a different "lilo.conf" depending on which operating system will update the lilo configuration with "lilo". |
I read something similar here. It seems that Ubuntu made some changes that affected this person while using grub.
http://www.linuxquestions.org/questi...ptions-689878/ It's something about a change in inode size. Since you only did an upgrade, maybe this is not your problem. |
Quote:
If one downloads "lilo" or "grub" from somewhere else one has to be sure that they support the 256-bit inodes or format the partitions using 128-byte inodes. I have found that many programs such as Paragon Hard Disk Backup and the ext2ifs driver for Windows do not support the 256-byte inodes. I always format partitions using 128-byte inodes. That is a little bit difficult since it has to be done before using the Slackware "setup" program. mke2fs -j -I 128 /dev/hda2 The "/dev/hda2" has to be replaced with the correct Linux device name for the partition. The "-j" option enables journalling (ext3 filesystem) and it can be omitted to format using no journal (ext2). The "-I" option specifies the size of inodes. One can verify the inode size using this command. tune2fs -l /dev/hda2 After formatting the partition then Slackware can be installed using the normal "setup" command. Just make sure not to reformat the partition during "setup". Use the existing partition as is. I'm not sure exactly how to get a command prompt in Ubuntu setup but it should be possible to do the same thing. It may be easier just to create and format the Ubuntu partition using Slackware and then install Ubuntu to the existing partition. |
Last time I was brave enough to try fedora and ubunu got into something similar. I searched this forums and came across something that helped. I don't remember at the moment how to get that info, but here's a copy from that old lilo.conf. Notice the UUID was what fixed it for me.
Good luck Code:
# Ubuntu |
Quote:
|
Quote:
|
Quote:
ls -l /dev/disk/by-uuid/ |
Thanks all for your help and suggestions.
It appears Ubuntu can boot again, due to some magic, because i came back to my initial setup after many tweaks. I remember i used to launch lilo twice with an old machine... Maybe i have to do the same here. Thanks again. |
Hi,
Quote:
Quote:
A user will create the 'initrd' to reflect the installed system. Code:
excerpt from SlackwareŽ 12.2 Code:
The idea is that the kernel will utilize the 'initrd' ( a temporary filesystem) that a user creates to load the filesystem along with required modules to support the actions. Any modules that are not defined directly but are need with a directed module will be loaded. The kernel does the actions not the 'initrd'. As for lilo it will utilize the 'lilo.conf' file to create IPL that could be written to the 'MBR' or the superblock. This will depend on how someone wants to control their system. A bootloader of some sort must be used as the IPL to pass control to the SPL. That SPL could be grub, lilo or io.sys that will depend on configuration of the original bootloader. Chainloading anyone? Again don't take offense but your definitions need polish. :) |
All times are GMT -5. The time now is 06:54 AM. |