Debian Neuinstallation mit automatischen BTRFS Snapshots?

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Debian Neuinstallation mit automatischen BTRFS Snapshots?

Beitrag von Knogle » 14.07.2023 00:34:10

Hey Freunde, ich grüße ich.
Lange war ich Debian User, nun seit 2 Jahren auf Fedora gewesen, und nun mit Debian 12 bin ich so zufrieden, dass ich wieder zurück möchte :)

Aktuell nutze ich XFS auf einer 4TB Platte, würde aber gerne ein System haben, welches mit BTRFS läuft, und am besten mit getrennten / und /home.
Gerne würde ich bei jedem apt dist-upgrade ein automatischen Snapshot machen, denn ich habe festgestellt, wenn was kaputt geht, dann meist da :mrgreen:

Gibt es einen entsprechenden Guide, oder ein Vorgehen das "recommended" ist? Es gibt soviele Optionen wie btrfs-assistant, snapper, Timeshift etc.
Würde gerne mal wissen, wie ich am besten zu meinem beschriebenen Ziel komme, ohne alles von Grund auf neu erfinden zu müsse. Kennt ihr vielleicht ein entsprechendes Tutorial?
Ich habe damals Debian mit ZFS Root betrieben, das war manchmal aber echt ätzend wegen der Kernel Module.


Freue mich auf eure Tipps :)

Vielen Dank, und viele Grüße

Benutzeravatar
cosinus
Beiträge: 3439
Registriert: 08.02.2016 13:44:11
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Bremen

Re: Debian Neuinstallation mit automatischen BTRFS Snapshots?

Beitrag von cosinus » 14.07.2023 00:56:37

Du hast jetzt ein Debian 12 was auf einem XFS installiert ist?
Also zu XFS kann ich nicht viel sagen, hab aber schon gehört, dass manche damit derbe Probleme hatten. Das Standard-Dateisystem ext4 ist wirklich robust, das nutze ich schon sehr lange.
Wie auch immer, wenn dann müsstest du schon Debian neu installieren wenn du das System auf ein neues Filesystem haben willst. Hilft dir vllt dieser Artikel? --> https://wiki.debian.org/Btrfs

Alternativ: System so lassen und vor einem dist-upgrade das System, weil es ja so wichtig ist, backuppen. Ein vernünftiges Backup ist immer nötig, egal welches Dateisystem man nutzt.
Und man kann auch noch eine Trockenübung machen, also das (dist-)upgrade simulieren. Bei Debian stable geht aber nichts kaputt, es sei denn man hat sein System verbastelt und vergewaltigt (zB mit Fremdquellen... )

togglebit
Beiträge: 26
Registriert: 13.04.2021 19:30:22

Re: Debian Neuinstallation mit automatischen BTRFS Snapshots?

Beitrag von togglebit » 14.07.2023 11:26:06

Hier gibt es einen guten Guide der genau das beschreibt was du vor hast.

https://saintofsinner.de/debian-auf-btr ... vorschlag/

wobei Timeshift inzwischen seine Snapshots nicht mehr in .snapshots speichert und
btrfs-grub entsprechend angepasst werden muss (und das Verzeichnis im .snapshots Guide nicht mehr benötigt wird).

ist aber hier gut dokumentiert:

https://github.com/Antynea/grub-btrfs

Edit: Momentan lässt sich Timeshift zumindest bei mir (Sid, KDE-Plasma, Wayland) nicht über die Grafische Oberfläche
sondern nur mit dem Terminalbefehl

Code: Alles auswählen

timeshift-gtk
öffnen. X11 funktioniert.

joka63
Beiträge: 24
Registriert: 20.07.2023 23:18:50

Re: Debian Neuinstallation mit automatischen BTRFS Snapshots?

Beitrag von joka63 » 21.07.2023 11:54:20

Knogle hat geschrieben: ↑ zum Beitrag ↑
14.07.2023 00:34:10
Aktuell nutze ich XFS auf einer 4TB Platte, würde aber gerne ein System haben, welches mit BTRFS läuft, und am besten mit getrennten / und /home.
Ich habe erst kürzlich ein Debian 12 System nach folgendem Schema installiert, allerdings erst mal nur in einer VM:

Code: Alles auswählen

