首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式确定哪个是Solaris/illumos上的引导磁盘?

如何以编程方式确定哪个是Solaris/illumos上的引导磁盘?
EN

Stack Overflow用户
提问于 2018-06-14 08:43:39
回答 3查看 618关注 0票数 2

在一个测试服务器上有两个三星960 Pro SSD,完全相同的制造商,型号和大小。在这两种操作系统上,我都安装了完全相同的操作系统OmniOS r15026。

通过在POST时间按F8,我可以访问主板引导管理器,并选择两个引导驱动器中的一个。因此,我知道系统是从哪个启动的。

但是,在引导之后,如何以编程方式知道哪一个是引导磁盘呢?

这似乎是:

Solaris/illumos是否提供了一些内省的钩子来确定哪个是引导磁盘?

是否可以以编程方式确定Solaris/illumos上的引导磁盘?

命令行工具也可以。

编辑1:感谢@andrew,我已经知道了命令eeprom

正如预期的那样,它是可在illumos上查阅,但不幸的是,在使用OmniOS的测试服务器上返回的不多:

代码语言:javascript
复制
root@omnios:~# eeprom
keyboard-layout=US-English
ata-dma-enabled=1
atapi-cd-dma-enabled=1
ttyd-rts-dtr-off=false
ttyd-ignore-cd=true
ttyc-rts-dtr-off=false
ttyc-ignore-cd=true
ttyb-rts-dtr-off=false
ttyb-ignore-cd=true
ttya-rts-dtr-off=false
ttya-ignore-cd=true
ttyd-mode=9600,8,n,1,-
ttyc-mode=9600,8,n,1,-
ttyb-mode=9600,8,n,1,-
ttya-mode=9600,8,n,1,-
lba-access-ok=1

root@omnios:~# eeprom boot-device
boot-device: data not available.

基于OmniOS r15026的解决方案

由于@abarczyk,我能够确定正确的引导磁盘。

我不得不使用稍微不同的语法:

代码语言:javascript
复制
root@omnios:~# /usr/sbin/prtconf -v | ggrep -1  bootpath
          value='unix'
      name='bootpath' type=string items=1
          value='/pci@38,0/pci1022,1453@1,1/pci144d,a801@0/blkdev@w0025385971B16535,0:b

使用/usr/sbin/format,我能够看到条目对应于

代码语言:javascript
复制
  16. c1t0025385971B16535d0 <Samsung-SSD 960 PRO 512GB-2B6QCXP7-476.94GB>
      /pci@38,0/pci1022,1453@1,1/pci144d,a801@0/blkdev@w0025385971B16535,0

这是正确的,因为这是我在BIOS中手动选择的磁盘。

非常感谢“abarczyk”和“andrew-henle”来考虑这个问题,并提供有益的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-19 14:44:29

找到引导系统的设备的最佳方法是检查prtconf -vp输出:

代码语言:javascript
复制
# /usr/sbin/prtconf -vp | grep bootpath
        bootpath:  '/pci@0,600000/pci@0/scsi@1/disk@0,0:a'
票数 3
EN

Stack Overflow用户

发布于 2018-06-27 05:53:21

在我的Solaris 11.4 Beta系统中,有一个非常有用的命令devprop,它帮助回答您的问题:

代码语言:javascript
复制
$ devprop -s bootpath
/pci@0,0/pci1849,8c02@1f,2/disk@1,0:b

然后,您只需查看format的输出,就可以看出这是什么意思。在我的系统里,那就是

代码语言:javascript
复制
       9. c2t1d0 <ATA-ST1000DM003-1CH1-CC47-931.51GB>
      /pci@0,0/pci1849,8c02@1f,2/disk@1,0
票数 2
EN

Stack Overflow用户

发布于 2018-06-14 11:33:57

使用eeprom命令。

手册页

描述 eeprom显示或更改EEPROM中的参数值。它按给定的顺序处理参数。当处理伴随值的参数时,eeprom对EEPROM进行指示的更改;否则,它将显示该参数的值。当没有参数说明符时,eeprom显示所有EEPROM参数的值。一个'−‘(连字符)标志指定参数和值将从标准输入(一个参数或每行parameter=value )中读取。 只有超级用户可以更改EEPROM内容。 eeprom验证EEPROM校验和,并抱怨它们是否不正确。 platform-name是平台实现的名称,可以使用uname(1)–i选项找到。 SPARC 基于security-modesecurity-passwordsecurity-#badlogins的系统使用eeprom实现固件密码保护。 x86 EEPROM存储使用驻留在平台特定引导区域的文件进行模拟./boot/solaris/bootenv.rc文件模拟EEPROM存储。 由于基于x86的系统通常在系统BIOS中实现密码保护,因此在eeprom程序中不支持密码保护。虽然可以在基于security-mode的系统上设置security-passwordsecurity-passwordsecurity-#badlogins属性,但这些属性在基于x86的系统上没有特殊的含义或行为。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50853269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档