Tell me more ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I am dual-booting Windows and Linux on my SSD and find myself often switching between the two OSes. The SSD is really fast and both OSes boot in about 3 seconds once selected in GRUB. However, it takes forever (about 30 seconds) for my BIOS, RAID and second SATA controller to initialize before I'm finally in GRUB.

So I was wondering if it is possible to skip these initializations and just "return" to GRUB once I have booted Linux. Ideally I would also be able to do the same from within Windows but my hope is not very high there :)

I did a little search online and found nothing but a somewhat out-dated linux loader - loadlin.exe, which one could run from within Dos or Windows 95/98 to boot Linux. So at least the concept of switching OSes without rebooting is not new. Anyone know of a current tool that does this?

If not, is there a technical issue that prevents us from writing such a program or is there simply not enough demand?

UPDATE: A friend of mine just told me about Kexec. Using that it seems to be possible to start a different Linux kernel from within a running kernel, but is it possible to go back to GRUB or start a windows installation directly?

share|improve this question
4  
Interesting question. One reason I can think of for there not being much interest in this is that VMs have improved recently. Most people just run their secondary OS inside a VM on their primary one instead of dual booting. – Noufal Ibrahim Sep 9 '11 at 6:16
I was also considering using a VM but I need fast graphics performance and so far VMs don't deliver satisfactory performance. Maybe things will change now that Xen (and soon others) has a complete passthrough option for graphics cards. Nevertheless it would still be interesting to see if there is a way to fast switch. With regard to the second comment, I was actually not aware of unix.stackexchange.com. I will certainly have a look and maybe post there if I don't get an answer first. Thanks for the suggestion. – Mitko Sep 9 '11 at 9:27
1  
30 seconds ? i think on an ibm server its like 5 minutes. – Sirex Sep 9 '11 at 10:28
Should be possible with EFI bootloaders (no idea how). Somewhat harder with MBR ones, since they expect to be started in 16-bit real mode and set up everything themselves, which might not be possible after the system has been initialized once. – grawity Sep 9 '11 at 12:10
@Sirex: But who dualboots IBM servers? :) – grawity Sep 9 '11 at 12:11
show 2 more comments

migrated from stackoverflow.com Sep 9 '11 at 9:39

4 Answers

Long story short, not with the way things work now. A better approach may be to find why your BIOS/RAID/SATA controller is taking so long. There might be BIOS updates available, and possibly firmware updates for the raid controller.

share|improve this answer
One possible reason for a slow POST is that you have your HDD controller configured to auto-detect non-existent drives in the BIOS. If you have a single HDD and a single CD/DVD there is no point trying to auto-detect for the other 2 (or 4) slots, these tests have to time out and can take some time. – Haqa Oct 26 '11 at 15:22

No. Unless your BIOS has a specific setup option to skip POST during a reboot (I saw it once) this hasn't existed since Windows 98/ME (the Fast Reboot trick which really only reloaded Windows.)

Maybe someone with enough time boot hacking could reproduce that and reload GRUB, but it would have to change how INIT restarts the system.

share|improve this answer

If you can't find the updates as Zeroedout suggested, you may want to run your host system in virtual machines, so reboot is almost free.

Also, some systems have a fast/quick boot mode where some checks are ommitteed. You may want to check that.

share|improve this answer

Using kexec you can solve the problem. There is no need to involve GRUB. You can use kexec-loader to boot directly into different operating systems from withing Linux. (Make sure kexec support is compiled into your kernel.)

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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