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 をビルドしてロードしましたか?