# lsblk -p -o NAME,FSTYPE,FSAVAIL,FSUSE%,MOUNTPOINTS
NAME                      FSTYPE      FSAVAIL FSUSE% MOUNTPOINTS   
/dev/vda                                             
├─/dev/vda1               ext4         462,4M    43% /boot
├─/dev/vda2                                          
├─/dev/vda3               crypto_LUKS                
│ └─/dev/mapper/_dev_vda3 btrfs         25,6G    12% /home/joka63
├─/dev/vda5               btrfs         16,2G    43% /
└─/dev/vda6               swap                       [SWAP]
Für Debian 12 bietet auch der graphische Installer Optionen für die manuelle Partitionierung an. Da kann man also BTRFS als Dateisystem und auf Wunsch auch mit LUKS-Verschlüsselung auswählen.

Ich persönlich bevorzuge ein Homeverzeichnis, das erst beim Login (mit libpam-mount) entschlüsselt wird, weil ich die Passworteingabe beim Booten vermeiden möchte. Ansonsten könnte man auch ein großes BTRFs-Volume und darin ein oder mehrere Subvolumes für die Homeverzeichnisse einrichten. Ich bin mir aber nicht sicher, ob das der Installer unterstützt. BTRFS-Subvolumes kann man auch später problemlos anlegen.

Auf einer großen Platte würde ich 1 GByte für /boot reservieren (Default bei Fedora).
UEFI braucht noch eine /boot/efi Partition mit vfat als Dateisystem. Für ein Single-Boot-System sind wohl 100MB mehr als ausreichend, für ein Multiboot-System würde ich 500 MB (Default bei Fedora) reservieren.
Knogle hat geschrieben: ↑ zum Beitrag ↑
14.07.2023 00:34:10
Gibt es einen entsprechenden Guide, oder ein Vorgehen das "recommended" ist? Es gibt soviele Optionen wie btrfs-assistant, snapper, Timeshift etc.
Würde gerne mal wissen, wie ich am besten zu meinem beschriebenen Ziel komme, ohne alles von Grund auf neu erfinden zu müsse. Kennt ihr vielleicht ein entsprechendes Tutorial?
Es gibt wohl viele Tools, die auf BTRFs aufsetzen. Mich hat an Timeshift und Snapper gestört, dass sie ein bestimmtes Schema von BTRFs-Subvolumes voraussetzen, das weder bei Fedora noch bei Debian Standard ist.

Mein Favorit ist das Kommandozeilen-Tool btrbk, in das man sich allerdings erst einlesen muss. Dafür ist es sehr flexibel und man kann es gut in eigene maßgeschneiderte Backup-Skripte einbauen. btrbk kann mit "apt install btrbk" installiert werden.
Knogle hat geschrieben: ↑ zum Beitrag ↑
14.07.2023 00:34:10
Gerne würde ich bei jedem apt dist-upgrade ein automatischen Snapshot machen, denn ich habe festgestellt, wenn was kaputt geht, dann meist da :mrgreen:
Das ist mit btrbk möglich:
How can I setup a debian pre-install hook?

Create a file /etc/apt/apt.conf.d/70btrbk, e.g.:

Code: Alles auswählen

// create a btrfs snapshot before (un)installing packages
Dpkg::Pre-Invoke {"/usr/bin/btrbk run /mnt/btr_pool/rootfs";};
In order to make sure that the snapshots are always generated and nothing is deleted, add the btrbk command line options --preserve --override=snapshot_create=always.

Quelle: https://github.com/digint/btrbk/blob/ma ... stall-hook
Zotac ZBox ID91: Debian 12 mit GNOME
Geekom Mini IT11: Fedora 38 Silverblue (GNOME)

joka63
Beiträge: 24
Registriert: 20.07.2023 23:18:50

Re: Debian Neuinstallation mit automatischen BTRFS Snapshots?

Beitrag von joka63 » 25.07.2023 12:43:43

togglebit hat geschrieben: ↑ zum Beitrag ↑
14.07.2023 11:26:06
Hier gibt es einen guten Guide der genau das beschreibt was du vor hast.

https://saintofsinner.de/debian-auf-btr ... vorschlag/
In Kali-Linux, das ja auch nur ein Debian-Derivat ist, gibt es ein Feature mit dem Namen "Unkaputtbar", das das gleiche macht, wenn auch auf Basis von snapper statt timeshift. Es ist in das Installationsprogramm eingebaut, so dass man es direkt (bei einer frischen Neuinstallation) verwenden kann. Das wird von Debian 12 zwar nicht unterstützt, aber die Dokumentation finde ich hilfreich, um das Prinzip zu verstehen: https://www.kali.org/docs/installation/ ... -snapshots

