`

OpenBootPROM的获得和使用!

 
阅读更多

OpenBootPROM和简称是OBP,可以理解为普通pc的BIOS的增强版,它是控制sun服务器的引导过程、初始化配置某些硬件和提供了某些诊断的工具。其配置保存在主板的prom固件中,配置的方式是通过在OBP命令行下进行配置。

我们可以通过它来:
调整启动设备和启动参数,如从光盘引导。
检测硬件故障
完成某些必须在操作系统启动之前完成的配置,如某些硬件设备的配置。
等等功能。

显然x86系统不会有OBP 。

-----------------------------------

simics是超级模拟器,可模拟多种CPU,比如可模拟Sun Blade 1500、Sun Fire 3800-6800、Sun Enterprise 3500-6500等等,可模拟出多个CPU,硬盘,网卡...。可以使用它来模拟OBP。

下面列一下步骤:

1.下载Virtutech.Simics.v3.0.29并使用 Virtutech.Simics.v3.0.29注册文件

Virtutech_Simics_3.0.29-keygen.zip (48.88 KB)

注意:有些环境下使用注册文件需要关闭杀毒软件。


2. 在workspace目录中target/sunfire/中创建一个文件,名为sol-10-u2-ga-sparc-v1.iso,我们只需要OBP,所以随便给个空文件都可以。

3. 选择workspace目录中target/sunfire/peanut-sol10-cd-install1.simics

OBP就出现了。

下面是在网上找的命令,可以练习一下了:

1.Overview

用户界面

可以通过下面的方式进入OBP界面
• halt你的系统,init 1,等等
• 使用组合键 Stop-A
• 没有设定auto-boot?为ture的话每次开机自动进入
• 系统硬件检测到错误,并且不能跳过的话会进入OBP界面


设备树
跟solaris操作系统的设备的物理命名方式相同。

设备别名
设备名通常是类似下面的格式
/sbus@1f,0/esp@0,40000/sd@3,0:a
在我们的使用中很不方便,使用设备别名却是我们的操作相当的方便
devalias
显示当前的别名设置
devalias alias
显示特定设备别名对应的物理设备名
devalias alias device-path
设置别名,如果alias有重复则覆盖掉旧值

注意:这样定义的别名重启不会保存,如果想永久的修改可以考虑nvalias,nvunalias命令,稍后会说到

显示设备树
可用的命令和功能描述
Command Description
.properties 显示当前所在设备节点的属性
dev device-path 选择某个设备节点
dev node-name 在当前设备节点的下级树查找某个设备节点,并且切换到第一个
dev .. 选择当前设备节点的上一级设备
dev / 选择设备的根节点
device-end 离开设备树
" device-path" find-device Choose device node, similar to dev.
ls 显示当前设备的下级设备
pwd 显示当前设备的物理连接路径
see wordname Decompile the specified word.
show-devs [device-path] 显示设备树,单纯show-devs显示整个机器的设备树
words 显示当前设备的名字

example:

ok dev /zs@1,f0000000
ok .properties
address ffee9000
port-b-ignore-cd
port-a-ignore-cd
keyboard
device_type serial
slave 00000001
intr 0000000c 00000000
interrupts 0000000c
reg 00000001 f0000000 00000008
name zs

ok dev /sbus/ACME,widget


ok show-devs
/SUNW,UltraSPARC@0,0
/sbus@1f,0
/counter-timer@1f,3c00
/virtual-memory
/memory@0,0
.
.
.
获取在线帮助
在ok提示符下可以使用下面的命令获取帮助

help 显示帮助的分类
help category 显示特定分类的可用命令,category使用提示的第一个单词
help command 显示特定命令的帮助

example:
ok help dump
Category: Memory access
dump ( addr length -- ) display memory at addr for length bytes
ok


警告:在操作系统已经开始使用后,STOP-A进入OBP执行命令可能会失败,并且某些命令可能会使系统不可用需要重新启动。如:probe-scsi


2.Booting and Testing Your System
• Boot your system
• Run diagnostics
• Display system information
• Reset the system

Booting Your System

可用参数
• auto-boot?
确定系统加点后是否自动启动,默认一般是true,如果为false则自动进入OBP配置
即ok状态
• boot-command
这个参数用来设置当auto-boot?为true是启动系统使用的命令,默认为boot。你可以使用其他启动命令如:boot –s等。
• diag-switch?
如果为true则使用最大化自检启动系统。默认为false
• boot-device
设定自动启动时的启动设备,一般是你的安装操作系统的硬盘作为启动盘。
• boot-file
This variable contains the default boot arguments that are used when
OpenBoot is not in diagnostic mode.
• diag-device
This variable contains the name of the default diagnostic mode boot device.
• diag-file
This variable contains the default diagnostic mode boot arguments.


这些参数的修改会在下面的Setting Configuration Variables中讲到.

对于普通用户来说
通常的如果auto-boot?参数设定为true,boot命令会自动启动操作系统,并且会自动执行boot-file参数指定的程序或设定。如果想在auto-boot?为false或者在ok模式下启动操作系统,使用boot命令。

Boot命令的使用:
格式:ok boot [device-specifier] [arguments]

Parameter Description
[device-specifier] 指定启动系统使用的设备,可以是物理设备名或者别名,通常使用的是别名
cdrom (CD-ROM drive)
disk (hard disk)
floppy (3-1/2” diskette drive)
net (Ethernet)
tape (SCSI tape)
单纯boot命令没有指定device-specifier,系统会使用boot-device指定的设备启动系统


[arguments] 启动时执行的命令或者参数,如果没有指定则执行boot-file参数设定的指令通常也为空

通常的用法
ok boot 从默认设备启动
ok boot –s 从默认设备启动到单用户(可以指定其他运行等级)
ok boot cdrom 从光盘引导安装
ok boot cdrom –s 从光盘启动一个可运行的系统


Running Diagnostics
OBP中提供了一些诊断工具可以让我们来测试系统中安装的硬件例如:scsi控制器等。
可以使用
ok help diag命令查看可用的test命令,下面列出的命令并不是全部。
Command Description
probe-scsi Identify devices attached to a SCSI bus.
test device-specifier Execute the specified device’s selftest method. For example:
test net test the network connection
watch-clock Test a clock function.
watch-net Monitor a network connection.

几个简单的例子
ok probe-scsi
Target 1
Unit 0 Disk SEAGATE ST1480 SUN04246266 Copyright (C) 1991 Seagate All rights reserved
Target 3
Unit 0 Disk SEAGATE ST1480 SUN04245826 Copyright (C) 1991 Seagate All rights reserved
ok
ok test net
Internal Loopback test - (result)
External Loopback test - (result)
ok
ok watch-net
Internal Loopback test - succeeded
External Loopback test - succeeded
Looking for Ethernet packets.
’.’ is a good packet. ’X’ is a bad packet.
Type any key to stop
....................X.....X...............
ok


Displaying System Information
OBP中提供了几个命令来现实系统的信息,通过这些命令就可以大体的了解系统的配置信息
Command Description
banner Display power-on banner.
show-sbus Display list of installed and probed SBus devices.
.enet-addr Display current Ethernet address.
.idprom isplay ID PROM contents, formatted.
.traps Display a list of processor-dependent trap types.
.version Display version and date of the boot PROM.
.speed Display processor and bus speeds.

Resetting the System
ok reset-all

3.Setting Configuration Variables

介绍怎样访问和修改NVRAM中的参数配置

显示和改变参数配置
Command Description
printenv 显示参数的当前值和默认值
setenv variable value
设定参数variable的值为value,永久修改,但是通常需要重启才会发挥作用
set-default variable 某个参数设为出厂值
set-defaults 所有参数设定为出厂值
password 设置密码(小心你的密码,如果设置需要密码并且忘记了就的找SUN换件了)


设置安全参数

可用的参数
• security-mode
• security-password
• security-#badlogins

security-mode参数可选择的值:
full 除了go命令,其他所有的命令都需要密码
command 除了boot(不带参数)和go命令,其他的命令都需要密码
none 不需要密码 (default)

example:
ok password
ok New password (only first 8 chars are used):
ok Retype new password:
ok setenv security-mode full

ok go (no password required)
ok boot (password required)
Password: (password is not echoed as it is typed)
ok boot filename (password required)
Password: (password is not echoed as it is typed)
ok reset-all (password required)
Password: (password is not echoed as it is typed)

Changing the Power-on Banner
设定机器刚刚加电时的banner信息,感觉出了最基本的,其他用处不大。


可用的设置banner的参数:
• oem-banner
• oem-banner?
• oem-logo
• oem-logo?

ok setenv oem-banner Hello World
ok setenv oem-banner? true
ok banner
Hello World

输入输出控制
可用的定义控制台的参数:
• input-device
• output-device
• screen-#columns
• screen-#rows
下次重启才会生效

默认情况下
input-device是keyboard,output-device是screen.

要讲默认的输入设备改为ttya:
ok setenv input-device ttya

假如输入设备是keyboard,输出设备为screen,而设备并没有连接的话系统在下次启动的时候会使用ttya做为输入输出设备.

example设定ttya做为默认的输入设备:
ok setenv input-device ttya


• screen-#columns 设定屏幕列
• screen-#rows 设定行

setenv的使用范例:
设定默认启动设备
ok setenv boot-device net
设置最大化自检
ok setenv diag-switch? True
取消最大化自检
ok setenv diag-switch? false


使用 nvramrc
在nvram中编辑一个脚本在系统启动时执行,这个报存在NVRAM中

通常是为了某些设备驱动定义某些参数使用,或者为某些可能必须在系统加载之前需要执行的操作所准备。
定义的脚本在什么时候执行呢?
下面是OBP启动的顺序:
• 加电自检 (POST)
• 执行系统初始化
• 执行nvramrc定义的脚本 (if use-nvramrc? is true)
• 执行 probe-all (evaluate FCode)
• Execute install-console
• 显示banner
• Execute secondary diagnostics
• 启动操作系统 (if auto-boot? is true)

需要注意的某些命令可能需要在执行了 probe-all之后才能够运行,也就是说我们要充分考虑我们执行的命令本身运行所需要的环境。

It is sometimes desirable to modify the sequence probe-all installconsole
banner. For example, commands that modify the characteristics of
plug-in display devices may need to be executed after the plug-in devices have been probed, but before the console device has been selected. Such commands
would need to be executed between probe-all and install-console.
Commands that display output on the console would need to be placed after
install-console or banner.
This is accomplished by creating a custom script which contains either banner
or suppress-banner since the sequence probe-all install-console
banner is not executed if either banner or suppress-banner is executed
from the script. This allows the use of probe-all, install-console and
banner inside the script, possibly interspersed with other commands, without
having those commands re-executed after the script finishes.


在脚本中可以使用大部分的OBP的命令,但是也有例外
下面的命令不能在脚本中使用:
• boot
• go
• nvedit
• password
• reset-all
• setenv security-mode

常用的nvramrc命令
nvedit 进入脚本编辑模式,如果存在以前保存的脚本,则打开并编辑
nvquit 不保存退出
nvrun 执行当前编辑的脚本,不会保存
nvstore 保存当前的脚本


下面来看看怎么编辑一个script
1. 在ok提示符下键入nvedit,进入script的编辑。
2. Control-C 退出编辑模式重新回到ok提示符。
假如没有使用nvstore命令保存你的编辑,你可以使用nvrun临时执行你写的脚本。
3. 使用nvstore进行保存。
4. 为了能够执行脚本,需要设定下面的参数
setenv use-nvramrc? true
5. 重新启动机器或者使用下面的命令来执行脚本
nvramrc evaluate
或许你已经注意到了,这里没有涉及到给脚本命名或者执行某个脚本的问题需要考虑

下面是在编辑模式可用的编辑操作,因为太多所以只捡了最常用的几个。
Keystroke Description

Control-B 向后移动一个字符
Control-F 先前移动一个字符
Control-N 移动到下一行
Control-P 移动到前一行
Return
(Enter) 在光标位置插入一行
Control-C 退出编辑模式,编辑的内容在机器重启前会保留,但是不会写入NVRAM,这时可以使用nvstore命令保存编辑的内容。
Backspace 向前删除一个字符


下面是一个参考中提供的例子,其实在平时的使用中我们用得最多的可能是在脚本中保存我们想让系统刚启动的时候要执行的命令或者设定参数的操作。
下面是忘了在哪位老大的solaris双机的配置中的一段,作用就是改系统的scsi ID

ok nvedit
0: probe-all
1: cd /pci@1f,4000/pci@4/SUNW,isptwo@4
2: 6 " scsi-initiator-id" integer-property
3: device-end (上面可以使用setenv scsi-initiator-id 6来完成)
4: install-console
5: banner
<Control C>; 退出

----------------------------------
也可以这样
ok nvedit
0: setenv scsi-initiator-id 6
<Control C>;
ok nvstore

或者干脆
ok setenv scsi-initiator-id 6
----------------------------------


然后保存该设置
ok nvstore
ok setenv use-nvramrc? True
ok reset-all 重启或者可以使用,nvrun命令执行

校验SCSI卡id更改的正确:
ok cd /pci@1f,4000/pci@4/SUNW,isptwo@4
ok .properities

或者上面不使用reset-all命令,而使用nvramrc evaluate,则会直接执行。
注意:nvedit模式的提示符是0:1:等数字,表示不同的行。

Nvramrc总体感觉就像是操作系统的rc.local,只不过执行的位置和做用不同。

分享到:
评论

相关推荐

    node-v10.22.0-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于JAVA的物流管理系统的源码设计与实现.zip

    毕业设计物流管理系统的设计与实现(Java版本) 采用Struts2+hibernate+Oracle10g+Tomcat 涉及车辆管理,配送点管理,运输方式管理,订单管理,员工管理,用户管理,部门管理,权限管理,角色管理等基础管理功能。

    基于VB+access实现的成绩分析统计系统(论文+源代码).zip

    基于VB+access实现的成绩分析统计系统(论文+源代码) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。

    node-v10.14.2-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    ASP+ACCESS网上购物系统设计(源代码+设计说明书+调研报告).zip

    ASP+ACCESS网上购物系统设计(源代码+设计说明书+调研报告).zip

    AO工艺设计计算(全).xls

    污水处理计算书

    node-v7.3.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    ASP+ACCESS在线考试系统设计(源代码+设计说明书).zip

    ASP+ACCESS在线考试系统设计(源代码+设计说明书).zip

    node-v11.10.0-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    毕业设计基于知识图谱和循环神经网络的推荐系统python源码+数据集.zip

    毕业设计基于知识图谱和循环神经网络的推荐系统python源码+数据集.zip毕业设计基于知识图谱和循环神经网络的推荐系统python源码+数据集.zip毕业设计基于知识图谱和循环神经网络的推荐系统python源码+数据集.zip毕业设计基于知识图谱和循环神经网络的推荐系统python源码+数据集.zip 毕业设计基于知识图谱和循环神经网络的推荐系统python源码+数据集.zip 毕业设计基于知识图谱和循环神经网络的推荐系统python源码+数据集.zip毕业设计基于知识图谱和循环神经网络的推荐系统python源码+数据集.zip

    2024年老人机行业分析报告.pptx

    行业报告

    基于matlab实现的导线网平差,主要是附和导线平差程序,用于计算各点坐标并评定其精度 .rar

    基于matlab实现的导线网平差,主要是附和导线平差程序,用于计算各点坐标并评定其精度。.rar

    基于VB+access实现的学生学籍管理系统(系统+论文).zip

    基于VB+access实现的学生学籍管理系统(系统+论文) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。

    ASP基于BS的工艺品展示系统的设计与实现(源代码+设计说明书).zip

    ASP基于BS的工艺品展示系统的设计与实现(源代码+设计说明书).zip

    经典SBR设计计算(全).xls

    污水处理计算书

    ASP+ACCESS网上花店毕业设计全套(设计说明书+源代码+说明).zip

    ASP+ACCESS网上花店毕业设计全套(设计说明书+源代码+说明).zip

    污水工艺设计计算书.xlsx

    污水处理计算书

    2024年速冻包子行业分析报告.pptx

    行业报告

    ASP基于WEB教学评估系统设计(源代码+设计说明书).zip

    ASP基于WEB教学评估系统设计(源代码+设计说明书).zip

    JSP教师档案管理系统(源代码+设计说明书).zip

    JSP教师档案管理系统(源代码+设计说明书).zip

Global site tag (gtag.js) - Google Analytics