Installieren Sie OpenSUSE in einem BTRFS-Subvolume

Installieren Sie OpenSUSE in einem BTRFS-Subvolume

Ich versuche, verschiedene Linux-Distributionen in einem einzigen BTRFS-Dateisystem zu installieren und dabei für jede ein Untervolume zu verwenden, um zu vermeiden, dass durch die Verwendung unterschiedlicher Partitionen freier Speicherplatz verschwendet wird.
Ich verwende einen Laptop mit UEFI und wollte das folgende Partitionierungsschema verwenden:

sda1: EFI-Boot, auf allen Systemen unter /boot/efi gemountet
sda2: Swap
sda3: BTRFS-Volume

sda3 würde dann in die folgenden Untervolumes „partitioniert“:
/data: Untervolume für Daten
/snapshots: Untervolume für Snapshots
/os/DISTID: Untervolume für Distribution DIST (eines für Distribution)

Jede Distribution würde ihren eigenen GRUB2 installieren und ich würde den GRUB, den ich brauche, in UEFI laden, sodass die einzelnen Distributionen nichts von den anderen wissen müssen.

Ich konnte Arch und Funtoo installieren, aber ich konnte OpenSUSE nicht so einrichten, dass es im Untervolume /os/suse installiert wird.
Ich habe Folgendes versucht:

  • Letzteres als Standard-Subvolume festlegen (wie auch angegebenHier) und sagte OpenSUSE, die Partition nicht zu formatieren; die Installation schien erfolgreich zu sein, aber es konnte nicht gebootet werden
  • mountete das Subvolume im Live-Installationssystem in /mnt und wies OpenSUSE an, dies zu ignorieren; die Installation schlug fehl, als versucht wurde, die Partition für die eigentliche Installation erneut zu mounten
  • OpenSUSE in einer virtuellen Maschine installiert, die der Laptop-Umgebung ähnelt, dann das gesamte System auf das Subvolume kopiert und die erforderlichen Anpassungen an Grub und seinen Einstellungen vorgenommen (die, die ich mit Arch oder Funtoo vornehmen musste); Grub wurde geladen, aber das gebootete System geriet in Kernel Panic

Die Anpassungen an GRUB, über die ich geschrieben habe, bedeuten Folgendes:

  • chroot im Subvolume (mit arch-chroot oderdas Verfahren zur Gentoo/Funtoo-Installation)
  • Installieren Sie Grub in /boot/efider EFI-Systempartition (aber belassen Sie die GRUB-Daten in /boot)
  • ausführen grub-mkconfig -o /boot/grug/grub.cfg, um den Bootloader zu aktualisieren

Hat jemand eine Idee? Habe ich etwas verpasst?

Antwort1

Meiner Erfahrung nach funktioniert die Handhabung von benutzerdefinierten (also anderen als der Snapper-/@-Notation) Subvolumes durch das OpenSUSE Leap 42.2/42.3-Installationsprogramm nicht. Schlimmer noch, einige Tools, wie die Bootloader-Installation, haben damit Probleme. In meinem Fall zeigte der Grub-Kern beispielsweise auf /boot/grub..., aber beim Update von chroot sollte es nur /grub.. sein. Sie können die aktuellen Einstellungen mit diesem Tool überprüfen:https://github.com/arvidjaar/bootinfoscript

Wie dem auch sei, hier ist eine Möglichkeit, die ich zum Einrichten nach der Installation oder für bootfähige Backups verwende.

Vermeiden Sie die Erstellung von Dutzenden von Untervolumes durch das Installationsprogramm. Installieren Sie die Software beispielsweise einfach im Stammverzeichnis der Partition/im Standarduntervolume (falls das funktioniert hat).

Nach der Installation starten Sie das Rettungssystem und

  1. Verschieben Sie die installierten Systemverzeichnisse auf das gewünschte Subvolume, sodass Sie unterhalb dieses Subvolumes den üblichen Linux-Dateisystembaum haben. Korrigieren Sie bei Bedarf auch den Home-Ordner.
  2. Korrigieren Sie /etc/fstab, indem Sie die richtigen Optionen subvol=/myrootsubvol hinzufügen.
  3. Mounten Sie die Partition mit dem Subvolume (future /), mounten Sie boot und mounten Sie boot/efi
  4. Erstellen Sie nun ein zweites Verzeichnis außerhalb des gemounteten Subvolumes. Mounten Sie alles per Bind-Mount in dieses Verzeichnis.

    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. Verwenden Sie jetzt den üblichen Chroot-Ansatz für /mnt/temp_sys_prep.Im ChrootSie können verwenden

    • grub2-install --no-nvram --recheck --efi-directory=/boot/efi /dev/disk/by-id/scsi-SATA...,
    • grub2-mkconfig -o /boot/grub2/grub.cfg,
    • mkinitrd

    Ich bin mir über die richtige Reihenfolge nicht sicher; mkinitrd ruft wahrscheinlich auch Grub auf.

  6. Verlassen Sie den Chroot und hängen Sie ihn in umgekehrter Reihenfolge aus. Überprüfen Sie mit dem Tool erneut, ob der Grub2-Kern jetzt auf den richtigen Pfad zeigt.

verwandte Informationen