The end of booting as we know it

Axel Boldt (boldt@math.ucsb.edu)
Wed, 22 May 1996 22:38:18 -0700


1. The Status Quo
=================4

Every day, I boot my machine. The bios checks the memory for the
thousandth time, lilo loads the kernel for the thousandth time, the
kernel probes the hardware for the thousandth time, all
the daemons are started for the thousandth time, the X server is
started up for the thousandth time, emacs is started for the
thousandth time. And I thought computing was all about saving time!
What is worse, if I want to switch to the other OS on my machine, I
have to reboot again! This sucks rocks.

Some neato laptops have a suspend/resume feature where you hit some
magic button and the bios saves the whole RAM on disk and shuts off
the machine. If you switch it on again, BIOS loads everything in and
you are right back in the Emacs/X session. This is good, but not good
enough.

2. The Ideal World
==================

The suspend/resume feature should be available on every Linux machine,
without BIOS support. This would mean that on single user systems, one
would only very rarely have to go through a full boot cycle. It should
also be possible to save several RAM images to disk, so that one could
seamlessly switch between OS's, without rebooting. Just save the
current memory state to disk and slurp in the last state of the new
OS. Could be done with one hot button.

3. From Here to There
=====================

We need a standard format for files that contain a complete memory
image. Every participating OS should have two new shutdown options:
either save the current state to a specified file and do an
reboot/halt, or save the current state to a specified file and slurp
in another state from another specified file. In the case of Linux,
this would mean that the shutdown command sends a special signal to
the kernel, which would cause the kernel to flush the buffers and then
save the memory state to disk. The boot loaders should also know about
this format; it should be possible to use lilo or loadlin to slurp in
a memory image. The memory image filenames for the various OS's would
be given to lilo in the lilo.conf file, and lilo decides at boot time
whether to do an ordinary boring boot or to slurp in the memory
image. After having been slurped in, the image file must immediately
be marked as "outdated" to prevent it from being used ever again. Same
goes for loadlin.

4. Problems
===========

Some hardware needs to be initialized. One could either try to be
ambitious and save state information or bring the problematic devices
in a well-defined state (well-defined across OS's, that is) before
writing out the memory file, or do it the simple minded way like the
laptop BIOSes.

Axel