![initrdなしで起動できるようにカーネルにパッチを当てる](https://rvso.com/image/89146/initrd%E3%81%AA%E3%81%97%E3%81%A7%E8%B5%B7%E5%8B%95%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%81%AB%E3%83%91%E3%83%83%E3%83%81%E3%82%92%E5%BD%93%E3%81%A6%E3%82%8B.png)
最初の答えは「Linux はなぜ起動時に初期 RAM ディスクを使用するのでしょうか?' は、initrd/初期 RAM ファイルシステムが実際のルートファイルシステムをマウントするためのドライバーを提供するために使用されていると述べています。また、可能これらのドライバをカーネルにパッチして、initrd
または初期 RAM ファイルシステムが不要になるようにする方法が提案されていますが、方法については説明されていません。 の助けを借りずに EXT4 ファイルシステムをルートにマウントするようにカーネル (最新バージョン) にパッチを当てるにはどうすればよいですかinitrd
。また、このソリューションは をサポートしますかUUIDs
。
答え1
パッチを当てる必要はありません。カーネルを自分で設定してコンパイルするだけです。これは高度な作業なので、初心者向けではありません。コツは、カーネルをハードウェアだけをサポートするように設定し、すべてをモジュールとしてではなくカーネル内にコンパイルすることです (少なくとも、起動に必要なドライバー: ディスク コントローラー、ファイル システムなど)。
カーネルの設定やコンパイル方法を説明するチュートリアルが多数あります
- ジェンツーhttps://wiki.gentoo.org/wiki/カーネル/設定
- アーチhttps://wiki.archlinux.org/index.php/Kernels/Traditional_compilation
- ウブントゥhttps://help.ubuntu.com/community/Kernel/コンパイル
したがって、「カーネル コンパイル {お使いのディストリビューション}」を Google で検索してください。お使いのディストリビューションに適したチュートリアルを使用することが重要です。使用しているディストリビューションによっては、「ディストリビューション」カーネルでのみ使用可能で、「バニラ」カーネルでは使用できない機能がいくつかある可能性があります。適切なチュートリアルでは、適切なソースが示されます。
/etc/fstab
initrd/initramfs を削除した後、GRUB ではUUID を使用できるようになりますが、GRUB では使用できません。
たとえば、私は Gentoo を使用していますが、initrd/initramfs を使用したことはありません。新しいカーネルが利用可能になるたびに、自分で設定してコンパイルする必要があります。root=/dev/sdb4
カーネル パラメータ付きの grub を使用していますが、fstab では UUID を使用しています。