Η ζωή με το systemd-boot

Πλέον η διανομή που χρησιμοποιώ ξεκινά με το systemd-boot. Είναι ταχύτατο αλλά χρόνια συνηθισμένος στο grub δίσταζα να το πειράξω. Αλλά αποδείχθηκε πολύ εύκολο, και πολύ πιο βολικό από το grub. Ας το γνωρίσουμε λίγο καλύτερα λοιπόν.

Για πιο λόγο; Μια χαρά δεν είναι το grub;

Κατ αρχήν να ξεκαθαρίσω πως αν η διανομή που χρησιμοποιείς χρησιμοποιεί το grub δεν βλέπω κανένα λόγο γιατί να θέλεις να τον αλλάξεις. Αλλά αν έχεις εγκατεστημένες πολλές διανομές ίσως να υπάρχει ένας καλός λόγος. Κάθε διανομή σε κάθε αναβάθμιση του πυρήνα θα τρέξει τυπικά το grub και θα επικαλύψει τις ρυθμίσεις της προηγούμενης διανομής. Υπάρχουν λύσεις για αυτό αλλά είναι πολύπλοκες. Και το grub έχει μια πολύπλοκη σύνταξη. Ευτυχώς δεν γράφουμε τα αρχεία με το χέρι, αλλά τροποποιούμε ένα αρχείο ρυθμίσεων, τυπικά το /etc/default/grub και αυτόματα θα φτιαχτούν οι ρυθμίσεις κάθε φορά που θα χρειαστεί. Αλλά οι διάφορες διανομές και λειτουργικά δεν επικοινωνούν μεταξύ τους.

Το grub είναι πολύπλοκο, γιατί φτιάχτηκε μια εποχή που το BIOS δεν ήταν τόσο ισχυρό, αλλά πλέον έχουμε καλύτερους τρόπους. Ένα απλό παράδειγμα είναι το παρακάτω κόλπο που όμως σταμάτησε να λειτουργεί όταν πέρασα σε btrfs. Αντί να προσπαθεί να γράψει μέσα στο filesystem την πληροφορία (και να μην τα καταφέρνει) και να έχει υποστήριξη για κάθε σύστημα αρχείων, δεν θα ήταν καλύτερα να χρησιμοποιήσει μια μεταβλητή efi;

Τεχνικά στοιχεία

Η καρδιά του systemd-boot είναι η προδιαγραφή BOOT_LOADER_SPECIFICATION μια απλή προδιαγραφή που επιτρέπει σε μια διανομή να βάλει σε ένα μέρος ένα αρχείο που την περιγράφει και αυτό ήταν. Οποιοδήποτε κατανοεί αυτή την προδιαγραφή (ίσως μια μέρα και το ίδιο το BIOS) μπορεί να ξεκινήσει το λειτουργικό. Το systemd-boot είναι εξαιρετικά απλό και μόνη δουλειά του είναι να δείξει ένα απλό menu. Και τεχνικά ίσως αυτό δεν θα ήταν καν απαραίτητο, αν τα διάφορα BIOS υλοποιούσαν με τον ίδιο τρόπο το μενού επιλογής εκκίνησης που τυπικά το βλέπεις όταν πατήσεις κάποιο μη τυποποιημένο πλήκτρο κατά την εκκίνηση.

Σε χρήση

Παρά την γρήγορη απόκριση η πρώτη εμπειρία ήταν ολίγον απογοητευτική. Που είναι το menu; Τι πρέπει να πατήσω για να το δω; Φόρτωσε το λειτουργικό; Τότε γιατί βλέπω ακόμα την εικόνα του BIOS; Για το δεύτερο, αλλά μια αλλαγή για Flicker Free Boot όπου αποφεύγουμε την χρονοβόρα αλλαγή της κατάστασης την κάρτας γραφικών που συχνά οδηγεί σε αναβόσβημα της οθόνης. Το παρακάτω βίντεο δείχνει τον νέο τρόπο

Ωραίο, αλλά αυτό κάνει το πρώτο πρόβλημα ακόμα πιο ορατό. Ας ενεργοποιήσουμε κάποιο μενού επιτέλους.

sudo -i
cd /boot/efi/loader
nano loader.conf

και θα φτιάξουμε το αρχείο να μοιάζει κάπως έτσι

default Pop_OS-current
timeout 4

και αυτό ήταν! Καμία ανάγκη να τρέξουμε κάποια εντολή για να ενημερωθεί. Στην επόμενη εκκίνηση θα δούμε ένα απλό μενού. Ας το κάνουμε τώρα λίγο πιο όμορφο; Να βάλουμε κάποια εικόνα στο φόντο, να βάλουμε κάποιο theme και γιατί όχι εικονίδια στις διάφορες επιλογές; Λυπάμαι αλλά χάσατε. Αυτό είναι και σε όποιον αρέσει :joy:

