저는 현재 안정적인 Debian Stretch(9.0)를 사용하고 있습니다. 내 아키텍처는 AMD64입니다. 내 루트 및 부팅 파티션은 MD RAID 1 장치의 LVM 볼륨 그룹입니다.
문서에 대한 나의 이해를 바탕으로 주석 처리를 해제하십시오.
GRUB_DISABLE_LINUX_UUID=true
in은 /etc/default/grub
GRUB2가 에서 실행되는 것을 방지해야 합니다 /boot/grub/grub.cfg
. 그러나 변경한 후에도 계속 UUID를 사용했습니다.
이것이 내 부분의 사용자 오류인지는 확실하지 않지만 지침은 충분히 간단해 보입니다.
몇 가지 추가 의견입니다.
/usr/share/grub/default/grub
동일한 내용(동일한 md5sum)을 가진 파일도 있습니다/etc/default/grub
. 이 파일의 요점이 무엇인지 잘 모르겠습니다./usr/sbin/grub-mkconfig
이에 대한 검사가 포함될 것으로 예상했지만GRUB_DISABLE_LINUX_UUID
스크립트에는 포함되어 있지만 표시되지 않습니다GRUB_DISABLE_LINUX_UUID
. 누군가 이 스크립트가 검사하는 위치를 설명해 줄 수 있습니까GRUB_DISABLE_LINUX_UUID
?
물론 도움이 된다면 더 자세한 내용을 게시할 수 있습니다.
배경: 이것을 변경하고 싶었던 이유는 내 루트 VG의 UUID가 변경되었고 내 컴퓨터가 UUID가 존재하지 않는다고 말하며 부팅을 거부했기 때문입니다. 좋아요. 아무것도 남지 않았습니다. 바라보다LVM2 RAID 1 미러를 분할하려고 할 때 동기화 상태 오류를 확인할 수 없습니다어떻게 이런일이 일어 났습니까.
데비안 버그 보고서:grub-common: /etc/default/grub에서 GRUB_DISABLE_LINUX_UUID=true 설정이 예상대로 작동하지 않습니다..
답변1
(이 답변은 무슨 일이 일어나고 있는지 설명하고 (가능한) 패치를 제공하려고 시도합니다.)
grub-mkconfig_lib
문제가 있는 코드는 현재 데비안 9 버전의 169-182행 에 있는 것으로 보입니다 .
오류의 요점은 sysadmin/configuration에서 그렇게 지시하지 않았음에도 불구하고 설치 및 부팅 시 부팅 프로세스의 일부로 UUID를 설정하고 사용해야 한다는 것입니다.
결과적으로 grub.cfg를 로드할 수 없습니다. 예를 들어, 항상 grub-probe --target=fs_uuid /
수행 됩니다 grub-mkconfig_lib
. 우리의 경우에는 다시 실행하는 대신 grub-probe --target=device /
특정 코드를 사용해야 합니다.$fs_hint
grub_probe
fs_uuid
GRUB_DISABLE_LINUX_UUID
Debian 9에서 true로 구성되면 UUID 생성을 비활성화하는 패치를 만들었습니다. 여기서 작동합니다. 테스트해 보세요.
문제의 파일이 다음과 같음을 재확인했습니다./usr/share/grub/grub-mkconfig_lib
GRUB_DISABLE_LINUX_UUID
로 설정된 경우 UUID 기반 루트를 선택하라는 지침이 true
포함되지 않은 패치를 작성했습니다 . search
그런 다음 시스템 관리자는 새 디스크를 삽입할 때 이 옵션을 선택한 결과를 이해해야 합니다.
패치는 /usr/share/grub/grub-mkconfig_lib
다음을 통해 수행됩니다.
diff -u grub-mkconfig_lib.old grub-mkconfig_lib > grub-mkconfig_lib.patch
여기 있어요: https://jpst.it/10_iY
아니면 여기에서 얻을 수 있습니다:
https://github.com/ruyrybeyro/grub-mkconfig_lib.patch
그것을 적용하십시오 :
cd /usr/share/grub
patch -p0 < grub-mkconfig_lib.patch
기본적으로 169행부터 시작하여 선택한 장치 UUID 대신 루트 파티션 검색을 비활성화하기 위해 적절한 들여쓰기가 있는 새 if를 추가했습니다.유효한 UUID가 있는 파티션이 발견된 경우:
if [ "x${GRUB_DISABLE_LINUX_UUID}" != "xtrue" ] ; then
if fs_uuid="`"${grub_probe}" --device $@ --target=fs_uuid 2> /dev/null`" ; then hints="`"${grub_probe}" --device $@ --target=hints_string 2> /dev/null`" || hints= echo "if [ x\$feature_platform_search_hint = xy ]; then" echo " search --no-floppy --fs-uuid --set=root ${hints} ${fs_uuid}" echo "else" echo " search --no-floppy --fs-uuid --set=root ${fs_uuid}" echo "fi" fi
fi
저는 그것을 테스트하고, grub 구성을 재생성하고, UUID를 변경했으며, grub에 들어가는 이전 상황과는 달리 장애 없이 부팅되었습니다.
추신: 이것은 데비안에만 국한되지 않는 것 같습니다. grub-mkconfig_lib
관련 스레드를 지적한 후 발견했습니다.페도라 모자