使用 eeprom 命令可以显示和修改 EEPROM 中的参数值。不需要任何特殊特权即可显示 EEPROM 参数。但是,要修改这些参数,您必须承担 root 角色。
请注意下面关于如何在 x86 平台上设置和存储 EEPROM 属性的其他信息。
在 x86 平台上,通过以下各项模拟 EEPROM 属性的设置:
在 /boot/solaris/bootenv.rc 文件中存储 Oracle Solaris 特定属性。
操作 GRUB 菜单来模拟设置某些 EEPROM 属性的效果。
针对特定于 UEFI 环境的变量实现 NVRAM 存储。
设置 boot-args 或 boot-file 属性将导致创建特殊 GRUB 菜单项并对其进行处理,因为这是模拟 x86 平台上的影响的唯一方法。特殊 GRUB 菜单项的标题为 Solaris bootenv rc。该特殊项在其创建时标记为缺省项。
通过在内核命令行上将属性名称设置为其他值,可以覆盖使用 eeprom 命令设置的属性,例如,在引导时编辑 GRUB 菜单。一个示例为,通过使用 eeprom 命令,然后在引导时将 B console=text 添加到内核命令行来将控制台属性设置为 graphics。在这种情况下,控制台类型将设置为 text,即使 bootenv.rc 文件指定了值 graphics。
有关更多详细信息,请参见 eeprom(1M) 手册页。
对于启用 UEFI 的系统,参数存储在两个位置。Oracle Solaris 特定的变量存储在 bootenv.rc 文件中。UEFI 特定的变量在 NVRAM 存储中进行设置。与带有 OBP 的 SPARC 不同,Oracle Solaris 变量不由 UEFI 固件使用。要使 UEFI 特定的变量可用,请将 –u 选项与 eeprom 命令配合使用。
大多数 UEFI 变量都采用二进制格式,可以转换为可读取格式。不能进行转换时,将输出十六进制格式。
EEPROM 参数因平台而异。例如,boot-device 是 SPARC 平台上的参数,而非 x86 平台上的参数。要查看您的系统类型可用的 EEPROM 参数,请使用不带参数的 eeprom 命令。
示例 4-3 查看所有 EEPROM 参数下面的示例显示了基于 x86 的系统上 eeprom 命令的输出:
$ eeprom keyboard-layout=Unknown ata-dma-enabled=1 atapi-cd-dma-enabled=1 ttyb-rts-dtr-off=false ttyb-ignore-cd=true ttya-rts-dtr-off=false ttya-ignore-cd=true ttyb-mode=9600,8,n,1,- ttya-mode=9600,8,n,1,- lba-access-ok=1 console=ttya示例 4-4 查看特定 EEPROM 参数
要显示特定 EEPROM 参数的值,请按如下所示将参数名称添加到 eeprom 命令:
$ /usr/sbin/eeprom console console=ttya示例 4-5 查看所有 UEFI EEPROM 参数
以下示例显示了如何在 UEFI 模式下显示系统上的所有 UEFI 参数。您必须承担 root 角色才能使用此命令。
# eeprom -u MonotonicCounter=0x1f2 OsaBootOptNum=0xffff ConOut=/PciRoot(0x0)/Pci(0x1c,0x7)/Pci(0x0,0x0)/Pci(0x0,0x0)/AcpiAdr(2147549440) /PciRoot(0x0)/Pci(0x1f,0x0)/Serial(0x0)/Uart(115200,8,N,1)/UartFlowCtrl(None)/VenPcAnsi() ConIn=/PciRoot(0x0)/Pci(0x1f,0x0)/Serial(0x0)/Uart(115200,8,N,1)/UartFlowCtrl(None)/VenPcAnsi() /PciRoot(0x0)/Pci(0x1d,0x0)/USB(0x1,0x0)/USB(0x8,0x0) BootOrder=Boot0000 Boot0001 Boot0002 Boot0003 Boot0004 Boot0005 Boot0006 Lang=eng PlatformLang=en-US Timeout=0x1 Boot0001=description:string=[UEFI]USB:USBIN:USB USB Hard Drive , flags:int=1, device_path: \ string=/PciRoot(0x0)/Pci(0x1a,0x0)/USB(0x1,0x0)/USB(0x2,0x0)/HD(1,MBR,0x004D5353,0x800,0x3b5800), \ optional_data:string=AMBO Boot0002=description:string=[UEFI]PXE:NET0:Intel(R) Ethernet Controller 10 Gigabit X540-AT2, \ flags:int=1, device_path:string=/PciRoot(0x0)/Pci(0x2,0x0)/Pci(0x0,0x0)/MAC(002128e77478), \ optional_data:string=AMBO Boot0003=description:string=[UEFI]PXE:NET1:Intel(R) Ethernet Controller 10 Gigabit X540-AT2, \ flags:int=1, device_path:string=/PciRoot(0x0)/Pci(0x2,0x0)/Pci(0x0,0x1)/MAC(002128e77479), \ optional_data:string=AMBO Boot0004=description:string=[UEFI]PXE:NET2:Intel(R) Ethernet Controller 10 Gigabit X540-AT2, \ flags:int=1, device_path:string=/PciRoot(0x1)/Pci(0x1,0x0)/Pci(0x0,0x0)/MAC(002128e7747a), \ optional_data:string=AMBO Boot0005=description:string=[UEFI]PXE:NET3:Intel(R) Ethernet Controller 10 Gigabit X540-AT2, \ flags:int=1, device_path:string=/PciRoot(0x1)/Pci(0x1,0x0)/Pci(0x0,0x1)/MAC(002128e7747b), \ optional_data:string=AMBO Boot0006=description:string=[UEFI]SAS:PCIE3:ATA HITACHI HDS7225SA81A, flags:int=1, \ device_path:string=/PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0) \ /MessagingPath(10,2c00b .... 12010100) \ /HD(1,GPT,BCB01265-4665-F1CA-8BF5-9C4FB95962FA,0x100,0x80000), optional_data:string=AMBO Boot0000=description:string=Oracle Solaris s12_13, flags:int=1, device_path: \ string=HD(1,GPT,C7398875-60D2-A9E0-83EE-94DAA21B0383,0x100,0x80000), file_path:string=/EFI/Oracle/grubx64.efi USB_POINT=5139417f00000000 ConOutDev=/PciRoot(0x0)/Pci(0x1c,0x7)/Pci(0x0,0x0)/Pci(0x0,0x0)/AcpiAdr(2147549440) /PciRoot(0x0)/Pci(0x1f,0x0)/Serial(0x0)/Uart(115200,8,N,1)/UartFlowCtrl(None)/VenPcAnsi() ConInDev=/PciRoot(0x0)/Pci(0x1f,0x0)/Serial(0x0)/Uart(115200,8,N,1)/UartFlowCtrl(None)/VenPcAnsi() /PciRoot(0x0)/Pci(0x1d,0x0)/USB(0x1,0x0)/USB(0x8,0x0) BootOptionSupport=0x1 ErrOutDev=/PciRoot(0x0)/Pci(0x1c,0x7)/Pci(0x0,0x0)/Pci(0x0,0x0)/AcpiAdr(2147549440) /PciRoot(0x0)/Pci(0x1f,0x0)/Serial(0x0)/Uart(115200,8,N,1)/UartFlowCtrl(None)/VenPcAnsi() ErrOut=/PciRoot(0x0)/Pci(0x1c,0x7)/Pci(0x0,0x0)/Pci(0x0,0x0)/AcpiAdr(2147549440) /PciRoot(0x0)/Pci(0x1f,0x0)/Serial(0x0)/Uart(115200,8,N,1)/UartFlowCtrl(None)/VenPcAnsi() PlatformLangCodes=en-US S3PerfAdd=hexdump:989fd6aa00000000 LangCodes=eng BootCurrent=Boot0000示例 4-6 查看特定 UEFI 参数
# eeprom -u Boot0000 Boot0000=description:string=Oracle Solaris s12_13, flags:int=1, device_path: \ string=HD(1,GPT,C7398875-60D2-A9E0-83EE-94DAA21B0383,0x100,0x80000), \ file_path:string=/EFI/Oracle/grubx64.efi
以下过程介绍了如何在基于 SPARC 的系统上设置缺省引导设备。在 x86 平台上,通过适用于您的固件类型的设置实用程序(如 UEFI Boot Manager)设置引导设备。
# eeprom attribute=value
# eeprom attribute
输出应该显示已更改属性的新 eeprom 值。
要将 auto_boot 参数设置为 false,请使用 root 角色键入以下命令:
# eeprom auto-boot?=false示例 4-8 设置内核引导参数
通过指定 boot-args 参数的值可以设置内核引导参数。例如,键入以下命令以指定系统引导内核调试器:
# eeprom boot-args=-k示例 4-9 设置控制台设备的参数
要将 Oracle Solaris 控制台设置切换为图形模式,请使用以下命令:
# eeprom console=graphics示例 4-10 在启用 UEFI 的系统上设置参数
此示例显示如何在启用 UEFI 的系统上更改引导顺序:
# eeprom -u BootOrder="Boot0005 Boot0001 Boot0002 Boot0003 Boot0004 Boot0000"
在此示例中,将删除名为 attribute 的定制参数。
# eeprom -u -d attribute
# eeprom -u attribute eeprom: read: attribute doesn't exist