システム ディスク パーティションを変更した後、システムが起動せず、「Dracut Emergency Shell」に入ります。どうすれば起動できますか?

システム ディスク パーティションを変更した後、システムが起動せず、「Dracut Emergency Shell」に入ります。どうすれば起動できますか?

背景

新しいシステムを購入して、さまざまなサービスを実行するためにソフトウェアの設定に多くの時間を費やしたところ、ドライブが不安定になる可能性があることに気付きました。そこで、ディスクを交換し、新しいディスクのコンテンツを保持することにしました。

システム ディスクも正しく起動できない問題があり、kernel修正できないようです (すべてのgrub指示に従いましたが、デフォルトでは正しく起動せずkernel、手動で正しいものを選択した場合のみ起動します)。そこで、新しいディスクに を新規インストールするだけFedora Serverで、起動の問題も同時に修正できる最善の方法だと考えました。

どうしたの

新しいディスクはかなり大きかったので、インストール プロセス中に少し異なる方法でパーティション分割しました。次に、ドライブを取り外し、新しいシステム ディスクと古いシステム ディスクの両方を、近くにある別のサーバーに置きました。念のため、fstab新しいシステム ディスクの は、パーティション があることがわかっていたので、そのままにしましたUUIDs

ファイルを移動する方法はいろいろありますが、私は新しいシステム ディスクにクリーンなルート パーティションを作成することにしました。ddおそらくこれが可能だろうと思いましたが、パーティションが同じサイズでの使用に慣れていたので、少し不安でした。そこで、代わりに でルート パーティション ("/") を再フォーマットしましたgparted。次に、通常の OS ツールを使用してファイルを移動しました。次に、新しいインストールから内容をカット アンド ペーストしUUID、修正していたサーバーの非常に非標準のものに挿入しましたfstab

うまくいきました。

次に、システムを起動しようとしました。システムは POST し、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バグ報告用に保存することを提案します。

ああ!どうすればいい?私は上記のようなことWarning [...] does not existをあちこち探し回った。何も見つからない!dracut emergency shell

答え1

fstabを更新する

/etc/fstabパーティションの適切なUUIDでファイルを更新する必要がある

crypttab を更新する

以前のパーティションが暗号化されていた場合は、/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 Server のパーティションの一部では、ルート パーティションがUUID2 か所に保存されていることがわかりました。しかし、このシナリオでは、実際には 3 つの問題があります。grub2/bootUUID

ルート パーティション ("/") の再フォーマットにより、実際に が変更されましたUUIDしたがって、まず新しいものUUIDを検出し、適切な場所に配置する必要があります。検索する方法は多数ありますUUIDsが、これを行うための 1 つのコマンドライン ツールはblkid次のようになります。

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

このツールでは、各パーティションに対して 2 つがUUIDs表示されますが、必要なのはそのうちの最初のものです。また、権限のないユーザーは を実行できないことにも注意してくださいblkid

ルート パーティションを配置するUUID必要がある 3 つの場所は次のとおりです。

  1. /etc/fstabルートパーティションのマウントが記述されている行で、
  2. 行のカーネル オプションの設定で/boot/grub2.cfg、これを素早く見つけるには、前者 (UUIDまだある場合) を探します。または、、およびを探します"set kernelopts="root=UUID="
  3. /boot/grub2/grubenvファイル内で引用されている行に類似した行を探します。/boot/grub2.cfg次の行を探します。kernelopts=root=UUID=

新しい UUID のみを変更し、他のすべてはそのままにしておくことを忘れないでください。念のため、編集する前にファイルのバックアップを作成してください。

関連情報