시스템 디스크 파티션을 변경한 후 시스템이 부팅되지 않고 "Dracut Emergency Shell"로 이동합니다. 부팅하려면 어떻게 해야 하나요?

시스템 디스크 파티션을 변경한 후 시스템이 부팅되지 않고 "Dracut Emergency Shell"로 이동합니다. 부팅하려면 어떻게 해야 하나요?

배경

나는 모든 방식의 서비스를 수행하기 위해 소프트웨어를 구성하는 데 많은 시간을 소비한 새 시스템을 갖고 있었는데 드라이브가 잠재적으로 불안정하다는 것을 발견했습니다. 그래서 새 디스크의 내용을 유지하면서 디스크를 교체하기로 결정했습니다.

시스템 디스크에도 올바른 부팅 문제가 있어서 kernel고칠 수 없는 것 같습니다(모든 지침을 따랐 지만 수동으로 올바른 것을 선택한 경우에만 기본적으로 grub오른쪽으로 부팅되지 않았습니다 ). kernel그래서 가장 좋은 방법은 새 디스크에 를 새로 설치하는 것이고 Fedora Server그러면 부팅 문제가 해결될 것이라고 생각했습니다.

무슨 일이에요

새 디스크는 훨씬 더 크기 때문에 설치 과정에서 조금 다르게 파티션을 나누었습니다. 그런 다음 드라이브를 제거하고 새 시스템 디스크와 기존 시스템 디스크를 근처에 있는 다른 서버에 넣었습니다. 많은 주의를 기울여 fstab새 시스템 디스크에 파티션이 있다는 것을 알고 를 보관했습니다 UUIDs.

이동하는 방법에는 여러 가지가 있으며 저는 새 시스템 디스크에 깨끗한 루트 파티션을 원하기로 결정했습니다. 나는 dd이것을 할 수 있을 것이라고 생각했지만 파티션의 크기가 같은 곳에서 사용하는 데 익숙했고 약간 확신이 없었기 때문에 대신 루트 파티션("/")을 gparted. 그런 다음 일반 OS 도구를 사용하여 파일을 옮겼습니다. 그런 다음 새로 설치한 항목을 잘라내어 붙여넣고 수정 중이던 서버의 UUID재고가 거의 없는 서버에 삽입했습니다 .fstab

괜찮았어요.

그런 다음 시스템 부팅을 시도했습니다. 게시된 다음 grub부트로더에 도달하면 자동으로 올바른 커널을 선택하고 종료됩니다! ... 그렇지 않을 때까지!

"Plymouth Boot Screen 표시" 또는 이와 유사한 기능이 표시되고 일시 중지된 다음 자신을 호출하는 항목에서 많은 시간 초과 경고를 표시했습니다 dracut. 여기서부터 휴대폰으로 스크린샷을 찍었습니다. 그것은 말한다:

Warning: Could not boot.
Starting Dracut Emergency Shell...
Warning: /dev/disk/by-uuid/<a uuid> does not exist
Generating "/run/initramfs/rdsosreport.txt"

journalctl버그 보고를 위해 사용 하고 저장하라는 제안이 이어집니다 rdsosreport.txt.

ACK! 무엇을 해야 할까요? 위에서 언급한 Warning [...] does not exist내용과 관련하여 높은 수준과 낮은 수준을 검색했습니다 dracut emergency shell. 나다!

답변1

fstab 업데이트

/etc/fstab파티션의 적절한 UUID로 파일을 업데이트해야 합니다.

크립트탭 업데이트

이전 파티션이 암호화된 경우 해당 항목을 제거해야 합니다./etc/crypttab

새 파티션이 암호화된 경우 해당 항목을/etc/crypttab

initramfs 재생성

/etc/fstab및 파일 을 업데이트한 후 /etc/crypttabdracut을 사용하여 initramfs 이미지를 업데이트해야 합니다.

다음을 실행하여 dracut 비상 쉘에서 dracut 이미지를 업데이트할 수 있습니다.

# dracut --hostonly --regenerate-all --force
참고자료

답변2

메시지:

Warning: /dev/disk/by-uuid/<uuid> does not exist

중요한 단서이다.

루트 파티션은 최신 Fedora 서버 파티션의 UUID두 위치에 저장되어 있는 것으로 나타났습니다 . 하지만 이 시나리오에는 실제로 세 가지 문제가 있습니다.grub2/bootUUID

루트 파티션("/")을 다시 포맷하면 실제로 UUID.따라서 새로운 것을 UUID먼저 발견한 다음 올바른 위치에 배치해야 합니다. 찾는 방법은 여러 가지가 있지만 UUIDs이를 수행하는 명령줄 도구 중 하나는 blkid다음 예와 같습니다.

# blkid
/dev/sda1: UUID="64bbac09-1a12-4bea-8873-212ffb56f2a8" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="primary" PARTUUID="8a09913a-fdb2-42a0-98e3-6b89e16374d2"

UUIDs이 도구에서는 각 파티션에 대해 두 개의 파티션이 표시됩니다 . 당신은 이것들 중 첫 번째를 원합니다. 또한 권한이 없는 사용자는 실행할 수 없습니다 blkid.

루트 파티션이 UUID필요한 세 곳은 다음과 같습니다.

  1. /etc/fstab루트 파티션 마운트가 설명된 줄에서, 그리고 ;
  2. /boot/grub2.cfg커널 옵션을 설정하는 중 입니다 . 그것을 찾는 가장 빠른 방법은 UUID아직 가지고 있다면 전자를 찾는 것입니다 . 또는 "set kernelopts="root=UUID=", 및를 찾으십시오 .
  3. /boot/grub2/grubenv파일에 인용된 줄과 비슷한 줄에 있습니다 /boot/grub2.cfg. 찾다:kernelopts=root=UUID=

새로운 UUID 하나만 변경하고 다른 모든 항목은 그대로 두는 것을 잊지 마세요. 만약을 대비해 편집하기 전에 파일을 백업해두세요!

관련 정보