The SRM console is the command line firmware that Digital (later Compaq and HP) shipped for Alpha systems running OpenVMS and Tru64 UNIX (earlier DEC OSF/1 and Digital UNIX). Linux, NetBSD, and OpenBSD also boot from it, as did FreeBSD until its Alpha port ended with the 6.x series, 1) and it is the preferred firmware for Linux (see Choosing firmware for Linux). The name refers to the Alpha System Reference Manual, the specification whose console architecture the firmware implements. 2) 3) Its command line interface resembles the console of Digital's VAX systems. 4)
Systems intended for Windows NT instead use the ARC or AlphaBIOS firmware. Some systems carry both consoles and can switch between them (see Switching to ARC or AlphaBIOS).
This page is a reference for the console's commands, variables, versions, and specification. Everyday use with Linux, including the serial console and boot commands, is covered in Using the SRM Console.
Commands may be abbreviated if not ambiguous, and numbers are hexadecimal unless otherwise specified. help lists all commands. The everyday commands, such as show config, show device, show, set, and init, are described in Using the SRM Console: Everyday commands; the table below lists the others. Multiprocessor systems show the prompt P00>>> instead of >>>. 5) 6)
| Command | Purpose |
|---|---|
boot | Boot from a device, e.g. boot [-file <filename>] [-flags <flags>] [-protocols <protocol>] [-halt] [<device>] |
examine, deposit | Read and write memory and registers |
arc, alphabios | Start the ARC or AlphaBIOS firmware (see below) |
fwupdate, lfu | Update firmware (see below) |
run bios | Run an option ROM's BIOS setup utility, e.g. an Adaptec SCSI BIOS |
Later consoles have a Unix-like shell with pipes (show device | grep dk), output redirection, and & to run commands in the background. 11)
| Variable | Meaning |
|---|---|
auto_action | Action after power-up, error, or halt: halt (the default), boot, or restart |
bootdef_dev | Default boot device or list of devices |
boot_file | Default file to boot |
boot_osflags | Default boot flags; for Linux, these are passed to aboot and the kernel |
boot_reset | ON resets the system before booting |
console | graphics or serial |
os_type | Firmware to load at the next power cycle; the values vary by system (see below) |
ewa0_mode | Ethernet media type for the first DEC Tulip interface |
ewa0_protocols | Network boot protocol, mop or bootp |
The console variable and setting up a serial console for Linux are described in Using the SRM Console: Serial console.
Device names have the form dka400.4.0.9.0. The first two letters are the driver, the third letter is the adapter (a for the first), and the number is the unit. For SCSI devices, the unit number is 100 times the SCSI ID. The remaining fields give the bus node, channel, PCI slot, and hose. 15) 16)
| Prefix | Device |
|---|---|
dk | SCSI disk or CD-ROM |
dq | IDE disk or CD-ROM |
dr | RAID set |
dg | Fibre Channel disk |
dv | Floppy drive |
mk | SCSI tape |
pk, pq | SCSI and IDE controllers |
ew | DEC Tulip Ethernet |
ei | Intel Ethernet |
fw | FDDI |
The console reads the boot block in the first sector of the disk, which gives the starting block and length of a contiguous primary bootstrap. It loads that image into memory and jumps to it. The console knows nothing about file systems. 20) For Linux, the bootstrap is normally aboot, which reads the kernel from an ext2, ext3, ext4, XFS, UFS, or ISO 9660 file system (see aboot: File systems) and supports network booting. 21) aboot needs a disk with a BSD disklabel and free space before the first partition, and receives boot_osflags or the -flags argument of boot as an /etc/aboot.conf entry number or as kernel arguments; see aboot: Booting.
The boot commands, the variables for booting unattended, and troubleshooting are described in Using the SRM Console: Booting Linux; preparing the disk is described in Installation.
set os_type nt followed by init or a power cycle starts ARC or AlphaBIOS; set os_type unix (or osf or vms, depending on the system) returns to SRM. 22) 23) 24) 25) On the Jensen, the command is set os nt. 26) On the AlphaServer 800, SRM starts first and then loads AlphaBIOS, unless the Halt button is in. 27)boot dqa0) runs the Loadable Firmware Update utility (LFU). At its UPD> prompt, list shows the current and available versions and update * updates all firmware. 32) update srm updates only the console firmware. 33) The CD version is not the same as the console version; for example, the V7.3 CD carries SRM V6.1-1 for the AlphaServer 4100. 34)dkb300, not just a CD-ROM, which lets a machine without a CD drive be updated remotely. 35) A single image can also be named explicitly, as in update srm -path iso9660:[ALPHA1000]MKSRMROM.EXE/dka400 for the AlphaServer 1000. 36)Archived firmware images are listed in Firmware: Obtaining and updating firmware. The alphalinux/firmware repository holds these SRM images:
| Board | Directory | SRM image |
|---|---|---|
| AlphaPC 164LX | api/LX | lx164srm.rom, with fwupdate.exe |
| AlphaPC 264DP | api/DP | pc264srm.rom; archive/5.8 holds a set of files for LFU from floppy, described in floppy_readme.txt |
| UP1000 | api/UP1000 | up1000_srm_5.6_beta, replacing AlphaBIOS (see ARC Firmware: Switching to SRM) |
| UP1100 | api/UP1100 | up1100_srm_A5.6-13, installed with lfu from floppy as described in its readme.1st |
| UP1500 | api/UP1500 | srmupdt.5.6-19.img, a floppy image for lfu, described in README.srm |
| UP2000 and UP2000+ | api/UP2000, api/UP2000plus | up2000_srm_5.8-81, older versions in archive |
| CS20 | api/CS20 | CS20_srm-5.8-81, and a CD image in CD-ROM |
Sources: 48)
The update procedure from the SRM prompt is described in Using the SRM Console: Firmware versions.
The SMMTABLE.TXT file on the V7.3 firmware CD (March 2007) lists the last SRM version for each system. 49)
| System | Last SRM version |
|---|---|
| DECpc AXP 150, DEC 2000 (Jensen) | 2.2 |
| DEC 3000 | 7.0 |
| DEC 4000 | 4.0 |
| DEC 7000, DEC 10000 | 5.0 |
| AXPpci33 (Noname) | 4.7 |
| AlphaPC 164 | 5.5 (5.5-1 according to Jay Estabrook 50); see the AlphaPC 164 page) |
| AlphaPC 164LX | 5.8 |
| AlphaPC 164SX | 5.8 |
| AlphaStation 200, 250, 255 | 7.0-9 |
| AlphaStation 400 | 7.2-1 |
| AlphaStation 500, 600 | 7.2-2 |
| AlphaStation 600A | 5.6-114 |
| Personal Workstation | 7.2-1 |
| AlphaServer 300, 400 | 7.0-9 |
| AlphaServer 800 | 5.8-16 |
| AlphaServer 1000 | 5.4-101 (4/xxx), 5.4-104 (5/xxx) |
| AlphaServer 1000A | 5.7-83 (4/xxx), 5.7-80 (5/xxx) |
| AlphaServer 1200 | 6.0-4 |
| AlphaServer 2000, 2100, 2100A | 5.3 |
| AlphaServer 4000, 4100 | 6.1-1 |
| AlphaServer 8200, 8400 | 6.4 |
| AlphaServer GS60, GS60E, GS140 | 6.6 |
| XP1000 | 5.9-1 |
| AlphaServer DS10, DS20, ES40 | 7.3-1 |
| AlphaServer DS20L | 6.6-10 |
| AlphaServer DS15, DS25, ES45 | 7.3-2 |
| AlphaServer GS80, GS160, GS320 | 7.3-1 |
| AlphaServer ES47, ES80, GS1280 | 7.3-1 |
OpenVMS and Tru64 UNIX boot only from the SRM console. 51) Systems designed only for Windows NT generally lack it:
Other notes on specific systems:
CONFIG_ALPHA_LEGACY_START_ADDRESS, which make defconfig enables (see Kernel). 66) 67)set pci_device_override, given a device and vendor ID, or with -1 to disable it entirely. 77) Overriding it is only safe for cards that do not use DMA; see Other Hardware.The console is specified in Part III, "Console Interface Architecture", of the Alpha System Reference Manual. 83) Most of the manual was published as the Alpha Architecture Reference Manual; some of its appendices remained company confidential. 84) The specification requires the console to:
The console and the operating system share state through the Hardware Restart Parameter Block (HWRPB) and a set of environment variables. The console builds the HWRPB during initialization and maps it at virtual address 0x10000000 for the bootstrap. The HWRPB holds the system type and variation, page size, processor count, per-CPU data, memory cluster descriptors, and the location of the console callback routines. Its validation quadword is the ASCII string HWRPB. 86)
The Linux kernel does no CPU detection of its own; it reports what the console places in the HWRPB, so values in /proc/cpuinfo come directly from the firmware. 87) 88) The nr_processors field is not the number of CPUs actually present; the per-CPU slots must be checked. 89) MILO builds only as much of an HWRPB as Linux needs, which is why MILO systems report the CPU serial number Linux_is_Great!; the system serial number begins with MILO- (see MILO: HWRPB and rebooting). 90) 91)
The console provides callback routines, reached through a common DISPATCH procedure, that system software can use for terminal I/O (GETC, PUTS), generic device I/O (OPEN, READ, WRITE), and environment variables (GET_ENV, SET_ENV). 92) Bootstraps such as aboot use them to read the kernel from the boot device. 93) 94)
The Linux kernel uses the callbacks for:
SRM provides the OSF/1 PALcode, which Linux uses. ARC and AlphaBIOS provide PALcode for Windows NT, which is why Linux needs MILO on those systems; the differences between the two are described in ARC Firmware: Windows NT and Linux. 100) 101)
SRM was originally licensed with Digital UNIX or OpenVMS rather than with the hardware, so a system that had shipped with Windows NT had no license for it; 102) 103) 104) this was one reason MILO was written. 105) For Digital Semiconductor's own boards, the Evaluation Board Software Developer's Kit (EBSDK) provided an inexpensive license. 106) By 2000, Compaq offered SRM images for free download. 107) 108) 109)
The following sources conflict with each other or with the account given above. They are listed here for further investigation.
os_typelinux as well as unix and vms.SMMTABLE.TXT on the V7.3 firmware CD lists SRM 5.3 (see Final versions).| Document | Part number | Date |
|---|---|---|
| Alpha SRM Console for Alpha Microprocessor Motherboards User's Guide | EC-QK8DF-TE | September 1997 |
| AlphaServer ES47/ES80/GS1280 Server Management SRM Console Reference, Version 1.0 | December 2002 | |
| AlphaServer 2000/2100/2100A Firmware Reference Guide | EK-AXPFW-RM.C01 | December 1995 |
| Alpha Systems Firmware Update V7.3 Release Notes Overview | AA-RGKNV-TS | April 2007 |
| AlphaPC 164SX/164LX/164 Motherboards Firmware Update Procedures, V5.7 | March 2000 | |
| Alpha System Reference Manual, Version 7 (Part III: Console Interface Architecture) | 1997 |
SMMTABLE.TXT, Alpha Systems Firmware Update CD V7.3, 14 Mar 2007