SRM 控制台被 Alpha 系统用作类 Unix 风格的启动固件。Tru64 Unix 和 OpenVMS 依赖于它,Linux 也能够从中启动。您可以通过开机时呈现给您的蓝色屏幕和提示符来识别 SRM 控制台。
大多数 Alpha 系统在其固件中同时具有 SRM 和 ARC/AlphaBIOS 控制台。在这些机器上,如果您的机器默认以 ARC/AlphaBIOS 启动,您可以通过“高级 CMOS 设置”菜单中的“控制台选择”选项切换到 SRM。要使更改永久生效,您应该设置os_typeSRM 中的环境变量为“OpenVMS”或“Unix”,如下所示
>>> set os_type Unix |
两者都适用于启动 Linux。但是,如果您打算在这台机器上双启动 OpenVMS,则必须设置os_type为“OpenVMS”。相反,要返回到 ARC/AlphaBIOS,您可以设置os_type为“NT”。
一些较旧的系统可能在出厂时没有同时安装 SRM 和 ARC 固件。在这些系统上,您将需要升级您的固件。请访问 http://ftp.digital.com/pub/DEC/Alpha/firmware 获取最新的固件更新和说明。
少数较旧的系统(主要是评估板,如 164SX 和 164LX)是“半闪存”系统,其固件可以容纳 SRM 或 AlphaBIOS,但不能同时容纳两者。如果您有这些机器之一,您将必须使用 AlphaBIOS 固件更新实用程序重新刷新您的固件,并安装 SRM 控制台。同样,请访问 http://ftp.digital.com/pub/DEC/Alpha/firmware 获取固件镜像和说明。如果您希望在这些机器上返回到 AlphaBIOS,您可以使用fwupdate命令从 SRM 中的软盘重新运行固件更新实用程序。您也可以使用arc命令从软盘启动 AlphaBIOS。
SRM 控制台的工作方式非常类似于 Unix 或 OpenVMS shell。它将您的 NVRAM 和设备视为伪文件系统。如果您使用ls命令,您可以看到这一点。此外,它还包含相当多的诊断、设置和调试实用程序,这些实用程序的详细信息超出了本文档的范围。与 Unix shell 中一样,您可以将一个命令的输出通过管道传递到另一个命令的输入,并且有一个more命令,其工作方式与 Unix 命令非常相似。要获取可用命令的完整列表,请运行
>>> help | more |
此外,SRM 具有环境变量,其中许多是预定义的,并对应于 NVRAM 中的位置。您可以使用show命令查看环境变量及其值的完整列表(它们相当多,因此您可能需要将其输出通过管道传递到more)。您还可以显示与“glob”模式匹配的变量 - 例如,show boot*将显示所有以“boot”开头的变量。
环境变量分为 只读、热非易失性 或 冷非易失性。预定义变量的完整列表在《Alpha 架构参考手册》中详细说明。对于启动 Linux 而言,最有用的预定义环境变量是bootdef_dev, boot_file, boot_flags和auto_action,所有这些都是冷非易失性的。
要设置环境变量,请使用set命令,如下所示
>>> set bootdef_def dka0 |
如果您设置一个未定义的变量,它将被为您创建,但它不会在重启后持久存在。
变量bootdef_dev指定设备(使用 VMS 命名约定 - 有关这些约定的解释,请参阅 第 5.6.1 节),如果在boot命令行或自动启动中未指定设备,则将从该设备启动。变量boot_file包含二级引导加载程序要加载的文件名,而boot_flags包含任何额外的标志。auto_action指定控制台在开机时应采取的操作。默认情况下,它设置为HALT,这意味着机器将在 SRM 控制台中启动。一旦您配置了引导加载程序和与启动相关的变量,您可以将其设置为BOOT以便在开机时自动启动。
最后,您应该知道两个有用的控制台击键是 Control-C,它与 shell 中一样,会暂停正在进行的命令(例如自动启动),以及 Control-P,如果从 aboot 提示符(或其他二级引导加载程序)发出,它将暂停引导加载程序并返回到 SRM 控制台。
所有版本的 SRM 都可以从 SCSI 磁盘启动,并且最近平台(如 Noname 或 AlphaStations)的版本也可以从软盘启动。支持通过bootp进行网络启动。请注意,较旧的 SRM 版本(特别是 Jensen 的版本)无法从软盘启动。较新的平台(164SX、164LX、164UX、DS20、DS10、DP264、UP2000(+)、UP1000、UP1100 等)支持从 IDE 设备启动。
使用 SRM 启动 Linux 是一个两步过程:首先,SRM 加载二级引导加载程序并将控制权移交给它。然后,二级引导加载程序为 Linux 设置环境,从磁盘文件系统中读取内核镜像,最后将控制权移交给 Linux。
目前,Linux 有两个二级引导加载程序:Linux 内核自带的 raw 加载程序和aboot,它是单独分发的。下面将更详细地描述这两个加载程序。
SRM 不了解文件系统或磁盘分区。它只期望二级引导加载程序占用从给定偏移量开始的连续物理磁盘扇区范围。有关二级引导加载程序大小及其第一个磁盘扇区偏移量的信息存储在第一个 512 字节扇区中。具体来说,偏移量 480 处的长整数存储二级引导加载程序的 大小(以 512 字节块为单位),偏移量 488 处的长整数给出二级引导加载程序开始的 扇区号。第一个扇区还在偏移量 496 处存储一个始终为 0 的标志字,并在偏移量 504 处存储一个校验和。校验和只是第一个扇区中前 63 个长整数的总和。
如果第一个扇区中的校验和正确,SRM 将继续读取从 扇区号 字段中给出的扇区开始的 大小 扇区,并将它们放置在地址为0x20000000的 虚拟 内存中。如果读取成功完成,SRM 将跳转到地址0x20000000.