LINUX.ORG.RU

UEFI, grub и 16 сетевых интерфейсов

 , ,


0

1

Имеется некое supermicro с 6ТБ диском на борту, 16 сетевухами и желанием поставить туда да хотя бы debian. На стадии установки (efi, ессно) grub этот самый grub говорит «ой» и падает. «Ой» оно говорит оттого, что лезет по всем каталогам в /sys/firmware/efi/vars/Boot00XX и читает оттуда всякое. Но в силу некоторой баги (уж не знаю, в ядре – а проверялись ядра от 3.13 до 5.8 – или в супермикре) в одном из каталогов Boot00XX имеющиеся там файлы отдают I/O error. Отдают они это, похоже, потому, что EFI переменная в этой секции имеет слишком большую длину(0xA8). В ней лежит что-то про сетевую загрузку и сложены кучей все 16 сетевух в виде имён, каких-то параметров… Это видно в EFI Shell через dmpstore Boot00XX. Если удалить этот параметр dmpstore -d Boot00XX, он создаётся вновь с другим номером. Пока что я дошёл до того, что если в сетапе переключить Legacy PXE на UEFI, образуется куча более мелких по размеру Boot00XX опций, но загвоздка в том, что эта самая здоровая со всеми ими в куче никуда не пропадает. PXE загрузку в UEFI режиме совсем отключать на будущее не хочется, вопрос собственно: как понять, что это именно за опция (судя по названиям в ней, это таки Legacy PXE), и как её отключить насовсем?

Вот список загруженных в EFI драйверов, может быть, поможет что-то выгрузить и отключить:

            T   D
