Επεκτάσεις συστήματος με το systemd-sysext

To systemd-sysext είναι ένα εργαλείο για να φτιάξεις overlay του βασικού συστήματος. Δηλαδή πάνω στο βασικό σύστημα αρχείων βάζεις ένα ρυζόχαρτο με τις αλλαγές. Ας δούμε ένα παράδειγμα χρήσης για να καταλάβουμε τι είναι αυτό.

Στη βασική διανομή μου, που είναι το Pop OS ήθελα να τσεκάρω το καινούργιο γραφικό περιβάλλον που φτιάχνουν. Μια τέτοια αλλαγή αν την εγκαταστήσεις μπορεί να κάνεις το σύστημα σαν ανοιγμένο σύκο. Οπότε δεν ήθελα να πειράξω το βασικό σύστημα που δεν είναι immutable. Και δεν ήθελα να κάνω τις αλλαγές μόνιμες, απλά ήθελα να ρίξω μια ματιά.

Στο Pop OS μπορείς να εγκαταστήσεις το Cosmic desktop με χρήση της apt αλλά πήγα με τον δύσκολο δρόμο. Και για οποίον ενδιαφέρετε δείχνει να είναι εξαιρετικό απο πλευράς ευχρηστίας και εμφάνισης ακόμα και στην κατάσταση που σήμερα είναι.

Εδώ το systemd-sysext έρχεται να σώσει την κατάσταση. Απλά ακολούθησα τις οδηγίες και έφτιαξε ένα φάκελλο cosmic-sysext που μετέφερα στη θέση /var/lib/extensions. Η δομή είναι αυτή του /usr και περιέχει τα αρχεία όπως θα ήταν αν είχαν εγκατασταθεί εκεί κανονικά.

Η μόνη διαφορά είναι ένα επιπλέον αρχείο

cat /var/lib/extensions/cosmic-sysext/usr/lib/extension-release.d/extension-release.cosmic-sysext

NAME="Cosmic DE"
VERSION=nightly-2eadc4e
ID=pop
VERSION_ID="22.04"

Ήρθε η ώρα να το ενεργοποιήσουμε:

sudo systemctl enable --now systemd-sysext
sudo systemd-sysext refresh

Πλέον μπορώ να δοκιμάσω τη συνεδρία σαν να ήταν εγκατεστημένη κανονικά.

Παρακάτω βλέπω μερικές δυνατότητες του

Αλλά το σύστημα των αρχείων έγινε ξαφνικά immutable. Δεν μπορώ πχ να κάνω αναβαθμίσεις στο λογισμικό.

Οπότε καλό θα ήταν να το απενεργοποιήσω:

sudo systemctl disable --now systemd-sysext

και να σβήσω τα αρχεία. Εναλλακτικά θα μπορούσα να τα βάλω στη θέση /run/extensions και να σβηστούν αυτόματα στην πρώτη επανεκκίνησή. Ένας άλλος τρόπος είναι αντί για το δέντρο των αρχείων να έφτιαχνα ένα image, αλλά αυτό δε θα το αναλύσω εδώ.

Χρήσεις

Καλά όλα αυτά, αλλά τι χρησιμότητα έχει; Κατ αρχήν κάνει το σύστημα immutable!. Ναι αλλά αν έχεις μια immutable διανομή;

  • Ακριβώς για να σκαλίσεις μια immutable διανομή :-)
    Για παράδειγμα, να προσθέσεις εφαρμογές στο Steam OS
    Adding software to the Steam Deck with systemd-sysext | The world won't listen

  • Σαν εναλλακτική λύση απέναντι σε containers, ή flatpak ή τα systemd portable services. Έτσι μπορείς να πακετάρεις μέχρι και cli εφαρμογές σε αντίθεση με τις άλλες λύσεις (πλην snap)

  • Για προγραμματιστές που φτιάχνουν εργαλεία συστήματος ή γραφικά περιβάλλοντα όπου θέλουν να δοκιμάσουν ή να κάνουν αποσφαλμάτωση τον κώδικά τους
sudo DESTDIR=/run/extensions/systemd-test meson install -C build --quiet --no-rebuild &&
sudo systemd-sysext refresh --force

Μέχρι στιγμής καμία διανομή δεν το χρησιμοποιεί και η κύρια και καθημερινή χρήση είναι η τελευταία. Αλλά ίσως κάποια στιγμή να γίνει ένα καθημερινό εργαλείο.

Update: Η πρώτη διανομή που σχεδιάζει να το χρησιμοποιήσει είναι η BlueFin μια πειραματική διανομή βασισμένη στο Fedora Silverblue. Πηγή

Δείτε ακόμα

Κάτι παρόμοιο

5 «Μου αρέσει»

Δεν το προτείνουμε, ιδίως το να κάνει κάποιος αλλαγή του gdm3 με το cosmic sessions, προς το παρόν, τώρα δηλαδή που βρίσκεται στην alpha έκδοση. Δεν θα μπορεί να μπει στο σύστημα. Μιλάμε εκ πείρας :sweat_smile:.
Οπότε η λύση που προτείνεις @Asfodelus για τη δοκιμή του “rust” cosmic desktop (το οποίο είναι πολύ όμορφο και πολύ γρήγορο) δηλαδή με το systemd πρέπει να είναι η πιο δόκιμη. Λέμε “πρέπει” γιατί δεν το επιχειρήσαμε.
Επιπλέον ένα μικρό σχόλιο για να μη βγούμε εκτός θέματος. Φαίνεται ότι στον τομέα της ανάπτυξης γραφικού περιβάλλοντος στο GNU/linux γίνεται πολύ ωραία δουλειά, αν κρίνουμε από περιπτώσεις όπως αυτές του cosmic desktop(de), του hyprland(wm) του gnome κ.α.

1 «Μου αρέσει»