
私は組み込み ARM デバイス上に、Linux カーネルと Busybox、および initrd イメージ内の最小限のファイルシステムのみで構成される最小限の環境を作成しました。起動時にinittab
実行される があります。/etc/init.d/rcS
に次の行がありますrcS
:
/bin/mount -t proc none /proc
しかし、このラインが走ると、
/etc/init.d/rcS: line 2: /bin/mount -t proc none /proc: not found
の最後の行はrcS
実行されるように見えます。その行は単に/bin/sh
シェルを取得するためのもので、シェルは自動的に開きます。
シェルからまったく同じマウント コマンドを実行すると、動作します。/bin/mount
はへのシンボリック リンクです/bin/busybox
。
スクリプトが を見つけられないのはなぜですか/bin/mount
?
答え1
結局のところ、ファイル内のスペースは実際には 2 つの文字でした0xD0 0xA0
(Unicode でしょうか? CR/LF が 4 ビット左にシフトしたように見えるのは単なる偶然かもしれません... また、2 つではなく 1 つの空白文字として表示されます)。すぐに手がかりとなったのはエラー メッセージでした。パラメーターではなくコマンドのみが表示されるはずでしたが、行に空白がありませんでした。
それを発見すると、原因が何であるかがわかりました。私の OS は Windows 7 で、VirtualBox VM で Ubuntu を実行しており、共有クリップボードを使用しています。Windows 7 の Chrome で Web ページからスクリプトをコピーし、Ubuntu の gedit に貼り付けました。これらの文字は Web ページからコピーされたか、ページから gedit への途中でエンコードが正しく機能しなかったかのどちらかです。
それらをスペース文字に置き換えることで解決しました。