別のext4パーティションで/ bootを使用してext4 /にマウントし、次の内容をZFSプールに移動して実行した従来のroot-on-zfsインストールがあります。
同じディスクにさまざまな* BSDインストールをインストールしましたが、まったく問題はありませんでしたが、今は使用していないパーティションにDevuanインストールを検討しています。より正確には、別のシステム(XFSを使用)ですでに設定されているインストールを関連パーティションの新しいプールにコピーします。
私は独自のパーティションアプローチで/bootに固執したいと思い、両方のディストリビューションに単一の/bootを使用しないことが最善だと思います。したがって、2つの/ bootパーティションがあります。
私は方程式にZFSがなくても以前にこれを行ったことはありません。具体的には、grubではどのように機能しますか? 2つのバージョンがあり、各ディストリビューションがある時点で新しいグルーブ構成を作成しようとしていることを考えるとどうなりますか?カーネル(ブート時)とカーネルモジュール(プール)の一致に基づいて、どのブートパーティションがどのプールと一致するかを決定しますか、またはすべてのgrub更新後に一貫性(grub.cfgで)を手動で確認する必要がありますか? grub.cfgは、/ bootを含むパーティションのUUIDとカーネルパラメータでプール名のみを参照することを確認しました。
FWIW、このマシンはUEFIをサポートしていますが、EFIパーティションを起動するオプション(rEFIndに移動するなど)を提供していないようです。おそらく grub ブートローダもインストールされているからでしょう。
二次展開を開始するためにいくつかの困難を経験する必要があるには問題はありません。
答え1
可能であることが判明しましたが、少し作業が必要です。
2番目のLinuxインストールが同じ/ bootディレクトリ(またはパーティション)を共有しない場合、Grub自体はそれを検出しません。これは、Linuxインストールの隣にインストールされたBSDインストールを検出したときにも問題になったことを覚えています。
良いニュースは、もちろんMBRブートセクタにインストールされていない限り、他のインストールを台無しにすることなく、すべてのインストールでgrubを実行できることです。
トリッキーな部分は、rEFIndが各ディストリビューションにインストールされている可能性のあるさまざまなカーネルを検出し、正しいパラメータで選択されたinitrdを実行して正しいZFSプールをロードすることです。 1ディストリビューションでこれを達成する最も簡単な方法は、グラブとubuntu/grubx64.efi
。このローダーにはgrub.cfgへのパスがハードコードされていることがわかりました。したがって、/EFI/ubuntu/grub.cfg
それを別のディレクトリにコピーしても、私が望むように問題は解決されません。幸いなことに、Debian(およびDevuan)にはgrub.cfgが必要な独自のローダーバージョンがあるため、/EFI/debian/grub.cfg
問題が解決しました。 (注:Devuanバージョンでは/ EFI / $ HOSTNAMEディレクトリが作成されたため、名前を変更する必要がありました。)
私の問題はまだ完全に解決されていません。現在、仮想マシンから2番目のインストールを起動し、RAWディスクを介してインストールの/ bootおよびZFSプールパーティション、およびEFIパーティションにアクセスできます。私のラップトップは起動時に起動マネージャを呼び出すオプションを提供しません。常にMBRブートセクタにインストールされたグラブから直接起動します。私はEFIパーティションでrEFIndを見つけて起動するためにgrubセクションを追加しましたが、まだ機能していません。これはできますか?