initramfsなしでRAID1 btrfs rootで起動できますか?

initramfsなしでRAID1 btrfs rootで起動できますか?

私は現在raid1を使用するためにBTRFSベースのGentooシステムを切り替えています。 (デフォルトでは、2番目のハードドライブは使用されていないため、raid1として使用しています。)

raid1モードでは、2番目のデバイスを使用してbtrfsファイルシステムを拡張できます。しかし、grub2は今後は起動しません。 initramfsなしでraid1(およびサブボリューム)を使用してbtrfsルートファイルシステムでgrub2を起動できますか?これまで私はinitramfsを使用したことがありません。 Gentooでは複雑すぎるからです。

起動しようとするとカーネルパニックが発生します。カーネルがrootfsを正しくマウントできないようです。しかし、rootfsをraid1に切り替えるまで、システムはした正常に起動しますが、raid1のためのようです。

別の関連質問 - rootfsで使用される2つのパーティション(sda5、sdb5)のUUIDは同じです。これは普通ですか?

答え1

はい、そうすることはできますが、信頼できません。

rootflags次のように、カーネルコマンドラインの引数を使用して、ボリューム内の個々のデバイスごとにカーネルに明示的に通知する必要があります。

rootflags=device=/dev/sda5,device=/dev/sdb5

これにはいくつかの非常に具体的な制限があります。

  • 古いカーネルを使用している場合は機能しない可能性があります。私は4.10以降でのみこれを実行しましたが、一部の3.xカーネルでは機能しないことを知っています。
  • デバイスパスは値としてのみ使用でき、device=から生成しないでくださいudev。 initramfsがないと、それを使用してデバイスを見つけることができず、ルートファイルシステムをマウントしようとするとblkidリンクは生成されません。udev
  • パーティションレイアウトを変更するたびに手動で更新する必要があります。

2番目の質問はそうです。 BTRFSボリュームの各デバイスが同じUUIDを共有するのは正常です。同様のツールで報告されたUUIDはblkidデバイス固有ではなくファイルシステム固有であるため、マルチデバイスファイルシステムは各コンポーネントデバイスに対して同じUUIDを表示します。

答え2

"device=..." メソッドを試しましたが、まったく動作しませんでした。起動時にカーネルパニックが発生しました。これは私がカーネルとして4.9.76を使用しているためです。おそらく、これは4.10以上にのみ適用されます。とにかく - あきらめて探してhttps://wiki.gentoo.org/wiki/Btrfs/Native_System_Root_Guide(私はGentooを使用しています)このガイドに基づいてinitramfsを構築しました。ただし、このガイドによれば、ファイルに次の行を追加する必要があるかもしれません。initramfs_list:

    #some devices
    nod /dev/console 644 0 0 c 5 1
    nod /dev/tty0    644 0 0 c 4 0

そうしないと、「初期コンソールを開けません」というエラーが発生する可能性があります。

これで、initramfsベースのアプローチが機能します。

関連情報