Multi-Boot Problems - Slackware, Ubuntu, Xandros, XP
Linux - GeneralThis Linux forum is for general Linux questions and discussion.
If it is Linux Related and doesn't seem to fit in any other forum then this is the place.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Multi-Boot Problems - Slackware, Ubuntu, Xandros, XP
I have a my computer as follows:
/dev/hda1 - Xandros
/dev/hdb5 - Ubuntu
/dev/hdb6 - Slackware 11
My problems began when I installed Xandros. Until then I was using GRUB and everything seemed fine. However, Xandros uses an enhanced version of LILO and doesn't seem to work with GRUB. Also, Ubuntu doesn't seem to boot well with LILO. There are the issues of the kernel and initrd files being on other partitions, etc.
Can someone help me get this system working, either with the Xandros LILO or with a basic GRUB configuration?
The way I read this, you can boot from either lilo (Xandros) or from grub. How are you doing that?
This aside, the grub configuration that you supplied seems ok for your drive layout---except for the extra (hd0,0) in the kernel and initrd calls. What is the error when attempting to boot Xandros from grub?
This is typical:
root (hd0,0)
kernel /boot/vmlinuz-2.6.15-dcc-uni root=/dev/hda1
etc....
This is not:
root (hd0,0)
kernel (hd0,0)/boot/vmlinuz-2.6.15-dcc-uni root=/dev/hda1
etc....
Thanks for your reply. That extra (hd0,0) was actually added after continually tweaking grub hoping that I could make it work. Originally I had it like you suggested but it made no difference.
Yes, I can either use grub and load Ubuntu or LILO and use Xandros...or Slack with either since Slack is the greatest...
The error from grub is: Cannot open root device "hda1" or unknown-block(0,0)
Please append a correct "root=" boot option
Kernel Panic - not syncing - VFS unable to mount root fs on unknown-block(0,0)
I would think this should be a pretty simple scenario but is seems these OSes (especially Xandros, which isn't overly-impressive anyway) don't work well together.
Last edited by Vincent_Vega; 12-06-2006 at 09:03 AM.
I agree that this should be fairly simple - but it's not. My device.map file is correct too. I have to think it's something to do with the initrd file not getting correctly loaded or something. That's one thing I really don't know much about since I'm a Slackware guy and I have never used any initrd file for that.
Any help is appreciated...
My lilo.conf is located on hda1 with the Xandros installation. I did try copying files to just about every /boot directory, hoping that would solve this problem but it didn't!
I will try that again and see if I can make any progress but in the mean time, I could still use some help from this knowledgeable community! The truth is, I really don't care to ever use Xandros (I'm just trying to see if there is anything good about it) but I'm bothered by the problem and I want to sort it out. If it takes too long I'll just drop it all together and stick to my Slack, (K)Ubuntu and XP.
i was refering to the location of my lilo.conf , it is actually residing in "/etc" instead of "/boot" ... i did kind of like panic , i thought i got it accidently deleted or something , anyway , i have been using grub for quite sometime now instead of lilo ...
anyway , hang in there "forever" and dont giveup on anything linux too fast for i dont believe xandros(although i never try it before) is the problem in your case , even if you got xp somewhere in between ...
btw , you dont actually in need of a /boot directory on every partitions if your case is simple enough ...
Thanks! I might switch to the independent /boot partition and share it among distros. Maybe that would solve my problem...?
In any event, I'll let you know what I do in order to solve this, and thanks for your help.
First I describe the problem. There are a few Linux around trying to be ambitious. Xandros is one and certain Debian is another. They try to assemble all the OSs in your computer and arrange to boot it.
I know Xandros didn't do a good job because its installer tried to build a menu for Lilo to boot my 100+ system. The lilo.conf was compiled but Lilo never booted. Why? Lilo has a ceiling limit of booting to a maximum 27 images and Xandros doesn't even know that! The 27 image limitation is due to the static screen Lilo uses and any image above 27 cannot be displayed. Xandros should know this.
Thus I would dismiss using Xandros to multi boot.
The cure
Pretty simple really. You have Xandros, Ubuntu and Slackware in hda1, hda5 and hda6. You can choose any one of them to occupy the MBR position and amend its boot configuration to boot the other system.
The easiest way is to let Grub chainload each system. To enable a system chainloadable you need to restore its boot loader "inside" its root partition. Only the Linux in the MBR cannot be chainloaded. The reason is obvious but if you can't figure it out it is like a dog chasing its own tail. In chainloading one boot loader boots another. Both Lilo and Grub can chain loader each other seemlessly.
All the booting tips are in the last link of my signature.
I would possibly do the following steps to resolve the problem
(1) Break into Ubuntu by a Live CD so that I am inside it (see the booting tips in the signature for how to). I place its Grub in MBR by Bash command "grub-install /dev/hda".
(2) I edit its /boot/grub/menu.lst with the following additions
Code:
title Xandros in hda1
root (hd0,0)
chainloader +1
title Slackware in hda6
root (hd0,5)
chainloader +1
(3) I then reboot the live CD and break into Xandro. I restore its Lilo boot loader in hda1 by Bash command
Code:
lilo -b /dev/hda1
(4) I then repeat (3) similarly for Slackware. If Slackware uses Lilo the command would be
That sounds like a great solution and as soon as I get home I will do exactly as you suggest and come back with my results. I never thought to go the chainload route! Since Slackware boots without problems, I may leave it as a standard GRUB entry but for the sake of this thread, I'll begin by chainloading. Thanks very much for this suggestion.
Chain loading is possibly the most lethal weapon in booting. No decent boot loader of any substance can do without it. NTLDR and Lilo chain-load too except the processes aren't given a name.
In chain loading you just let one boot loader boots another. Therefore there is no PC system Grub cannot boot plus there is no ceiling limit on the number of systems Grub can handle (one can do relays with boot loaders!).
The command "chainloader +1" effectively asks Grub to "cut" its Stage1 (which occupies the first sector of the partition) and "paste" the boot loader specified by the root statement at the "+1" psoition or its 2nd sector. That is just about how every other boot loader chain-loads another system. It is laughingly simple.
Many systems on completion of an installation by default must place the boot loader inside its root partition. All Dos, Windows and the majority of the BSD are like that and are ideal candidates for chainloading.
I don't get the problem . I have 4 OS partitions. 3 on the same disk + 1 on the slave disk. I have 6 boot choices. Windows + linux with different kernels. I use lilo . I boot all of them, including the one on the slave disk , with no problems at all. All of them are booted without chainloading. 1 is booted to ramdisk , but the rest strait to the bzimage only. I guess what i am saying is that this should also be possible for you. I cant help you with the Grub config since i dont really know that loader.
i guess what i am saying is that normaly when booting linux we dont actually need that "/boot" directory(if they are using that) in the partition ... for others , we might need to chainload them ... actually the easiest way ...
ok , probably a bit dizzy down here after peeking at saikee's configurations and documentations ... ^_^
There is no problem in the booting mechanism. The problem is Xandros installer, in compiling a list of systems it found in the PC, aborted the operation when it got itself into difficulty. The resulting lilo.conf is half-baked. This is fairly typical in the implementation of Lilo by a Linux installer.
There are two common methods to boot up a Linux.
(a) Direct method - In this method the root of the Linux has to be declared first. The kernel or its bzimage is "named" or stated. If the Linux use ramdisk then the initrd file has also to be stated explicitly too. That is what Xandros trying to do in the Post #1.
(b) Indirect method - Only the root of the Linux is stated. All Dos, Windows, Linux, BSD, Solaris... are chainloaded by the same command of
Code:
chainloader +1
. In order for a system to be chainloadable the sole necessary condition is to have its boot loader residing inside the root partition. As it happens every partition created in a hard disk has one side of the first track set assigned as this purpose but not many users bother to make use of it. Even if a Linux has its boot loader in the MBR there is absolutely no consequence by duplicating the boot loader also in the root partition to be ready for booting indirectly by another boot loader later on.(Windows also boots a Linux by indirect method)
The direct method is the traditional way and so there are many write-ups on this topic. The indirect method is simpler and easier to maintain but apparently not many Linux users are aware of it and hence the disbelief and hostility.
If any Linux user looks at how a Linux boot loader boots a Windows then he/she would know that it only possible by chain loading.
Typically in Lilo the two lines booting a Windows say in hda1 are
Code:
other=/dev/hda1
label=Windows
That is Lilo's way to do chain loading.
If Lilo has to chain load a Linux in say hda6 it does it by
Code:
other=/dev/hda6
label=Linux_in_hda6
Surely this is a lot simpler than declaring the bzimage or kernel name accurate to the last character plus messing around with the parameters to be implemented at boot time.
If Linux can boot any system foreign to itself by chain loading then it should have no technical difficulty to use it on its fellow Linux.
The choice of using direct or indirect method is up to the individual.
Somehow I feel it is a shame that the simplest method (chain loading) that works universally on every OS system in a PC, requires no information of the OS other than the partition it resides in, has been used by every boot loader and requires almost no skill to apply should not be exposed to a wider audience.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.