===== 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, [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/freebsd-alpha-mbox/gmane-2006-May.mbox#L972|"HEADSUP: Alpha support is being retired in 7.0"]], John Baldwin, freebsd-alpha, 11 May 2006)] and it is the preferred firmware for Linux (see [[software:firmware#choosing_firmware_for_linux|Choosing firmware for Linux]]). The name refers to the Alpha System Reference Manual, the specification whose console architecture the firmware implements. [(>{{wiki:software:firmware:alphaserver_2000_2100_2100a_firmware_reference_guide.pdf?linkonly|AlphaServer 2000/2100/2100A Firmware Reference Guide}}, p. 1-1)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-October.mbox#L7687|"Re: Enter IEEE 1275, OpenBoot firmware console RE: SRM multi OS'e s"]], Jay Estabrook, axp-list, 6 Oct 1999)] Its command line interface resembles the console of Digital's VAX systems. [(>{{wiki:software:firmware:alphaserver_2000_2100_2100a_firmware_reference_guide.pdf?linkonly|AlphaServer 2000/2100/2100A Firmware Reference Guide}}, p. 1-1)] Systems intended for Windows NT instead use the [[software:firmware:arc|ARC or AlphaBIOS]] firmware. Some systems carry both consoles and can switch between them (see [[#switching_to_arc_or_alphabios|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 [[documentation:srm|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 [[documentation:srm#everyday_commands|Using the SRM Console: Everyday commands]]; the table below lists the others. Multiprocessor systems show the prompt ''%%P00>>>%%'' instead of ''%%>>>%%''. [(>{{wiki:hardware:motherboards:common:srm_console_user_guide.pdf?linkonly|Alpha SRM Console for Alpha Microprocessor Motherboards User's Guide}}, pp. 3-2 to 3-4)] [(>{{wiki:software:firmware:alphaserver_es47_es80_gs1280_srm_console_reference.pdf?linkonly|AlphaServer ES47/ES80/GS1280 SRM Console Reference}})] ^ Command ^ Purpose ^ | ''boot'' | Boot from a device, e.g. ''boot [-file ] [-flags ] [-protocols ] [-halt] []'' | | ''examine'', ''deposit'' | Read and write memory and registers | | ''arc'', ''alphabios'' | Start the ARC or AlphaBIOS firmware (see [[#switching_to_arc_or_alphabios|below]]) | | ''fwupdate'', ''lfu'' | Update firmware (see [[#updating_firmware|below]]) | | ''run bios'' | Run an option ROM's BIOS setup utility, e.g. an Adaptec SCSI BIOS | Sources: [(>{{wiki:hardware:motherboards:common:srm_console_user_guide.pdf?linkonly|Alpha SRM Console for Alpha Microprocessor Motherboards User's Guide}}, pp. 3-4 to 3-19)] [(>{{wiki:software:firmware:alphaserver_es47_es80_gs1280_srm_console_reference.pdf?linkonly|AlphaServer ES47/ES80/GS1280 SRM Console Reference}}, pp. 12-13)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-April.mbox#L19692|"Re: 21140 NIC"]], Rich Payne, axp-list, 24 Apr 2000)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-November.mbox#L43768|"Re: XP1000 & MILO & SCSI"]], Peter Petrakis, axp-list, 24 Nov 2000)] Later consoles have a Unix-like shell with pipes (''show device | grep dk''), output redirection, and ''&'' to run commands in the background. [(>{{wiki:software:firmware:alphaserver_es47_es80_gs1280_srm_console_reference.pdf?linkonly|AlphaServer ES47/ES80/GS1280 SRM Console Reference}}, p. 8)] ==== 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 [[#switching_to_arc_or_alphabios|below]]) | | ''ewa0_mode'' | Ethernet media type for the first DEC Tulip interface | | ''ewa0_protocols'' | Network boot protocol, ''mop'' or ''bootp'' | Sources: [(>{{wiki:hardware:motherboards:common:srm_console_user_guide.pdf?linkonly|Alpha SRM Console for Alpha Microprocessor Motherboards User's Guide}}, pp. 3-7, 3-23 to 3-26)] [(>{{wiki:software:firmware:alphaserver_es47_es80_gs1280_srm_console_reference.pdf?linkonly|AlphaServer ES47/ES80/GS1280 SRM Console Reference}}, pp. 10-11)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-July.mbox#L24546|"Re: XP1000 installation"]], Rich Payne, axp-list, 20 Jul 1999)] The ''console'' variable and setting up a serial console for Linux are described in [[documentation:srm#serial_console|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. [(>{{wiki:software:firmware:alphaserver_es47_es80_gs1280_srm_console_reference.pdf?linkonly|AlphaServer ES47/ES80/GS1280 SRM Console Reference}}, p. 7)] [(>{{wiki:hardware:motherboards:common:srm_console_user_guide.pdf?linkonly|Alpha SRM Console for Alpha Microprocessor Motherboards User's Guide}}, pp. 2-15 to 2-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 | Sources: [(>{{wiki:software:firmware:alphaserver_es47_es80_gs1280_srm_console_reference.pdf?linkonly|AlphaServer ES47/ES80/GS1280 SRM Console Reference}}, p. 7)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2002-February.mbox#L11360|"Re: RH 7.1 installation on PWS 500a"]], Jay Estabrook, axp-list, 14 Feb 2002)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-July.mbox#L4695|"Re: SRM Console Options"]], Rich Payne, axp-list, 12 Jul 2000)] ==== 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. [(>{{wiki:documentation:references:alpha_system_reference_manual_v7.pdf?linkonly|Alpha System Reference Manual, Version 7 (1997)}}, Part III, pp. 3-37 to 3-38)] For Linux, the bootstrap is normally [[software:boot_loaders:aboot|aboot]], which reads the kernel from an ext2, ext3, ext4, XFS, UFS, or ISO 9660 file system (see [[software:boot_loaders:aboot#file_systems|aboot: File systems]]) and supports network booting. [(>[[https://github.com/alphalinux/aboot/blob/master/README.md|README.md]], aboot 2.0)] 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 [[software:boot_loaders:aboot#booting|aboot: Booting]]. The boot commands, the variables for booting unattended, and troubleshooting are described in [[documentation:srm#booting_linux|Using the SRM Console: Booting Linux]]; preparing the disk is described in [[documentation:installation|Installation]]. ==== Switching to ARC or AlphaBIOS ==== * On systems with both consoles in flash, ''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. [(>{{wiki:software:firmware:alphaserver_2000_2100_2100a_firmware_reference_guide.pdf?linkonly|AlphaServer 2000/2100/2100A Firmware Reference Guide}}, pp. 1-55 to 1-56)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-July.mbox#L41107|"Re: Lost NT Boot Loader"]], Jay Estabrook, axp-list, 16 Jul 1998)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-October.mbox#L43340|"Re: SUCCESS! (was: INSTALL PROBLEMS)"]], Jay Estabrook, axp-list, 28 Oct 1998)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-October.mbox#L36322|"Re: UDB Firmware Prob"]], Maurice Hilarius, axp-list, 24 Oct 1996)] On the Jensen, the command is ''set os nt''. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-March.mbox#L4787|"Jensen-HOWTO: First pass"]], Jim Paradis, axp-list, 15 Mar 1996)] On the AlphaServer 800, SRM starts first and then loads AlphaBIOS, unless the Halt button is in. [(>{{wiki:software:firmware:alphaserver_800_users_guide.pdf?linkonly|AlphaServer 800 User's Guide}}, p. 4-11)] * ''alphabios'' (or ''arc'') starts AlphaBIOS from flash for one session, without changing ''os_type''. [(>{{wiki:software:firmware:alphaserver_800_users_guide.pdf?linkonly|AlphaServer 800 User's Guide}}, p. 6-23)] On the AlphaPC 164, which has only one firmware in flash, ''arc'' instead loads the ARC firmware image from a FAT floppy. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-December.mbox#L18647|"RE: Dual booting PC164"]], Jay Estabrook, axp-list, 12 Dec 1996)] * Switching from ARC or AlphaBIOS to SRM is described in [[software:firmware:arc#switching_to_srm|ARC Firmware: Switching to SRM]]. * The AlphaPC 164, 164LX, and 164SX hold only one firmware in flash, so switching requires reflashing (see [[#updating_firmware|below]]). [(>{{wiki:hardware:motherboards:common:srm_console_user_guide.pdf?linkonly|Alpha SRM Console for Alpha Microprocessor Motherboards User's Guide}}, p. 2-20)] ==== 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. [(>{{wiki:hardware:motherboards:common:sdk_read_me_first.pdf?linkonly|Alpha Motherboards Software Developer's Kit Read Me First}}, p. 14)] Booting the CD (e.g. ''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. [(>{{wiki:software:firmware:alpha_systems_firmware_update_v7.3_release_notes_overview.pdf?linkonly|Alpha Systems Firmware Update V7.3 Release Notes Overview}}, p. 6)] ''update srm'' updates only the console firmware. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2001-July.mbox#L11323|"RE: Help: Corrupted UP2000+ won't boot anymore"]], Peter Petrakis, axp-list, 11 Jul 2001)] 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. [(>{{wiki:software:firmware:alpha_systems_firmware_update_v7.3_release_notes_overview.pdf?linkonly|Alpha Systems Firmware Update V7.3 Release Notes Overview}}, p. 10)] * **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. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/tru64-unix-managers-mbox/gmane-2003-April.mbox#L1610|"SUMMARY: Remote firmware update via LFU ?"]], Iain Barker, tru64-unix-managers, 2 Apr 2003)] A single image can also be named explicitly, as in ''update srm -path iso9660:[ALPHA1000]MKSRMROM.EXE/dka400'' for the AlphaServer 1000. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/tru64-unix-managers-mbox/1997-March.mbox#L30413|"[SUMMARY] AS1000 4/200 firmware upgrade problems"]], John Files, alpha-osf-managers, 4 Mar 1997)] * **Floppy:** newer consoles run LFU from floppy with the ''lfu'' command. On the Digital Semiconductor motherboards, ''fwupdate'' loads ''fwupdate.exe'' from a FAT floppy together with the ROM image. [(>{{wiki:hardware:motherboards:common:srm_console_user_guide.pdf?linkonly|Alpha SRM Console for Alpha Microprocessor Motherboards User's Guide}}, p. 3-16)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-October.mbox#L7397|"Re: How to flash MILO? ( Not a faq )"]], Peter Rival, axp-list, 6 Oct 1999)] SRM versions before 4.4-1 lack the ''fwupdate'' command. [(>{{wiki:hardware:motherboards:common:srm_console_user_guide.pdf?linkonly|Alpha SRM Console for Alpha Microprocessor Motherboards User's Guide}}, p. 2-17)] * **From AlphaBIOS:** on the AlphaPC 164LX and 164SX, SRM is installed with AlphaBIOS's "Upgrade AlphaBIOS" option, using a floppy with ''fwupdate.exe'' and the SRM ROM image (e.g. ''sx164srm.rom''). This overwrites AlphaBIOS. [(>{{wiki:hardware:motherboards:common:srm_console_user_guide.pdf?linkonly|Alpha SRM Console for Alpha Microprocessor Motherboards User's Guide}}, p. 2-1)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-October.mbox#L7397|"Re: How to flash MILO? ( Not a faq )"]], Peter Rival, axp-list, 6 Oct 1999)] To go back, AlphaBIOS is flashed from SRM the same way. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1997-November.mbox#L18642|"Re: How do I update an AlphaBIOS PC164LX to SRM?"]], Jim. Shipman, axp-list, 16 Nov 1997)] * **Recovery:** most Digital Semiconductor motherboards (all but the AlphaPC 64) have a fail-safe booter for recovering from corrupted firmware. [(>{{wiki:hardware:motherboards:common:srm_console_user_guide.pdf?linkonly|Alpha SRM Console for Alpha Microprocessor Motherboards User's Guide}}, p. 2-3)] On the AlphaPC 164LX it is enabled with jumper CF7; it only loads firmware from floppy, which must then be flashed. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-February.mbox#L29667|"Re: trying to make the SRM AlphaBIOS switch"]], Rich Payne, axp-list, 22 Feb 2000)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2001-June.mbox#L4399|"Re: Problems with old 164LX board"]], Rich Payne, axp-list, 10 Jun 2001)] Some AlphaServers have a fail-safe loader instead, e.g. jumper J22 on the ES40. [(>{{wiki:software:firmware:alphaserver_es40_v7.3_firmware_release_notes.pdf?linkonly|AlphaServer ES40 V7.3 Firmware Release Notes}}, p. 12)] * Firmware should be updated after a cold power-up rather than after an operating system shutdown. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2001-November.mbox#L13826|"Re: Alpha Firmware wonnt update from floppy, help!"]], Rich Payne, axp-list, 26 Nov 2001)] Archived firmware images are listed in [[software:firmware#obtaining_and_updating_firmware|Firmware: Obtaining and updating firmware]]. The [[https://github.com/alphalinux/firmware|alphalinux/firmware]] repository holds these SRM images: ^ Board ^ Directory ^ SRM image ^ | [[hardware:motherboards:pc164lx|AlphaPC 164LX]] | [[https://github.com/alphalinux/firmware/tree/master/api/LX|api/LX]] | ''lx164srm.rom'', with ''fwupdate.exe'' | | [[hardware:motherboards:pc264dp|AlphaPC 264DP]] | [[https://github.com/alphalinux/firmware/tree/master/api/DP|api/DP]] | ''pc264srm.rom''; ''archive/5.8'' holds a set of files for LFU from floppy, described in ''floppy_readme.txt'' | | [[hardware:motherboards:up1000|UP1000]] | [[https://github.com/alphalinux/firmware/tree/master/api/UP1000|api/UP1000]] | ''up1000_srm_5.6_beta'', replacing AlphaBIOS (see [[software:firmware:arc#by_system|ARC Firmware: Switching to SRM]]) | | [[hardware:motherboards:up1100|UP1100]] | [[https://github.com/alphalinux/firmware/tree/master/api/UP1100|api/UP1100]] | ''up1100_srm_A5.6-13'', installed with ''lfu'' from floppy as described in its ''readme.1st'' | | [[hardware:motherboards:up1500|UP1500]] | [[https://github.com/alphalinux/firmware/tree/master/api/UP1500|api/UP1500]] | ''srmupdt.5.6-19.img'', a floppy image for ''lfu'', described in ''README.srm'' | | [[hardware:motherboards:up2000|UP2000]] and UP2000+ | [[https://github.com/alphalinux/firmware/tree/master/api/UP2000|api/UP2000]], [[https://github.com/alphalinux/firmware/tree/master/api/UP2000plus|api/UP2000plus]] | ''up2000_srm_5.8-81'', older versions in ''archive'' | | CS20 | [[https://github.com/alphalinux/firmware/tree/master/api/CS20|api/CS20]] | ''CS20_srm-5.8-81'', and a CD image in ''CD-ROM'' | Sources: [(>[[https://github.com/alphalinux/firmware|alphalinux/firmware]], GitHub)] The update procedure from the SRM prompt is described in [[documentation:srm#firmware_versions|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. [(>''SMMTABLE.TXT'', Alpha Systems Firmware Update CD V7.3, 14 Mar 2007)] ^ 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 [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2004-April.mbox#L872|"seeking SRM device support info..."]], Jay Estabrook, axp-list, 2 Apr 2004)]; see the [[hardware:motherboards:pc164#conflicting_information|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. [(>{{wiki:hardware:motherboards:common:srm_console_user_guide.pdf?linkonly|Alpha SRM Console for Alpha Microprocessor Motherboards User's Guide}}, p. 1-2)] Systems designed only for Windows NT generally lack it: * The Alpha XL series has no SRM. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-January.mbox#L3642|"Re: SRM license issues"]], Jay Estabrook, axp-list, 6 Jan 1998)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1997-October.mbox#L20901|"Re: Milo booting other OSes?"]], Jay Estabrook, axp-list, 29 Oct 1997)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-November.mbox#L46358|"Re: DEC Celebris"]], Jay Estabrook, axp-list, 25 Nov 1996)] * The Deskstation Ruffian ([[hardware:motherboards:pc164ux|AlphaPC 164UX]]) has only its own ARCSBIOS firmware. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-September.mbox#L29483|"Re: AlphaBios vs SRM"]], Rich Payne, axp-list, 15 Sep 1999)] * The 21164-P1 and 21164-P2 processors, which Digital sold for Windows NT systems, must run with the Windows NT superpage bits set, [(>{{wiki:hardware:cpu:21164:21164_hardware_reference_manual.pdf?linkonly|Alpha 21164 Microprocessor Hardware Reference Manual}}, July 1996, p. 5-1)] and SRM does not run on them. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-July.mbox#L956|"Re: questions on the PC164"]], David A Rusling, axp-list, 12 Jul 1996)] Other notes on specific systems: * The Multia (UDB) starts SRM first, which runs its diagnostics and then normally loads ARC. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-July.mbox#L2269|"RE: UDB: SCSI on the motherboard? ARC error"]], Jay Estabrook, axp-list, 13 Jul 1996)] * The [[hardware:motherboards:pc164|AlphaPC 164]] and AlphaStation 500 have only enough flash for SRM or ARC, not both. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-October.mbox#L28243|"Re: Alpha-Boards"]], Jay Estabrook, axp-list, 19 Oct 1996)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-August.mbox#L15899|"Re: Linux running on AlphaStation 500/333?"]], Jay Estabrook, axp-list, 15 Aug 1996)] * Alpha Processor, Inc. released SRM consoles for the [[hardware:motherboards:up2000|UP2000]], based on the DP264 (DS20) SRM, and for the [[hardware:motherboards:up1000|UP1000]], based on V5.6. Tru64 UNIX is not supported on either. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-October.mbox#L10941|"Re: dual boot (slightly off topic)"]], Rich Payne, axp-list, 9 Oct 1999)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-June.mbox#L17924|"Re: Benefits of Linux/Alpha over Linux/x86?"]], Rich Payne, axp-list, 23 Jun 2000)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-June.mbox#L9637|"Re: Nvidia Quadro in an Alpha Box"]], Rich Payne, axp-list, 13 Jun 2000)] The UP1000 SRM does not work on the [[hardware:motherboards:up1100|UP1100]]. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-November.mbox#L30040|"Re: 2.40test10 working?"]], Rich Payne, axp-list, 16 Nov 2000)] ==== 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, [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-June.mbox#L18501|"Re: Linux-2.4.0-test2"]], Richard Henderson, axp-list, 24 Jun 2000)] so a kernel for them must be built without ''CONFIG_ALPHA_LEGACY_START_ADDRESS'', which ''make defconfig'' enables (see [[documentation:kernel#kernel_start_address|Kernel]]). [(>[[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/alpha/Kconfig.debug?h=v7.3-rc1|arch/alpha/Kconfig.debug]], Linux 7.3)] [(>[[https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/alpha/configs/defconfig?h=v7.3-rc1|arch/alpha/configs/defconfig]], Linux 7.3)] * **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. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-June.mbox#L3211|"Re: INIT errors on UDB at shutdown"]], David Mosberger-Tang, axp-list, 6 Jun 1996)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1997-April.mbox#L18595|"Re: Reboot doesn't reboot"]], Jay Estabrook, axp-list, 9 Apr 1997)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2001-October.mbox#L12092|"Re: PC164 SRM problem"]], Jay Estabrook, axp-list, 15 Oct 2001)] Linux restores the PCI window mappings for Tsunami systems but not for older ones. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2001-October.mbox#L13028|"Re: PC164 SRM problem"]], Ivan Kokshaysky, axp-list, 16 Oct 2001)] * **Video cards:** SRM initializes VGA cards with an x86 BIOS emulator, whose version determines which cards work. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2001-July.mbox#L19180|"Re: Graphic card for AS200 (PCI, ARC-Bios)"]], Jay Estabrook, axp-list, 17 Jul 2001)] nVidia TNT2 cards need V5.8, and ATI Radeon cards need V5.9. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2001-April.mbox#L11968|"RE: Request For Comment: Low-Cost Alpha Platform Suggestion"]], Rich Payne, axp-list, 9 Apr 2001)] * **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. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2001-April.mbox#L35378|"Re: Alpha PC164, SRM, and Adaptec 2940UW"]], Jay Estabrook, axp-list, 11 Apr 2001)] On older systems, QLogic ISP1020 and ISP1040 controllers are supported but ISP1080 and later are not. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/debian-alpha-mbox/2002-December.mbox#L4657|"Re: General questions about alphaserver 1200 (533AU2)"]], Jay Estabrook, debian-alpha, 9 Dec 2002)] * **Rejected PCI cards on the Personal Workstation:** because of the [[hardware:chipsets#21174|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. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/netbsd-port-alpha-mbox/1999-December.mbox#L1089|"Re: Q: Compaq, *BSD and 'Linux-only' AlphaBIOS (fwd)"]], Wilko Bulte, port-alpha, 4 Dec 1999)] The check is overridden with ''set pci_device_override'', given a device and vendor ID, or with ''-1'' to disable it entirely. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/comp-os-linux-alpha-mbox/googlegroups-2002-October.mbox#L6176|"Re: Override SRM card rejection"]], Reinhard Eigner, comp.os.linux.alpha, 10 Oct 2002)] Overriding it is only safe for cards that do not use DMA; see [[hardware:other#personal_workstation_64-bit_slots|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. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-April.mbox#L6165|"Re: WAS: RE: SRM serial -> keyboard NOW: 5300 server won't boot"]], Ivan Kokshaysky, axp-list, 7 Apr 2000)] * **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. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/debian-alpha-mbox/2000-April.mbox#L2166|"Re: potato install-items"]], David Huggins-Daines, debian-alpha, 8 Apr 2000)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2002-July.mbox#L9915|"Re: AS2100 RAID (was: ES40 Install Problem...)"]], Earl Truss, axp-list, 17 Jul 2002)] The epoch cannot be changed, which matters when another operating system on the same machine uses a different one. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2002-March.mbox#L29613|"RE: MoBo or Frimware Problem?"]], Peter Petrakis, axp-list, 25 Mar 2002)] The time should be set from the operating system rather than from the SRM prompt. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/tru64-unix-managers-mbox/gmane-2003-June.mbox#L19329|"SUMMARY: Re: Can system clock be changed at SRM prompt?"]], Shaun Racine, tru64-unix-managers, 18 Jun 2003)] ==== Specification ==== The console is specified in Part III, "Console Interface Architecture", of the Alpha System Reference Manual. [(>{{wiki:documentation:references:alpha_system_reference_manual_v7.pdf?linkonly|Alpha System Reference Manual, Version 7 (1997)}})] Most of the manual was published as the Alpha Architecture Reference Manual; some of its appendices remained company confidential. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-October.mbox#L7687|"Re: Enter IEEE 1275, OpenBoot firmware console RE: SRM multi OS'e s"]], Jay Estabrook, axp-list, 6 Oct 1999)] 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. [(>{{wiki:documentation:references:alpha_system_reference_manual_v7.pdf?linkonly|Alpha System Reference Manual, Version 7 (1997)}}, Part III, p. 1-1)] === 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''. [(>{{wiki:documentation:references:alpha_system_reference_manual_v7.pdf?linkonly|Alpha System Reference Manual, Version 7 (1997)}}, Part III, pp. 2-1 to 2-6)] 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. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-March.mbox#L15664|"Re: ev56 optimization -> illegal instruction"]], Richard Henderson, axp-list, 12 Mar 1998)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-August.mbox#L47865|"Re: [2.2.12] /proc/cpuinfo wrong on Alpha UP"]], Richard Henderson, axp-list, 29 Aug 1999)] The ''nr_processors'' field is not the number of CPUs actually present; the per-CPU slots must be checked. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-December.mbox#L16654|"Re: SMP problem....maybe ??"]], Jay Estabrook, axp-list, 8 Dec 1999)] [[software:boot_loaders:milo|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 [[software:boot_loaders:milo#hwrpb_and_rebooting|MILO: HWRPB and rebooting]]). [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-April.mbox#L2526|"Re: first linux/alpha questions"]], David A Rusling, axp-list, 4 Apr 1996)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-December.mbox#L32014|"Re: Linux_is_Great!"]], Jay Estabrook, axp-list, 15 Dec 1998)] === 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''). [(>{{wiki:documentation:references:alpha_system_reference_manual_v7.pdf?linkonly|Alpha System Reference Manual, Version 7 (1997)}}, Part III, pp. 2-31 to 2-33)] Bootstraps such as aboot use them to read the kernel from the boot device. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1997-December.mbox#L2306|"Re: Milo Development"]], Jay Estabrook, axp-list, 1 Dec 1997)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2001-July.mbox#L27875|"Re: 7.1 boot problem on PC164LX using SRM 5.8-1"]], Richard Henderson, axp-list, 21 Jul 2001)] The Linux kernel uses the callbacks for: * ''srmcons'', a console driver that shows kernel messages early in boot, which is mainly useful for debugging. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-August.mbox#L37912|"generic axp patch 10"]], Richard Henderson, axp-list, 14 Aug 1998)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2003-February.mbox#L13551|"Re: SRM & serial console & 2.4.20 & XP1000"]], Jay Estabrook, axp-list, 17 Feb 2003)] On the AlphaServer ES47, ES80, and GS1280, ''console=srm'' is required to use the "serial" console. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2004-September.mbox#L6269|"Alpha Core ISO Images"]], Jay Estabrook, axp-list, 30 Sep 2004)] * ''srm_printk'', which cannot be used once the kernel has replaced the console's page tables. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-August.mbox#L27222|"Re: tbia() on DEC 3000 question"]], Richard Henderson, axp-list, 18 Aug 1999)] * reading and writing SRM environment variables. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2001-April.mbox#L2502|"Re: access srm resources"]], Peter Petrakis, axp-list, 3 Apr 2001)] === 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 [[software:firmware:arc#windows_nt_and_linux|ARC Firmware: Windows NT and Linux]]. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-January.mbox#L26796|"Re: Does DEC have a clue?"]], Jay Estabrook, axp-list, 21 Jan 1998)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1997-November.mbox#L1384|"Re: bootp with AlphaBIOS"]], Jay Estabrook, axp-list, 3 Nov 1997)] ==== 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; [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-July.mbox#L956|"Re: questions on the PC164"]], David A Rusling, axp-list, 12 Jul 1996)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/tru64-unix-managers-mbox/1998-January.mbox#L22408|"Alpha SRM console firmware for single board computers"]], Tom Blinn, alpha-osf-managers, 6 Jan 1998)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-July.mbox#L40176|"RE: Alpha1200/ SRM access"]], WaiSun Chia, axp-list, 16 Jul 1998)] this was one reason MILO was written. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1996-July.mbox#L956|"Re: questions on the PC164"]], David A Rusling, axp-list, 12 Jul 1996)] For Digital Semiconductor's own boards, the Evaluation Board Software Developer's Kit (EBSDK) provided an inexpensive license. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-January.mbox#L3642|"Re: SRM license issues"]], Jay Estabrook, axp-list, 6 Jan 1998)] By 2000, Compaq offered SRM images for free download. [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-May.mbox#L46844|"Re: PC164 Motherboards"]], Peter Petrakis, axp-list, 20 May 1999)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-February.mbox#L36338|"srm / ide"]], Bibek Sahu, axp-list, 27 Feb 2000)] [(>[[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-July.mbox#L75|"Re: MILO upgrades don't work"]], Jeff Sturm, axp-list, 1 Jul 2000)] ==== 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"** * [[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1999-October.mbox#L7687|"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." * [[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-October.mbox#L58087|"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" * [[https://github.com/alphalinux/mailing-list-archives/blob/main/tru64-unix-managers-mbox/gmane-2002-May.mbox#L28443|"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''** * {{wiki:hardware:systems:alphaserver_es40:alphaserver_es40_user_interface_guide.pdf?linkonly|AlphaServer ES40 and AlphaStation ES40 User Interface Guide}}, February 2000, pp. 2-51 to 2-53, lists ''linux'' as well as ''unix'' and ''vms''. * [[https://github.com/alphalinux/mailing-list-archives/blob/main/gentoo-alpha-mbox/2005-September.mbox#L446|"[gentoo-alpha] Some questions about DS25"]], Davide Cittaro, gentoo-alpha, 14 Sep 2005, quotes the DS25 owner's manual: "set os_type Linux". * [[https://github.com/alphalinux/mailing-list-archives/blob/main/gentoo-alpha-mbox/2005-September.mbox#L521|"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.TXT'' on the V7.3 firmware CD lists SRM 5.3 (see [[#final_versions|Final versions]]). * [[https://github.com/alphalinux/mailing-list-archives/blob/main/tru64-unix-managers-mbox/gmane-2003-May.mbox#L9322|"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** * [[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-July.mbox#L43326|"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" * [[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1997-November.mbox#L8376|"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." * [[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/1998-May.mbox#L39871|"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** * [[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2000-March.mbox#L18663|"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)" * [[https://github.com/alphalinux/mailing-list-archives/blob/main/axp-list-mbox/2001-April.mbox#L35378|"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** * {{wiki:hardware:motherboards:common:srm_console_user_guide.pdf?linkonly|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" * {{wiki:hardware:motherboards:pc164lx:alphapc_v5.7_firmware_release_notes.pdf?linkonly|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 ^ | {{wiki:hardware:motherboards:common:srm_console_user_guide.pdf?linkonly|Alpha SRM Console for Alpha Microprocessor Motherboards User's Guide}} | EC-QK8DF-TE | September 1997 | | {{wiki:software:firmware:alphaserver_es47_es80_gs1280_srm_console_reference.pdf?linkonly|AlphaServer ES47/ES80/GS1280 Server Management SRM Console Reference, Version 1.0}} | | December 2002 | | {{wiki:software:firmware:alphaserver_2000_2100_2100a_firmware_reference_guide.pdf?linkonly|AlphaServer 2000/2100/2100A Firmware Reference Guide}} | EK-AXPFW-RM.C01 | December 1995 | | {{wiki:software:firmware:alpha_systems_firmware_update_v7.3_release_notes_overview.pdf?linkonly|Alpha Systems Firmware Update V7.3 Release Notes Overview}} | AA-RGKNV-TS | April 2007 | | {{wiki:hardware:motherboards:pc164lx:alphapc_v5.7_firmware_release_notes.pdf?linkonly|AlphaPC 164SX/164LX/164 Motherboards Firmware Update Procedures, V5.7}} | | March 2000 | | {{wiki:documentation:references:alpha_system_reference_manual_v7.pdf?linkonly|Alpha System Reference Manual, Version 7}} (Part III: Console Interface Architecture) | | 1997 | {{tag>software firmware}}