BIOS/UEFI 부팅 옵션 메뉴에서 보이지 않는 노트북 SD 카드에서 Linux를 부팅 가능하게 만듭니다.

BIOS/UEFI 부팅 옵션 메뉴에서 보이지 않는 노트북 SD 카드에서 Linux를 부팅 가능하게 만듭니다.

Acer Aspire R15 노트북이 있는데 내부 SD 카드 슬롯에서 Linux를 실행해야 합니다. 부팅 옵션 메뉴에는 SD 카드 옵션이 없습니다.

~100MB EFI 파티션(49MB 여유 공간)이 있는 메인 SSD에 Windows 10을 설치했습니다. SD 카드에 Arch Linux를 설치하고 루트를 지정하고 EFI 파티션을 /efi로 마운트하고(SD 카드에 /boot를 남겨두고) UEFI 레코드를 추가했지만 grub-install --target=x86_64-efi --efi-directory /efi --boot-directory /boot --bootloader-id=ARCH-SD문제는 SD 카드 소켓에 초기에 액세스할 수 없다는 것입니다. 부팅 슬롯 단계이므로 GRUB는 /boot에 도달하여 커널과 initram을 로드할 수 없습니다. "mmc_core mmc_block sdhci sdhci-pci" 모듈을 사용하여 커널을 설치해야 하며(/etc/mkinitcpio.conf를 편집하고 MODULES="mmc_core mmc_block sdhci sdhci-pci"실행하여 mkinitcpio -p linux) 액세스할 수 있도록 EFI 파티션을 /boot에 마운트할 수 있다는 것을 알고 있습니다. 초기 단계에서는 EFI 파티션 여유 공간이 너무 희박하지 않을까요?

따라서 질문은 다음과 같습니다. SD 카드를 만드는 유일한 목적으로 SD 카드 모듈이 설치된 최소 커널을 포함하도록 EFI 파티션에 .efi 바이너리를 설정하는 방법이 있습니까(디스크 공간 사용량이 중요함). 액세스할 수 있으며 완전한 기능을 갖춘 커널, initram 등의 링크가 SD 카드에 로드됩니까? 아니면 다른 더 좋은 방법이 있나요? GRUB/efibootmgr/other_bootloader를 통해 이 작업을 수행하는 것이 좋습니다(오류가 발생하기 쉽고 시스템 업데이트에 대한 수동 지원이 필요한 하위 수준 작업을 수행하는 것보다). 메인 SSD를 다시 파티션하거나 USB SD 어댑터를 사용하는 등의 방법은 없습니다.

고쳐 쓰다:

해결책:@alex-stragies의 제안에 따라 설정했습니다.시작하다Windows 파티션의 폴더입니다. 전체 순서는 다음과 같습니다.

  1. EFI 파티션을 다음에 마운트하십시오./efi폴더;
  2. 설치하다NTFS-3G사용되는 패키지NTFS지원됨, Windows 파티션을 다음에 마운트/mnt/윈도우/: mount /dev/sdxY /mnt/Windows그리고 해라시작하다디렉토리: mkdir /mnt/Windows/boot;
  3. 생성된 폴더를 바인딩합니다.시작하다: mount --bind /mnt/Windows/boot /boot;
  4. (선택 사항이지만 권장됨. 시스템/커널 업데이트에만 필요함) 위 내용을 다음에 추가하세요./etc/fstab지속성을 위해서는 최소한 4개의 마운트 레코드가 있어야 합니다./,/efi,/mnt/윈도우,/시작하다(후자는 다음과 같다.시작하다이전에 설치된 폴더/mnt/윈도우, 다음에 추가제본설치 옵션)
  5. 편집하다/etc/mkinitcpio.conf, "HOOKS" 섹션에는막힌후크는 다음과 같습니다우데브그리고 전에파일 시스템(위에서 언급한 커널 모듈은 불필요하며, SD/MMC 카드 지원은 다음에서 제공됩니다.막힌후크), 그런 다음 initrd 업데이트를 수행합니다: mkinitcpio -p linux;
  6. UEFI에 GRUB 레코드 쓰기 grub-install --target=x86_64-efi --efi-directory /efi --boot-directory /boot --bootloader-id=LINUX-SD:;
  7. GRUB 구성 업데이트: grub-mkconfig -o /boot/grub/grub.cfg;
  8. 재부팅하고 추가된 LINUX-SD 부팅 옵션을 선택합니다(보통 F8이나 F12 또는 BIOS/UEFI를 통해, 명시적인 부팅 기록 확인이 필요할 수 있음).

