Once you have correctly installed/loaded/run MILO you will see the MILO (for MIniLOader) prompt displayed on your screen. There is a very simple interface that you must use in order to boot a particular Linux kernel image. Typing "help" is a good idea as it gives a useful summary of the commands.
Probably the most useful command that MILO has:
MILO> help
MILO command summary:
ls [-t fs] [dev:[dir]]
- List files in directory on device
boot [-t fs] [dev:file] [boot string]
- Boot Linux from the specified device and file
run [-t fs] dev:file
- Run the standalone program dev:file
show - Display all known devices and file systems
set VAR VALUE - Set the variable VAR to the specified VALUE
unset VAR - Delete the specified variable
reset - Delete all variables
print - Display current variable settings
help [var] - Print this help text
Devices are specified as: fd0, hda1, hda2, sda1...
Use the '-t filesystem-name' option if you want to use
anything but the default filesystem ('ext2').
Use the 'show' command to show known devices and filesystems.
Type 'help var' for a list of variables.
Note that the bootopt
command only appears on AlphaPC64
(and similar) systems.
Refer to the board's dcoumentation to find out just what it means.
Devices. Until you
use a command that needs to make use of a device, no device
inititalisation will take place. The first show
,
ls
, boot
or run
commands all cause the devices within MILO to be initialised.
Devices are named
in the same way (exactly) that Linux itself will name them. So, the
first IDE disk will be called 'hda' and it's first partition will be 'hda1'.
Use the show
command to show what devices are available.
File Systems. MILO supports three file systems,
MSDOS, EXT2 and ISO9660. So long as a device is available to it,
MILO can list
boot
or run
an image stored on
one of these file systems.
MILO's default file system is EXT2
and so you have tell MILO that
the file system is something other than that.
All of the commands that use filenames
allow you to pass the file system using the -t [filesystem]
option.
So, if you wanted to list the contents of a SCSI CD ROM, you might type the
following:
MILO> ls -t iso9660 scd0:
Variables. MILO contains some settable variables that help the boot process. If you are loading via the Windows NT ARC firmware, then MILO makes use of the boot option environment variables set up by that firmware. For some systems, MILO (for example, the AlphaPC64) maintains its own set of environment variables that do not change from boot to boot. These variables are:
MILO> help var
Variables that MILO cares about:
MEMORY_SIZE - System memory size in megabytes
BOOT_DEV - Specifies the default boot device
BOOT_FILE - Specifies the default boot file
BOOT_STRING - Specifies the boot string to pass to the kernel
SCSIn_HOSTID - Specifies the host id of the n-th SCSI controller.
AUTOBOOT - If set, MILO attempts to boot on powerup
and enters command loop only on failure.
AUTOBOOT_TIMEOUT - Seconds to wait before auto-booting on powerup.
The boot
command boots a linux kernel from a device.
You will need to have a linux kernel image on
an EXT2 formated disk (SCSI, IDE or floppy) or an ISO9660 formatted CD
available to MILO.
The image can be gzip'd and in this case
MILO will recognise that it is gzip'd by the .gz suffix.
You should note that the version of MILO does not usually have to match the version of the Linux kernel that you are loading. You boot Linux using the following command syntax:
MILO> boot [-t file-system] device-name:file-name [[boot-option] [boot-option] ...]
Where device-name
is the name of the device that you wish to
use and file-name
is the name of the file containing the Linux
kernel. All arguments supplied after the file name are passed directly
to the Linux kernel.
If you are installing Red Hat, then you will need to specify a root device and so on. So you would use:
MILO> boot fd0:vmlinux.gz root=/dev/fd0 load_ramdisk=1
MILO will automatically contain the block devices that
you configure into your vmlinux. I have tested the floppy driver, the IDE
driver and a number of SCSI drivers (for example, the NCR 810), and these work fine.
Also, it is important to set the host id of the SCSI controller
to a reasonable value. By default, MILO will initialize it to the
highest possible value (7) which should normally work just fine.
However, if you wish, you can explicitly set the host id of the
n-th SCSI controller in the system by setting environment
variable SCSI
n_HOSTID
to the appropriate
value. For example, to set the hostid of the first SCSI controller to
7, you can issue the following command at the MILO prompt:
setenv SCSI0_HOSTID 7
You may want to reboot a running Linux system using the
shutdown -r now
command. In this case, the Linux kernel
returns control to MILO (via the HALT CallPAL entrypoint).
MILO leaves a compressed copy of itself in memory for just this
reason and detects that the system is being rebooted from information
held in the HWRPB (Hardware Restart Parameter Block).
In this case it starts to reboot using exactly the same command that
was used to boot the Linux kernel the last time.
There is a 30 second timeout that allows you to interrupt this
process and boot whatever kernel you wish in whatever way you wish.
For flash based systems such as the AlphaPC64, EB164 and the EB66+, there
are a number of possible boot options and these are changed using the
bootopt
command.
This has one argument, a decimal number which is the type of the
image to be booted the next time the system is power cycled or reset:
0 Boot the Evaluation Board Debug Monitor,
1 Boot the Windows NT ARC firmware.
In order to tell the boot code to boot the MILO firmware from flash then you need a boot option that means boot the N'th image. For this, you need to 128 plus N, so if MILO is the third image, you would use the command:
MILO> bootopt 131
Note:
Be very careful with this command. A good rule is never to
set bootopt to 0 (the Evaluation Board Debug Monitor), but instead use the
system's jumpers to achieve the same thing.