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によって設定されます。カーネルを使ってビルドしてロードしましたか?