Kexecを新しいカーネルに追加しましたが、initramfsプロンプトにアクセスできません!

Kexecを新しいカーネルに追加しましたが、initramfsプロンプトにアクセスできません!

kexecを使用してカーネルを正常にロードしましたが、dmesg行のみが印刷されます。この問題をどのように削除し、initramfsプロンプトに入りますか? Ctrl-Alt-F2は黒い画面のみをロードし、Ctrl-Cは何もしません。

これは私のkexecコマンドラインです。

kexec -l $kernel --initrd=$initrd --command-line="root=UUID=... acpi=off ro text earlyshell debug showerr debuginitrd"

Earlyshellはシェルへのアクセスを提供する必要がありますが、そうではありません。そのコマンドラインがないと、スクリプトループに閉じ込められ、Ctrl-Cを押しても抜け出すことはできません。

答え1

解決済み:

カーネルパラメータ:

earlyshell

実際にシェルが起動しませんか? ? ?ただし、パラメータを使用してカーネルを実行すると、次のようになります。

break=premount

私にinitramfsシェルを与えました。

このリソースは非常に便利です。https://wiki.debian.org/InitramfsDebug

答え2

kexecに指定した値は正しいですか--initrd=

私はkexecをインストールして試してみました。私が行くと効果があります。

kexec -l /boot/vmlinuz --initrd=/boot/initrd.img --append=root=/dev/sda3 

それからkexec -e。 (暗号化しませんでした…)

最初は「使用」プロンプトに従おうとしましたが、/proc/cmdline成功しませんでした。私は見るには追加のオプションを提供する必要があるようです--initrd=

パスワードを提供するには(暗号化されたデバイスをマウントするために)「initramfsプロンプト」が必要ですか?

通常私の/proc/cmdline姿はこんな感じ

vmlinuz initrd=initrd.cpio.gz root=/dev/sda3

上記のkexecを実行して再起動すると、/proc/cmdline次のようになります。

root=/dev/sda3

カーネルとinitrdの名前がありません!ただ- 追加その一部が残っています。これは私をとても混乱させません。質問に新しい側面を追加するだけです。カーネルイメージとinitrdイメージはありますか?カーネルオプション?それらは(カーネル)の一部ですか?コマンドライン

起動にはuefiシェルを使用します。私はこの「initrd =」がどれほど重要かを知っています。ブートローダを使用すると同じように機能します。これは、カーネル、initrd(必要な場合、または必要に応じて)、ルート、init、およびすべての一般的な「カーネルオプション」(間接的に)を選択する他の方法です。

標準initrdは次のことを行います。

  • ルートディレクトリにアクセスするためのモジュールのロード(私の場合:SIMPLE SSDドライブはsata、ahciです)

  • デバイスマウント(root = / dev / xxxで提供)

  • "switch_root"(/sbin/init 実行を含む)

あなたの場合は、SATAモジュールではなくパスワードプロンプト(?)が必要です。しかし、結果は同じです。ルートをマウントできません。

ブートローダがどのように正常に起動するかを理解し、kexecを使用してそれらを模倣してください。


次に追加:

initrd(名前は重要ではありません...)はデフォルトでスクリプトで始まります/initrdinit=起動オプションを参照)。これはearlyshellに対応する「初期ユーザースペース」です。これにより、initramfs-tool/ initと呼び出されるスクリプトを制御するのに十分なブレークポイントがあるように見えます。

それ以外の場合は、initrdを抽出(gzipおよび使用cpio)して/ initを変更し(または/ init_newを追加し、起動オプションとしてrdinit = / init_newに移動します)、フォルダを再度アーカイブできます。私は以前このcpioコマンドを使用したことがありませんが、実際にはtarよりも簡単です。少し違います。

mkinitcpioツールです。初期ユーザースペースと暗号化について言及することから始まります。私はこれがArchiLinuxの仕事であり、後期と初期の「フック」もあることを読んだだけです。 initramfs-toolsと同じことをするようです。

関連情報