Es gibt ein aktuelles YouTube-Video mit dem treffenden Titel "Debian 12: Fighting with OpenSUSE Snapper!", das die einzelnen Schritte demonstriert. Sicher nichts für Einsteiger und noch ziemlich experimentell.

Timeshift, Snapper und btrbk erzeugen (logischerweise) alle automatisch read-only Snaphosts. Dummerweise kann man von einem reinen ro-Snapshot nicht booten, weil Linux für einige Verzeichnisse zwingend Schreibrechte braucht, insbesondere für /var/log, /tmp. Abhängig vom verwendeten Desktop müssen noch weitere Verzeichnisse schreibbar gemacht werden, z.B. /var/lib/gdm3/ und /var/lib/AccountsService. Deshalb werden schon während der Installation für all diese Verzeichnisse BTRFS-Subvolumes angelegt. Bei einer Debian12-Installation müsste man also nach der ersten Partitionierung und vor der eigentlichen Installation in eine Rootshell wechseln und dort die Subvolumes manuell anlegen. Das wird in dem YouTube-Video gezeigt.

Ich finde das viel zu kompliziert und auch unnötig, nur um direkt in automatisch generierte read-only Snapshots booten zu können. Und ein GRUB-Menü mit Dutzenden Einträgen automatisch generierter Snapshots fände ich auch verwirrend. Man kann mit dem Befehl "btrfs subvol snapshot" jederzeit aus einem read-only Snapshot einen schreibbaren generieren, der dann auch bootbar ist. (Achtung: es ist noch eine kleine Anpassung der /etc/fstab im neuen Snapshot nötig)

Es wäre schön, wenn man die bootbaren Snapshots auch im GRUB-Menü sehen könnte. Leider ist grub-btrfs (noch?) nicht in den Debian12-Repos enthalten, müsste also mit "git clone" und "make install" installiert werden. Aber auch ohne das Tool kann man in einen Snapshot booten, man muss dann einen GRUB-Eintrag editieren und die Option rootflags=subvol=@rootfs durch den Namen des Snapshots ersetzen, also z.B rootflags=subvol=@deb12-backup.

Ich habe das in einer VM nach Installation und erster Konfiguration von Debian 12 ausprobiert. Voraussetzung ist natürlich, dass die Systempartition mit BTRFS formatiert ist. Debian legt bei der Installation ein BTRFS-Subvolume mit dem Namen "@rootfs" an, also nicht "@" wie manche andere Distributionen. Folgende Schritte wären laut meiner .bash_history als Root ausreichend: (Bitte nicht auf einem realen System ausprobieren und in einer VM nur nach Anlegen eines Schnappschuss mit der Virtualisierungssoftware!):

Code: Alles auswählen

# Bitte ggf. anpassen:
MyFirstBootableSnapshot=@deb12-backup1
RootDevice=$(mount | grep btrfs | awk '$3 == "/" && $5 == "btrfs" { print $1 }') 
# z.B. RootDevice=/dev/vda5

apt install btrbk
if ! fgrep -q /mnt/btr_pool /etc/fstab ; then
cat >> /etc/fstab << END
$RootDevice /mnt/btr_pool   btrfs   defaults,subvolid=5 0       0
END
fi

mkdir -p /mnt/btr_pool
mount /mnt/btr_pool
systemctl daemon-reload
btrfs sub create /mnt/btr_pool/@snapshots

# Konfiguriere btrbk:
cat > /etc/btrbk.conf << END
volume /mnt/btr_pool
  # Create snapshots in /mnt/btr_pool/@snapshots
  snapshot_dir @snapshots
  snapshot_preserve_min   2d
  snapshot_preserve       14d

  subvolume @rootfs
    snapshot_name d12
END

cat > /etc/apt/apt.conf.d/70btrbk << END
// create a btrfs snapshot before (un)installing packages
Dpkg::Pre-Invoke {"/usr/bin/btrbk run @rootfs";};
END

