GRUB_DISABLE_LINUX_UUID=true가 필요한 이유는 무엇입니까?

GRUB_DISABLE_LINUX_UUID=true가 필요한 이유는 무엇입니까?

방금 lilo에서 grub2로 전환했는데 첫 번째 시도가 실패했습니다 kernel panic - not syncing vfs unable to mount root fs on unknown block(0 0). 문제는 루트 파티션이 장치 이름이 아닌 UUID를 기반으로 지정된다는 것입니다. 해결책은 GRUB_DISABLE_LINUX_UUID=true주석을 제거 하는 것입니다 /etc/default/grub.

원래 자동 생성에는 /boot/grub/grub.conf일부 UUID 항목과 일부 /dev 항목이 포함되어 있습니다.

  • update-grub UUID와 /dev rootfs 중에서 선택하는 방법, 즉 UUID일 때도 있고 아닐 때도 있는 이유는 무엇입니까?
  • UUID가 작동하지 못하게 하는 이유는 무엇입니까? 잘못 설정되었을 수 있는 커널 매개변수를 찾지 못했습니다(커널 3.8.2).
  • grub이 UUID를 사용할 때 fstab에 UUID가 필요합니까?

답변1

값은 디렉토리의 스크립트에서 사용됩니다 GRUB_DISABLE_LINUX_UUID. 여전히 UUID가 표시된다면 스크립트 중 하나가 해당 설정을 확인하지 않는 것 같습니다.update-grub/etc/grub.d/grub.confGRUB_DISABLE_LINUX_UUID

가장 좋은 방법은 파일 시스템 유형이 무엇인지 알아내고 스크립트 이름을 확인하여 /etc/grub.d패턴이 있는지 확인하는 것입니다.

UUID가 작동하지 않는 이유에 대해 명확한 대답이 없습니다. 파일 시스템 유형에 따라 달라지는 것 같지만 이는 대략적인 추측입니다.

grub이 UUID를 사용하더라도 fstab에서는 UUID가 필요하지 않지만 처음부터 올바른 UUID를 사용하고 있는지 확인할 수 있는 방법은 확실합니다(하지만 저는 /dev/disk/by-uuid그렇게 보고 싶습니다).

답변2

누군가 이 게시물을 우연히 발견하고 (나처럼) Centos 7/GRUB2를 사용하고 있다면 변수 이름이 GRUB_DISABLE_UUID(GRUB_DISABLE**_LINUX**_UUID 대신)로 변경된 것으로 보입니다.

/usr/share/grub/grub-mkconfig_lib에서 확인하실 수 있습니다. 광산에는 이것이 있습니다 :

if [ "x$GRUB_DISABLE_UUID" != "xtrue" ]

grub2-mkconfig 이후 UUID는 /dev/sda1 등으로 대체됩니다(이러한 시스템을 복제하기 때문에 필요합니다).

2023년 3월 업데이트됨 @MelroyvandenBerg의 후속 댓글에 따라 저는 2016년 답변이 여전히 관련성이 있는지 빠르게 살펴보았습니다.

우리는 2019년에 Centos를 포기했지만(다른 곳의 Centos Stream 토론 참조) 여전히 CentOS Linux 버전 7.2.1511을 실행 중인 이전 시스템을 부팅했습니다. 위의 결과를 재확인했습니다.

$ grep GRUB_DISABLE /usr/share/grub/grub-mkconfig_lib
  if [ "x$GRUB_DISABLE_UUID" != "xtrue" ] && fs_uuid="`"${grub_probe}" --device $@ --target=fs_uuid 2> /dev/null`" ; then
  if [ "x$GRUB_DISABLE_UUID" != "xtrue" ] && fs_uuid="`"${grub_probe}" --device ${device} --target=fs_uuid 2> /dev/null`" ; then

좀 더 자세히 살펴보면(여전히 Centos 7 시스템에서) /usr/share/doc/grub2-tools-2.02/grub.html다음이 포함되어 있습니다(차이점을 보여주기 위해 강조 표시됨)

GRUB_DISABLE_운영 체제_UUID

일반적으로 grub2-mkconfig는 UUID(Universally Unique Identifier)를 사용하여 식별되는 메뉴 항목을 생성합니다.뿌리다음을 사용하여 Linux 커널에 파일 시스템을 추가합니다.'root=UUID=...' 커널 매개변수. 이는 일반적으로 더 안정적이지만 일부 상황에서는 적절하지 않을 수 있습니다. UUID 사용을 비활성화하려면 이 옵션을 "true"로 설정합니다.

GRUB_DISABLE_UUID

일반적으로 grub2-mkconfig는 UUID(Universally Unique Identifier)를 사용하여 식별되는 메뉴 항목을 생성합니다.다양한 종류파일을 검색하는 파일 시스템입니다. 이는 일반적으로 더 안정적이지만 일부 상황에서는 적절하지 않을 수 있습니다. UUID 사용을 비활성화하려면 이 옵션을 "true"로 설정합니다.

그래서 GRUB_DISABLE_LINUX_UUID사이에는 특별한 차이가 있는 것으로 보입니다.GRUB_DISABLE_UUID

7년을 앞당겨 Ubuntu 22.04.1 LTS(Debian 기반이지만 최신 버전)를 살펴보세요./usr/sbin/grub-mkconfig

if [ "x${GRUB_DISABLE_UUID}" = "xtrue" ]; then
  if [ -z "${GRUB_DISABLE_LINUX_UUID}" ]; then
    GRUB_DISABLE_LINUX_UUID="true"
  fi
  if [ -z "${GRUB_DISABLE_LINUX_PARTUUID}" ]; then
    GRUB_DISABLE_LINUX_PARTUUID="true"
  fi
fi

true인 경우 (unset)이 GRUB_DISABLE_LINUX_UUIDtrue로 설정 됩니다 GRUB_DISABLE_UUID. 나는 단지추측하다지난 7년 동안 어느 시점에서 이 두 변수 사이의 구별을 명확하게 하거나 제거하려는 노력이 있었습니다.

원래의 2016년 리뷰보다는 특정 배포판에 대한 코드와 문서를 확인하는 것이 좋습니다.

관련 정보