mknod ステップでカスタム カーネルの起動が失敗するのはなぜですか?

mknod ステップでカスタム カーネルの起動が失敗するのはなぜですか?

Ubuntu でカスタム カーネルを構築したいと考えています。新しいカーネルを設定して構築しました。新しいカーネルには initrd がなく、バニラ ソースから取得されます。この新しいモノリシック カーネルは、必要なドライバーのみを使用して構築します。

新しいカーネルを起動しようとすると、 のステップで行き詰まってしまいます。のような新しいデバイスmknodを試行します。ルート パーティションが読み取り専用でマウントされているため、失敗します。mknod/dev/sda1 /dev/vca4

問題はハードウェアに関する何かが失われたことだと思います。デフォルトの Ubuntu カーネルで起動すると、問題は発生しません。なぜこのようなことが起こるのか、どなたか教えていただけませんか?

答え1

起動時に、ルート ファイルシステムはほとんどの場合読み取り専用でマウントされるため、fsckその上で実行できます。完了したら、次のようにしてルート ファイルシステムを読み取り/書き込みで再マウントするのが一般的です。

mount / -o remount,rw

ただし、Ubuntu を使用しているので、カーネルのコンパイルはこれよりはるかに簡単です。まだ使用していない場合は、kernel-packageカーネルをコンパイルするために を使用することをお勧めします。パッケージとカーネルソースを取得して解凍し、次のように入力します。

make-kpkg -j3 --initrd binary

これにより、.deb通常の方法でインストールできるパッケージが構築されます(dpkg -i SOME-FILE.deb

答え2

devtmpfsまたはがtmpfsにマウントされ/dev、 によって管理されている必要があります。udevしたがって、 の状態に関係なく、ディレクトリは書き込み可能です/。Ubuntu では、これは通常、initramfs によって設定されます。カーネルで initramfs をビルドしてロードしましたか?

関連情報