운영 체제 Ubuntu 20.04.3 LTS Desktop 64-bit
는 gpt2 파티션에 있고 파일 시스템은 NTFS입니다.
다음은 FAT32 파일 시스템의 gpt1 파티션 구조입니다.
.
├── boot
│ └── grub
│ └── grub.cfg
└── efi
└── boot
├── bootx64.efi
├── grubx64.efi
└── mmx64.efi
4 directories, 4 files
이것은 NTFS 파티션의 grub 메뉴입니다(기본 grub.cfg):
if loadfont /boot/grub/font.pf2 ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
fi
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
set timeout=5
menuentry "Ubuntu" {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed maybe-ubiquity quiet splash ---
initrd /casper/initrd
}
menuentry "Ubuntu (safe graphics)" {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed maybe-ubiquity quiet splash nomodeset ---
initrd /casper/initrd
}
menuentry "OEM install (for manufacturers)" {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed only-ubiquity quiet splash oem-config/enable=true ---
initrd /casper/initrd
}
grub_platform
if [ "$grub_platform" = "efi" ]; then
menuentry 'Boot from next volume' {
exit 1
}
menuentry 'UEFI Firmware Settings' {
fwsetup
}
fi
grub.cfg 파일(FAT32 파티션)에 다음이 포함되어 있는 경우:
search --no-floppy --set=root --fs-uuid 2E92F36515DD4A5A
chainloader /EFI/BOOT/BOOTx64.EFI
boot
grub 선택 메뉴에서 선택하고 이를 기본 grub.cfg 파일(NTFS 파티션)(iso 이미지에 포함된 동일한 기본 파일)에 넣으면 Ubuntu 20.04.3 LTS Desktop 64-bit
오류 메시지가 나타납니다.
error: can't allocate initrd.
Press any key to continue...
이 명령을 사용하면 NTFS 파티션 부트 로더가 올바르게 부팅된다는 점을 강조해야 합니다 . 그렇지 않으면 이 명령에서 발생하는 오류 chainloader
인 grub 선택 메뉴가 표시되지 않습니다 .initrd
grub.cfg 파일(FAT32 파티션)에 다음이 포함되어 있는 경우:
search --no-floppy --set=root --fs-uuid 2E92F36515DD4A5A
configfile /boot/grub/grub.cfg
메뉴를 선택한 후에는 모든 것이 잘 작동하므로 initrd 명령에서 더 이상 오류가 발생하지 않습니다.
initrd
기본 grub.cfg 파일을 사용하여 부팅하기 위해 NTFS 파티션 부트 로더를 실행하는 데 문제가 있습니까?
파티션 2에 Windows가 있으면 모든 것이 잘 작동하는지 테스트했습니다 chainloader
.
업데이트 1:
파티션 교체를 시도했는데 오류가 지속됩니다.
업데이트 2: 명령에서 더 자세한 오류 출력을 얻고
싶지만 initrd
모르겠습니다.그것을하는 방법.
나는 열심히 노력했다
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed nosplash debug ignore_loglevel ---
initrd /casper/initrd
그러나 오류 출력은 여전히 동일하며 행이 추가되지 않았습니다.
업데이트 3:
내가 하려는 작업을 요약하고 명확히 하기 위해 FAT32 파티션에서 NTFS 파티션에 있는 부트로더를 체인로드하고 있습니다.
BIOS에서 직접 NTFS 파티션을 부팅하면 모든 것이 잘 작동하지만 FAT32 파티션에서 체인 로딩을 시작하면 문제가 발생합니다. FAT32 파티션 파일 내에서 명령 대신 명령을 사용하여
grub.cfg(NTFS 파티션) 메뉴를 호출하더라도(그 안에 포함된 행을 표시했습니다) 모든 것이 잘 작동합니다.configfile
chainloader
grub.cfg
업데이트 4: 일반화 이유로 어쨌든
이 명령을 사용하고 , 동일한 명령을 실행하여 Windows와 Ubuntu의 파티션을 모두 부팅할 수 있었기 때문에 문제를 해결하는 명령을 chainloader
사용할 수도 있었습니다 .configfile
업데이트 5: 모듈
이 ntfs
두 파티션의 부트로더에 내장되었습니다. 주문 lsmod
이 이를 확인합니다. 그럼에도 불구하고 두 파티션 모두에 insmod ntfs
파일을 삽입하려고 시도했지만 grub.cfg
예상대로 오류가 변경되지 않았습니다.
업데이트 6:
이전 컴퓨터의 UEFI는 NTFS를 직접 읽을 수 없기 때문에 BIOS에서 직접 NTFS 파티션을 부팅하지 않습니다.
업데이트 7:
버그를 발견했습니다! 나는 그것이 단 몇 초 동안만 지속되었기 때문에 전에는 그것을 알아차리지 못했습니다. 그런데 휴대폰으로 찍은 영상은 오류를 잡기 위해 60fps로 설정해야 해서 녹화한 뒤 PC로 전송하고, PC에서 영상 클립 스크린샷을 찍은 뒤 회전시켜 김프 크롭을 사용했습니다.
오류는 다음과 같습니다.
error: can't find command `grub_platform`.
스크린샷은 다음과 같습니다.