1

組み込みの ARM ボードがあり、initramfs を試しています。

私のルート ファイルシステムは EXT4 であり、EXT4 ドライバーはカーネルに組み込まれている(モジュールとしてコンパイルされていない) ため、カーネルを直接起動してルート ファイルシステムをマウントできます。initramfs は必要ありません。もちろん、 initramfsがないと、カーネルはファイルシステムの UUID を認識しないため、カーネルのドキュメントに記載されているように、パーティション識別子 PARTUUIDでルートを指定しました。問題のブート引数は次のようになります: root=PARTUUID=7acc80f1-01 これは問題なく動作します。

ここで、initramfs を使用して同じカーネル バージョンを起動しようとすると、システムが起動しません。ルートデバイスが見つからないと不平を言います。PARTUUID の代わりにファイルシステム UUIDを使用するようにブート引数を変更すると、再び動作します: root=UUID=c9fd552c-921c-4ddb-bb46-fe557943d311 そもそもカーネルが PARTUUID をネイティブにサポートしているのに、initramfs を使用すると起動オプションが少なくなるのはなぜですか?

initramfs が使用されているかどうかに関係なく、両方のセットアップで機能する独自の方法でルートを指定したいと思います。/dev/sda1 などのデバイス名は、ブート中に変化する可能性がある (複数のディスクが接続されている) ため、オプションではありません。

手がかりはありますか?

よろしくお願いいたします。

ティモ

PS: カーネルのバージョンはメインライン 4.4.16 です。U-Boot は 2015.5 です。ディストリビューションは Debian 8 です。

4

1 に答える 1

4

わかりました、私は今それを理解しました。これは、Debian の initramfs-tools パッケージの既知の問題です: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=801154

initramfs によってルート ファイルシステムをマウントするために使用されるスクリプトは、PARTUUID をサポートせず、UUID のみをサポートします。これはテスト用ディストリビューションでは解決されていますが、現在の安定版 (Jessie) では解決されていません。

于 2016-08-15T09:10:34.150 に答える