免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2441 | 回复: 9
打印 上一主题 下一主题

SA-238读书笔记16 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2002-10-31 17:40 |只看该作者 |倒序浏览
第12章 Boot PROM
Boot PROM概念
每个Sun系统都有一个boot PROM芯片。这个8K字节的芯片象CPU一样是同一个主板的代表。

Boot PROM的主要功能是测试系统的硬件和启动操作系统。

Boot PROM固件,同镜像程序一样引用,在kernel可用以前,控制系统的操作。Boot PROM固件在启动开机时执行系统初始化的能力,并且提供了一个用户接口。

一般有3代Sun boot PROM,每代都有自己的版本号,类似于下面的描述:
1.x:原始的SPARC boot PROM
2.x:第一代OpenBoot PROM
3.x:OpenBoot PROM提供了闪存升级功能。用户可以升级3.x固件而不用去动PROM芯片。

NVRAM组成
在每个Sun系统上的另外一个重要的硬件元件是NVRAM芯片。NVRAM是非易失性的8K字节的随机访问内存。这是一个通常位于主系统板上的插入式芯片。

NVRAM保存了以太网地址,hostID和time-of-day(TOD)时钟。一个在NVRAM模块中的单独的锂电池为NVRAM和时钟提供备份电源。

NVRAM模块同样包括保存用户从boot PROM的默认参数设定中改变或者定制设置参数的EEPROM。这让用户可以在一个特定环境中,可以详细的,弹性的确认系统的设置级别。

用户接口命令和设备别名都储存在NVRAM中。
书上有一个图,在12-3上,是boot PROM和NVRAM的基本元素

开机自检(Power On Self Test:POST)
当一个系统的电源被打开,一个最初的开机自检(POST)就会被初始化。这个最初的POST代码是保存在boot PROM并且是设计用来测试系统硬件最基础的功能的。

在成功完成最初POST阶段后,boot PROM固件就控制和执行下列初始化顺序:
。初始化系统
。探测内存,然后探测CPU
。探测总线设备,说明那些设备,并且建立设备树
。安装控制台

系统初始化后,标题现在在控制台上,并且高级测试就开始了。当高级测试结束,系统就检测保存在NVRAM中的参数,然后启动操作系统。

OpenBoot目的
OpenBoot全部目的就是遵循IEEE标准提供下列的功能:
。测试和初始化系统硬件
。决定系统的硬件设置
。启动操作系统
。提供交互式除错工具
。允许使用第三方设备

第三方设备设置

OpenBoot体系结构的所有版本都允许第三方板卡识别自己并且读入自己插入的设备驱动。当需要通过OBP在系统启动过程中,设置硬件的阶段的时候,每个设备识别他的类型和提供他插入的设备驱动。

基本的 BootPROM设置
系统只包含一个单系统板
在下列Sun系统中,boot PROM和NVRAM芯片是只在一个系统板上的:
。SPARCstation 4,5,10和20
。Ultra 1,2,5,10,30,60,80,220,250,420和450

Ultra系统使用一种叫做flash PROM(或者FPROM)的可重复编程的boot PROM。这样就可以允许新的boot程序数据通过软件读入PROM,替代原本不得不更换的芯片。这些升级程序分布在Sun发布的光盘中。

系统包含多个系统板
在下列Sun系统中,是设置在多个系统板上的:
。E3X00
。E4X00
。E5X00
。E6X00

系统包含多个系统板有一个特定的boot PROM和NVRAM排列。这些系统同样有一个时钟板去检查背板通信。
书上有图在12-7

这些特定系统的一些特征:
。在最下面的插槽中的CPU板称为主CPU板
每个CPU板运行自己的独立的POST
host ID和mac地址在时钟板上,并且当POST完成后,自动下载所有CPU板的NVRAM。
。PROM内容是通过校验来检测
时钟板和所有系统板比较
有问题的PROM值可以手动的重写和检测
如果PROM内容在时钟板上发现了不同,就重新从主CPU板的NVRAM读内容。
。可以升级flash PROM(FPROMs)到较新的固件版本,而不用去更换他们。这些升级文件保存在CDROM中


控制POST阶段
位于键盘的左边的stop键,是用于影响POST阶段的。

。开机的时候跳过POST阶段,开机时就按下STOP键。
。在启动后,运行可执行的POST诊断程序,按STOP-d
在系统加电之后,同时按下“STOP”和“d”键。这个动作设定diag-switch?到true。这是强行要求系统从diag-device参数启动。他的默认值通常是net。

固件自动切换到诊断模式,并在系统硬件上运行广泛的POST诊断程序

默认的情况下,diag-level参数是最大设置,通过这个手段就会在POST时运行所有的测试。

通过修改diag-level值到最小设置,POST只运行简化了的测试。
。重置NVRAM参数到默认值
如果系统不能启动,并且NVRAM另人怀疑。那么在开机的时候同时按下“STOP”和“n”键。一般键盘灯开始闪烁,就放开按键,并且让系统继续启动。

