私は基本的なinitrd環境を起動して実行するのに役立ちます。私の目標は、基本的なLinux環境を作成する方法の理解を高めることです。理想的には、後で組み込みLinuxシステムに切り替えたいのですが、これが始めるのに最適な場所のようです。
私はこのトピックの良い基本的な方法を見つけることができなかったので、そのトピックの半分ほど完成したか不完全なチュートリアルに従いました。
以下は、私がこれまでに行った操作の参照方法へのリンクです。
- http://web.archive.org/web/20120601223451/http://blog.nasirabed.com/2012/01/minimal-linux-filesystem.html
- http://revcode.wordpress.com/2012/02/25/booting-a-minimal-busybox-based-linux-distro/
現在の環境を起動すると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カーネルは/init
64ビットなので、プログラムをどのように実行するのかわかりません。 Linuxを再コンパイルし、64ビットオプションを有効にして、以前のバージョンをそのバージョンに置き換えます。また、前述したように、/initを/sbin/initにシンボリックリンクする必要があります。