Alpha Linux Miniloader (Milo) now boots via Windows NT ARC

Ka'plaagh 16-Oct-1995 1354 +0100 (rusling@rdgeng.enet.dec.com)
Mon, 16 Oct 95 14:01:53 MET


All,
the software will appear on gatekeeper.dec.com over the
next 24hours or so. Meanwhile, here's the scoop on how to boot
Milo via the Windows NT ARC console...

Dave

Quick and Dirty Addendum to the Miniloader Howto Document
---------------------------------------------------------

Associated Images (on gatekeeper.dec.com)
-----------------------------------------

Miniloader/arc/linload.exe
Miniloader/images/noname/milo.arc
Miniloader/images/alphapc64/milo.arc

How Does it Work?
-----------------

The WNT ARC console is an environment in which programs can run
and make callbacks into the firmware to achieve actions. The WNT
OSLoader is a program that does exactly this. Linload.exe is a
much simpler program which does just enough to load and execute
the Alpha Linux Miniloader (MILO). It loads the appropriate image
file into memory at 0x00000000 and then makes a swap-PAL PALcall to
it. Milo relacates itself to 0x200000 and continues on through the
PALcode reset entry point as before.

By default (and design) the ARC loadable Milo built in the standard
distribution tree contains no video or keyboard initialisation code.
This is because this has already been carried out by the WNT ARC
console and doesn't need doing yet again.

Adding a Linux Boot Option
--------------------------

First you need to copy linload.exe and the ARC loadable Milo that you
wish to load to someplace that the WNT ARC console can read from. In
my example, I will use a floppy disk:

[1] At the boot menu, select "Supplementary menu..."
[2] At the "Supplementary menu", select "Set up the system..."
[3] At the "Setup menu", select "Manage boot selection menu..."
[4] In the "Boot selections menu", choose "Add a boot selection"
[5] Choose "Floppy Disk 0"
[6] Enter "\linload.exe" as the osloader directory and name
[7] Say "yes" to the operating system being on the same partition
as the osloader
[8] Enter "\" as the operating system root directory
[9] I usually enter "Linux" as the name for this boot selection
[10] Say "No" you do not want to initialise the debugger at boot time
[11] You should now be back in the "Boot selections menu", choose the
"Change a boot selection option" and pick the selection you just created
as the one to edit
[12] Use the down arrow to get "OSLOADFILENAME" up and then type in the
name of the Milo ARC image that you wish to use, for example "\noname.arc"
followed by return.
[13] Press ESC to get back to the "Boot Selections menu"
[14] Choose "Setup Menu" (or hit ESC again) and choose "Supplementary menu,
and save changes" option
[15] ESC will get you back to the "Boot menu" and you can attempt to boot
Milo. If you do not want Linux as the first boot option, then you can
alter the order of the boot options in the "Boot selections menu".

At the end of all this, you should have a boot selection that looks something
like:

LOADIDENTIFIER=Linux
SYSTEMPARTITION=multi(0)disk(0)fdisk(0)
OSLOADER=multi(0)disk(0)fdisk(0)\linload.exe
OSLOADPARTITION=multi(0)disk(0)fdisk(0)
OSLOADFILENAME=\noname.arc
OSLOADOPTIONS=

You can now boot Milo (and then Linux). No doubt you can do this from
a file system that Windows NT understands such as NTFS or DOS on a hard
disk, but I've not yet tried this.

Some Problems/Features/Drawbacks
--------------------------------

The BIOS emulation in the WNT ARC console is Digital's own and is very
sophisticated, so by default Milo built for ARC does not include BIOS emulation.
There's no reason that it shouldn't if that's what you want. By the same
token, I don't normally include the keyboard initialisation code.

I haven't yet figured out how to make the environment variables co-exist.
They're kept in a different way by Windows NT than by Digital Unix (and thus
Linux). So, no environment variable support, yet.

Finally, and most irritatingly, Windows NT seems to store time in a different
format from Linux and so the Windows NT ARC console complains every time the
system boots and the date is wrong on Linux every time it boots. I use
date and clock to put this right by hand each time I boot. This makes life
hard if you want to co-exist with Windows NT, but if you're using Milo to
blow another image into flash then there's no problem at all.

I've tried linload.exe (and the associated milo.arc images) on the AxpPCI33
and on two AlphaPC64's running different versions of the Windows NT ARC console
and all worked just fine.

Copyright
---------

Linload.exe is entirely freely distributable but is copyrighted
to Digital. In order to build it, you need access to the WNT firmware
development tree and you need to pay license money to Microsoft for this
as well as have an Alpha Windows NT system to build it on. This is
one of the reasons for keeping linload.exe very simple and for not
releasing the sources.