Arhn - архитектура программирования

Как программно определить, какой диск является загрузочным в Solaris/illumos?

На тестовом сервере два твердотельных накопителя Samsung 960 Pro одного производителя, модели и размера. На обоих я установил свежую установку точно такой же ОС, OmniOS r15026.

Нажав F8 во время POST, я могу получить доступ к диспетчеру загрузки материнской платы и выбрать один из двух загрузочных дисков. Таким образом, я знаю, с какого из них загрузилась система.

Но как узнать программно после загрузки, какой диск является загрузочным?

Кажется, это:

Предлагает ли Solaris/illumos какие-то интроспективные приемы для определения загрузочного диска?

Можно ли программно определить, какой диск является загрузочным в Solaris/illumos?

Инструмент командной строки тоже подойдет.


Редактировать 1: благодаря @andrew-henle я узнал команду eeprom.

Как и ожидалось, он доступен на illumos, но на тестовом сервере с 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 за рассмотрение этого вопроса и предложение поучительной помощи.


Ответы:


1

Лучший способ найти устройство, с которого загружается система, — проверить вывод prtconf -vp:

# /usr/sbin/prtconf -vp | grep bootpath
        bootpath:  '/pci@0,600000/pci@0/scsi@1/disk@0,0:a'
19.06.2018
  • Большое спасибо, это сработало отлично. В моей тестовой системе illumos/OmniOS r15026 мне пришлось использовать синтаксис /usr/sbin/prtconf -v | ggrep -1 bootpath, показывающий в строке рядом с записью пути загрузки value='/pci@38,0/pci1022,1453@1,1/pci144d,a801@0/blkdev@w0025385971B16535,0:b'. С format я вижу, что запись соответствует c1t0025385971B16535d0 <Samsung-SSD 960 PRO 512GB-2B6QCXP7-476.94GB>, что правильно, так как это диск, который я вручную выбрал в BIOS. 20.06.2018

  • 2

    В моей системе 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
    
    27.06.2018
  • Спасибо, работает и на OmniOS, /sbin/devprop -s bootpath, или, что еще лучше для меня, devprop diskdevid. Этот ответ более элегантный, поскольку более краткий, чем предыдущий, хотя prtconf -v - это дерево устройств, на которое смотрит devprop. 28.06.2018

  • 3

    Используйте команду eeprom.

    Согласно странице руководства eeprom:

    Описание

    eeprom отображает или изменяет значения параметров в EEPROM. Он обрабатывает параметры в указанном порядке. При обработке параметра, сопровождаемого значением, eeprom вносит указанное изменение в EEPROM; в противном случае отображается значение параметра. Если нет спецификаторов параметров, eeprom отображает значения всех параметров EEPROM. Флаг '-' (дефис) указывает, что параметры и значения должны считываться из стандартного ввода (один параметр или параметр=значение в строке).

    Только суперпользователь может изменять содержимое EEPROM.

    eeprom проверяет контрольные суммы EEPROM и жалуется, если они неверны.

    platform-name — это имя реализации платформы, которое можно найти с помощью параметра –i для uname(1).

    СПАРК

    Системы на базе SPARC реализуют защиту паролем прошивки с помощью eeprom, используя свойства security-mode, security-password и security-#badlogins.

    x86

    Хранилище EEPROM моделируется с помощью файла, находящегося в загрузочной области конкретной платформы. Файл /boot/solaris/bootenv.rc имитирует хранилище EEPROM.

    Поскольку системы на базе x86 обычно реализуют защиту паролем в системном BIOS, в программе eeprom нет поддержки защиты паролем. Хотя можно установить свойства security-mode, security-password и security-#badlogins в системах на базе x86, эти свойства не имеют особого значения или поведения в системах на базе x86.

    14.06.2018
  • Спасибо за указание на команду eeprom. Он доступен на illumos, но на моем тестовом сервере illumos (OmniOS), к сожалению, мало что возвращает . Смотрите отредактированный вопрос. 14.06.2018
  • @gsl У меня сейчас нет доступа к серверу Solaris, поэтому я не могу проверить. Но вы можете найти что-то полезное где-нибудь в /boot. Возможно, вам придется проанализировать файлы конфигурации GRUB на компьютере с архитектурой x86. Безопасно ли предположить, что файловая система / находится на вашем загрузочном диске? 14.06.2018
  • Спасибо, сейчас смотрю /boot в поисках полезной информации. Да, файловая система / находится на загрузочном диске. Я отредактировал вопрос с zfs list. 14.06.2018
  • Я вставил вывод boot/loader.rc здесь. Но большинство этих настроек закомментированы. 14.06.2018
  • @gsl Насколько я помню, вам, возможно, придется заглянуть под /boot/grub. Там, вероятно, есть файл menu.???, из которого вы можете получить загрузочный диск, если вы можете понять, как анализировать записи. Проблема возникает с тем, как вы определяете загрузочный диск. Это где загрузчик? Это где ваша корневая файловая система? Начальный загрузчик GRUB может находиться на одном диске, который сначала загружает ядро ​​Solaris со второго диска, а затем загружает корневую файловую систему из пула ZFS на один или несколько других дисков. 14.06.2018
  • Спасибо за указания. Я вставил /boot/grub/menu.lst. Но у него не так много подсказок. Кроме того, я дополнительно отредактировал вопрос, чтобы добавить вариант использования (2 точно таких же загрузочных диска с точно такой же новой установкой ОС), чтобы уточнить. 14.06.2018
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..