Στον οδηγό αυτό θα δούμε πως θα κάνουμε εγκατάσταση του Pop!_OS σε btrfs και να κάνουμε χρήση του Timeshift.
Εισαγωγή
Ας δούμε πως θα κάνουμε εγκατάσταση του Pop!_OS σε ένα καινούργιο δίσκο. Πρώτα μερικές αποφάσεις. Θέλω το / σε σύστημα αρχείων btrfs για γρήγορα snapshoots με το btrfs. To /home θα είναι σε χωριστή κατάτμηση σε κλασσικό ext4 και θα γίνετε backup σε εξωτερικό δίσκο τακτικά. Επίσης θα έχω χωριστό swap partition. Είναι καλύτερα έτσι αν έχεις btrfs.
Το πρόβλημα είναι πως το Pop!_OS δεν φτιάχνει τα κατάλληλα subvolumes που απαιτεί το Timeshift, οπότε θέλει κάποια επιπλέον βήματα. Ας δούμε το πως.
Προετοιμασία του δίσκου
Πριν προχωρήσουμε την εγκατάσταση θα φτιάξουμε με το χέρι τις απαραίτητες κατατμήσεις. Θα χρειαστούμε τις παρακάτω κατατμήσεις σε δίσκο με format gpt.
- Μια κατάτμηση 512MB Fat32 για το
/boot/efi - Μια κατάτμηση 4096MB Fat32 για το
/recovery(προαιρετικά) - Μια κατάτμηση με μορφή btrfs για το
/ - Προαιρετικά μια κατάτμηση με μορφή ext4 για το
/var/lib/docker(αν θέλουμε docker) - Προαιρετικά μια κατάτμηση με μορφή ext4 για το
/home - Μια κατάτμηση για το swap
Δηλαδή:
Μετά που θα φτιάξουμε τις κατατμήσεις κάνουμε προσαρμοσμένη εγκατάσταση βάζοντας τις σωστές διαδρομές. Ξεκινάμε το σύστημα, αλλά αν βάλουμε το Timeshift δεν θα μπορέσουμε γιατί λείπουν τα απαιτούμενα subvolumes.
Πρώτα θα κάνουμε μια μικρή αλλαγή στο systemd-boot (δες και τον σχετικό οδηγό εδώ) και θα βάλουμε μια μικρή χρονική καθυστέρηση για να μπορούμε να δούμε το μενού.
[cmdline] sudo gedit /boot/efi/loader/ loader.conf [/cmdline]
[output]
default Pop_OS-current
timeout 2 ← Προσθήκη αυτής της γραμμής
[/output]
Θα κάνουμε επανεκκίνηση και θα μπούμε σε περιβάλλον Recovery. Αν δεν έχουμε φτιάξει την σχετική κατάτμηση μπορούμε να ξεκινήσουμε από το USB εγκατάστασης.
Σε περιβάλλον Recovery
Βήμα 1: Δημιουργία subvolume
Θα κάνουμε προσάρτηση της κατάτμησης που περιέχει το / (δηλαδή την sda3 στο παράδειγμα)
[cmdline] mount -o subvolid=5,ssd,noatime,space_cache,commit=120,compress=zstd /dev/sda3 /mnt [/cmdline]
Οι επιλογές εξηγούνται εδώ ή με την εντολή man 5 btrfs. Μερικές σημειώσεις:
ssdΕνεργοποίηση βελτιστοποιήσεων για δίσκους ssd.noatimeΝα μην ενημερώνει τον χρόνο τελευταίας προσπέλασης ενός αρχείουspace_cache,commit=120βελτιστοποιήσεις πρόσβασης στον δίσκοcompress=zstdΑλγόριθμος για την συμπίεση των δεδομένων
Πλέον η εγκατάσταση μας είναι διαθέσιμη στον φάκελο /mnt. Θα πρέπει να φτιάξουμε τα subvolumes που θέλει το TimeShift. Θα χρειαστούμε μόνο το @ στο συγκεκριμένο παράδειγμα. Αν δεν έχεις χωριστό /home και swap δες στος συνδέσμους στο τέλος για τα επόμενα βήματα.
[cmdline] btrfs subvolume create /mnt/@ [/cmdline]
Αυτή την στιγμή, έτσι όπως είναι προσαρμοσμένος ο δίσκος θα το δούμε σαν τον κατάλογο /mnt/@. Θα πρέπει να μεταφέρουμε εκεί όλα τα δεδομένα.
[cmdline] cd /mnt [/cmdline]
[cmdline] ls | grep -v ‘@|home’ | xargs mv -t @ [/cmdline]
και ένας έλεγχος
[cmdline] ls /mnt/ [/cmdline]
[cmdline] ls /mnt/@ [/cmdline]
Βήμα 2: Ενημέρωση /etc/fstab
Στην συνέχεια θα πρέπει να ενημερώσουμε το /etc/fstab του λειτουργικού
[cmdline] sudo gedit /mnt/@/etc/fstab [/cmdline]
[output]
PARTUUID=… /boot/efi vfat umask=0077 0 0
UUID=… /recovery ext4 noatime,errors=remount-ro 0 0
UUID=.. / btrfs defaults,subvol=@,ssd,noatime,space_cache,commit=120,compress=zstd 0 0
UUID=… /home ext4 noatime,errors=remount-ro 0 0
[/output]
Η αλλαγή που κάναμε είναι στην γραμμή με την κατάτμηση για το \.
Βήμα 3: Ενημέρωση του bootloader
Θα πρέπει να ενημερώσουμε το systemd-boot για να κάνει χρήση του subvolume με όνομα @. Θα πρόσθέσουμε στο τέλος ένα rootflags=subvol=@
[cmdline] sudo gedit /mnt/@/boot/efi/loader/entries/Pop_OS-current.conf [/cmdline]
[output]
title Pop!_OS
linux /EFI/Pop_OS-…/vmlinuz.efi
initrd /EFI/Pop_OS-…/initrd.img
options root=UUID=… ro quiet loglevel=0 systemd.show_status=false splash rootflags=subvol=@
[/output]
Βήμα 4: Προετοιμασία για αναβαθμίσεις πυρήνα
Το παραπάνω βήμα δεν αρκεί, καθώς θα φτιαχτεί ξανά το αρχείο κάθε φορά που θα ενημερωθεί ο πυρήνας. Ας ενημερώσουμε το σύστημα για την αλλαγή.
[cmdline] sudo gedit /mnt/@/etc/kernelstub/configuration [/cmdline]
[output]
{
“default”: {
“kernel_options”: [
“quiet”,
“splash”
],
“esp_path”: “/boot/efi”,
“setup_loader”: false,
“manage_mode”: false,
“force_update”: false,
“live_mode”: false,
“config_rev”: 3
},
“user”: {
“kernel_options”: [
“quiet”,
“loglevel=0”,
“systemd.show_status=false”,
“splash”, ← Προσθήκη ενός κόμματος εδώ
“rootflags=subvol=@” ← Και εδώ αυτό που θα προστεθεί στο τέλος
],
“esp_path”: “/boot/efi”,
“setup_loader”: true,
“manage_mode”: true,
“force_update”: false,
“live_mode”: false,
“config_rev”: 3
}
[/output]
Βήμα 5: Ενημέρωση του bootloader
Για το βήμα αυτό θα πρέπει να “μπούμε” στο λειτουργικό με το subvolume ενεργό. Θα πρέπει να κάνουμε αποπροσάρτηση της κατάτμησης
[cmdline] cd / [/cmdline]
[cmdline] umount -l /mnt [/cmdline]
Και θα την προσαρμόσουμε ξανά:
[cmdline] mount -o defaults,subvol=@,ssd,noatime,space_cache,commit=120,compress=zstd /dev/sda3 /mnt [/cmdline]
Προσέξτε ότι βάλαμε subvol=@. Ήρθε η ώρα να "μπούμε μέσα. Εδώ θα βρεις τι ακριβώς συμβαίνει και τι είναι και τι κάνει το chroot.
for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo cp /etc/resolv.conf /mnt/etc/
sudo chroot /mnt
Μέσα στο σύστημα τώρα ήρθε η ώρα να δούμε αν τα πάντα προσαρμόζονται σωστά.
[cmdline] mount -av [/cmdline]
[output]
/boot/efi : already mounted
/recovery : already mounted
/ : ignored
/home : already mounted
[/output]
Πρέπει να είναι ήδη εγκατεστημένο αλλά δεν βλάπτει να
[cmdline] apt install -y btrfs-progs [/cmdline]
Πλέον κάνουμε την ενημέρωση
[cmdline] update-initramfs -c -k all [/cmdline]
και βγαίνουμε απο το περιβάλλον του chroot.
[cmdline] exit [/cmdline]
Κάνουμε μια επίκληση στον άγιο Stallman, στον Μανιτού ή κάπου αλλού και κάνουμε επανεκκίνηση. Αν όλλα έγιναν σωστά θα ξεκινήσει το σύστημα κανονικά.
Βήμα 6: Εγκατάσταση TimeShift
Αν τα πνεύματα ήταν μαζί μας προχωράμε κανονικά στην εγκατάσταση και χρήση του TimeShift.
Βήμα 7: Αυτόματα SnapShoots
Θέλουμε να γίνετε αυτόματα ένα snapshoot πριν κάθε χρήση του apt. Θα εγκαταστήσουμε με το χει το timeshift-autosnap-apt μιας και δεν υπάρχει ακόμα στα αποθετήρια.
sudo apt install git build-essential
mkdir Builds
cd Builds
git clone https://github.com/wmutschl/timeshift-autosnap-apt.git
cd timeshift-autosnap-apt
sudo make install
sudo gedit /etc/timeshift-autosnap-apt.conf
Έλεγχος αν λειτουργεί
[cmdline] sudo timeshift-autosnap-apt [/cmdline]
[output]
Rsyncing /boot into the filesystem before the call to timeshift.
Rsyncing /boot/efi into the filesystem before the call to timeshift.
Using system disk as snapshot device for creating snapshots in BTRFS mode
/dev/sda3 is mounted at: /run/timeshift/backup, options: rw,relatime,compress=zstd:3,ssd,space_cache,commit=120,subvolid=5,subvol=/
Creating new backup…(BTRFS)
Saving to device: /dev/sda3, mounted at path: /run/timeshift/backup
Created directory: /run/timeshift/backup/timeshift-btrfs/snapshots/2021-11-19_21-38-52
Created subvolume snapshot: /run/timeshift/backup/timeshift-btrfs/snapshots/2021-11-19_21-38-52/@
Created control file: /run/timeshift/backup/timeshift-btrfs/snapshots/2021-11-19_21-38-52/info.json
BTRFS Snapshot saved successfully (0s)
Tagged snapshot ‘2021-11-19_21-38-52’: ondemand
[/output]
Το τελικό αποτέλεσμα:
asfodelus@pop-os:~$ sudo lsblk -f NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT sda ├─sda1 vfat FAT32 93EA-892B 252.6M 48% /boot/efi ├─sda2 ext4 1.0 Recovery 9befd986.... 554.9M 79% /recovery ├─sda3 btrfs pop_root 1f65ba24.... 177.3G 4% /run/timeshift/backup ├─sda5 ext4 1.0 popos_home 4b84ba4e... 703.9G 0% /home └─sda6 swap 1 swap a128e6ea... └─cryptswap swap 1 cryptswap cfc26e65... [SWAP]
Διαβάστε
Οι οδηγίες εγκατάστασης προσαρμόστηκαν από εδώ. Αλλά δεν χρησιμοποιεί ξεχωριστές κατατμήσεις
weywot/Pop_Btrfs_Subvolumes_with_Timeshift.md at main · spxak1/weywot · GitHub
Για ένα ποιο πολύπλοκο setup με κρυπτογράφηση και lvm2 οδηγίες μπορούν να βρεθούν εδώ. Μιας και το δικό μου setup ήταν για σταθερό υπολογιστή επέλεξα να έχω ένα ποιο απλό setup.
https://mutschler.eu/linux/install-guides/pop-os-btrfs-21-04/

