RPi用のカスタムカーネルを構築しています。問題は、RPiブートローダにvfat / bootパーティションが必要であり、カーネルのサイズを最小限に抑える予定であるため、vfatサポートをカーネルから削除する必要があることです。
「Embedded Linuxについて」と「Linux Kernel Development」という本を読みました。私が理解したところによると、ブートローダは/ bootパーティションを使ってカーネルとinitramfsと他の重要なファイルを見つけるようです。
/ boot形式をvfatに保ちながら、カーネルからvfatサポートを削除しようとしました。カーネルが正常に起動します。しかし、systemdがどこかに止まって/ bootをマウントできないと言いました。これはカーネルがvfatをサポートしていないので完全に大丈夫です。その後、Systemdは私に構造シェルを提供しました。
これで、RPiブートローダがすでにvfatをサポートし、問題なくカーネルをロードできるようになり、systemdが/ bootマウントをまったく防ぐ方法があるかどうか疑問に思います。私が理解したのは、この段階でカーネルがすでにロードされているため、カーネルは/ bootパーティションにアクセスする必要はありません。
どんな助けでも大変感謝します。
答え1
systemdはリスト内のファイルシステムをマウントしようとするため、その/etc/fstab
ファイル/boot
システムから削除する場合は/etc/fstab
マウントしないでください。
(今、Fedoraシステムでこれをテストした後、アンインストールしてインストールされていない/etc/fstab
ことを確認しました。)
systemdにはEFIパーティションを特別に処理するコードがあるため、RPiのコードでもマウントをトリガーすることもできます。ただし、通常は自動マウントデバイスを使用して行われます。つまり、インストールを試みます。誰かが内部を覗いている場合にのみ/boot
。
実装ロジックは/etc/fstab
次のように実装されます。systemd-fstab-ジェネレータEFIパーティションをマウントするロジックは次のとおりです。systemd-gpt - 自動ジェネレータ。
もう1つの便利なコマンドは、systemctl status /boot
(vfatをサポートするカーネルと共にインストールするとき)、そのコマンドがどこから来たのかについてのヒントをさらに与えることができるということです。