BOOTx64.EFI 파일을 부팅하지만 직접 부팅만 가능하고 UEFI가 외부 SSD로 연결되면 부팅할 수 없습니다.

BOOTx64.EFI 파일을 부팅하지만 직접 부팅만 가능하고 UEFI가 외부 SSD로 연결되면 부팅할 수 없습니다.

Arch Linux가 설치된 외부 SSD가 있습니다. ESP는 /boot에 설치됩니다. ESP에는 BOOT 디렉터리가 있는 디렉터리 EFI가 있습니다. \vmlinuz-linux root=PARTUUID=[partuuid] initd=\initramfs-linux.img라는 /ext/kernel/cmdline을 사용하여 BOOTx64.EFI를 만들었습니다.

제 생각에는 부팅 목록을 사용하고 SSD를 선택하면 UEFI 시스템이 자동으로 /boot/EFI/BOOT/BOOTx64.EFI를 찾아 올바르게 부팅한다는 것입니다. 하지만 대신에 저는 rootfs로 이동하여 /dev/sda2(루트 파티션)를 new_root에 마운트한 다음 rootfs를 종료해야 했습니다. 그리고 그 지침은 효과적이다. 그러나 이 경우 /proc/cmdline에는 YRY가 표시됩니다.

또는 부팅 목록에 파일에서 부팅하도록 지시하고 BOOTx64.EFI 파일을 선택하면 완벽하게 부팅되고 /proc/cmdline에 /etc/kernel/cmdline이 표시됩니다.

그래서 SSD를 선택할 때 HP Elitebook이 BOOTx64.EFI를 올바르게 실행하려고 시도하는 것 같은데 어떤 이유로 루트 파티션이 표시되지 않습니다(장치가 ""이고 파일 시스템이 존재하지 않음을 의미). 그래서 수동으로 설치해야 했고 모든 것이 괜찮았습니다.

SSD에서 EFI를 호출할 때 노트북이 루트 파티션을 new_root에 마운트하지 않지만 EFI 파일에서 직접 호출할 때는 마운트하는 이유를 알고 싶습니다.

답변1

참고: 이것은 초보자나 Arch Linux에 대해 막 배우는 사람들을 위한 것이 아닙니다. 어떤 실수를 하면 하드 드라이브에 있는 모든 것을 잃을 수도 있습니다. 이 옵션을 탐색하기 전에 최소한 모든 데이터를 백업하십시오.

나는 마침내 이것을 올바르게 수행하는 방법을 배웠습니다. 가장 좋은 방법은 systemd-auto-gpt-generator를 사용하는 것입니다. 이는 GPT 유형을 기반으로 파티션을 찾고 마운트하도록 설계된 systemd의 일부입니다. 이것이 작동하려면 첫 번째 단계는 GTP 유형이 올바른지 확인하는 것입니다. EFI 파티션(EF00 코드)의 경우 EFI, 루트 파티션의 경우 Linux-x64-root(8304 코드), 홈(8302)인 경우 별도의 기본 파티션을 사용하십시오.

다음 단계는 base 및 udev 대신 systemd로 시작하도록 mkinitcpio.conf의 후크를 설정하는 것입니다. 즉, 구성 파일의 후크 라인에서 base 및 udev를 systemd로 바꾸십시오.

이제 efi 부팅 파일을 만들 준비가 되었습니다: mkinitcpio --uefi /boot/EFI/BOOT/BOOTx64.EFI

완료되면 부팅 메뉴에서 외부 드라이브를 선택하면 자동으로 작동하여 루트 및 기본 파티션이 마운트됩니다. 부팅 파티션은 해당 파일에 액세스하려고 시도할 때까지 마운트되지 않습니다. 이때 시스템이 자동으로 마운트됩니다.

관련 정보