# Erzeuge ersten ro-Snapshot:
btrbk run @rootfs
LatestSnapshotDir=$(btrbk list latest --format col:h:SNAPSHOT_SUBVOLUME @rootfs)
LatestSnapshot=${LatestSnapshotDir#/mnt/btr_pool/*}

# Erzeuge ersten bootbaren rw-Snapshot:
cd /mnt/btr_pool
btrfs subvol snapshot ${LatestSnapshot} ${MyFirstBootableSnapshot}
sed -i "s/subvol=@rootfs/subvol=${MyFirstBootableSnapshot}/" "${MyFirstBootableSnapshot}/etc/fstab"
Zotac ZBox ID91: Debian 12 mit GNOME
Geekom Mini IT11: Fedora 38 Silverblue (GNOME)

kettcar64
Beiträge: 3
Registriert: 26.07.2023 08:09:16

Re: Debian Neuinstallation mit automatischen BTRFS Snapshots?

Beitrag von kettcar64 » 26.07.2023 08:24:18

Knogle hat geschrieben: ↑ zum Beitrag ↑
14.07.2023 00:34:10
...würde aber gerne ein System haben, welches mit BTRFS läuft...
Gerne würde ich bei jedem apt dist-upgrade ein automatischen Snapshot machen...

Würde gerne mal wissen, wie ich am besten zu meinem beschriebenen Ziel komme, ohne alles von Grund auf neu erfinden zu müsse.


https://spirallinux.github.io/

Benutze o. a. Distribution und bin sehr zufrieden (jetzt auf Bookworm upgegraded). Wobei SpiralLinux eigentlich reines Debian mit zusätzlichen Einrichtungsroutinen ist. Dieses dürfte den Wünschen des TE wohl am nächsten kommen und hat u.a. Snapper auf BTRFS mit an Bord.

Mehr Infos: https://www.linux-community.de/ausgaben ... undlicher/
Zuletzt geändert von kettcar64 am 08.08.2023 11:29:28, insgesamt 2-mal geändert.

joka63
Beiträge: 24
Registriert: 20.07.2023 23:18:50

Re: Debian Neuinstallation mit automatischen BTRFS Snapshots?

Beitrag von joka63 » 26.07.2023 23:23:33

Leider hat sich der TE nicht mehr zu Wort gemeldet.
Ich hätte die gleiche Frage stellen können. Habe auch Erfahrung mit Fedora und habe mir Debian 12 in einer VM angeschaut, will es auf einem alten Mini-PC installieren und wünsche mir auch automatische, bootbare BTRFS Snapshots. Es gibt Distributionen, die das standardmäßig mit sich bringen, aber hier geht es um Debian.

Ein Installationsmedium einer mir unbekannten Quelle oder Mini-Distribution käme für mich nicht in Frage.

Die Frage, ob das Feature auch nach einer Standard-Debian-12 Installation (mit BTRFS als Dateisystem) möglich ist, habe ich mir mit meinem im letzten Beitrag geposteten Skript selber beantwortet.
Zotac ZBox ID91: Debian 12 mit GNOME
Geekom Mini IT11: Fedora 38 Silverblue (GNOME)

BirdsEye
Beiträge: 1
Registriert: 09.08.2023 18:42:04

Re: Debian Neuinstallation mit automatischen BTRFS Snapshots?

Beitrag von BirdsEye » 09.08.2023 18:55:49

Hallo und einen schönen Tag,

ich habe hier eine tolle Anleitung gefunden, inspiriert von SpiralLinux, hat bei mir prima funktioniert. (debian bookworm)

https://github.com/david-cortes/snapper-in-debian-guide

Beste Grüße

PS: einzige Änderung bei mir ist, boo/efi ist eine Fat32 Partition.
Und dieses nette Tool habe ich mir noch installiert - https://gitlab.com/btrfs-assistant/btrfs-assistant
btrfs-assistant von EndeavourOS.

Für Fedora 38 habe ich hier eine Anleitung gefunden - https://sysguides.com/install-fedora-38 ... k-support/
habe ich noch nicht getestet.
Zuletzt geändert von BirdsEye am 11.08.2023 10:45:00, insgesamt 2-mal geändert.

Knogle
Beiträge: 465
Registriert: 06.05.2016 19:29:00
Lizenz eigener Beiträge: MIT Lizenz

Re: Debian Neuinstallation mit automatischen BTRFS Snapshots?

Beitrag von Knogle » 09.08.2023 20:44:29

Hey, das sind echt tolle Antworten, ich freue mich darauf mich mal zu probieren :)

