Linux initrd 環境設定 - /init を実行できません。

Linux initrd 環境設定 - /init を実行できません。

私は基本的なinitrd環境を起動して実行するのに役立ちます。私の目標は、基本的なLinux環境を作成する方法の理解を高めることです。理想的には、後で組み込みLinuxシステムに切り替えたいのですが、これが始めるのに最適な場所のようです。

私はこのトピックの良い基本的な方法を見つけることができなかったので、そのトピックの半分ほど完成したか不完全なチュートリアルに従いました。

以下は、私がこれまでに行った操作の参照方法へのリンクです。

現在の環境を起動するとGRUBプロンプトが表示され、ここにgrub.cfgファイルを追加しようとしましたが、システムが起動してすぐにgrubプロンプトに移動すると無視されます。

現在initrd環境を開始するには、次のコマンドを提供する必要があります。

set root=(hd0,msdos1)
linux /boot/bzImage
initrd /boot/rootfs.cpio.gz
boot

これにより、ミニOSが起動しますが初期化ファイルが見つからないというエラーが発生します(rootfs.cpio.gzファイルの一部であり、その構造のルートにあります)。

起動エラー

このinitrd環境問題をどのように解決できますか?

答え1

Linuxカーネルがinitramfsファイルシステムから起動すると、実行されずに/sbin/init実行されます/init。回避策は/ sbin / initを/ initに接続することです。

アップデート:問題を再現しようとしたところ、おそらく32ビットLinuxカーネルを使用して64ビットビジボックスをコンパイルしたことがわかりました。したがって、Linuxカーネルは/init64ビットなので、プログラムをどのように実行するのかわかりません。 Linuxを再コンパイルし、64ビットオプションを有効にして、以前のバージョンをそのバージョンに置き換えます。また、前述したように、/initを/sbin/initにシンボリックリンクする必要があります。

関連情報