"경고! UUID=xxx가 존재하지 않습니다. 쉘에 빠졌습니다! 이 xxx 값을 어디서/어떻게 변경합니까?" grub 구성의 어디에 저장됩니까?

"경고! UUID=xxx가 존재하지 않습니다. 쉘에 빠졌습니다! 이 xxx 값을 어디서/어떻게 변경합니까?" grub 구성의 어디에 저장됩니까?

다양한 배포판을 테스트하기 위해 내 서버에 일부 디스크(RAID용)와 일부 부팅 파티션이 있습니다. 때때로 나는 최근(10 버스터) Debian 32비트와 최근(10 버스터) Debian 64비트를 가지고 있는데 어떤 이유에서인지 Debian 64비트를 더 낮은 파티션(dd 사용, 새 파티션 설정)으로 옮기기로 결정했습니다. 해당 파티션의 /etc/fstab에서 업데이트한 후) 이전에 Debian을 옮긴 파티션에 최신(20.1 Ulyssa) Linux Mint Cinnamon을 설치했습니다. Linux Mint를 설치하면 update-grub이 실행되고 Debian 64용 새 파티션이 생기기 때문에 문제가 발생할 것이라고는 예상하지 못했습니다. 그러나 그 당시 Debian 64비트가 작동을 멈췄습니다. 루트 파티션을 찾을 수 없다고 나옵니다.

이에 대한 몇 가지 의견: 데비안 설치 프로세스는 UEFI 모드에서 grub을 설치하려고 하면 작동하지 않을 수 있는 비 UEFI 파티션이 있을 수 있다는 경고를 훌륭하게 수행했습니다(그리고 BIOS에서 부팅을 권장함). 호환 모드) -) 민트는 이 부분에 크게 신경을 쓰지 않는 것 같습니다. 그래서 민트는 UEFI 모드에서 내 그럽을 구성했습니다. 그러나 이상하게도 Debian 64는 작동하지 않았지만 Debian 32는 작동하지 않았습니다.

나는 grub 프로세스가 나에게 결코 명확하지 않다는 것을 인정해야 하지만, 내가 이해하지 못하는 것은 내 Debian 32에서 grub을 다시 설치하고 업데이트하려고 해도 문제가 해결되지 않았고 두 개의 파티션이 있는 프로세스를 찾으려고 한다는 것입니다(Debian 32 및 64) /etc 및 /boot(하위 디렉터리 포함)에 있습니다. 마지막으로 부팅 시 Debian 64의 grub 명령줄을 편집한 다음 Debian 64에서 grub을 다시 설치하고 업데이트하여 문제를 해결했습니다.

그러나 내가 정말로 이해하고 싶은 것은 이 UUID가 어디에 저장되어 있는지(왜 찾을 수 없는지), 그리고 왜 데비안 32 파티션에서 이 문제를 해결할 수 없는가입니다.

편집: 명확히 하기 위해: 부팅 중 grub 메뉴에서 커널 매개 변수를 편집하고 root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx를 root=/dev/sdxx로 대체하여 후속 grub 복구 중에 부팅할 수 있었습니다. 아니요 수정이 이루어졌습니다. 그러나 /etc 및 /boot의 압축되지 않은 파일에서 이 UUID 값을 찾을 수 없습니다(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx도 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx도 아님).

EDIT2: 좋아... 내가 찾고 있는 것은 /boot/grub/grub.cfg에 있지만 (Archemar에게 감사드립니다) 정규 표현식을 검색하다가 찾지 못했습니다.

find /boot /etc -type f -print0 | 
    xargs -0 grep -li 'a9c85b02-?751e-?48b5-?b85e-?df60d20b5d3e' 

grep 정규 표현식이 인식되지 않습니까? 대신 {0,1}을 사용해야 합니다...:'(

find /boot /etc -type f -print0 | 
    xargs -0 grep -li 'a9c85b02-\{0,1\}751e-\{0,1\}48b5-\{0,1\}b85e-\{0,1\}df60d20b5d3e' 

그러나 데비안 32 파티션에서 다시 설치하고 grub을 재구성할 때 왜 작동하지 않는지 설명하지 않습니다. 해당 파티션의 ??? 구문 분석을 기반으로 실수로 다른 Linux 파티션을 식별하는 것이 가능합니까 /boot/grub/grub.cfg?

답변1

부팅 + 시스템 디스크를 800Gb 디스크에서 16Gb로 이동할 때 vmware에서 비슷한 문제가 발생했습니다. 파티션과 파일을 복사하고(800Gb 디스크에서 16Gb로) 800Gb 디스크를 삭제하는 것만으로는 충분하지 않았습니다(커널 부팅은 괜찮지만 /UUID를 찾을 수 없음). ). (안타깝게도 이 경우 vmware의 스냅샷은 롤백 보호로 사용할 수 없습니다)

  • 마운트 지점이 /etc/fstab있지만2 fstab
  • 평야 fstab/etc
  • 비밀은 (또는 유사한) 부팅 디스크 파티션에 /etc/fstab있으며 이 fstab은 OS(루트 FS)를 가리키는 UUID를 보유합니다.initrd.gz/boot/

initrd이 운영 체제에서 부팅한 경우 다시 빌드하십시오.

또는 다른 OS에서 부팅하는 경우 initrd.gzcpio를 gzip으로 압축하여 "간단히" fstab파일을 추출하고 편집한 다음 다시 넣습니다 initrd.gz.

관련 정보