부팅 실패가 발생하면 시스템이 dracut이라는 프롬프트로 전환되는 것을 볼 수 있습니다.
initramfs의 이미지를 생성하는 데 dracut이 사용된다는 것은 내 이해입니다. 내가 혼란스러운 점은 "dracut"이라는 쉘에 드롭한다는 사실을 기반으로 볼 때 이 쉘은 단지 initramfs 생성을 위한 유틸리티 프로그램인 것처럼 보이지는 않지만 실제로는 그 자체로 다음과 같은 프로그램을 수행한다는 것입니다. 부팅시 실행됩니다. 이 올바른지? - 위의 내용이 정확하다면 initramfs와 dracut의 차이점/관계는 무엇입니까?
답변1
Dracut은 initramfs 인스턴스를 생성하는 도구이자 dracut 비상 쉘이라는 기능도 포함하고 있습니다. initramfs의 목적은 루트 파일 시스템을 찾아서 로드하고 실행을 전달할 수 있는 환경을 제공하는 것입니다. 이 프로세스 중에 문제가 발생하면 initramfs는 dracut 비상 셸로 이동하여 문제를 디버깅/수리할 수 있는 기회를 제공합니다.
댓글에 관해서 :
"기쁘겠습니다. 원래 발생한 일은 RHEL을 실행하는 VMWare VM이 있다는 것이었습니다. VM을 VMWare Workstation으로 직접 가져오는 데 문제가 있어서 VM의 하드 드라이브를 ESXi에서 새 VM으로 가져오기로 결정했습니다. 그러나 VM을 부팅하려고 하면 GRUB와 dracut을 성공적으로 로드할 수 있지만 dracut은 루트 파일 시스템을 찾지 못합니다. dracut이 로드될 수 있다고 예상하기 때문입니다. 루트 파일 시스템도 찾을 수 있을 것입니다."
RHEL을 설치하면 dracut은 OS가 설치된 하드웨어와 호환되는 데 필요한 드라이버만 포함된 initramfs 인스턴스를 생성합니다. RHEL 인스턴스의 하드 드라이브를 한 가상 하드웨어 세트의 ESXi에서 다른 가상 하드웨어 세트인 VMWare Workstation으로 옮겼을 때 커널과 연결된 initramfs에 더 이상 루트 파일 시스템을 찾고 로드하는 데 필요한 적절한 드라이버 세트가 없었습니다. .
문제를 해결하려면 하드 드라이브를 이동하기 전에 를 실행해야 합니다 dracut --force --no-hostonly
. 인용하려면https://fedoramagazine.org/initramfs-dracut-and-the-dracut-emergency-shell/
force 매개변수는 dracut에게 기존 initramfs 아카이브를 덮어써도 괜찮다는 것을 알려줍니다. no-hostonly 매개변수는 현재 실행 중인 컴퓨터와 관련된 드라이버만 포함하는 기본 동작을 무시하고 대신 dracut이 initramfs의 모든 드라이버를 포함하도록 합니다.
이는 이제 dracut이 "비대해지며" 하드 드라이브를 이동할 때 필요한 모든 해당 드라이버를 갖게 된다는 의미입니다. 하드 드라이브 이동을 마친 후에는 dracut을 다시 실행하여 dracut --force
경량 버전의 dracut을 재생성해야 합니다.