如何以编程方式确定哪个是Solaris / illumos上的启动盘?

时间:2018-06-14 08:43:40

标签: unix command-line-interface solaris boot

在测试服务器上有两个三星960 Pro SSD,完全相同的制造商,型号和尺寸。我已经安装了完全相同操作系统OmniOS r15026的全新安装。

在POST时按F8,我可以访问主板BOOT管理器,并选择两个启动驱动器中的一个。因此,我知道系统启动了哪一个。

但是如何在启动后以编程方式知道启动盘?

似乎是:

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

是否可以通过编程方式确定哪个是Solaris / illumos上的启动盘?

命令行工具也可以。

编辑1:感谢@ andrew-henle,我来了解命令eeprom

正如预期的那样,它是Possible on macOS,但是在测试服务器上使用OmniOS不幸的是它并没有多少回报:

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,我能够确定正确的启动盘。

我必须使用稍微不同的语法:

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,我能够看到条目对应

  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考虑这一点并提供有益的帮助。

3 个答案:

答案 0 :(得分:2)

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

# /usr/sbin/prtconf -vp | grep bootpath
        bootpath:  '/pci@0,600000/pci@0/scsi@1/disk@0,0:a'

答案 1 :(得分:1)

使用eeprom命令。

the eeprom man page

  

<强>描述

     

eeprom显示或更改EEPROM中参数的值。   它按给定的顺序处理参数。处理时   带有值的参数,eeprom表示   改变EEPROM;否则,它显示参数&#39; s   值。如果没有给出参数说明符,eeprom将显示这些值   所有EEPROM参数。 A&#39; - &#39; (连字符)标志指定   参数和值将从标准输入读取(一个   参数或参数=每行的值。)

     

只有超级用户才能改变EEPROM内容。

     

eeprom验证EEPROM校验和,如果存在则进行投诉   不正确。

     

platform-name是平台实现的名称,可以   使用–i的{​​{1}}选项找到。

     

<强> SPARC

     

基于SPARC的系统实现固件密码保护   eeprom,使用uname(1)security-mode和   security-password属性。

     

<强> 86

     

使用驻留在中的文件模拟EEPROM存储   特定于平台的引导区域。 security-#badlogins文件   模拟EEPROM存储。

     

因为基于x86的系统通常在其中实现密码保护   系统BIOS,不支持密码保护   /boot/solaris/bootenv.rc计划。虽然可以设置eeprom,   基于x86的security-modesecurity-password属性   系统,这些属性在x86上没有特殊含义或行为   基于系统。

答案 2 :(得分:1)

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

$ devprop -s bootpath
/pci@0,0/pci1849,8c02@1f,2/disk@1,0:b

然后,您只需要查看format的输出以查看其含义。在我的系统上,即

       9. c2t1d0 <ATA-ST1000DM003-1CH1-CC47-931.51GB>
      /pci@0,0/pci1849,8c02@1f,2/disk@1,0