Noch eine Frage an
joka63 hat geschrieben: ↑ zum Beitrag ↑
26.07.2023 23:23:33
[...] Habe auch Erfahrung mit Fedora [...]
Hast du eventuell auch einen vergleichbaren Guide zu Fedora? Den wollte ich dann auch gerne mal bei meinen Fedora Maschinen probieren!

Vielen Dank euch bereits!

Benutzeravatar
jph
Beiträge: 1049
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

Re: Debian Neuinstallation mit automatischen BTRFS Snapshots?

Beitrag von jph » 09.08.2023 21:26:45

cosinus hat geschrieben: ↑ zum Beitrag ↑
14.07.2023 00:56:37
Wie auch immer, wenn dann müsstest du schon Debian neu installieren wenn du das System auf ein neues Filesystem haben willst.
Nein, dafür braucht man keine Neuinstallation, sondern lediglich ein Live-System (Debian-Bootmedium, grml o.ä.) sowie eine externe Festplatte, auf der man das System „zwischenlagern“ kann.
  • Live-System booten
  • Daten auf externe Platte kopieren
  • Neue Dateisysteme erzeugen und mounten
  • Daten von externer Platte in neue Dateisysteme kopieren
  • fstab anpassen
  • Wiki-Artikel zum Thema Grub reparieren

joka63
Beiträge: 24
Registriert: 20.07.2023 23:18:50

Re: Debian Neuinstallation mit automatischen BTRFS Snapshots?

Beitrag von joka63 » 11.08.2023 11:20:39

Knogle hat geschrieben: ↑ zum Beitrag ↑
09.08.2023 20:44:29
Hast du eventuell auch einen vergleichbaren Guide zu Fedora? Den wollte ich dann auch gerne mal bei meinen Fedora Maschinen probieren!
Auf meinem Fedora-PC habe ich Silverblue installiert, also die so genannte "immutable" Variante von Fedora. Da die Updates Image-basiert sind, entfällt für mich die Notwendigkeit und der Sinn von BTRFS-Snapshots des Root-Filesystems als Wiederherstellungspunkte. Man kann immer in das letzte Image (eigentlich Root-Filesystem) vor einem Update booten oder in solche, die man selber gepinnt hat.

Das Tool btrbk funktioniert auf Fedora genau so gut wie auf Debian, der Teil meines Skripts würde also auch funktionieren. Die btrbk-Konfiguration müsste noch auf das bei der Installation angelegte Partitions- und Subvolume-Schema angepasst werden. Leider gibt es (oder ich kenne) keine einfache Möglichkeit, ein beliebiges Skript automatisch vor einem DNF-Update oder Upgrade aufzurufen so wie mit dem Pre-Invoke Hook in Debian. Es ist möglich, weil es ein Plugin dnf-plugins-extras-snapper gibt, aber das verlangt dann Python-Programmierung und die Nutzung der Python-API von DNF.

Es gibt mehrere Anleitungen, wie man Fedora mit BTRFs und automatischen Snapshots mit Rollback auf Basis von Snapper installieren und konfigurieren kann, z.B.: https://sysguides.com/install-fedora-38 ... k-support/

Mir persönlich gefällt der Ansatz von Snapper und Timeshift nicht, bei dem mindestens ein halbes Dutzend Subvolumes angelegt werden, nur damit man bootable read-only Snapshots bekommt.
Zotac ZBox ID91: Debian 12 mit GNOME
Geekom Mini IT11: Fedora 38 Silverblue (GNOME)

Mickae
Beiträge: 53
Registriert: 01.09.2022 13:41:54

Re: Debian Neuinstallation mit automatischen BTRFS Snapshots?

Beitrag von Mickae » 12.08.2023 21:35:03

Hallo,
bei meinen neuen Debian 12 Installation, XFCE und btrfs auf / muss ich feststellen, dass man mit Timeshift keine BTRFS Snapshots mehr machen kann.
Man kann beim Einrichten von Timeshift BTRFS gar nicht mehr auswählen, nur rsync. Und wenn es mir doch gelingt auf BTRFS zu klicken, stürzt Timeshift sofort ab.
Ist das normal? Wäre richtig schade.

Antworten