Hallo,
ich habe mich in letzter Zeit damit versucht eine instalation von Arch / Manjaro mit oder ohne Architekt zu durchzufüren welche Snapper rollback und bootable snapshots ermöglicht. Kurz im Vorraus Mein schaffen wurde von Erfolg gekrönt. Außerdem war mein Ziel diese Art der konfiguration auch unerfahrenen Manjaro Nutzer zur verfügung zu stellen. Ich habe eine PKGBUILD erstellt um einen Grub mit den patches von Suse zu compilieren, Außerdem habe ich snap-pac-grub modifiziert damit diese snapshots auch im Grub mit Suse Patches erscheinen. Meine Installation führte ich mit einem modifizierten Manjaro-Architekt durch. Die PKGBUILDS der drei Packete werde ich später versuchen ins Aur zu bringen wobei ich aber Hilfe benötige. Das ganze habe ich auch nur mit UEFI ausprobiert.
Die Besonderheit dieser Version ist das der Grub vom Default Subvolume starten kann um einen Rollback zu vereinfachen und das ändern von Grub einträgen unerfahreneren nicht zuzumuten ist (auch wenn das hier im Arch Forum ist, es ist ja auch für Manjaro gedacht).
Hier die Ordner mit Patches und package-builds über diese würde ich mich besonders über rückmeldung freuen da dies mein erster Versuch ist der OpenSourceCommunity etwas zurückzugeben und ich hier noch nicht so sicher bin wie ich diese korrekt erstelle:
https://drive.google.com/drive/folders/1C-he8n8XPUpTrljA05eFRjEfk_KprGor?usp=sharing
Also hier eine kurze installations-Anleitung:
Als erstes müsst ihr die Subvolumes erstellen wobei ihr "$(root_partition)" durch eure Btrfs Partition ersetzen müsst.
Das Shema ist Frei abwandelbar, dies ist aber das OpenSuse genutzte Shema an welchen ich mich orientierte und welches ich nachstellen wollte.
cd /mnt
btrfs subvolume create @
btrfs subvolume create @/.snapshots
mkdir ./@/.snapshots/0
btrfs subvolume create @/.snapshots/0/snapshot
btrfs subvolume create @/home
btrfs subvolume create @/opt
btrfs subvolume create @/root
btrfs subvolume create @/srv
btrfs subvolume create @/tmp
mkdir @/usr/
btrfs subvolume create @/usr/local
btrfs subvolume create @/var
chattr +C @/var
btrfs subvolume set-default $(btrfs subvolume list /mnt | grep "@/.snapshots/0/snapshot" | grep -oP '(?<=ID )[0-9]+') /mnt
cd /
umount /mnt
cd /mnt
# Mount root and create mount-points
mount "$(root_partition)" /mnt
mkdir /mnt/.snapshots
mkdir /mnt/home
mkdir /mnt/opt
mkdir /mnt/root
mkdir /mnt/srv
mkdir /mnt/tmp
mkdir -p /mnt/usr/local
mkdir /mnt/var
# Mount them in the right directorys
mount -o subvol=@/.snapshots "$(root_partition)" /mnt/.snapshots
mount -o subvol=@/home "$(root_partition)" /mnt/home
mount -o subvol=@/opt "$(root_partition)" /mnt/opt
mount -o subvol=@/root "$(root_partition)" /mnt/root
mount -o subvol=@/srv "$(root_partition)" /mnt/srv
mount -o subvol=@/tmp "$(root_partition)" /mnt/tmp
mount -o subvol=@/usr/local "$(root_partition)" /mnt/usr/local
mount -o subvol=@/var "$(root_partition)" /mnt/var
Jetzt fürt ihr eure instalation durch und ersetzt bzw passt die grub instalation an folgendes an:
Ab jetzt alle Commandos im Chroot
cd grub-suse-git
makepkg -sfCi #(manchmal hatte ich probleme mit dem locales dass kann man mit neustart der shell lösen, außerdem hatte ich probleme mit der fish shell)
sed -i '/SUSE_BTRFS_SNAPSHOT_BOOTING/s/^#//g' /etc/default/grub # um die Bootable snapshots zu aktivieren.
grub-install
grub-mkconfig -o /boot/grub/grub.cfg
sed -i s/\#IgnorePkg =/IgnorePkg = grub-suse-git/ /etc/pacman.conf
danch könnt ihr Snapper installieren:
pacman -S --noconfirm snapper
cp /etc/snapper/config-templates/default /etc/snapper/configs/root # Kopierung der Snapper konfiguration da dieser wenn schon das @/.snapshot Subvolume existiert keine erstellen kann.
sed -i "s/\=\"\"/\=\"root\"/" /etc/conf.d/snapper # Aktivierung der Konfiguration
systemctl enable cronie
sed -i "s/done/done\ngrub-snapper-plugin -r/" /etc/cron.hourly/snapper # ausführung des Grub akutalisierungs Skrips damit die timeline Snapshots immer erscheinen
für snap-pac support:
pacman -S --noconfirm snap-pac # Pacman Hook welche snapshots vor und nach jeder Pacman interaktion erstellt
cd snap-pac-grub-suse
makepkg -sfCi
und um snapper gui hinzuzufügen:
pacman -S --noconfirm snapper-gui
sed -i s/ALLOW_GROUPS=\"\"/ALLOW_GROUPS=\"wheel\"/ /etc/snapper/configs/root # damit snapper gui bei jedem sudo fähigen nutzer funktioniert.
Ich hoffe diese Version reicht um es ohne frust hinzukriegen aber ich werde den Artikel noch öfter Optimieren und freue mich sehr über Rückmeldungen und Hilfe meine Pakete ins Aur zu bekommen.