linux-boot-prober는 grub.cfg를 구문 분석할 때 여러 initrd를 처리하지 않습니다.

linux-boot-prober는 grub.cfg를 구문 분석할 때 여러 initrd를 처리하지 않습니다.

내 호스트는 Ubuntu 22.04를 기반으로 하는 KDE Neon을 실행하고 있습니다. 최근에 저는 시스템에 추가 하드 드라이브를 추가하고 여기에 Manjaro를 설치하기로 결정했습니다.

KDE Neon 설치가 내 기본 시스템에 남아 있기를 원하므로 해당 드라이브가 기본 부팅 드라이브가 되어 KDE Neon에 의해 추가된 GRUB 설치가 내 부트로더가 되도록 보장합니다.

sudo update-grub이 별도의 설치가 자동으로 감지되고 이에 대한 시작 항목이 생성되도록 Manjaro를 설치한 후에 이 작업을 수행합니다 . 여기에는 나름의 어려움이 있는 것으로 판명되었지만 이러한 문제는 해결되어 현재 update-grub(또는 더 구체적으로 os-prober추가 Manjaro 설치가 성공적으로 식별되고 해당 시작 항목이 생성되었습니다).

GRUB의 부팅 항목을 사용할 때만 커널 패닉이 발생합니다. GRUB 설치를 위해 Manjaro가 생성한 파일과 자동 생성된 파일을 파고 grub.cfg비교한 후(BIOS를 사용하여 드라이브로 부팅하면 제대로 작동함) Manjaro 설치가 다음 위치에 있음을 확인했습니다.grub.cfg

initrd  /boot/intel-ucode.img /boot/initramfs-6.1-x86_64.img

그리고 Manjaro용 KDE Neon에서 생성된 구성에는 다음만 포함됩니다.

initrd  /boot/intel-ucode.img

따라서 결과 항목에는 두 번째 초기 램디스크가 누락되어 (분명히) Manjaro 커널이 무언가를 찾지 못하게 하여 패닉 상태가 됩니다.

update-grub나는 그것이 어떻게 또는 더 구체적으로 작동하는지 에 대한 내부를 파헤치고 현재 확인된 부팅 파티션의 파일을 구문 분석하는 /etc/grub.d/30_os-prober스크립트 linux-boot-probe또는 오히려 하위 스크립트에 대한 문제를 추적한 다음 (제 경우에는 Manjaro를 직접 구문 분석합니다 ) 다음에서 관련 정보를 추출합니다. 빌드하려는 항목에 (별도의 스크립트로) 복사하기 위해 이 특정 스크립트에는 부팅 항목 내부의 명령문을 처리하는 논리가 있으며 Manjaro 구성의 두 램디스크 사양을 모두 사용하여 명령문을 구문 분석합니다. . 그러나 이 줄을 처리하는 코드는 다음과 같습니다./usr/lib/linux-boot-probes/mounted/40grub2grub.cfggrub.cfggrub.cfginitrd

        initrd)
            initrd="$(echo "$2" | sed 's/(.*)//')"
            # Initrd same.
            if [ "$partition" != "$bootpart" ]; then
                initrd="/boot$initrd"
            fi
        ;;

(case 문의 일부입니다) 여기에 사용된 위치 매개변수는 이전에 initrd행의 개별 구성요소(공백으로 구분)로 설정되었습니다. 이는 내 경우 $1$ 3 initrd$2첫 번째 램디스크( /boot/intel-ucode.img)이고 $3가 두 번째 램디스크( /boot/initramfs-6.1-x86_64.img)라는 의미입니다.

스크립트는 처리해야 할 램디스크 가 하나만 있다고 암묵적으로 가정하므로 $2.$3


이제 이러한 모든 배경을 바탕으로 제가 실제로 질문하는 것은 이것이 알려진 버그입니까?입니다. 최신 버전에서는 이 문제가 해결되었나요 linux-boot-prober? 현재 이 스크립트를 유지 관리하는 사람은 누구입니까? 언뜻 보면 이 스크립트는 다음과 같은 것처럼 보입니다.데비안의 일부, 하지만 이는 데비안 관리자가 스크립트의 관리자이기도 함을 의미합니까, 아니면 스크립트를 패키지하고 다른 곳에서 개발합니까(다른 많은 데비안 패키지처럼)?

참고: 내 스크립트 버전에서 이 문제를 해결하는 방법을 알고 있다고 생각하지만 여기서 질문은 이 문제가 업스트림에서도 해결되었는지 확인하기 위해 누구에게 연락해야 하는지와 업스트림이 어디에 있는지에 대한 것입니다.

답변1

내 질문에 답하려면: 데비안 os-prober패키지를 검색한 후 이 문제에 대한 버그 보고서를 발견했습니다.https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=958218

보고서에 관련된 분들께 연락을 드리겠습니다.

관련 정보