
さまざまなパーティションによる空き容量の無駄を避けるために、各ディストリビューションのサブボリュームを使用して単一のBTRFSファイルシステムにさまざまなLinuxディストリビューションをインストールしようとしています。
UEFIを実行しているノートブックを使用しており、次のパーティションスキームを使用したいと思います。
sda1: EFI ブート、すべてのシステムの /boot/efi にマウントされる
sda2: スワップ
sda3: BTRFS ボリューム
その後、sda3は次のサブボリュームに「分割」されます。
/data: データサブボリューム
/snapshots: スナップショットサブボリューム
/os/DISTID: リリース DIST サブボリューム (リリース用に 1 つ)
各ディストリビューションはGRUB2をインストールし、各ディストリビューションが他のディストリビューションについて知る必要がないように、UEFIに必要なGRUBをロードします。
ArchとFuntooをインストールできましたが、/os/suseサブボリュームにインストールするようにOpenSUSEを設定できませんでした。
私は以下を試しました:
- 後者をデフォルトのサブボリュームに設定します(前述のように)。ここ)OpenSUSEにパーティションをフォーマットしないように指示すると、インストールは成功したように見えますが、起動しません。
- マウントライブシステムの/ mntにサブボリュームをマウントし、物理インストールのためにパーティションを再マウントしようとすると、インストールが失敗することをOpenSUSEに指示します。
- ラップトップ環境に似た仮想マシンにOpenSUSEをインストールし、システム全体をサブボリュームにコピーし、grubとその設定に必要な調整を行いました(ArchまたはFuntooがロードされたgrubを使用して実行する必要があります)。システムが起動しました。カーネルパニックに陥る
私が書いたGRUB調整の意味は次のとおりです。
- サブボリュームのchroot(arch-chrootまたはGentoo/Pantooインストールプロセス)
/boot/efi
EFIシステムパーティションにgrubをインストールします(ただしGRUBデータは保持します/boot
)。grub-mkconfig -o /boot/grug/grub.cfg
ブートローダを更新するには実行してください。
誰でもどんなアイデアがありますか?私が逃したものは何ですか?
答え1
私の経験によれば、OpenSUSE Leap 42.2/42.3インストーラはカスタム(例えばsnapper / @-notation以外)のサブボリュームを処理できません。悪いことに、ブートローダのインストールなどのいくつかのツールに問題があります。たとえば、私の場合、grubコアは/boot/grub...を指していますが、chrootで更新するときは/grub....でなければなりません。このツールを使用して現在の設定を確認できます。https://github.com/arvidjaar/bootinfoscript
とにかく、これはインストール後または起動可能なバックアップ用に設定する1つの方法です。
数十のサブボリュームを作成するインストーラを避け、パーティション/プライマリサブボリュームのルートにインストールするだけです(操作する場合)。
インストールが完了したら、回復システムを起動し、
- その下に通常のLinuxファイルシステムツリーがあるように、マウントされたシステムディレクトリを目的のサブボリュームに移動します。必要に応じてデフォルトフォルダも修復します。
- /etc/fstab 修正、正しい subvol=/myrootsubvol オプションを追加
- サブボリューム(将来/)でパーティションマウント、ブートマウント、ブート/efiマウント
マウントされたサブボリュームの外側に2番目のディレクトリを作成します。すべてをこのディレクトリにバインドインストールします。
mount -o bind "/mnt/partition_root/sysroot_subvol" "/mnt/temp_sys_prep" mount -o bind "/mnt/partition_root/sysroot_subvol/boot" "/mnt/temp_sys_prep/boot" mount -o bind "/mnt/partition_root/sysroot_subvol/boot/efi" "/mnt/temp_sys_prep/boot/efi" mount -o bind /proc "/mnt/temp_sys_prep/proc" mount -o bind /sys "/mnt/temp_sys_prep/sys" mount -o bind /dev "/mnt/temp_sys_prep/dev"
次に、一般的なchrootメソッドを使用してください
/mnt/temp_sys_prep
。chrootからあなたはそれを使用することができますgrub2-install --no-nvram --recheck --efi-directory=/boot/efi /dev/disk/by-id/scsi-SATA...
、grub2-mkconfig -o /boot/grub2/grub.cfg
、mkinitrd
mkinitrd はおそらく grub を呼び出すのが正しい順序であるかどうかはわかりません。
- chrootを終了し、逆の順序で削除します。ツールを再利用して、grub2コアが正しいパスを指していることを確認してください。