그래야 합니다. 부팅 체인은 다음과 같습니다. UEFI 셸은 EFI 파티션에서 grubx64.efi 바이너리를 실행합니다. 이는 다음 링크를 통해 Windows 파티션으로 추적됩니다.시작하다폴더, GRUB 로드됨초기화 프로그램환경 및 커널(이제 SD 카드 지원이 활성화됨), SD 카드에 /(루트) 파티션을 마운트하고 일반적인 부팅 프로세스를 계속 진행합니다.

답변1

부팅할 수 없는 저장소에 RootFS를 배치하는 표준 해결 방법은 /boot폴더를 SSD 어딘가에 배치하는 것입니다. 이는 "SD 카드에서 직접 부팅"하는 것이 아니라 "SSD에서 커널 + InitRD를 로드한 다음 SD 카드에서 루트 FS를 마운트"하는 것입니다.

/boot/이 폴더를 Windows 파티션("원시" 파티션) 또는 200MiB 루프백 탑재 파일 시스템 이미지에 배치 할 수 있습니다 .

Arch에 대해서는 말할 수 없지만 Debian에서는 다음 단계를 수행하면 됩니다.

  • Windows 파티션을 자동으로 마운트하려면 FSTAB 항목을 추가하세요.
  • mv /boot /mnt/windows/MyLinuxBoot
  • ln -s /mnt/windows/MyLinuxBoot /boot
  • update-grub

유사한 단계가 Arch에도 적용되어야 합니다.

이렇게 하면 SSD에서 kernel+initrd를 로드해야 하며, initrd에는 SD 카드에서 루트 FS를 로드할 수 있는 SD 카드용 드라이버가 있습니다.

또는 EFI 파티션에 모두 넣을 수도 있습니다.

  • /boot/grub 폴더를 /boot/efi/grub으로 이동합니다.
  • /boot/grub을 /boot/efi/grub으로 다시 심볼릭 링크
  • 커널과 initrd를 /boot에서 /boot/efi/로 이동합니다.
  • 원래 위치와 이름으로 다시 심볼릭 링크
  • 달리기update-grub

EFI 파티션의 나머지 공간에 모든 것을 넣을 수 있도록 모든 모듈을 포함하지 않도록 initrd에서 생성된 매개변수를 조정해야 할 수도 있습니다.

답변2

귀하의 질문에 대한 더 직접적인 답변인 두 번째 답변을 추가하고 있습니다.오직내 다른 답변과 같은 해결 방법. 그러나 이것은 세부 사항이 거의 없으며 "방법"보다는 "대략적인 여행 계획"에 가깝습니다.

중간 부트로더를 사용할 수도 있습니다.

  • 부트로더 다운로드/컴파일sdhci-pci 지원
  • EFI 파티션에 이 부트로더를 설치하세요.
  • grub을 체인로드하거나 SD 카드에서 직접 커널을 로드하도록 이 중간 부트로더를 구성합니다.

답변3

SDCARD에 Linux를 설치할 수 있는 경우. 그런 다음 스토리지 선택 단계에서 SSD의 작은 Fat32/ext4 파티션을 /boot로 선택하세요. 그게 다야. 상황을 더 복잡하게 보이게 만들지 마십시오.

관련 정보