暂停Solaris操作环境
要停止Solaris操作环境到到PROM监视器提示符,同时按下“STOP”和“a”键,就会显示OK提示符

基本的Boot PROM命令
boot PROM 监视器提供了一个用户接口来调用OpenBoot命令

下列是一些常用命令:
。ok banner
。ok boot
。ok help
。ok printenv
。ok setenv
。ok reset
。ok set-defaults
。ok probe-ide
。ok probe-scsi
。ok probe-scsi-all

banner命令
banner命令列出了几行有用的系统信息。包括模块名,内存的数量,hostID,mac地址和boot PROM版本号

boot命令
在ok提示符下使用boot命令来启动Solaris操作环境

这个命令为启动系统进入不同的结果而有几个选项可用

命令格式
ok boot [device_name] – [option]
在ok提示符输入boot命令可以自动启动系统进入多用户模式

选项
。s:在提供root密码的前提下,启动系统到单用户模式
。a:启动系统交互,如果需要临时改变系统文件或者内核,这就是一个有用的工具。
。r:执行重新设置启动。找到任何重新绑定的设备,并且将新设备的条目加入/devices和/dev目录,并且/etc/path_to_inst文件会更新。
。V:启动系统,并且显示更多的设备的详细情况到控制台。这是在启动过程期间一个拥有的解决问题的选项

单用户模式
在单用户模式,系统只运行最小限度的进程和服务,并且普通用户不能登陆。

多用户模式
多用户模式需要系统运行所有的进程和服务,必须支持多用户登陆和访问系统与数据。

Help命令
使用help命令可以获得包含在OpenBoot固件中的主要类别的帮助

help列出提供了可以更深一步使用的键值。

详细帮助
列出一个指定的主要类别的详细信息:
。ok help line
。ok help system
。ok help diag
。ok help file

printenv命令

可以使用printenv命令来列出所有在NVRAM中的参数。每个参数的名字是显示在前面的,并且数值是默认设置和当前的设置(如果参数已经被改变了)

同样可以使用printenv命令来显示一个单独的参数和数值

setenv命令
使用setenv命令来改变在NVRAM中分派给参数的当前值
ok printenv auto-boot?
Auto-boot? = ture
Ok
Ok setenv auto-boot? False
Auto-boot? = false
Ok reset
Resetting…

Reset命令
Reset命令停止系统,清除所有缓冲,系统寄存器,然后做下面中的一个步骤
。如果auto-boot?参数是true,则重新启动系统
。如果auto-boot?参数是false,则返回ok提示符

set-defaults命令
使用set-defaults命令来复位所有的参数到他们的默认值。他只影响那些分配了默认值的参数。

设备树
Sun硬件使用设备树的概念来组织在系统上绑定的硬件。

OpenBoot固件利用POST收集的信息来构造设备树。设备树是在内核启动识别所有设备的过程中被内存读入使用的。

每个设备树的节点都表现为一个设备。节点与子节点通常表现为总线和他们相关的控制器。他们的子节点是连接到总线或者控制器的设备。

一个完整的设备路径从/字符开始,/是树的根。每个节点名由name@address:arguments结构组成。与其他名字比较,是以来于设备的静态值。

查看设备路径名
ok show-devs

启动磁盘设备路径范例

路径是依赖于通过OpenBoot固件在系统类型和设备设置上的改变建立在设备树上的。
见书上的图,在12-20

使用probe-命令识别设备
要识别物理设备,包括当前连接在系统上的磁盘,磁带机或者光驱,使用OBP命令
。probe-ide
。probe-scsi
。probe-scsi-all

外围设备是通过I/O总联连接到系统板的

可以设置Sun系统的SCSI总线和IDE总线。

Probe-警告信息
Shutting down the Solaris operating system abruptly with the Stop-a sequence,or with the halt command,creates a condition where running the probe command hangs the system unless you run the reset-all command first.

当Solaris操作环境在按下Stop-a键之前是正在运行的时候,必须在使用probe-命令之前完成下面的步骤,因为这些命令可以造成系统锁死。
1.在ok提示符下,设置NVRAM auto-boot?参数为false
ok setenv auto-boot? false
2.在ok提示符下,输入reset命令在执行所有诊断程序之前,清除所有缓存和寄存器。
ok reset

probe-scsi命令
probe-scsi命令通过他们的目标号识别所有绑定在板上的SCSI控制器的外围设备。

ok probe-scsi

probe-scsi-all命令
probe-scsi-all命令识别绑定在板上的SCSI控制器的外围设备和所有绑定到单独的SBus或者PCI SCSI控制器上的所有外围设备。
ok probe-scsi-all

probe-ide命令
probe-ide命令识别绑定在板上的ide控制器的外围设备。这个命令不能显示目标地址,只能显示设备号。
ok probe-ide

识别系统的启动设备

系统的启动设备是由NVRAM中的boot-device参数设定的。默认的设置是disk

为系统识别当前启动设备,使用devalias命令
ok devalias

设备别名是列在命令输出的左边的,物理地址则显示在右边。

设备别名是进入OBP固件的硬件代码,并且他们可以比硬件地址更简单的理解和使用。

