GRUBにネットワークドライバを追加するには?

GRUBにネットワークドライバを追加するには?

しなければならないGRUBにネットワークドライバを追加する

追いかけようとするこのマニュアルGNUが提供していますが、次のように言います。

GRUBはディスクベースのブートローダですが、ネットワークサポートを提供します。ネットワークサポートを使用するには、GRUBビルドプロセス中に少なくとも1つのネットワークドライバを有効にする必要があります。詳細については、ソースディストリビューションの「netboot/README.netboot」を参照してください。

netboot/README.netbootこのファイルがオンラインで見つからないようです。 GRUBにネットワークドライバをインストールする方法を知っている人はいますか? liveCDを使ってGRUBを構築するには?

必要に応じて、私のネットワークカードは以下に基づいていますlspci

01:00.0 Network controller: Qualcomm Atheros QCA9377 802.11ac Wireless Network Adapter (rev 31)

答え1

古いGRUBレガシー(つまりGRUBバージョン0.9x)のマニュアルを見ています。

私が見つけたこの情報で探しているReadmeファイルのコピー。以前のバージョンのみをサポートしていることがわかります。熱狂ネットワークインタフェースはほとんど10/100Mbpsの範囲です。

ただし、GRUBはバージョン1.xxで完全に書き直され、以前のGRUBレガシーのドキュメントは最新バージョンのGRUB(バージョン2.0x)には適用されません。

これはGRUBの最新バージョンのマニュアルです。

ネットワークから起動する標準的な方法は、PXE仕様を使用することです。これを行うには、ネットワークカードが独自のシステムファームウェア拡張(BIOS拡張または内蔵UEFIドライバ)を提供する必要があります。これにより、カードを有効にし、追加のPXE属性セットとともにDHCP要求を送信できます。その後、DHCPサーバーは応答に起動ファイルの場所を含める必要があります。

その後、ファームウェアは通常TFTPプロトコルを使用しますが、最新のUEFI実装では、オプションでHTTPを使用して、DHCPレスポンスに示されている場所からネットワークベースのブートローダをダウンロードします。その後、コントロールはダウンロードされたブートローダに送信され、ブートローダは標準化されたファームウェアAPIを使用して追加のファイルをダウンロードしてネットワークカードを制御できます。

問題は、ほとんどのワイヤレスネットワークインターフェイスにこれらのPXEブートファームウェア拡張が含まれていないことです。つまり、機能的なPXEブート機能を備えたワイヤレスネットワークインターフェイスを見たことはありません。

これは、あなたの特定のケースでは非常に深刻な「鶏と卵」の問題があるため、ほとんどの場合ワイヤレス電話NIC一般条件:ワイヤレスネットワークアダプタが動作を開始する前に、ネットワークアダプタに少なくとも1つのファームウェアファイルをロードする必要があります。。ただし、ネットワークから起動したい場合は、通常はローカルディスクをまったく使用したくないか使用できないことを意味するため、ファームウェアファイルを入手できる場所はありません。

もしNIC用のGRUBドライバがある場合は、コンパイル時の設定オプションである可能性が高くなります。insmodコマンドを使用してロードできるGRUBモジュールでもあります。しかし、私が知っている限り、GRUB用Wi-Fiドライバを書いた人は誰もいません。

現在、GRUB 2.xxで利用可能な唯一のネットワークドライバは以下に含まれています。GRUB ソースパッケージの grub-core/net/drivers ディレクトリ。彼らは:

  • efinetUEFIシステムの場合は、ファームウェアまたはUEFIドライバが提供するハードウェアサポートを使用してください。
  • emunetQEMU仮想化について(私の考えでは)
  • pxeBIOSベースのx86システムは、ファームウェアが提供するハードウェアサポート(通常はネットワークアダプタ用のPXEブートBIOS拡張)を使用します。
  • ofnet使用されるシステムの場合ファームウェアを開く(Sun、Apple、IBM、ARMのシステム)
  • ubootnet使用されるシステムの場合Ubootファームウェア(主に組み込みPower Architecture、ARM、MIPSシステム)

または、ターゲットシステムにUEFIファームウェアがある場合は、.efi使用可能なドライバがあり、UEFI NVRAMブート変数を定義して(たとえば、適切なオプションを指定してコマンドを使用して)、パーティションがパーティションをロードするefibootmgr --driver前にローカルEFIシステムからブートローダをロードできます。あります。ドライバを使用し、UEFIのネイティブネットワーキングサポートを使用します。しかし、.efiまた、ワイヤレスカード用のドライバも表示されません。

GRUB(または他のブートローダ)、Linuxカーネルファイル、Wi-Fi NIC用のLinuxドライバを含むLinux initramfsファイル、それに依存するすべてのカーネルモジュール、NIC用のファームウェアファイルを収容するのに十分なローカルディスク容量があるwpa_supplicant場合設定と DHCP クライアントを使用すると、Linux カーネルをローカルで起動し、initramfs 環境を使用して Wi-Fi 接続を開始できます。その後、initramfsにネットワークからramdisk / tmpfsベースのルートファイルシステムイメージをダウンロードして使用させるか、NFSサーバー上のルートファイルシステムを使用できます。これはおそらく、「独自のWi-Fiドライバを書く」プロジェクトを開始せずに目標を達成するための最も簡単な方法です。

関連情報