Take the 2-minute tour ×
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

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

This question came from our site for professional and enthusiast programmers.

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
1  
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

5 Answers 5

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 within Linux. (Make sure kexec support is compiled into your kernel.)

share|improve this answer
    
As far as I know the kexec_load() syscall is intended only for loading of a Linux kernel. The tool kexec-loader you linked does seem to support only Linux kernels too. --- It is possible to boot for example memtest86 but I have never seen that anyone booted Windows directly using the kexec mechanism but it is possible through GRUB: How to boot directly into Windows from kexec+Grub4DOS. –  pabouk Feb 7 at 9:59
    
See also: How to run a bootloader from Linux? –  pabouk Feb 7 at 10:03

Check if you have UEFI support. That can DRASTICALLY improve booting speed.

share|improve this answer
    
This does not provide an answer to the question. To critique or request clarification from an author, leave a comment below their post. –  Jawa Feb 5 at 14:34
1  
@Jawa the OP is having a problem because his POST is taking an unacceptably long time. UEFI definitely cuts this time : the very purpose of its creation. –  Milind R Feb 5 at 14:51
2  
Two things here: 1) The question is not "how do I boot faster" but "how do I return to GRUB after booting?" 2) One line answers are probably best as comments. –  Kevin Panko Feb 5 at 15:41
    
Thanks for the suggestion. Since I posted the original question, I've changed my hard disk configuration and just now, I optimized some settings in the bios to improve boot times. In essence I could disable things related to RAID (which I do not need any more) and also enabled EFI boot. The overall effect is a much faster boot. Nevertheless, the original question is still interesting to me and so far I haven't found a reliable solution. –  Mitko Feb 21 at 22:38

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.