(1) Alpha Linux should behave pretty much as per Intel Linux and if
possible even better. That means that:
"shutdown -h now" gets the system to a point where you can turn
the power off,
"shutdown -r now" should fully reboot the system.
(2) Fully rebooting the system is somewhat tricky. Where we booted via
WNT ARC, that would mean reloading and restarting it (most processors
do not have reset under software control). By the time Linux runs,
the WNT ARC loader has been destroyed. This would mean that every system
would have to know how it booted and how to get itself back to where
it started. Resetting back to Milo and Milo doing sensible things (to
be defined) is acceptable. This solves the rebooting a remote server
problem.
(3) Leaving a compressed version of Milo in memory is not a problem
and getting back to milo from linux is not a problem. This already
works, the halt PALcall jumps into the start of the "console", in this
case Milo.
(4) What is a sensible set of things to do in Milo when Linux halts
back to it?
(a) Execute the same boot command as the one that booted Linux
last time,
(b) Allow the user to interrupt that reboot if he/she wants to
do something else.
(5) I quite like the idea of a patchable parameter block (like rdev on
zImage) that users can use as a way of modifying/personalising Milo for
their own systems. So, to make the default boot device /dev/sdb2 they
might use something like
mdev -b/dev/sda2 milo
to set the argument block up. This argument block would contain:
(a) memory size override value,
(b) default boot device
(c) default root device
(d) default boot string
(e) autoboot (with timeout)
(6) Multiple argument blocks are possible. In other words, Milo could
have a set of three possible boots with three possible sets of boot
arguments. It would then try each in turn. All this takes is memory.
(7) The WNT ARC loader (linload) passes the memory size and a command line
to Milo. The command line is treated as the first command to execute
and the memory size overrides anything that Milo might figure out for itself.
These values would have to be merged with the argument block's values.
(8) Environment variables are a "problem". Again, they could be merged
with the boot block values but I've almost convinced myself that we
really don't need them. Don't forget that there are some systems where
Milo does not have access to NVRAM and so this _must_ work without
NVRAM.
Dave