부트로더 없이 더 빠른 부팅을 달성하기 위해 EFI/BIOS에서 직접 시스템(Kubuntu 20.04)을 부팅해 보았습니다.
나는 편집했다리눅스-커널-5.8.5, 파일을 복사하고 이름을 /usr/src/linux-5.8.5/arch/x86/boot/bzImage
로 변경합니다 /boot/efi/EFI/ubuntu.efi
. BIOS를 다시 시작하고 선택합니다.우분투.efi그리고 추가됨보안 부트.
시스템이 시작되지만 다음 오류가 발생합니다.
Please append a correct device "root=" boot option; here are the available partitions:
(driver?)
103:00001 123456 nvme0n1p1 ...UUID....
103:00002 123456 nvme0n1p2 ...UUID....
103:00003 123456 nvme0n1p3 ...UUID....
kernel panic - not syncing: VFS: unable to mount root fs on unknown-block(0,0)
이것PCI,FS그리고NVME드라이버는 커널(*)에 내장되어 있습니다. 제가 아는 한 파티션 경로와 루트 디렉터리만 입력하면 되는데, 어디에요?
----편집----
오류 메시지가 나타나면 올바른 파티션을 선택하십시오.
여기에 올바른 파티션을 입력했습니다.
make menuconfig
Processor type and features --->
[*] Built-in kernel command line
(root=/dev/nvme0n1p5) Built-in kernel command string
[*] Built-in command line overrides boot loader arguments
나도 같은 실수를 저질렀다. 그런 다음 경로를 다음
으로 바꾸려고 시도했지만 동일한 오류가 발생했습니다. UUID를 자세히 살펴보니 나열된 UUID가 실제로는root=/dev/nvme0n1p5
UUID
파투 UID(다음 명령으로 볼 수 있습니다.쿠로코) 그래서 PARTUUID를 시도했지만 아무것도 변경되지 않았습니다. 동일한 오류가 발생했습니다.
무엇을 입력해도 Built-in kernel command string
항상 같은 오류가 발생합니다.
답변1
한 가지 방법은 다음 명령 -@
의 옵션을 사용하여 NVRAM의 UEFI 부팅 변수에 부팅 옵션을 추가하는 것 입니다 efibootmgr
.
echo "root=/dev/nvme0n1pX" | efibootmgr -c -d /dev/nvme0n1 -L "Kubuntu with kernel UEFI stub" -l \\EFI\\ubuntu.efi -@ -
...여기서 /dev/nvme0n1pX
실제 루트 파일 시스템이 포함된 NVME 장치 파티션은 /dev/nvme0n1
ESP 파티션이 포함된 NVME 장치 \\EFI\\ubuntu.efi
이고 ESP 파티션의 루트에 상대적인 Windows 스타일 경로 이름입니다. 백슬래시는 특수 문자이므로 이중 백슬래시가 포함됩니다. 껍데기. -L
원하는 라벨 텍스트를 설정할 수 있습니다 (옵션 매개변수).
커널 파일에 포함시키지 않는 한 initramfs는 전혀 포함되지 않습니다. 커널 부팅 매개변수를 추가하여 UEFI 스텁이 initramfs를 로드하도록 할 수 있지만 initrd=\\EFI\\initrd.img
문서화가 매우 부족하고 버그 및 공급업체별 문제가 있을 수 있는 UEFI 펌웨어 지원에 의존하기 때문에 지원이 불확실합니다(일부 시스템에는 절대 경로가 필요할 수 있음). 모두 대문자로, 다른 경로는 대소문자가 정확한 상대 경로 등이 됩니다.)
또한 부팅 시 커널 부팅 옵션을 편집할 수 있는 부트 로더가 없기 때문에 커널 부팅 옵션을 편집하여 응급/단일 사용자 모드로 부팅하는 것도 허용하지 않습니다. 따라서 가능한 부팅 옵션 요구 사항을 예상하고 여러 UEFI 부팅 변수를 생성하여 만일의 상황을 미리 처리하거나, 초기 부팅 프로세스에 문제가 있는 경우 외부 미디어에서 시스템을 재부팅해야 합니다.
그러나 사용자가 쉽게 조작할 수 없는 장치나 키오스크 스타일 시스템을 구축하는 경우 이러한 제한 사항이 적합할 수 있습니다.
(고대 버전의 Linux에는 bzImage 파일을 직접 조작하여 마이너/메이저 장치 번호로 기본 루트 장치를 미리 설정하는 방법이 있었지만 이것이 최신 커널에서 작동하는지 확실하지 않으며 그렇게 할 수 없습니다. 그것을 하기 위해 무엇을 사용해야 하는지 기억하는 것 같습니다).
답변2
나는 그것을 해결했다.
올바른 명령은 다음과 같습니다. fs0:> Kubuntu.efi root=/dev/nvme0n1p5
해결 방법: Linux-kernel ---> ~/Documentation/admin-guide/efi-stub.rst
도움을 주셔서 대단히 감사합니다.