Как добавить сетевой драйвер в GRUB?

sort -t$'\t' -k1,1 -k2,2n

делает свое дело, и он POSIX -совместим , за исключением части $'\t'. -tуказывает разделитель полей (вместо пробела -в -непустые -переходы, которые используются по умолчанию ); суффикс nможет применяться к определениям одного поля.

1
28.01.2021, 06:29
1 ответ

Вы просматриваете руководство по устаревшему GRUB Legacy (, т.е. GRUB версии 0.9x ).

Вооружившись этой информацией, я нашел копию файла README, который вы ищете . Вы обнаружите, что он поддерживает только ряд старых проводных сетевых интерфейсов, в основном в диапазоне 10/100 Мбит/с.

Но GRUB был полностью переписан в версиях 1.xx, а документация старого GRUB Legacy вообще не распространяется на современные версии GRUB (версии 2.0x ).

Вот руководство для современных версий GRUB.

Стандартный способ загрузки по сети — использование спецификации PXE. Это требует, чтобы сетевая карта предоставила собственное расширение системной прошивки (либо расширение BIOS, либо встроенный драйвер UEFI ), который активирует карту и позволяет ей отправлять запрос DHCP с установленными дополнительными атрибутами PXE. После этого DHCP-сервер должен будет указать в своем ответе местоположение загрузочного файла.

Микропрограмма затем загрузит сетевой загрузчик -из расположения, указанного в ответе DHCP, обычно с использованием протокола TFTP, но в более новых реализациях UEFI также может использоваться HTTP. После этого управление передается загруженному загрузчику, который сможет загружать дополнительные файлы, используя стандартизированный API прошивки для управления сетевой картой.

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

Это связано с тем, что в вашем конкретном случае существует довольно серьезная проблема «курица против яйца» и с большинством беспроводных сетевых адаптеров в целом :до того, как адаптер беспроводной сети сможет начать работать,необходимо загрузить один или несколько файлов прошивки в сетевой адаптер . Но если вы хотите загружаться по сети, это обычно означает, что вы не хотите (или не можете )вообще использовать какие-либо локальные диски, поэтому вам неоткуда взять файлы прошивки.

Если бы у вас был драйвер GRUB для сетевой карты, скорее всего, это была бы опция конфигурации во время компиляции -. Это также может быть модуль GRUB, загружаемый с помощью команды insmod. Но, насколько мне известно, никто не писал никаких драйверов Wi-Fi для GRUB.

Единственные сетевые драйверы, доступные для GRUB 2.xx, в настоящее время включены в каталог grub -core/net/drivers исходного пакета GRUB . Они:

  • efinetдля систем UEFI зависит от аппаратной поддержки, предоставляемой микропрограммой или драйвером UEFI.
  • emunetо виртуализации QEMU (я думаю)
  • pxeв системах x86 на основе BIOS -зависит от аппаратной поддержки, обеспечиваемой микропрограммой (, обычно в виде расширения BIOS загрузки PXE для сетевого адаптера)
  • ofnetдля систем, использующих Open Firmware(системы от Sun, Apple, IBM, ARM)
  • ubootnetдля систем, использующих U -загрузочную прошивку(в основном встроенную архитектуру Power, системы ARM и MIPS)

В качестве альтернативы, если ваша целевая система имеет прошивку UEFI, она может иметь доступный драйвер .efi, и вы можете определить загрузочную переменную UEFI NVRAM (, например. с помощью команды efibootmgr --driverс соответствующими параметрами ), чтобы загрузить драйвер из локального системного раздела EFI непосредственно перед загрузкой загрузчика, а затем полагаться на собственную сетевую поддержку UEFI. Но я также не видел .efiдрайверов для беспроводных сетевых карт.

Если у вас достаточно места на локальном диске для установки GRUB (или любого другого загрузчика ), файла ядра Linux и файла initramfs Linux, который включает драйвер Linux для сетевой карты Wi-Fi, любые модули ядра, от которых он зависит,файл прошивки (s )для сетевого адаптера, wpa_supplicant, его конфигурацию и DHCP-клиент, вместо этого вы можете просто загрузить ядро ​​​​Linux локально и использовать среду initramfs для запуска соединения Wi-Fi. Затем вы можете либо загрузить initramfs образ корневой файловой системы на основе ramdisk/tmpfs -из сети и использовать его, либо использовать корневую файловую систему, расположенную на сервере NFS. Это может быть самый простой способ достичь своей цели без необходимости запуска проекта «написать собственный драйвер Wi-Fi».

2
18.03.2021, 22:34

Теги

Похожие вопросы