Αλλά τουλάχιστον μπορούμε να προσθέσουμε επιλογές στο μενού! Κάθε επιλογή είναι ένα drop-in αρχείο στον κατάλογο /boot/efi/loader/entries και μοιάζει κάπως έτσι

title Pop!_OS
linux /EFI/Pop_OS-173df903-f9b0-414b-a482-f6aad82fafe2/vmlinuz.efi
initrd /EFI/Pop_OS-173df903-f9b0-414b-a482-f6aad82fafe2/initrd.img
options root=UUID=173df903-f9b0-414b-a482-f6aad82fafe2 ro quiet loglevel=0 systemd.show_status=false splash

απλό και κατανοητό νομίζω :grin: Στον υπολογιστή μου έχω μόνο ένα λειτουργικό και μια recovery έκδοση του, οπότε δεν το δοκίμασα με άλλα λειτουργικά ή Windows, αλλά θα τα ανακαλύψει και δεν θα έχει κάποιο πρόβλημα (ή τουλάχιστον έτσι ελπίζω). Αλλά έφτιαξα μια παραλλαγή που δείχνει πληροφορίες κατά την εκκίνηση. Απλά έκανα αντιγραφή το αρχείο και αφαίρεσα τα περιττά options.

Εκκίνηση σε BIOS ή σε άλλο λειτουργικό

Θέλεις να κάνεις reboot να μπεις στο BIOS να αλλάξεις μια ρύθμιση, την ώρα που υπάρχει σωματική ανάγκη – δεν παίρνει αναβολή; Γράψε τα παρακάτω και πήγαινε να κάνεις την δουλειά σου

sudo systemctl reboot --firmware-setup

αν θέλεις να μπεις σε άλλο λειτουργικό ή εντολή είναι

systemctl reboot --boot-loader-entry=HannaMondanaLinux.conf

και για να δεις τις διαθέσιμες επιλογές

systemctl reboot --boot-loader-entry=help

Για να γίνει η αλλαγή μόνιμη υπάρχει η εντολή

sudo bootctl set-default HannaMondanaLinux.conf

Περισσότερες πληροφορίες

Αν ισχυριστώ ότι ο μέσος χρήστης γνωρίζει για το (U)EFI Boot θα πω ένα φρικτό ψέμα. Υπάρχει πολύ σύγχυση σχετικά με το τι ακριβώς είναι και πως λειτουργεί. Σε αυτήν την διεύθυνση Managing EFI Boot Loaders for Linux υπάρχει πολύ υλικό για αυτό και τους διάφορους boot loaders και boot managers που υπάρχουν, χρήσιμο για κατανόηση, ή αν θέλεις να δοκιμάσεις κάτι άλλο. Μετά από αυτό για να ξεκαθαρίσεις τις βασικές έννοιες θα παραπέμψω, που αλλού; στο Arch Wiki ειδικά αν θέλεις να περάσεις το (δεύτερο) σύστημα σου σε αυτό.

Αν ξεκαθαρίσεις 2-3 πραγματάκια, το systemd-boot είναι πολύ πιο κατανοητό και πολύ πιο εύκολο από το grub. Γενικά μου αρέσει η λογική των αρχείων drop-in για τις ρυθμίσεις, και επιτέλους έχουμε μια προδιαγραφή, να ακολουθήσουν οι κατασκευαστές μητρικών και άλλων boot managers. Δεν γυρνάω πίσω στο grub, αν και μου λείπουν λίγο τα φρου φρου του. Αν θέλω κάτι τέτοιο θα δοκίμαζα το rEFInd.

Το grub είναι πλέον obsolete όπως και οι μητρικές που χρησιμοποιούν BIOS και κάποια στιγμή θα το αποχαιρετίσουμε πιστεύω. Αλλά τι τα θες; Επιτέλους η νέα έκδοση του devuan 3.1 μας πάει ακόμα πιο μπροστά. Επιτέλους μπορούμε ξανά να εγκαταστήσουμε μια διανομή που να χρησιμοποιεί το πολυαγαπημένο μας lilo :joy: :joy: :joy: :joy:

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

Το systemd-boot επιτρέπει πιο γρήγορη εκκίνηση. Αν και για κάποια συστήματα αυτή η διαφορά θα είναι αμελητέα και δεν αξίζει τον, όχι και πολύ, κόπο.