web-dev-qa-db-ja.com

initramfsからルートファイルシステムをマウントする

これは一般的なシナリオです。何らかの理由で、initramfs(問題がある場合はOpenSUSE)がルートファイルシステムを見つけることができなかったため、レスキューシェルに移動します。どのデバイスをマウントする必要があるのか​​は、よくわかっています。私の質問:

ルートファイルシステムをマウントしてブートシーケンスを続行するための正しい手順は何ですか?

おそらくそれがレスキューコンソールの全体ポイントです。それでも、実際にこれを行う方法を文書化した人はいません。

もちろん、ルートファイルシステムをどこかにマウントできます。しかし、どうすればファイルシステムツリーのrootにすることができますか?その後、通常の起動プロセスを続行しますか? (私はシェルを終了するだけでそれができると思っていました...しかしそうではありません。)続行する前にマウントするために正確に何が必要で、どのように続行しますか?

16
 exec switch_root/mnt/root /sbin/init

https://wiki.gentoo.org/wiki/Custom_Initramfs#Init

4
Petr Ketner

fsckのオプションなしでinitramfsコマンドを実行し、再起動するだけです

例:ルートパーティションはsda3

fsck /dev/sda3
2
GAD3R

通常の手順は

  1. マウント/ dev/sdX/mnt
  2. / mntの問題を修正
  3. リブート

あなたはしたいかもしれない

  1. マウント/ dev/sdX/mnt
  2. / mntを修正
  3. umount/mnt
  4. マウント/ dev/sdX /
  5. 手動でブートを終了

これはお勧めできません。起動するたびに行う必要があります。本番環境では、手動ブートが自動ブートと同じ手順を実行しているとは確信できません。

ただし、重要なデータがある緊急事態では、ステップ5で通常次のように要約します。

  • 5.1ネットワークのセットアップ
  • 5.2重要なファイルを安全な場所にコピーする
2
Archemar

root=パラメータが正しく、問題が必要なデバイスが利用できないことだけである場合(たとえば、initramfsがmd RAIDの構築に失敗したため)、デバイスを利用可能にするのに十分です手動で、例えば:

mdadm --assemble ...

次に、デバイスがそこにあることを確認し、すべてが良さそうであれば、 ctrl + d または、exitと入力して、initramfsシェルを終了します。その後、initramfsはルートファイルシステムをマウントし、通常どおりブートを続行します。システムが起動したら、たとえばupdate-initramfs -uを実行して、根本的な問題を修復する必要があります。

Initramfsに/proc/cmdlineとは異なるデバイスを起動するように指示する方法をまだ見つけていません。多分誰かがアイデアを持っていますか?

1