GRUB에 네트워크 드라이버를 어떻게 추가하나요?

GRUB에 네트워크 드라이버를 어떻게 추가하나요?

나는해야한다GRUB에 네트워크 드라이버 추가.

나는 따라가려고 노력한다이 설명서GNU에서 제공하지만 다음과 같이 말합니다.

GRUB는 디스크 기반 부트 로더이지만 네트워크 지원을 제공합니다. 네트워크 지원을 사용하려면 GRUB 빌드 프로세스 중에 하나 이상의 네트워크 드라이버를 활성화해야 합니다. 자세한 내용은 소스 배포판의 "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 일반 조건: 무선 네트워크 어댑터가 작동을 시작하기 전에,네트워크 어댑터에 하나 이상의 펌웨어 파일을 로드해야 합니다.. 그러나 네트워크에서 부팅하려는 경우 이는 일반적으로 로컬 디스크를 전혀 사용하고 싶지 않거나 사용할 수 없음을 의미하므로 펌웨어 파일을 얻을 수 있는 곳이 없습니다.

만약에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 드라이버 작성" 프로젝트를 시작하지 않고도 목표를 달성할 수 있는 가장 쉬운 방법일 것입니다.

관련 정보