Как таковой, как поменять порядок загрузки я пока не нашёл. Есть возможность у supermicro просто сдампить текущий конфиг в текстовом виде (через supermicro update manager), потом его поменять, потом залить обратно.
Но я нашёл интересную штуку - можно загрузить сервер в нужный пункт единожды, типа как bootnext в efibootmgr. При этом это должно работать также и для legacy режима загрузки.
Есть нюансы - непонятно пока как выбрать конкретный диск для загрузки, например. Ну и то что это работает только на серверах, потому что на десктопах нет ipmi.
В мануале ipmitool нашёл про эту возможность аж в нескольких местах.
1) ipmitool chassis bootdev
2) ipmitool chassis bootparam - отличается от предыдущей только тем, что параметры с префиксом force_, типа как force_bios, тогда как в предыдущей - просто bios
3) ipmitool mc chassis bootdev <device> опции. Можно например посмотреть ipmitool mc или bmc chassis bootdev
4) ipmitool mc chassis bootparam set <device> опции. Здесь девайсы с префиксом force_, в отличие от предыдущей команды. А ещё есть опции, ассоциированные с очисткой BMC Boot Valid Bit. можно очищать valid bit при перезагрузке по питанию, по кнопке reset или мягкой перезагрузке, по таймауту, по какому-то PEF. Но и вообще, кто и где смотрит этот value bit не совсем понятно пока. Догадываюсь, что его смотрит прошивка системы при загрузке, и если выставить устройство в bootnext, и наступит какое-то условие, например, перезагрузка по кнопке, то если bootnext был выставлен с соответствующим параметром сброса, то система не будет учитывать это устройство в качестве приоритетной прогрузки. Но я это не проверял.
При выполнении вариантов 3 и 4 было написано Invalid mc/bmc command: chassis
Видимо, там поехало форматирование. Либо я скосил. Но параметры описаны действительно в четырёх местах. Возможно второй раз - это более подробное уточнение первого. В общем, посмотреть повнимательнее.
Кстати, вот что выдало bootdev none options=help
Legal options settings are:
help: print this message
valid: Boot flags valid
persistent: Changes are persistent for all future boots
efiboot: Extensible Firmware Interface Boot (EFI)
clear-cmos: CMOS clear
lockkbd: Lock Keyboard
screenblank: Screen Blank
lockoutreset: Lock out Resetbuttons
lockout_power: Lock out (power off/sleep request) via Power Button
verbose=default: Request quiet BIOS display
verbose=no: Request quiet BIOS display
verbose=yes: Request verbose BIOS display
force_pet: Force progress event traps
upw_bypass: User password bypass
lockout_sleep: Log Out Sleep Button
cons_redirect=default: Console redirection occurs per BIOS configuration setting
cons_redirect=skip: Suppress (skip) console redirection if enabled
cons_redirect=enable: Suppress (skip) console redirection if enabled
Интересно. Так можно ли всё-таки задать на постоянку свой boot order с опцией persistent?
И в режиме uefi можно загрузиться с опцией efiboot? Попробовал
chassis bootdev disk options=efiboot
Но эффекта не дало. Всё равно грузится в legacy. Возможно, надо в bios включить uefi.
Но я нашёл интересную штуку - можно загрузить сервер в нужный пункт единожды, типа как bootnext в efibootmgr. При этом это должно работать также и для legacy режима загрузки.
Есть нюансы - непонятно пока как выбрать конкретный диск для загрузки, например. Ну и то что это работает только на серверах, потому что на десктопах нет ipmi.
В мануале ipmitool нашёл про эту возможность аж в нескольких местах.
1) ipmitool chassis bootdev
2) ipmitool chassis bootparam - отличается от предыдущей только тем, что параметры с префиксом force_, типа как force_bios, тогда как в предыдущей - просто bios
3) ipmitool mc chassis bootdev <device> опции. Можно например посмотреть ipmitool mc или bmc chassis bootdev
4) ipmitool mc chassis bootparam set <device> опции. Здесь девайсы с префиксом force_, в отличие от предыдущей команды. А ещё есть опции, ассоциированные с очисткой BMC Boot Valid Bit. можно очищать valid bit при перезагрузке по питанию, по кнопке reset или мягкой перезагрузке, по таймауту, по какому-то PEF. Но и вообще, кто и где смотрит этот value bit не совсем понятно пока. Догадываюсь, что его смотрит прошивка системы при загрузке, и если выставить устройство в bootnext, и наступит какое-то условие, например, перезагрузка по кнопке, то если bootnext был выставлен с соответствующим параметром сброса, то система не будет учитывать это устройство в качестве приоритетной прогрузки. Но я это не проверял.
При выполнении вариантов 3 и 4 было написано Invalid mc/bmc command: chassis
Видимо, там поехало форматирование. Либо я скосил. Но параметры описаны действительно в четырёх местах. Возможно второй раз - это более подробное уточнение первого. В общем, посмотреть повнимательнее.
Кстати, вот что выдало bootdev none options=help
Legal options settings are:
help: print this message
valid: Boot flags valid
persistent: Changes are persistent for all future boots
efiboot: Extensible Firmware Interface Boot (EFI)
clear-cmos: CMOS clear
lockkbd: Lock Keyboard
screenblank: Screen Blank
lockoutreset: Lock out Resetbuttons
lockout_power: Lock out (power off/sleep request) via Power Button
verbose=default: Request quiet BIOS display
verbose=no: Request quiet BIOS display
verbose=yes: Request verbose BIOS display
force_pet: Force progress event traps
upw_bypass: User password bypass
lockout_sleep: Log Out Sleep Button
cons_redirect=default: Console redirection occurs per BIOS configuration setting
cons_redirect=skip: Suppress (skip) console redirection if enabled
cons_redirect=enable: Suppress (skip) console redirection if enabled
Интересно. Так можно ли всё-таки задать на постоянку свой boot order с опцией persistent?
И в режиме uefi можно загрузиться с опцией efiboot? Попробовал
chassis bootdev disk options=efiboot
Но эффекта не дало. Всё равно грузится в legacy. Возможно, надо в bios включить uefi.
Нашёл причину - это баги в ipmitool:
https://bugs.launchpad.net/ironic/+bug/1611306
https://github.com/ipmitool/ipmitool/issues/163
Фиксы уже в коде, но новую версию пока не релизнули. Пока что можно обойти это, передавая байты (которые ipmitool как раз генерирует неправильно):
Еще кстати непонятно, что за request Safe Mode и Force boot from Diagnostic Partition.
Вот тут в комментах https://ma.ttwagner.com/ipmi-trick-set-the-boot-device/ нашёл что можно использовать такие команды: chassis bootparam get 5
В мануале есть вот это:
get <param #>
Get boot parameter. Currently supported values for <param #> are:
0 - Set In Progress
1 - Service Partition Selector
2 - Service Partition Scan
3 - BMC Boot Flag Valid Bit Clearing
4 - Boot Info Acknowledge
5 - Boot Flags
6 - Boot Initiator Info
7 - Boot Initiator Mailbox
Но команда get 2 и get 1 мне ничего про service partition не выдали на supermicro серваке. Unknown было.
ipmitool -I lanplus -H $IPMI_HOST -U $IPMI_USER -f $IPMI_PASSWORD_FILE raw 0x00 0x08 0x05 0xa0 0x08 0x00 0x00 0x00 # загрузиться по сети в режиме EFI
У меня получилось загрузиться в uefi cdrom (в arch linux iso через ipmi virtual media) когда я последовательно выполнил сначала:
ipmitool -I lanplus -H $IPMI_HOST -U $IPMI_LOGIN -f $IPMI_PASSWORD_FILE chassis bootdev cdrom options=persistent,efiboot - тут я думал что уже должно загрузиться, но нет.
ipmitool -I lanplus -H $IPMI_HOST -U $IPMI_LOGIN -f $IPMI_PASSWORD_FILE chassis bootdev cdrom options=persistent,efiboot - тут я думал что уже должно загрузиться, но нет.
а потом:
ipmitool -I lanplus -H $IPMI_HOST -U $IPMI_LOGIN -f $IPMI_PASSWORD_FILE chassis bootdev cdrom
ipmitool -I lanplus -H $IPMI_HOST -U $IPMI_LOGIN -f $IPMI_PASSWORD_FILE chassis power reset
И на моё удивление, загрузилось в uefi cdrom. Правда долго загружалось как-то, с несколько раз появлением заставки. Но это обычное дело. На плате X9SCL на Supermicro проверял.
Еще кстати непонятно, что за request Safe Mode и Force boot from Diagnostic Partition.
Вот тут в комментах https://ma.ttwagner.com/ipmi-trick-set-the-boot-device/ нашёл что можно использовать такие команды: chassis bootparam get 5
В мануале есть вот это:
get <param #>
Get boot parameter. Currently supported values for <param #> are:
0 - Set In Progress
1 - Service Partition Selector
2 - Service Partition Scan
3 - BMC Boot Flag Valid Bit Clearing
4 - Boot Info Acknowledge
5 - Boot Flags
6 - Boot Initiator Info
7 - Boot Initiator Mailbox
Но команда get 2 и get 1 мне ничего про service partition не выдали на supermicro серваке. Unknown было.
https://man.archlinux.org/man/ipmitool.1 - вот тут появился нормально отформатированный man
Комментариев нет:
Отправить комментарий