BTRFSサブボリュームへのOpenSUSEのインストール

BTRFSサブボリュームへのOpenSUSEのインストール

さまざまなパーティションによる空き容量の無駄を避けるために、各ディストリビューションのサブボリュームを使用して単一の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/efiEFIシステムパーティションに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つの方法です。

数十のサブボリュームを作成するインストーラを避け、パーティション/プライマリサブボリュームのルートにインストールするだけです(操作する場合)。

インストールが完了したら、回復システムを起動し、

  1. その下に通常のLinuxファイルシステムツリーがあるように、マウントされたシステムディレクトリを目的のサブボリュームに移動します。必要に応じてデフォルトフォルダも修復します。
  2. /etc/fstab 修正、正しい subvol=/myrootsubvol オプションを追加
  3. サブボリューム(将来/)でパーティションマウント、ブートマウント、ブート/efiマウント
  4. マウントされたサブボリュームの外側に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"    
    
  5. 次に、一般的なchrootメソッドを使用してください/mnt/temp_sys_prepchrootからあなたはそれを使用することができます

    • 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 を呼び出すのが正しい順序であるかどうかはわかりません。

  6. chrootを終了し、逆の順序で削除します。ツールを再利用して、grub2コアが正しいパスを指していることを確認してください。

おすすめ記事