第八章 执行Boot PROM命令
目录
完成本部分的学习后,管理员可以执行如下任务:
·了解boot PROM(programmable read-only memory)的基础知识
·使用基本的boot PROM命令
·标识系统启动设备
·创建删除定制的设备别名
·在shell中查看与更改NVRAM(novolatile random access memory)
·中止未响应的系统
第一节 boot PROM基础介绍
所有的Sun系统都有常驻的boot PROM固件,提供启动之前的基本硬件测试与初始化。boot PROM还支持从不同的设备启动。此外,还具有一个提供许多重要功能的用户接口。
Sun boot PROM可访问一个标准的普通设备驱动程序集。系统使用这些驱动程序访问并控制总线和启动设备,以正常启动。
所有版本的Openboot结构都支持第三方的板卡标识板卡自身,并装载其内建的设备驱动程序。在系统启动过程中硬件配置阶段,OpenBoot PROM请求每个设备声明自己的类型,并装载其内建的驱动程序。
图8-2显示了标识过程。
图8-2 第三方设备标识过程
OpenBoot体系结构标准的目的
IEEE OpenBoot架构标准的目的是用于提供如下功能:
·测试并初始化系统硬件
·判定系统的硬件配置
·启动操作系统环境
·为配置、测试与调试提供交互式的接口
·支持使用第三方的设备
Boot PROM
每个Sun系统都有一个boot PROM芯片。容量1M的芯片通常与CPU位于同一块板上。Boot PROM芯片在老式的系统上常位于一个可插拔的接口上。对于3.x版本的PROM,该芯片被固化在主系统板上。
Ultra工作站使用可重编程的Boot PROM,称为闪存PROM(FPROM)。FPROM支持使用软件将新的启动程序数据加载入PROM中,而不是用更换芯片的方式进行功能升级。这些升级程序以CDROM方式发行。
桌面系统中有一个写保护跳线,在写PROM之前必须更改跳线。跳线默认的位置是写保护。参考Refer to the Flash Programming Manual for Ultra Desktop Systems手册, part number 802-3233-17,查看系统的路线位置。
注意:很多系统的跳线位于安装的帧缓冲区或其它可移动的卡下方。在移除更换这些卡时要小心。
Boot PROM的主要功能是测试系统硬件,启动操作系统环境。Boot PROM固件被称为monitor程序。
Boot PROM固件在操作系统启动、内核可用之前控制了系统的运行。Boot PROM还给用户提供了用户接口与固件工具命令,也称为FORTH命令集。命令包括启动命令,诊断命令,及修改默认配置的命令。
注意:Boot PROM不能识别Solaris Operating environment(Solaris OE)文件系统或文件。它主要负责处理硬件设备
Sun Boot PROM发展已经经历了5代,每一代都有其基本的版本号,如下列表:
版本 描述
1.x SPARC系统上的第一代Boot PROM
2.x 第一代的OpenBoot PROM
3.x 使用flash更新特性的OpenBoot PROM。可以不用更换Boot PROM芯片而更新3.x固件。这一代被用于Sun UltraSPARC产品线
4.x 支持64位UltraSPARC III 处理器的OpenBoot PROM
5.x 用于Sun Enterprise 3500,4500,5500及6500服务器
运行如下命令查看系统上运行的OpenBoot PROM版本:
# /usr/platform/‘uname -m‘/sbin/prtdiag -v
NVRAM
每个Sun系统中另一个重要的硬件设施是NVRAM芯片。该可移除的芯片通常位于主系统板上。
NVRAM模块包含EEPROM (electronically erasable programmable read-only memory)。EEPROM存储了用户在默认的Boot PROM参数设置集中更改的启动参数。这种机制让用户可以在特定环境下配置系统以特定的方式运行,具有一定程度的灵活性。NVRAM模块内部有一块锂电池,为NVRAM和时钟供电。
NVRAM包含可编辑区及不可编辑区。不可编辑区包括如下内容:
·以太网mac地址,如8:0:20:5d:6f:9e
·系统host ID值,如805d6f9e
可编辑区包括如下内容:
·time-of-day(TOD)时钟值
·描述系统运行参数的配置数据
·一个诊断模式开关,启用或禁用加电自检(POST)
·默认启动设备的设备名与路径
·启动过程中使用的定制程序位置
注意:注意保持NVRAM芯片,因为它包含host ID。很多需要license的软件包都是基于系统的host ID的。NVRAM芯片上有一个黄色的标签,上面有一个条形码。如果芯片失效,Sun可以根据该条形码提供替换芯片。替换芯片有与原芯片相同的host ID与以太网MAC地址。可以将替换芯片插入系统上原来芯片所在的位置进行替换。
图8-3显示了Boot PROM与NVRAM的基本组件。
图8-3 PROM的基本结构
POST
系统加电时,会执行一个低级的POST。低级POST的代码被存储在Boot PROM中,
它被用于检测系统硬件的最基本的功能。
成功完成低级POST阶段以后,Boot PROM固件接管控制并执行如下的初始化过程:
·探测内存,然后探测CPU
·探测总线设备,解析其驱动程序,并建立设备树
·安装终端
在Boot PROM初始化系统之后,Boot PROM与NVRAM中存储的系统检测参数决定是否和如何启动操作系统环境。
控制POST阶段
POST运行的第一个检测是检测是否有键盘连接到系统及是否按下了Stop键选项。
注意:可以使用Sun键盘控制POST阶段。
Stop键盘位于键盘的左侧。将Stop键与其它键一同按下,启用不同的调试模式。Stop组合键影响OpenBoot PROM,定义系统加电时POST如何运行。下面是Stop键的组合:
·Stop-D 系统加电时按下Stop键和D键,固件自动切换到诊断模式。此模式将在系统硬件上运行extensive(广泛的)POST诊断。OpenBoot PROM变量diag-switch?被设置为true。
图8-4显示了diag-switch?变量的作用
图8-4 加电测试
注意:Stop-D组合在串口终端上不可用
·Stop-N组合键 系统加电时同时按下Stop键和N键,将NVRAM参数设为默认值。当键盘上的LED灯开始闪烁时,可以放开键,然后系统就继续启动。
不正确的NVRAM设置可能会让系统启动失败。例如,在闪存PROM下载时,如这时掉电,NVRAM的一些内容可能就会不可用。
如果系统不能启动,怀疑是因为NVRAM参数未正确设置,参数可以被很容易地改变为默认值。
·Stop-A组合键 按下Stop键与A键会立即中断任何当前正在运行的程序,并回到OpenBoot PROM的命令行模式下。系统显示ok提示符,表示接受输入OpenBoot PROM命令。
注意:Stop-A组合键,是到ok提示符下的方法之一,但不推荐,除非别无选择。Stop-A键可能会导致Solaris OE文件系统崩溃,这将很难修复。
禁用Abort组合键
系统管理员可能会想禁用abort组合键(即Stop-A),以防止可能的文件系统崩溃,使系统更安全(防止别人使用Stop –A 组合键进入PROM提示符)。
编辑/etc/default/kbd文件禁用abort组合键。将语句KEYBOARD_ABORT =disable取消注释。将该行前的注释符号删除,保存文件,并执行命令kbd -i。完成操作后,系统将只允许在启动过程中使用Stop-A组合键。
也可将系统配置更改,把abort组合键改为其它替代的组合。查看kbd命令的man手册,获取更多信息。
输出POST到串口
系统管理员可以使用串行线连接到系统的串口上,获取POST输出的更多信息。
当系统加电时,POST查找键盘,如果系统中没有键盘,POST会将系统输出转向串行口A。
POST在当系统的PROM参数diag-switch?设置为true时,会以诊断模式运行,执行更多的检测。
确保使用正确类型的null modem电缆连接到串口A上。
一些系统需要特殊的适配电缆。将电缆的另一头连接到ASCII终端的modem端口上,如图8-5所示。
下面的例子是一台Sun Blade 1000工作站的POST输出:
Partial Post Output Listing
@(#) 4.0 Version 29 created 2000/07/12 16:46
Clearing TLBs Done
Reset: 0000.0000.0000.0010 SPOR
Loading Configuration
Membase: 0000.0000.0000.0000
MemSize: 0000.0000.2000.0000
Init CPU arrays Done
Init E$ tags Done
Setup TLB Done
MMUs ON
Block Scrubbing Done
Copy Done
PC = 0000.07ff.f000.3138
Decompressing Done
Size = 0000.0000.0006.e3b0
ttya initialized
Start Reason: Soft Reset
System Reset: (SPOR)
Probing gptwo at 0,0 SUNW,UltraSPARC-III (750 MHz @ 5:1, 8 MB)
memory-controller
Probing gptwo at 1,0 Nothing there
Probing gptwo at 8,0 pci pci upa ppm
Loading Support Packages: kbd-translator
Loading onboard drivers: ebus flashprom bbc ppm i2c dimm-fru dimm-fru
dimm-fru dimm-fru dimm-fru dimm-fru dimm-fru dimm-fru nvram idprom
i2c cpu-fru temperature fan-control card-reader motherboard-fru
Memory Configuration:
Segment @ Base: 0 Size: 512 MB (2-Way)
Probing /upa@8,480000 Device 0,0 Nothing there
Probing /upa@8,480000 Device 1,0 Nothing there
Probing /pci@8,600000 Device 4 SUNW,qlc fp disk
Probing /pci@8,600000 Device 1 Nothing there
Probing /pci@8,700000 Device 5 network firewire usb
dev-descrip
next-add
node made
Probing /pci@8,700000 Device 6 scsi disk tape scsi disk tape
Probing /pci@8,700000 Device 1 Nothing there
Probing /pci@8,700000 Device 2 Nothing there
(UltraSPARC-III) , Keyboard Present
OpenBoot 4.0, 512 MB memory installed, Serial #12134217.
Ethernet address 8:0:20:b9:27:49, Host ID: 80b92749.
第二节 使用基本的Boot PROM命令
Boot PROM提供用户接口,输入OpenBoot命令。
注意:ok提示符指示Solaris OE当前未运行。
表8-1列出了常用的ok提示符命令:
表8-1 ok提示符下的常用命令:
命令 描述
banner 显示加电banner
boot 启动系统
help 显示主要的帮助目录
words 显示字典中的FORTH单词
sifting text 显示FORTH命令中包含text的命令
printenv 显示所有参数的当前值与默认值
setenv 将指定的NVRAM参数设为指定值
reset-all 重设整个系统,类似于power cycle(加电循环?重启)
set-defaults 将所有的参数值设为出厂设置
probe-ide 检测IDE总线上的所有设备
probe-scsi 检测SCSI总线上的设备
probe-scsi-all 检测所有SCSI总线上的设备
probe-fcal-all 检测所有光纤通道环上的设备
.version 显示Boot PROM的日期与版本
probe-pci 检测指定PCI总线上的所有设备
probe-pci-slot 检测指定PCI总线上指定PCI插槽上的设备
test 在指定设备上运行自检
.enet-addr 显示以太网地址
.idprom 显示ID PROM内容
.speed 显示CPU与系统上的总线的速度
.registers 显示寄存器内容
查看系统Boot PROM版本
banner命令列出很有帮助的系统信息,如模块名,Boot PROM版本号,内存量,以太网地址,及host ID。
下面是banner命令的输出例子:
ok banner
Sun Ultra 5/10 UPA/PCI (UltraSPARC-IIi 360MHz), Keyboard Present
OpenBoot 3.31, 128 MB (50 ns) memory installed, Serial #11888271.
Ethernet address 8:0:20:b5:66:8f, Host ID: 80b5668f.
启动系统
使用boot命令从ok提示符下启动Solaris OE。此命令有几个可用选项,用于将系统启动到不同的状态。
boot命令的格式如下:
ok boot device_name - options
在ok提示符下输入boot命令将系统自动启动到多用户状态:
ok boot
下面的列表是boot命令的参数项:
·-s 将系统启动到单用户状态,并要求用户提供root口令
ok boot -s
ok boot cdrom -s
·-a 交互式启动系统。如果需要执行替代文件(即不使用下面例子中的某个既定文件来加载系统,而是自己手工指定),使用此选项。boot程序向用户请求如下信息:
ok boot -a
Enter filename [kernel/sparcv9/unix]:
Enter default directory for modules [/platform/SUNW,Ultra-5_10/kernel
/platform/sun4u/kernel /kernel /usr/kernel]:
Name of system file [etc/system]:
root file system type [ufs]:
Enter physical name of root device:
·-r 执行重配置启动。使用此选项查找新安装的设备,并在/devices和/dev目录中添加新的设备条目。也将更新/etc/path_to_inst文件。
ok boot -r
·-v 启动系统,输出更详细的设备信息到控制台。使用此选项在启动过程中排错。可以与其它选项一起使用:
ok boot -v
ok boot -rv
ok boot -sv
查询更多细节信息
可以使用help命令获取OpenBoot固件的主要目录。下面是Ultra 5工作站上help输出的例子,它使用的是3.31版本的OpenBoot PROM:
ok help
Enter 'help command-name' or 'help category-name' for more help
(Use ONLY the first word of a category description)
Examples: help system -or- help nvramrc
Categories:
boot (Load and execute a program)
nvramrc (Store user defined commands)
system configuration variables (NVRAM variables)
command line editing
editor (nvramrc editor)
resume execution
devaliases (Device aliases)
diag (Diagnostics commands)
ioredirect (I/O redirection commands)
misc (Miscellaneous commands)
ok
help命令的输出列表提供了许多可以用来查看更多细节的关键字。
如,要查看上例中主要类别的特定信息,执行下面命令之一:
ok help boot
ok help nvramrc
ok help diag
ok help misc
列出NVRAM参数
可以使用printenv命令列出所有的NVRAM参数。如果参数被修改过,printenv命令会显示其默认值与当前设置值,例:
ok printenv
Variable Name Value Default Value
tpe-link-test? true true
scsi-initiator-id 7 7
keyboard-click? false false
keymap
ttyb-rts-dtr-off false false
ttyb-ignore-cd true true
ttya-rts-dtr-off false false
ttya-ignore-cd true true
ttyb-mode 9600,8,n,1,- 9600,8,n,1,-
ttya-mode 9600,8,n,1,- 9600,8,n,1,-
pcia-probe-list 1,2,3,4 1,2,3,4
pcib-probe-list 1,2,3 1,2,3
mfg-mode off off
diag-level max max
#power-cycles 273
output-device screen screen
input-device keyboard keyboard
boot-command boot boot
auto-boot? true true
d