磁盘设备别名为系统识别默认的启动设备。

从默认的启动设备启动系统使用命令
ok boot


建立定制的设备别名

用户可以从扩展的设备启动。扩展设备不是默认的有内建的设备别名与他们联系。

NVRAM的一部分叫做NVRAMRC包含寄存器用来保存变量和为新设备储存别名。NVRAMRC可以通过命令nvalias,nvunalias,nvedit和变量use-nvramrc?来变更。

Nvalias和nvunalias命令
建立一个新的设备别名去从新绑定扩展设备,使用命令nvalias。

建立一个定制的设备别名
ok nvalias 设备别名 设备路径
nvalias的结果就会保存到NVRAMRC中

使用nvalias去建立定制的设备别名
下面介绍如何添加一个新的启动设备别名,叫做mydisk,并且从新设备别名启动。

使用show-disks选择准备使用的设备路径。使用nvalias建立新的设备别名,叫做mydisk
ok show-disks
ok nvalias mydisk /pci@1f,0/pci@1/pci@1/SUNW,isptwo@4/sd

为选择的磁盘粘贴设备路径,在命令行方式按Control-y

设置boot-device参数为新值mydisk,并且启动系统
ok setenv boot-devic mydisk
boot – device =     mydisk
ok boot

删除定制的设备别名

用户可以使用nvunalias命令从NVRAMRC中删除别名mydisk,并且将boot-device改成disk。
ok nvunalias mydisk
ok setenv boot-device disk
ok reset

nvedit命令
在Sun系统的PROM版本为1.x和2.x时,nvalias命令不能用于建立设备别名

在这些系统上使用nvedit去直接编辑NVRAMRC。Nvedit编辑器是在临时缓存中边界蜜柑年龄和操作的行编辑器。
下面是一个简单的nvedit会话
ok setenv use-nvramrc?  true
use-nvramrc? =       true
ok nvedit
   0:devalias mydisk /pci@1f,0/pci@1,1/ide@3/disk@0,0
   1:Control-c
ok nvstore
ok reset
Resetting  …
ok boot mydisk

在退出nvedit使NVRAMRC的改变持久生效,要使用nvrestore命令。

下面列出一些基本的nvedit命令
。^C:退出编辑器
。^U:删除当前的行
。Delete:擦掉前一个字符
。Return:关闭当前行,打开新一行
。^B:到后面一个字符
。^F:到前面一个字符
。^P:到后面一行
。^N:到前面一行

通过eeprom命令改变NVRAM参数

用户在Solaris操作环境运行的时候,可以使用/usr/sbin/eeprom命令来查看和改变NVRAM参数。

用户必须知道使用eeprom的指导方针:
。只有root可以改变参数的值
。当执行C shell的时候,留有问题的参数必须被封装到一个单独的引用中。
。这里没有reset可以运行改变所有的参数。

中断一个没有回应的系统
当系统挂起,或者停止对键盘的回应。用户必须中断他。马上中断系统停止进程并且不能允许内存活动,或者文件被同步。

中断一个没有回应的系统
1.尝试从远程登陆到没有回应的系统,然后杀掉有问题的进程。
2.尝试温和的重新启动有问题的系统
3.在没有反应的系统上按住Stop-a。系统会出现ok提示符
4.在OBP手动同步文件系统使用命令sync
ok sync
这个命令为系统建立一个内存堆,然后重新启动系统。

呵呵:)

论坛徽章:
0
2 [报告]
发表于 2002-10-31 17:42 |只看该作者

SA-238读书笔记16

嗯,不错
正需要

论坛徽章:
0
3 [报告]
发表于 2002-10-31 19:43 |只看该作者

SA-238读书笔记16

那就好:)

论坛徽章:
0
4 [报告]
发表于 2002-10-31 22:21 |只看该作者

SA-238读书笔记16

不错,我正想知道怎样改nvram的设置,eg:hostid、ethernet address
明天我试试

论坛徽章:
0
5 [报告]
发表于 2002-10-31 22:24 |只看该作者

SA-238读书笔记16

好!大家感谢!
谢谢
!!!

论坛徽章:
0
6 [报告]
发表于 2002-10-31 22:32 |只看该作者

SA-238读书笔记16

support ball MM

论坛徽章:
0
7 [报告]
发表于 2002-10-31 23:02 |只看该作者

SA-238读书笔记16

下面引用由YT2002/10/31 10:32pm 发表的内容:
support ball MM

环境变量名错误,请参照以下范例
格式
ball=[GG]|[DD]

论坛徽章:
0
8 [报告]
发表于 2002-10-31 23:19 |只看该作者

SA-238读书笔记16

i
set ball=[GG]|[DD]
x!

I think that system will crash
哈哈哈哈 !

论坛徽章:
0
9 [报告]
发表于 2003-01-10 13:36 |只看该作者

SA-238读书笔记16

没有sprac的机器,没法试验这一部分了~~:(((

论坛徽章:
0
10 [报告]
发表于 2003-04-05 22:31 |只看该作者

SA-238读书笔记16

谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP