私はbusyboxをinitとして使用する組み込みLinuxシステムを開発しています。
システムが起動すると、次の2つのエラーログが表示されます。
[ 3.901185] Run /linuxrc as init process
[ 3.909861] process '/bin/busybox' started with executable stack
mount: mounting devpts on /dev/pts failed: No such file or directory
mount: mounting tmpfs on /dev/shm failed: No such file or directory
Linuxにログインして「mount」コマンドを実行すると、次のメッセージが表示されました。
# mount
......
devtmpfs on /dev type devtmpfs (rw,relatime,size=41768k,nr_inodes=10442,mode=755)
proc on /proc type proc (rw,relatime)
tmpfs on /tmp type tmpfs (rw,relatime)
tmpfs on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755)
sysfs on /sys type sysfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000) <<<<
tmpfs on /dev/shm type tmpfs (rw,relatime) <<<<
驚くべきことに、そこにはすでに設置されていました!
busyboxが使用する/etc/fstabは次のとおりです。
# cat /etc/fstab
# <file system> <mount pt> <type> <options> <dump> <pass>
/dev/root / ext2 rw,noauto 0 1
proc /proc proc defaults 0 0
devpts /dev/pts devpts defaults,gid=5,mode=620,ptmxmode=0666 0 0
tmpfs /dev/shm tmpfs mode=0777 0 0
tmpfs /tmp tmpfs mode=1777 0 0
tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0
sysfs /sys sysfs defaults 0 0
システムに表示される/dev/ptsと/dev/shmに少しの遅延がある可能性があると考えて、busyboxのmount.cに遅延を追加しましたが、同じ結果が得られました。間違い!
また、これら2行をファイルの末尾に移動して/ etc / fstabを編集しようとしましたが、同じ結果が得られました。間違い!
その後、起動時にbashに移動するようにカーネルコマンドラインを "init = / bin / bash"に変更しました。
Bashで/dev/ptsと/dev/shmをチェックしましたが、そこにはありません!
手動でインストールしようとしましたが、まだ「ファイルやディレクトリがありません」というエラーが発生しました。
なぜこれが起こるのかわかりません。無害に見えますが、システムで「エラーメッセージ」を見るのは面倒なので、これを把握して修正したいと思います。
答え1
Artemが提案したテストで、エラーの根本原因と解決策を見つけました。
busybox は、システム上の init プロセスから始まると、まずそのファイルに/etc/fstab
基づいてファイルシステムをチェックし、マウントを試みます。 Busyboxを介してインストールする方法が実際になかったか/dev/shm
どうか、Busyboxはこれについて不平を言いました。/dev/pts
その後、およびを/etc/init.d/rcS
含む複数のファイルシステムもマウントします。まず、ファイルシステムをマウントする前に。そのため、エラーは報告されず、コメントアウトされることもあります。/dev/shm
/dev/pts
rcS
mkdir /dev/pts
/dev/shm
/etc/fstab
rcS
今マウントを使用して/etc/fstab
。