最近、私は1つのプログラムしか実行できない最小限のLinuxディストリビューションを作成しようとしました。まず、Linuxカーネルをコンパイルしてinitramfsを作成します。 initramfsには、/ init(コンパイルされたcスクリプト)、/ proc(空のディレクトリ)、/ dev(別の空のディレクトリ)、および/ sys(やはり空のディレクトリ)が含まれています。 C行を使用して/ procをマウントしようとするまで、すべてがうまく機能します。
mount("/proc", "/proc", "proc", MS_NOATIME, NULL);
しかし、エラー番号11が返されます。その後、次の行を使用して最初に/ devマウントを試みました。
mount("-", "/dev", "devtmpfs", MS_NOATIME, NULL);
ただし、エラー番号11も返されます。誰もが問題を解決する方法を知っていますか?ところで、構成に関しては、システムにこの記事で説明されていない内容はなく、現在QEMUでのみテストされています(この質問を投稿した後、実際のハードウェアで試してみましょう)。上記のインストールコードは私のスクリプトの上にあります(メイン機能の最初の行)。
アップデート:実際のコンピュータでテストした結果、エラーコードが消えました。だから質問を変えたいです。 QEMUはなぜそんなに奇妙に振る舞うのですか?