os-prober가 Arch Linux에 잘못된 UUID를 제공함

os-prober가 Arch Linux에 잘못된 UUID를 제공함

어제까지는 모든 것이 잘 작동했고 os-prober는 Arch Linux 설치를 위한 메뉴 항목을 성공적으로 생성했습니다. 그러나 오늘, Arch를 실행하려고 했을 때, 사용하려고 했던 UUID에서 루트 파일 시스템을 찾을 수 없다는 오류가 발생했습니다. 약간의 수정 끝에 UUID를 사용하는 대신 루트 디렉터리를 실제 파티션 "/dev/sda7"로 수동 변경하여 Arch를 부팅할 수 있었습니다.

os-prober가 Arch Linux 설치에 대해서만 잘못된 구성을 생성하게 만드는 원인이 무엇인지 궁금합니다. openSUSE 및 Windows 7 설치에서는 여전히 잘 작동합니다. 주목해야 할 또 다른 점은 Arch Linux 부팅 라인 끝에 "rw Quiet"을 추가한다는 것입니다. 이는 이전에 수행한 작업이 아니며 이것이 UUID가 잘못된 이유와 관련이 있는지 궁금합니다.

아래에는 Arch Linux의 메뉴 항목이 게시되어 있습니다. 보시다시피, os-prober의 --set-root= 'some UUID' 부분에는 올바른 UUID가 있지만 나중에 Linux를 부팅할 때 -root=UUID='some other valid UUID'가 있습니다.

명확히 하기 위해 이 컴퓨터에는 Ubuntu, Arch Linux, openSUSE 및 Windows 7이 설치되어 있지만 Ubuntu를 기본 OS로 사용하고 GRUB 및 해당 구성을 관리하도록 허용합니다. 모든 운영 체제가 최신 상태입니다.

menuentry 'Arch (on /dev/sda7)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-b9522736-878c-49e3-b30d-ad65589aa1d9' {
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos7'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7  b9522736-878c-49e3-b30d-ad65589aa1d9
    else
      search --no-floppy --fs-uuid --set=root b9522736-878c-49e3-b30d-ad65589aa1d9
    fi
    linux /boot/vmlinuz-linux root=UUID=ad4103fa-d940-47ca-8506-301d8071d467 rw quiet
    initrd /boot/initramfs-linux.img
}

보시다시피 처음 두 UUID는 마지막 UUID와 다릅니다. 처음 두 개는 맞고 마지막 것은 틀렸습니다. 마지막 UUID를 "/dev/sda7"로 바꾸면 정상적으로 부팅됩니다. 이를 위해 grub.cfg를 수동으로 편집했지만 os-prober가 자동으로 다시 작동하도록 하고 싶습니다. 감사해요.

답변1

/boot음, os-prober 가 MBR/EFI에 grub을 설치하는 파일이 아니더라도 각 운영 체제의 해당 디렉터리에서 다양한 grub.cfg 파일을 찾는 방법에 대한 정보가 이 문제를 해결하는 데 도움이 되었습니다.

Arch Linux의 이전 업데이트로 인해 grub.cfg 파일이 /boot 디렉터리에 고정된 것으로 나타났습니다. 너무 자세히 설명하지 않고 Arch에 grub-mkconfig를 실행하기 위한 적절한 항목이 설치되어 있지 않았기 때문에 grub.cfg에 일종의 템플릿이 생겼습니다. os-prober가 검사하고 있는 파일인데, 파일의 UUID가 올바르지 않습니다. 내가 해야 할 일은 Arch linux에서 os-prober를 끄는 것입니다 /etc/default/grub. 그런 다음 를 실행했고 sudo grub-mkconfig -o /boot/grub/grub.cfg, Ubuntu의 os-prober가 이제 올바르게 사용하는 Arch용으로 올바른 grub.cfg 파일이 구축되었습니다. openSUSE에서도 동일한 기술을 사용하겠습니다.

한 가지 주목할 점은 os-prober가 이러한 메뉴 항목을 자체적으로 생성하는 대신 각 운영 체제의 해당 grub.cfg 파일에서 메뉴 항목을 가져오므로 각 배포판에 대해 서로 다른 기본값을 가질 수 있다는 것입니다. 스플래시로 시작하거나 전체 시작 프로세스 표시 등

당신의 도움을 주셔서 감사합니다!

관련 정보