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에는 올바른 UUID가 있는 --set-root= 'some UUID' 부분이 있지만 나중에 Linux를 부팅할 때 -root=UUID='some other 잘못된 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가 MBR/EFI에 grub을 설치한 OS가 아니더라도 os-prober가 각 운영 체제의 해당 디렉터리에 대해 다양한 grub.cfg 파일을 찾는 방법에 대한 정보가 이 문제를 해결하는 데 도움이 되었습니다.

Arch Linux의 이전 업데이트로 인해 /boot 디렉터리에 grub.cfg 파일이 고정된 것으로 나타났습니다. 너무 자세하게 설명하지 않으면서 grub-mkconfig를 실행하기 위해 Arch에 적절한 항목을 설치하지 않았기 때문에 대신 grub.cfg에 일종의 템플릿을 얻었습니다. 이것은 os-prober가 스캔하던 파일이었는데, UUID가 잘못된 파일이었습니다. 내가 해야 할 일은 Arch Linux에서 os-prober를 끄는 것이었습니다 /etc/default/grub. 그런 다음 sudo grub-mkconfig -o /boot/grub/grub.cfgUbuntu의 os-prober가 이제 올바르게 사용하는 Arch에 대한 적절한 grub.cfg 파일을 빌드한 을 실행했습니다 . 나는 openSUSE에도 동일한 기술을 사용할 것입니다.

한 가지 주목할 점은 os-prober가 이러한 메뉴 항목을 자체적으로 생성하도록 허용하는 대신 각 OS의 해당 grub.cfg 파일에서 가져오는 대신 각 배포판에 대해 서로 다른 기본값을 가질 수 있으므로 서로 다른 매개변수를 허용한다는 것입니다. 스플래시를 사용하여 자동 부팅하거나 전체 부팅 프로세스 등을 표시합니다.

도와주셔서 감사합니다!

관련 정보