起動に失敗すると、システムが dracut というプロンプトを表示します。
私の理解では、dracut は initramfs のイメージを生成するために使用されます。私が混乱しているのは、「dracut」というシェルにドロップしているという事実に基づくと、これが initramfs を生成するためのユーティリティ プログラムであるだけでなく、実際には起動時に実行される独自のプログラムでもあるように見えることです。これは正しいですか? - 上記が正しい場合、initramfs と dracut の違い/関係は何ですか?
答え1
Dracut は、initramfs のインスタンスを生成するツールであると同時に、dracut 緊急シェルと呼ばれる機能も備えています。initramfs の目的は、ルート ファイル システムを検索、ロード、および実行を渡すことができる環境を提供することです。このプロセス中に問題が発生した場合、initramfs は dracut 緊急シェルに切り替わり、問題をデバッグしたり修復したりする機会が提供されます。
コメントに関して:
「喜んでそうします。明確に言うと、最初に起こったことは、RHEL を実行している VMWare VM があったことです。VM を VMWare Workstation に直接インポートする際に問題が発生したため、VM のハード ドライブを ESXi から取り出して、VMWare Workstation の新しい 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 パラメータは、既存の initramfs アーカイブを上書きしてもよいことを dracut に伝えます。no-hostonly パラメータは、現在実行中のコンピューターに関係するドライバーのみを含めるというデフォルトの動作をオーバーライドし、代わりに dracut が initramfs 内のすべてのドライバーを含めるようにします。
これは、dracut が「肥大化」し、ハード ドライブの移動時に必要なすべての適用可能なドライバーが含まれることを意味します。ハード ドライブの移動が完了したら、dracut を再度実行して、dracut --force
dracut の軽量バージョンを再生成する必要があります。