2016-05-10 20 views
0

私は、Linuxカーネルのブートにファイルシステムとしてinitramfsを使用しようとしています。 私はファイルシステムを最小限にしたいので、私はrootfsなしでinitramfsだけを使います。いったんカーネルが起動すると、initramfsから/ initが実行されます。私は以下のようにprocとsysfsをinitにマウントしようとしました。rootfsのないベアなinitramfsの使用

#!/bin/busybox sh 
echo "Mounting Proc and Sysfs" 
# Mount the /proc and /sys filesystems. 
mount -t proc none /proc 
mount -t sysfs none /sys 

さらに、私はinitramfsでコマンドプロンプトを表示するために追加する必要があります。私は上記のinitコマンドを実行すると、以下のエラーが発生しました。

New FileSystem 
Mounting Proc and Sysfs 
This script just 
[ 4.524724] sh (116) used greatest stack depth: 13832 bytes left mounts and boots the rootfs, nothing else! 
[ 4.537448] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000 
[ 4.537448] 
[  4.537453] CPU: 0 PID: 1 Comm: init Not tainted 4.1.17-ltsi-rt18 #4 
+0

フォーマットを修正してください –

答えて

0

あなたの問題は、シェルスクリプト(別名「init」)が終了することです。カーネルは、PID 1が終了するポイントを過ぎて実行されません。通常のinitシーケンスは、exceveを使用してPID1を投げることでこれを解決します(initramfsのinitはルートファイルシステムのinitに切り替えるなど)。

initの最後に/ bin/sh(bash、zsh、何でも)を追加し、シャットダウンを呼び出す(シェルが終了するとシステムが停止するようにする)ことをお勧めします。これはあなたに多少使いやすいシェルを与えるでしょう。

また、すでにビジーボックスを使用しているようだから、かなり使いやすいinit実装があります。これを使って、実際のTTY制御を備えた実際のシェルで、実際のinitシーケンスを開始することができます。

関連する問題