How to dual boot X86_64 and X86 on single disk drive ?
I have a Compaq R3240US laptop . I have installed Suse 9.1 64bit on hda1 & hda2 . I installed 32bit on hda6 & hda7 . Following is /etc/lilo.conf message = /boot/message timeout = 80 prompt default = Linux64 boot = /dev/hda image = /boot/memtest.bin ###Don't change this comment - YaST2 identifier: Original name: "Memory_Test"### label = Memory_Test optional append = "" image = /boot/vmlinuz ###Don't change this comment - YaST2 identifier: Original name: Linux64### label = Linux64 initrd = /boot/initrd optional root = /dev/hda3 vga = 0x317 append = "splash=silent console=tty0 desktop resume=/dev/hda5 showopts" image = /boot/vmlinuz ###Don't change this comment - YaST2 identifier: Original name: Linux32### label = Linux32 initrd = /boot/initrd optional root = /dev/hda7 vga = 0x317 append = "splash=silent console=tty0 desktop resume=/dev/hda5 showopts" If I try to boot the 32bit install the 64 bit kernel is loaded and as would be expected there are lots of errors at boot. This is from /var/log/messages . Sep 16 23:28:20 linux syslogd 1.4.1: restart. Sep 16 23:28:23 linux modprobe: FATAL: Error inserting ac (/lib/modules/2.6.5-7.108-default/kernel/drivers/acpi/ac.ko): Invalid module format If I go to Install -> Repair and choose the hda7 system I can run the 32bit but not the 64bit I have looked but could not find much on dual booting 2 different linux versions and nothing on 32 and 64 bit. Has anyone had any success at this ?
On Saturday 18 September 2004 09:52, don leslie wrote:
I have a Compaq R3240US laptop . I have installed Suse 9.1 64bit on hda1 & hda2 . I installed 32bit on hda6 & hda7 . Following is /etc/lilo.conf
According to your 2nd post you use menu.lst, which is grub, and not lilo, as you write here. read the SuSE admin guide about booting and grub and lilo, and do not mix them, it is one or the other.
message = /boot/message timeout = 80 prompt default = Linux64 boot = /dev/hda
image = /boot/memtest.bin ###Don't change this comment - YaST2 identifier: Original name: "Memory_Test"### label = Memory_Test optional append = ""
image = /boot/vmlinuz
this is the kernel you boot
###Don't change this comment - YaST2 identifier: Original name: Linux64### label = Linux64 initrd = /boot/initrd
this is the modules you use when booting
optional root = /dev/hda3 vga = 0x317 append = "splash=silent console=tty0 desktop resume=/dev/hda5 showopts"
image = /boot/vmlinuz
again, this is the kernel you boot
###Don't change this comment - YaST2 identifier: Original name: Linux32### label = Linux32 initrd = /boot/initrd
again, this is the modules you use when booting
optional root = /dev/hda7 vga = 0x317 append = "splash=silent console=tty0 desktop resume=/dev/hda5 showopts"
Do you see it now? yes, I hear you: "Oops, they are the same" What you need to do is to install one version, then rename the /boot/vmlinuz to something, may be /boot/kernel32-2.6.5, then rename the /boot/initrd to something, may be /boot/initrd32-2.6.5, then update your menu.lst to reflect these new names. Now install the second kernel, and check your menu.lst after, if it does indeed still contain the 2 entries with kernel and initrd having different names for the 32 and the 64 bit versions. I recommend to rename the 64 bit kernel and initrd accordingly to /boot/kernel64-2.6.5 and /boot/initrd64-2.6.5, and reflect this in menu.lst of course. I do not know if this is enough, of if you also need to do similar things with the system.map etc. Just give it a try.
If I try to boot the 32bit install the 64 bit kernel is loaded and as would be expected there are lots of errors at boot. This is from /var/log/messages .
Sep 16 23:28:20 linux syslogd 1.4.1: restart. Sep 16 23:28:23 linux modprobe: FATAL: Error inserting ac (/lib/modules/2.6.5-7.108-default/kernel/drivers/acpi/ac.ko): Invalid module format
If I go to Install -> Repair and choose the hda7 system I can run the 32bit but not the 64bit
I think you could see it by now: You do overwrite here, whenever you rpair or install, you do overwrite the kernel used for booting. So only this latest one is used for both your labels in menu.lst
I have looked but could not find much on dual booting 2 different linux versions and nothing on 32 and 64 bit.
Has anyone had any success at this ?
I'm not doing a 32 and 64 bit dual boot, but I have many different kernel sets which i use for booting, so your error is obvious. Having 32 and 64 bit dual boot you would need to boot to different partitions, which you do, so it should work fine once you do not overwrite the kernel etc. anymore. HTH, Matt I think nobody answered you so far because this is a rtfm thing, booting different kernels is explained a 1000 times already ;-)
I do not know if this is enough, of if you also need to do similar things with the system.map etc. Just give it a try.
You don't need to do it for the System.map. The method you described should work. -Andi
On Monday 20 September 2004 13:35, Andi Kleen wrote:
I do not know if this is enough, of if you also need to do similar things with the system.map etc. Just give it a try.
You don't need to do it for the System.map. The method you described should work.
Andi, thanks a lot for this reassurance! The system.map or better when to modify it and when not is still a little of a mystery to me. Am I safe if I always copy the System.map of the latest kernel I use in /boot, and it will work fine with older kernels as well? Meaning new kernels add new stuff to System.map, but usually the old stuff of older kernels stays there as well? And is renaming it as I rename the kernels (such as kernel2.6.8.1 -> System2.6.8.1.map) just nonsens, because the kernel always looks for a file named System.map only? Regards, Matt
-Andi
I finally got everything working . The problem was not what you said. I was using grub . I had tried lilo when I had problems using Yast to switch from grub to lilo. I then went back to grub. If you looked at the lilo.conf file you would have seen that one system was on hda3 and the other was on hda7. Both can have the same vmlinuz,initrd name. It may have been more obvious with the grub menu.lst . The problem was that the initrd and vmlinuz had (hd0,0)/ and needed to use (hd0,6)/boot/ Your comment would have been correct if both installs were in the same boot directory. I certainly know better than that and have run dual boot systems for years with different kernels. When doing 32 and 64 bit you need completely separate installs since they should be all 32 or 64 bit . /usr , /opt , /lib .... A request for the menu.lst rather than sarcasm would have been greatly appreciated. Also another problem with separate dual boot installs is that the second install has to put its boot information somewhere other than the mbr. Otherwise you lose the first install. You then edit the first menu.lst and add the second system. Matt T. wrote:
On Saturday 18 September 2004 09:52, don leslie wrote:
I have a Compaq R3240US laptop . I have installed Suse 9.1 64bit on hda1 & hda2 . I installed 32bit on hda6 & hda7 . Following is /etc/lilo.conf
According to your 2nd post you use menu.lst, which is grub, and not lilo, as you write here. read the SuSE admin guide about booting and grub and lilo, and do not mix them, it is one or the other.
message = /boot/message timeout = 80 prompt default = Linux64 boot = /dev/hda
image = /boot/memtest.bin ###Don't change this comment - YaST2 identifier: Original name: "Memory_Test"### label = Memory_Test optional append = ""
image = /boot/vmlinuz
this is the kernel you boot
###Don't change this comment - YaST2 identifier: Original name: Linux64### label = Linux64 initrd = /boot/initrd
this is the modules you use when booting
optional root = /dev/hda3 vga = 0x317 append = "splash=silent console=tty0 desktop resume=/dev/hda5 showopts"
image = /boot/vmlinuz
again, this is the kernel you boot
###Don't change this comment - YaST2 identifier: Original name: Linux32### label = Linux32 initrd = /boot/initrd
again, this is the modules you use when booting
optional root = /dev/hda7 vga = 0x317 append = "splash=silent console=tty0 desktop resume=/dev/hda5 showopts"
Do you see it now?
yes, I hear you: "Oops, they are the same"
What you need to do is to install one version, then rename the /boot/vmlinuz to something, may be /boot/kernel32-2.6.5, then rename the /boot/initrd to something, may be /boot/initrd32-2.6.5, then update your menu.lst to reflect these new names.
Now install the second kernel, and check your menu.lst after, if it does indeed still contain the 2 entries with kernel and initrd having different names for the 32 and the 64 bit versions.
I recommend to rename the 64 bit kernel and initrd accordingly to /boot/kernel64-2.6.5 and /boot/initrd64-2.6.5, and reflect this in menu.lst of course.
I do not know if this is enough, of if you also need to do similar things with the system.map etc. Just give it a try.
If I try to boot the 32bit install the 64 bit kernel is loaded and as would be expected there are lots of errors at boot. This is from /var/log/messages .
Sep 16 23:28:20 linux syslogd 1.4.1: restart. Sep 16 23:28:23 linux modprobe: FATAL: Error inserting ac (/lib/modules/2.6.5-7.108-default/kernel/drivers/acpi/ac.ko): Invalid module format
If I go to Install -> Repair and choose the hda7 system I can run the 32bit but not the 64bit
I think you could see it by now: You do overwrite here, whenever you rpair or install, you do overwrite the kernel used for booting. So only this latest one is used for both your labels in menu.lst
I have looked but could not find much on dual booting 2 different linux versions and nothing on 32 and 64 bit.
Has anyone had any success at this ?
I'm not doing a 32 and 64 bit dual boot, but I have many different kernel sets which i use for booting, so your error is obvious. Having 32 and 64 bit dual boot you would need to boot to different partitions, which you do, so it should work fine once you do not overwrite the kernel etc. anymore.
HTH, Matt
I think nobody answered you so far because this is a rtfm thing, booting different kernels is explained a 1000 times already ;-)
On Monday 27 September 2004 02:10, don leslie wrote:
I finally got everything working . The problem was not what you said.
("not what you said" - who is "you" - well, I guess it's me, Matt, even if you do not say "Hello Matt" or similar when you start ;-) Hello Don Leslie! I'm happy to hear that you got it working! "The problem was not what you said" Based on the information you provided, IMHO I showed a way to make it working, without too much effort. You might have found a different solution though, there are many roads which end up in Rome. No problem.
I was using grub . I had tried lilo when I had problems using Yast to switch from grub to lilo. I then went back to grub.
Yeah, I thought so. As I recommend before, use one *or* the other.
If you looked at the lilo.conf file you would have seen that one system was on hda3 and the other was on hda7.
Yes, seen that. Otherwise I would have told you also that you cannot install the 32 bit version and the 64 bit version in the same partition, as they do overwrite each other. You had this correct already, so no need to mention it anymore.
Both can have the same vmlinuz,initrd name.
hmmm, well, if you get grub / lilo to look for them in different directories / partitions, then that can work. To my understanding it is very common, even recommended, that you have a separate partition as boot partition. That's the way I learned it when the installers did not do all the partitioning for you yet. So I assumed, that you have a separate boot partition as well. Then, whatever kernel you want to boot, and whatever installation in whatever disk or partition, all your boot stuff, kernels and, if used, initrds are in that boot partition. Even if you still have a windose partition, you boot it from the menu/lst here.
It may have been more obvious with the grub menu.lst . The problem was that the initrd and vmlinuz had (hd0,0)/ and needed to use (hd0,6)/boot/
hmmm, what do you mean? Your boot partition was (hd0,0) and you moved it to (hd0,6)/boot/ ? In any case, if you use a boot partition, no matter where it is, you have to specify there, if using grub then in menu.lst, where the kernels/initrds are which you want to use. If they are all in this same boot partition (or directory), then you need to give the kernels / initrds different names.
Your comment would have been correct if both installs were in the same boot directory.
Yes, exactly. No matter if it is (hd0,0) or (hd0,6)/boot/ ...
I certainly know better than that and have run dual boot systems for years with different kernels.
"better that that", sorry, I cannot follow you here.
When doing 32 and 64 bit you need completely separate installs since they should be all 32 or 64 bit . /usr , /opt , /lib ....
Absolutely. But you had that already. However when booting you start form the same point, the MBR. With my probably limited understanding of grub I think it from the MBR you go to /boot (which can be a separate boot partition or just a directory under / and there grub finds its menu.lst Now you make your choice which system to boot. Then grub loads the kernel and initrd specified there and gives it what is defined as root to use as / Which means that your /boot can be anywhere, and your different / can be anywhere, and do not have to be in the same partition. (I would even say that they should not be in the same partition.)
A request for the menu.lst rather than sarcasm
Oops, sarcasm???? Sorry, we all are here to help each other. We come from different cultures and countries, we also often have different mother tongues. If you see Sarcasm in an effort to help someone, then check first if that could not be an interpretation from you, using your background, of the words of the other one, coming from a different background. For me I had been trying to help you, giving you the best advice I could give, and at the same time not just dumping facts on you, but trying to guide. So where you see sarcasm? because I said that grub and lilo should not get mixed, and that you should go for one or the other? Or because I recommended to have a look at the SuSE manual about booting? Well, sorry, you seemed to mix it, showing lilo.conf, but talking about menu.lst. Or because of my wording of pointing out that you use an identical path to the kernels and initrds for 32 and 64 bit? Sorry, I learned that in order to help learning it is the best to have the ones who learns drawing his conclusions himself, so I tried to guide you to it, pointing you clearly to where in your lilo.conf the problem is. Sarcasm? Sorry, was not my intention :-)
would have been greatly appreciated. Also another problem with separate dual boot installs is that the second install has to put its boot information somewhere other than the mbr. Otherwise you lose the first install.
Well, this is not really a problem, if you use the same /boot partition (or even directory) for all. The mbr will just get the menu displayed which is in menu.lst, and then you can make your choice. You just rename the kernel and initrd (and reflect that in menu.lst accordingly) *before* you do the second install.
You then edit the first menu.lst and add the second system.
yes, that is what I proposed to you so full of sarcasm ;-) But your solution is still not clear to me: You did one install, with one /boot partition / directory. You did a second one, with another /boot partition / directory. Then you edit the first menu.lst to include the path to the second /boot for the second system? Hmmm, don't forget that after the second install the mbr might point to the second /boot, so you rather edit the menu.lst there . Well, IMHO working with a separate /boot partition is easier, and have it all there. ;-)
Matt T. wrote:
On Saturday 18 September 2004 09:52, don leslie wrote:
I have a Compaq R3240US laptop . I have installed Suse 9.1 64bit on hda1 & hda2 . I installed 32bit on hda6 & hda7 . Following is /etc/lilo.conf
According to your 2nd post you use menu.lst, which is grub, and not lilo, as you write here. read the SuSE admin guide about booting and grub and lilo, and do not mix them, it is one or the other.
message = /boot/message timeout = 80 prompt default = Linux64 boot = /dev/hda
image = /boot/memtest.bin ###Don't change this comment - YaST2 identifier: Original name: "Memory_Test"### label = Memory_Test optional append = ""
image = /boot/vmlinuz
this is the kernel you boot
###Don't change this comment - YaST2 identifier: Original name: Linux64### label = Linux64 initrd = /boot/initrd
this is the modules you use when booting
optional root = /dev/hda3 vga = 0x317 append = "splash=silent console=tty0 desktop resume=/dev/hda5 showopts"
image = /boot/vmlinuz
again, this is the kernel you boot
###Don't change this comment - YaST2 identifier: Original name: Linux32### label = Linux32 initrd = /boot/initrd
again, this is the modules you use when booting
optional root = /dev/hda7 vga = 0x317 append = "splash=silent console=tty0 desktop resume=/dev/hda5 showopts"
Do you see it now?
yes, I hear you: "Oops, they are the same"
What you need to do is to install one version, then rename the /boot/vmlinuz to something, may be /boot/kernel32-2.6.5, then rename the /boot/initrd to something, may be /boot/initrd32-2.6.5, then update your menu.lst to reflect these new names.
Now install the second kernel, and check your menu.lst after, if it does indeed still contain the 2 entries with kernel and initrd having different names for the 32 and the 64 bit versions.
I recommend to rename the 64 bit kernel and initrd accordingly to /boot/kernel64-2.6.5 and /boot/initrd64-2.6.5, and reflect this in menu.lst of course.
I do not know if this is enough, of if you also need to do similar things with the system.map etc. Just give it a try.
If I try to boot the 32bit install the 64 bit kernel is loaded and as would be expected there are lots of errors at boot. This is from /var/log/messages .
Sep 16 23:28:20 linux syslogd 1.4.1: restart. Sep 16 23:28:23 linux modprobe: FATAL: Error inserting ac (/lib/modules/2.6.5-7.108-default/kernel/drivers/acpi/ac.ko): Invalid module format
If I go to Install -> Repair and choose the hda7 system I can run the 32bit but not the 64bit
I think you could see it by now: You do overwrite here, whenever you rpair or install, you do overwrite the kernel used for booting. So only this latest one is used for both your labels in menu.lst
I have looked but could not find much on dual booting 2 different linux versions and nothing on 32 and 64 bit.
Has anyone had any success at this ?
I'm not doing a 32 and 64 bit dual boot, but I have many different kernel sets which i use for booting, so your error is obvious. Having 32 and 64 bit dual boot you would need to boot to different partitions, which you do, so it should work fine once you do not overwrite the kernel etc. anymore.
HTH, Matt
I think nobody answered you so far because this is a rtfm thing, booting different kernels is explained a 1000 times already ;-)
participants (4)
-
Andi Kleen
-
don leslie
-
Matt T.
-
Matt T.