D           Y C I
R           P F A
V  VERSION  E G G #D #C DRIVER NAME                         IMAGE NAME
== ======== = = = == == =================================== ===================
57 0000000B D - -  3  - AMI USB Driver                      Uhcd
59 0000000B B - -  3  7 USB bus                             Uhcd
5A 00000002 D - -  2  - USB Hid driver                      Uhcd
5B 00000001 D - -  1  - USB Mass Storage driver             Uhcd
75 00000001 B - -  2  1 AMI AHCI BUS Driver                 Ahci
79 00000001 ? - -  -  - AMI NVMe BUS Driver                 Nvme
AF 00000001 ? - -  -  - <UNKNOWN>                           SBDXE
Shell> 0010 B - -  4  4 AMI Console Splitter Driver         ConSplitter
B5 00000010 D - -  1  - AMI Graphic Console Driver          GraphicsConsole
B6 0000000A D - -  7  - Generic Disk I/O Driver             DiskIoDxe
B7 0000000B B - -  2  5 Partition Driver(MBR/GPT/El Torito) PartitionDxe
B8 00000010 D - -  2  - PCH Serial ATA Controller Initializ SataController
BA 00000010 B - -  1  2 AMI Generic LPC Super I/O Driver    GenericSio
BC 00000001 ? - -  -  - AMI IDE BUS Driver                  IdeBusSrc
BE 00A50105 B - -  2 67 <UNKNOWN>                           PciBus
C0 00000010 B - -  2  2 <UNKNOWN>                           TerminalSrc
C1 00000010 B - -  1  1 <UNKNOWN>                           TerminalSrc
C2 0000000A D - -  6  - Simple Network Protocol Driver      SnpDxe
C3 0000000A B - -  6 24 MNP Network Service Driver          MnpDxe
C4 0000000A B - -  6  6 ARP Network Service Driver          ArpDxe
C5 0000000A B - - 18 24 TCP Network Service Driver          TcpDxe
C6 0000000A B - - 12 12 TCP Network Service Driver          TcpDxe
C7 0000000A D - - 36  - UEFI PXE Base Code Driver           UefiPxeBcDxe
C8 0000000A ? - -  -  - UEFI PXE Base Code Driver           UefiPxeBcDxe
C9 0000000A D - -  6  - UEFI HTTP Boot Driver               HttpBootDxe
CA 0000000A D - -  6  - HttpDxe                             HttpDxe
CB 00000000 D - -  6  - DNS Network Service Driver          DnsDxe
CC 00000000 D - -  6  - DNS Network Service Driver          DnsDxe
CD 0000000A B - -  6 12 DHCP Protocol Driver                Dhcp4Dxe
CE 0000000A D - -  6  - IP4 CONFIG Network Service Driver   Ip4ConfigDxe
CF 0000000A B - -  6 66 IP4 Network Service Driver          Ip4Dxe
D1 0000000A B - - 12 12 MTFTP4 Network Service              Mtftp4Dxe
D2 0000000A B - - 42 72 UDP Network Service Driver          Udp4Dxe
D3 0000000A B - -  6 36 IP6 Network Service Driver          Ip6Dxe
D4 0000000A B - - 24 36 UDP6 Network Service Driver         Udp6Dxe
D5 0000000A D - -  6  - DHCP6 Protocol Driver               Dhcp6Dxe
D6 0000000A D - -  6  - MTFTP6 Network Service Driver       Mtftp6Dxe
D9 0000000A D - -  2  - FAT File System Driver              Fat
DA 0000000A D - -  6  - iSCSI Driver                        IScsiDxe
DB 0000000A D - -  6  - iSCSI Driver                        IScsiDxe
DD 0000000A ? - -  -  - SCSI Bus Driver                     ScsiBus
DE 0000000A ? - -  -  - Scsi Disk Driver                    ScsiDisk
118 00000010 ? - -  -  - AMI CSM Block I/O Driver            CsmBlockIo
119 00000024 B - -  1  1 BIOS[INT10] Video Driver            CsmVideo
11A 00000010 ? - -  -  - <UNKNOWN>                           <UNKNOWN>
179 06090700 B X X  5  5 Intel(R) PRO/1000 6.9.07 PCI-E      MemoryMapped(0x3,0
17B 06090700 B X X  1  1 Intel(R) PRO/1000 6.9.07 PCI-E      MemoryMapped(0x3,0

ps: про –no-nvram у grub-install знаю, но это вышеуказанное ж явный глюк, как забороть?

В ней лежит что-то про сетевую загрузку и сложены кучей все 16 сетевух в виде имён, каких-то параметров… Это видно в EFI Shell через dmpstore Boot00XX. Если удалить этот параметр dmpstore -d Boot00XX, он создаётся вновь с другим номером.

Зайти в "BIOS" и отключить загрузку по сети пробовал?

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Хотелось бы, как я упоминал, оставить загрузку по сети. В будущем эту штуку придется вообще по pxe переустанавливать.

olegkrutov ★★
() автор топика

На стадии установки (efi, ессно) grub этот самый grub говорит «ой» и падает

ЕФИ-загрузчик ставится простым копированием файлов.

Если удалить этот параметр dmpstore…

Чем бороться с ветряными мельницами, попробуй создать там строку запуска груб.

желанием поставить туда да хотя бы debian.

Коль еще не определился, оно и лучше, поставить (скопировать) груб, чтобы он не зависел ни от какой системы. Сможет система поставить загрузчик или нет, это дело пятое. А этот будет всегда, и всегда будет работать.

andytux ★★★★★
()
Ответ на: комментарий от andytux

ЕФИ-загрузчик ставится простым копированием файлов.

Тогда лучше попробовать установить сразу с removable флагом. В экспертном режиме, вроде есть. Но тоже, может, будет перебирать записи.

https://wiki.debian.org/GrubEFIReinstall#Problem1:_Weak_EFI_implementation_only_recognizes_the_fallback_bootloader

А можно попробовать какой-нибудь systemd-boot, но в дебиане постустановочных скриптов не быть может.

boowai ★★★★
()
Ответ на: комментарий от olegkrutov

Хотелось бы, как я упоминал, оставить загрузку по сети.

Тебе её надо отключить только на время процесса установки, потом можно обратно включить.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Я попробовал отключить аж сетевой стек уефи, но без толку, этот параметр все равно есть. Временно решил проблему удалением переменной в efi shell и оттуда же запуском установщика. Тогда оно не успевает пересоздаться.

olegkrutov ★★
() автор топика
Ответ на: комментарий от olegkrutov

Никогда не сталкивался с подобным, честно говоря.

Но если GRUB2 такой хитрожопый, то можно вообще без него обойтись, либо через systemd-boot, либо напрямую ядро грузить через EFI-STUB.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Но если GRUB2 такой хитрожопый, то можно вообще без него обойтись, либо через systemd-boot, либо напрямую ядро грузить через EFI-STUB.

Жду когда его выкинут на помойку. Быстрей бы.

anonymous
()
Ответ на: комментарий от mord0d

Да в принципе это бага то ли конкретной супермикры, то ли ядра, не оч понимаю, кому зарепортить, ситуация редкая, ну очень не часто столько интерфейсов в машину напихано.

olegkrutov ★★
() автор топика
Ответ на: комментарий от olegkrutov

это бага то ли конкретной супермикры, то ли ядра

Я почему-то склоняюсь ко второму. Linux давно нацелен на виртуализацию и десктоп. Даже банальное ограничение в 26 дисков — это глупо. За почти тридцать лет с этим наверняка уже сталкивались, но до сих пор ничего не изменилось.

ну очень не часто столько интерфейсов в машину напихано

На самом деле хватает. Просто не везде оно применимо.

mord0d ★★★★★
()
Ответ на: комментарий от anonymous

Жду когда его выкинут на помойку.

На Linux так-то есть выбор. systemd-boot, rEFInd. Если elilo ещё живой, то ещё и он. Наверное можно и Clover прикрутить.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Даже банальное ограничение в 26 дисков — это глупо

Чего 26? ЕМНИП в scsi вообще лимита нет, все ограничивается аппаратными возможностями

int13h ★★★★★
()
Ответ на: комментарий от olegkrutov

После sdz начинается sdaa, sdab, и т.д. Лично наблюдал.

Я пробовал пару раз, у меня не получилось, или оно не смогло на горячую, или питания не хватило (киловатта, б_ть?!).

mord0d ★★★★★
()
Ответ на: комментарий от olegkrutov

Хотелось бы, как я упоминал, оставить загрузку по сети. В будущем эту штуку придется вообще по pxe переустанавливать.

Воткни в материнку ещё одну сетевую карту с которой ты и будешь грузится по pxe, а сетевую загрузку на родных сетевухах просто отключи.

torvn77 ★★★★★
()
Ответ на: комментарий от mord0d

Не понял вас. Я о том, что лимита нет. Вы можете взять HBA и подключить сколь угодно много дисков.

Ознакомьтесь: https://access.redhat.com/solutions/70913

Вы даже у себя глянуть можете, сколько «по умолчанию» LUN у вас в системе может быть:

# cat /sys/module/scsi_mod/parameters/max_luns 
512
int13h ★★★★★
()
Ответ на: комментарий от int13h

Вы даже у себя глянуть можете

Уже не могу:

 # cat /sys/module/scsi_mod/parameters/max_luns
cat: /sys/module/scsi_mod/parameters/max_luns: No such file or directory

 # uname -rs
FreeBSD 12.2-RELEASE

Вокруг больше нет линуксов и линуксоидов, мир стал немного идеальнее. :3

mord0d ★★★★★
()
Ответ на: комментарий от olegkrutov

Сам я такое не осилю или еда осилю, но может тебе взять исходники груба, найти место где в твоём случае груб читает этот параметр и заменить чтение параметра на присваивание этому параметру определённого значения, при котором груб сможет нормально загрузится?

по крайней мере на винде я бы решал такую проблему схожим образом, залез хекс редактором в бинарник и просто бы попортил название параметра, чтобы бинарник вместо обращения к сбойному параметру обращался бы к не существующему, или перебил на другой параметр, дающий подходящее значение.

Ну понятно что такое может и не сработать, но на Linux есть исходники, так что возможностей решить проблему немного больше.

Если будешь решать проблему таким образом то поставь груб так, чтобы система его случайно не обновила.

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.