カーネル(デフォルトオプションでコンパイルされた)とBusyBox(デフォルトオプション+静的でコンパイルされた、すべてのアプレットが存在することを含む/sbin/init
)のみを含む、小さくて機能的なライブLinux CDを作成することができました。私が作成する全く問題なかったinitrd
と移入を/dev
、/proc
と/sys
も私は私と全く問題がなかった/init
シェルスクリプト。
最近、BusyBoxが/etc/inittab
構成を(少なくともある程度)サポートしていることを読んだので、次のいずれかを実行したいと思います。
- 私の
/init
シェルスクリプトを忘れて、完全に/etc/inittab
構成に依存します。 /init
シェルスクリプトと/etc/inittab
設定の両方を使用します。
今実際の問題- /etc/inittab
私のディストリビューションが起動するときそれは完全に無視されているようです。症状は次のとおりです。
- 削除して
/init
そのままにしておく/etc/inittab
と、カーネルパニックが発生します。私の想定では、カーネルはまったく実行さ/sbin/init
れないか、または/sbin/init
検出(または読み取り)されません/etc/inittab
。 - BusyBoxがなくても正常に動作することを確認しました
/etc/inittab
。だから、私は両方を削除/init
して/etc/inittab
、何を推測-再びパニックカーネル。 - 私が実行しようとした
/sbin/init
私のシェルから、付属のいくつかの推測の後exec /sbin/init
、setsid /sbin/init
そしてexec setsid /sbin/init
私は、カーネルパニックになってしまいました。ファイルシステムに/ etc / inittabが存在する場合と存在しない場合の両方。
これが私の/init
シェルスクリプトの内容です:
#!/bin/sh
dmesg -n 1
mount -t devtmpfs none /dev
mount -t proc none /proc
mount -t sysfs none /sys
setsid cttyhack /bin/sh
この時点では/etc/inittab
、構成が実際に機能していることを知る方法がある限り、その内容がどうなるかは気にしません。ここで/etc/inittab
見つけた情報に基づいて、いくつかの構成を試しました。
最低限、私の/ etc / inittabには次の1行だけが含まれています。
::sysinit:/bin/sh
繰り返しますが、カーネルパニックに陥り、/etc/inittab
無視されたようです。
私の小さなライブディストリビューションをBusyBoxで正常に動作させる方法についての提案/etc/inittab
は高く評価されています!
更新:
- 明確にするために、現在のシェルスクリプトを使用してもしなくても、カーネルパニックの問題は発生しません。それはすべて正常に機能し、コンソールは非常に機能し、予期しない問題は発生しません。上で説明したように、唯一の問題は完全に無視されることです。
/init
/etc/inittab
/bin/ash
/etc/inittab
- 3つの異なるライブLinuxディストリビューション、Slax、Finnix、SysResCDを調べました。それらのすべてが持っていて
/init
、どれも持っていません/etc/inittab
。さらに、このWikiの記事は、/sbin/init
まったく呼び出されていないという私の疑いを締めくくります。