Table of Contents
SRM Console
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.
Console commands
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)
Environment variables
| 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
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 |
Booting Linux
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.
Switching to ARC or AlphaBIOS
- On systems with both consoles in flash,
set os_type ntfollowed byinitor a power cycle starts ARC or AlphaBIOS;set os_type unix(orosforvms, depending on the system) returns to SRM. 22) 23) 24) 25) On the Jensen, the command isset os nt. 26) On the AlphaServer 800, SRM starts first and then loads AlphaBIOS, unless the Halt button is in. 27) - Switching from ARC or AlphaBIOS to SRM is described in ARC Firmware: Switching to SRM.
Updating firmware
- Firmware CD: Digital distributed firmware for all its systems on the Alpha Systems Firmware Update CD, e.g. part number QY-003AA-A8. 31) Booting the CD (e.g.
boot dqa0) runs the Loadable Firmware Update utility (LFU). At itsUPD>prompt,listshows the current and available versions andupdate *updates all firmware. 32)update srmupdates 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) - From disk: LFU can read a copy of the firmware CD written to any SCSI disk, e.g.
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 inupdate srm -path iso9660:[ALPHA1000]MKSRMROM.EXE/dka400for the AlphaServer 1000. 36) - Recovery: most Digital Semiconductor motherboards (all but the AlphaPC 64) have a fail-safe booter for recovering from corrupted firmware. 43) On the AlphaPC 164LX it is enabled with jumper CF7; it only loads firmware from floppy, which must then be flashed. 44) 45) Some AlphaServers have a fail-safe loader instead, e.g. jumper J22 on the ES40. 46)
- Firmware should be updated after a cold power-up rather than after an operating system shutdown. 47)
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.
Final 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 |
System support
OpenVMS and Tru64 UNIX boot only from the SRM console. 51) Systems designed only for Windows NT generally lack it:
- The Deskstation Ruffian (AlphaPC 164UX) has only its own ARCSBIOS firmware. 55)
Other notes on specific systems:
- The Multia (UDB) starts SRM first, which runs its diagnostics and then normally loads ARC. 58)
Known issues
- Kernels for the GS80, GS160, GS320, Titan, and Marvel: the SRM console on the Wildfire (GS80, GS160, and GS320), Titan, and Marvel systems occupies more low memory than on older systems, 65) so a kernel for them must be built without
CONFIG_ALPHA_LEGACY_START_ADDRESS, whichmake defconfigenables (see Kernel). 66) 67) - Returning to SRM: SRM expects the machine to be in the state it left it in. Linux moves the virtual page table and reassigns PCI resources, so after halting Linux the console may report machine checks or leave the screen blank. 68) 69) 70) Linux restores the PCI window mappings for Tsunami systems but not for older ones. 71)
- SCSI boot devices: SRM can only boot from controllers it has drivers for. Booting from Adaptec controllers requires V5.8 on the AlphaPC 164LX and 164SX and V5.9 on the DS10, DS20, ES40, and XP1000. 74) On older systems, QLogic ISP1020 and ISP1040 controllers are supported but ISP1080 and later are not. 75)
- Rejected PCI cards on the Personal Workstation: because of the Pyxis DMA bug, SRM on the Miata accepts only known-good cards in its two 64-bit PCI slots and refuses to boot with anything else there, while ARC and AlphaBIOS on the same machine do not enforce this. 76) The check is overridden with
set pci_device_override, given a device and vendor ID, or with-1to disable it entirely. 77) Overriding it is only safe for cards that do not use DMA; see Other Hardware. - Keyboards: some keyboards that work with AlphaBIOS are not recognized by SRM; after an AlphaPC 164SX was switched to SRM, its console did not respond until the keyboard was replaced. 78)
- Time-of-year clock: the year in the clock is stored relative to an epoch that depends on the firmware and operating system: 1900 for OpenVMS, 1952 for Tru64 UNIX, 2000 on newer SRM versions, and 1980 for ARC and AlphaBIOS. The Linux RTC driver detects the epoch at boot. 79) 80) The epoch cannot be changed, which matters when another operating system on the same machine uses a different one. 81) The time should be set from the operating system rather than from the SRM prompt. 82)
Specification
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:
- initialize, test, and prepare the hardware,
- bootstrap system software,
- control each processor in a multiprocessor system when no operating system is running,
- provide services to system software that simplify access to the hardware, and
- let a console operator monitor and control the system. 85)
HWRPB
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)
Callbacks
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:
PALcode
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)
Licensing
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)
Conflicting information
The following sources conflict with each other or with the account given above. They are listed here for further investigation.
- Meaning of "SRM"
- "Re: Enter IEEE 1275, OpenBoot firmware console RE: SRM multi OS'e s", Jay Estabrook, axp-list, 6 Oct 1999: "System Reference Manual. The console provides an interface which follows the spec present in that manual."
- "Re: SRM unplugged", Xenophon Fenderson, axp-list, 5 Oct 1998: "The System Resources Monitor (SRM) is the O/S loader for OpenVMS, Digital UNIX, NetBSD, and OpenBSD on the Alpha"
- "SUMMARY SRM && AlphaBIOS", Alex Wilkinson, tru64-unix-managers, 21 May 2002, quoting Tom Blinn: "SRM stands for "Systems Reference Manual" or more accurately the Alpha SRM in the case of Alpha systems (there was a VAX SRM for the VAX systems that preceded Alpha). The real SRM is restricted distribution"
- Values of
os_type- AlphaServer ES40 and AlphaStation ES40 User Interface Guide, February 2000, pp. 2-51 to 2-53, lists
linuxas well asunixandvms. - "[gentoo-alpha] Some questions about DS25", Davide Cittaro, gentoo-alpha, 14 Sep 2005, quotes the DS25 owner's manual: "set os_type Linux".
- "Re: [gentoo-alpha] Some questions about DS25", Jeff Donsbach, gentoo-alpha, 14 Sep 2005: "The SRM only recognizes the values "unix" or "vms". When running Linux, leave it set to "UNIX"."
- Last firmware for the AlphaServer 2100
SMMTABLE.TXTon the V7.3 firmware CD lists SRM 5.3 (see Final versions).- "SUMMARY: Firmware requirements for 5.0A on AlphaServer 2100", Chris Los, tru64-unix-managers, 12 May 2003, quoting Jay Vlack of HP: "It looks like firmware V5.3B was the last release for AlphaServer 2100 systems."
- Whether an SRM license can be bought without Digital UNIX
- "RE: Alpha1200/ SRM access", WaiSun Chia, axp-list, 17 Jul 1998: "you probably cannot just _BUY_ a SRM license for regular SBU products (i.e. the Alphaservers & Alphastation line) without buying DU"
- "Re: AlphaBIOS and milo", Maurice W. Hilarius, axp-list, 11 Nov 1997: "One may buy a board and CPU and a license for SRM for it without buying DU."
- "Re: Questions about 433a", Maurice Hilarius, axp-list, 26 May 1998, describing the EBSDK: "includes a license for SRM legal on all Alpha machine types." This conflicts with Jay Estabrook's statement that the EBSDK only includes SRM images for Digital Semiconductor boards.
- Adaptec boot support on the PC164LX
- "Re: SRM vs. ARC; serial output mode of ARC", Rich Payne, axp-list, 11 Mar 2000: "It will work for the 2940 (I have one of these at work, with SRM V5.6)"
- "Re: Alpha PC164, SRM, and Adaptec 2940UW", Jay Estabrook, axp-list, 11 Apr 2001: "LX and SX with 5.8 firmware (their last)"
- Number of firmware images in PC164LX and PC164SX flash
- Alpha SRM Console for Alpha Microprocessor Motherboards User's Guide, p. 2-20: "all the AlphaPC motherboards, except the AlphaPC 64, support only one firmware in the flash ROM"
- AlphaPC 164SX/164LX/164 Firmware Update Procedures (V5.7): the boards "contain a flash ROM for the Alpha SRM console and AlphaBIOS firmware"
Documentation
| 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
