ΕΛ/ΛΑΚ | creativecommons.gr | mycontent.ellak.gr |
freedom

Νέα από τον πλανήτη…planet.ellak.gr: Γιατί το systemd διχάζει ακόμα;

by: Cerebrux

Το systemd είναι σχεδόν 10 ετών, αλλά ο διχασμός για αυτό στην κοινότητα Linux δεν έχουν υποχωρήσει. Αν και χρησιμοποιείται από πολλές μεγάλες διανομές Linux, η σκληρή αντιπαράθεση δεν έχει σταματήσει.

Το systemd είναι ένα λογισμικό που παρέχει μια σειρά στοιχείων και δυνατοτήτων του συστήματος για λειτουργικά συστήματα Linux.

Ο κύριος στόχος του είναι να ενοποιήσει τη διαμόρφωση και τη συμπεριφορά των υπηρεσιών σε διανομές Linux. Το κύριο συστατικό του systemd είναι ένας «διαχειριστής συστήματος και υπηρεσίας» – ένα σύστημα init που χρησιμοποιείται για την εκκίνηση του περιβάλλοντος χρήστη και τη διαχείριση των διεργασιών του χρήστη.

Από το 2015, η πλειονότητα των διανομών Linux έχουν υιοθετήσει το systemd, αντικαθιστώντας άλλα συστήματα που κληρονομήθηκαν από το UNIX V και BSD. Παρά την αποδοχή του από την πλειοψηφία των διανομών Linux, παραμένει ένα ζήτημα στο οποίο υπάρχουν δύο αντικρουόμενες πλευρές.

Το Linux Boot Sequence

Όταν ενεργοποιείτε τον υπολογιστή σας, γίνεται εκκίνηση του υλικού και στη συνέχεια (ανάλογα με τον τύπο του τομέα εκκίνησης που χρησιμοποιεί ο υπολογιστής σας) εκτελείται είτε το MBR είτε το UEFI partition.

Η τελευταία ενέργεια και των δύο είναι η εκκίνηση του πυρήνα Linux. Ο πυρήνας φορτώνεται στη μνήμη, αποσυμπιέζεται και αρχικοποιείται. Ένα προσωρινό σύστημα αρχείων δημιουργείται στη μνήμη RAM, συνήθως από ένα βοηθητικό πρόγραμμα που ονομάζεται initramfs ή initrd . Αυτό επιτρέπει τη φόρτωση των απαιτούμενων drivers.

Αυτό, με τη σειρά του, επιτρέπει στο σύστημα αρχείων να φορτώνει και να προετοιμάζεται για τη δημιουργία του περιβάλλοντος χώρου χρήστη (user-space). Η δημιουργία του user-space γίνεται από τη διαδικασία init, η οποία είναι η πρώτη διαδικασία που ξεκινάει από τον πυρήνα. Έχει ένα αναγνωριστικό διεργασίας (PID) 1. Όλες οι άλλες διαδικασίες είναι είτε άμεσα είτε έμμεσα «παιδιά» της διαδικασίας init.

Πριν από το systemd, η κύρια προεπιλογή για τη διαδικασία init ήταν ένας κλώνος του Unix System V init. Υπήρχαν άλλες διαθέσιμες επιλογές, αλλά το System V init ήταν η τυπική επιλογή στις περισσότερες διανομές που δεν προέρχονται από το Berkeley Software Distribution (BSD). Επειδή προήλθε απευθείας από το Unix System V – τον πνευματικό πρόγονο του Linux – πολλοί το θεωρούν «τον επίσημο τρόπο» για το πως «πρέπει» να είναι ένα init σύστημα.

Η διαδικασία init ξεκινά όλους τους daemons και τις υπηρεσίες που απαιτούνται για να λειτουργήσει το λειτουργικό σύστημα με ουσιαστικό, διαδραστικό τρόπο. Αυτοί οι daemons χειρίζονται πράγματα όπως η δικτύωση, ενεργοποίηση υλικού μέσα στον υπολογιστή σας και παρέχει μια οθόνη εκκίνησης. Πολλές από αυτές τις διαδικασίες παρασκηνίου συνεχίζουν να εκτελούνται μετά την εκκίνησή τους όπως συλλογή συμβάντων καταγραφής, παρακολουθούν αλλαγές υλικού όταν εισάγετε ή καταργείτε συσκευές και διαχειρίζονται τις συνδέσεις χρηστών.

Οι εναλλακτικές

Αρκετά έργα έχουν προσπαθήσει να παράγουν μια εναλλακτική λύση στο παραδοσιακό Sys V init. Ένα από τα κύρια προβλήματα του Sys V init που προσπάθησαν να επιλύσουν είναι το ζήτημα με τις διεργασίες όπου ξεκινούν σειριακά, το ένα μετά το άλλο. Για να βελτιωθεί η αποτελεσματικότητα της διαδικασίας εκκίνησης του συστήματος, πολλά εναλλακτικά έργα χρησιμοποιούν παραλληλισμό για να ξεκινήσουν διαδικασίες ταυτόχρονα και ασύγχρονα.

Ακολουθούν ορισμένα από τα πιο δημοφιλή:

  • Upstart: Αναπτύχθηκε από την Canonical, χρησιμοποιήθηκε για αρκετές εκδόσεις στο Ubuntu, στο Red Hat Enterprise Linux (RHEL) CentOS και Fedora.
  • Runit: Χρησιμοποιείται στο FreeBSD και άλλα παράγωγα BSD, macOS και Solaris, καθώς και σε διανομές Linux όπως το Void Linux που το έχει ως προεπιλεγμένο σύστημα init.
  • OpenRC: Το OpenRC είναι το προεπιλεγμένο σύστημα init των TrueOS, Gentoo, Alpine Linux, Hyperbola GNU/Linux-libre, Parabola GNU/Linux-libre, Artix Linux, Maemo Leste, ενώ ορισμένα άλλα όπως το Devuan (Debian-fork) το προσφέρουν ως επιλογή.
  • s6-linux-init: Χρησιμοποιείται στο Obarun Linux, αποτελεί «αντικατάσταση» του System V init (s5) και σχεδιάστηκε για να ακολουθεί στενά τη φιλοσοφία του Unix:

κάνε ένα πράγμα και κάνε το καλά

πηγή: UNIX Philosophy

Υπάρχουν πολλοί άλλοι με διαφορετική λειτουργικότητα και σχεδιασμό. Ωστόσο, κανένας από αυτά δεν προκάλεσε τέτοια διαμάχη όσο το systemd.

Ο δρόμος του systemd

Το systemd κυκλοφόρησε το 2010 και χρησιμοποιήθηκε στο Fedora το 2011. Από τότε, έχει υιοθετηθεί από πολλές διανομές. Αναπτύχθηκε από τους Lennart Poettering και Kay Sievers, δύο μηχανικούς λογισμικού της RedHat.

Το systemd είναι πολύ περισσότερο από μια αντικατάσταση init. Αντίθετα, είναι μια σουίτα περίπου 70 binary αρχείων που χειρίζονται την αρχικοποίηση του συστήματος, τις υπηρεσίες, τα logs, και πολλές άλλες λειτουργίες (όπως π.χ. το πρόσφατο Systemd-HomeD) τα οποία φυσικά ήδη τα χειριζόταν ο Linux πυρήνας. Το μεγαλύτερο μέρος αυτών των δυνατοτήτων του systemd δεν έχει καμία σχέση με την προετοιμασία του συστήματος. Μερικοί από τους daemons που παρέχονται από το systemd είναι:

  • systemd-boot: Αντικαταστάτης του GRUB για UEFI
  • systemd-udevd: Διαχειρίζεται τις συσκευές.
  • systemd-logind: Διαχειρίζεται τις συνδέσεις χρηστών.
  • systemd-resolved: Παρέχει domain resolve σε τοπικές εφαρμογές.
  • systemd-networkd: Εντοπίζει συσκευές δικτύου και τις διαχειρίζεται.
  • systemd-tmpfiles: Δημιουργεί, διαγράφει και καθαρίζει προσωρινά αρχεία και καταλόγους.
  • systemd-localed: Διαχειρίζεται τις τοπικές ρυθμίσεις συστήματος.
  • systemd-machined: Εντοπίζει και παρακολουθεί εικονικές μηχανές και containers.
  • systemd-nspawn: Μπορεί να ξεκινήσει μια εντολή ή άλλη διεργασία σε ένα ελαφρύ namespace container, παρέχοντας μια λειτουργία παρόμοια με chroot.

Αυτά φυσικά είναι μόνο η κορυφή του παγόβουνου, που είναι και η ουσία του θέματος. :

Το systemd έχει από καιρό ξεπεράσει τις ιδιότητες αυτού που απαιτείται και χρειάζεται από ένα σύστημα init, με αποτέλεσμα, σύμφωνα με τους αντιπάλους του, να θεωρούν ότι έχει χάσει τον προσανατολισμό του.

Πολύ μεγάλο και με πολλές αρμοδιότητες

Οι αντίπαλοι του systemd επισημαίνουν τον μεγάλο σε αριθμό και περίεργο συνδυασμό λειτουργιών που περιλαμβάνει οι οποίες υπήρχαν ήδη στο Linux και ίσως, μερικές από αυτές χρειάζονταν μια ανανέωση ή μια νέα προσέγγιση.

Το systemd έχει αναφερθεί και ως ένα κρίσιμο – μοναδικό σημείο αποτυχίας για πάρα πολλές λειτουργίες, αλλά αυτό δεν φαίνεται να δικαιολογείται. Βεβαίως, παραβιάζει τη φιλοσοφία του Unix στο ζήτημα της δημιουργίας μικρών εργαλείων που λειτουργούν αρμονικά μαζί αντί της δημιουργίας μεγάλου λογισμικού που κάνει «τα πάντα όλα».

Αν και το systemd δεν είναι αυστηρά μονολιθικό (αποτελείται από πολλά binaries), περιλαμβάνει πολλά διαφορετικά εργαλεία διαχείρισης και εντολές κάτω από μια ομπρέλα. Αν και όντως είναι μεγάλο, δεν είναι το μόνο στοιχείο στο Linux που είναι μεγάλο. Ο πυρήνας έχει σχεδόν 28 εκατομμύρια γραμμές κώδικα ενώ το systemd έχει 1.3 εκατομμύρια. Με άλλα λόγια είναι περίπου στο 5% του μεγέθους του πυρήνα. Αντίθετα ο αριθμός γραμμών για μια σύγχρονη υλοποίηση του System V init δεν ξεπερνάει τις 1.800 γραμμές κώδικα.

Τι είχε στο μυαλό του ο Poettering

Ο Poettering φαίνεται ότι εξαρχής «αγνοεί» τα όποια πρότυπα που έχουν θέσει στην IEEE και το POSIX. Στην πραγματικότητα σε μια παλιότερη συνέντευξή του, ενθάρρυνε τους προγραμματιστές να αγνοήσουν το POSIX:

«Λοιπόν, πάρτε το βιβλίο The Linux Programming Interface, διαβάστε το αλλά αγνοήστε όλα όσα λέει σχετικά με τη συμβατότητα κατά τα πρότυπα POSIX και φτιάξτε το εκπληκτικό λογισμικό σας για Linux. Είναι αρκετά ανακουφιστικό! » πηγή: FOSDEM 2011

Υπήρξαν κατηγορίες ότι το systemd είναι ένα έργο της Red Hat που ωφελεί μόνο το Red Hat και ότι «επιβλήθηκε» στον ευρύτερο οικοσύστημα διανομών του Linux. Πράγματι, το systemd γεννήθηκε στη Red Hat και διευθύνεται από αυτήν ωστόσο από τους 1.000+ συνεισφέροντες, μόνο μια μικρή μερίδα δουλεύει για την Red Hat.

Στον δρόμο της Red Hat;

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

Στην πραγματικότητα οι διανομές Linux δεν ακολουθησαν τυφλά την Red Hat αλλά υιοθέτησαν το systemd μετά από σοβαρή και ανοιχτή διαβούλευση. Για παράδειγμα η συζήτηση για την υιοθέτηση η μη του systemd στο Debian, «μαινόταν» στις λίστες αλληλογραφίας του Debian για μεγάλο χρονικό διάστημα. Ωστόσο, το 2014, η κοινότητα ψήφισε να υιοθετήσει το systemd ως το προεπιλεγμένο σύστημα init αλλά επίσης να υποστηρίξει και πιθανές εναλλακτικές λύσεις.

Το Debian είναι ένα σημαντικό παράδειγμα επειδή δεν προέρχεται από την RedHat, το Fedora ή το CentOS. Οι αποφάσεις που λαμβάνονται από την κοινότητα του Debian γίνονται μετά από εκτεταμένες συζητήσεις και στο τέλος ψηφίζουν χρησιμοποιώντας τη μέθοδο ψηφοφορίας Condorcet. Ακόμα και για αυτή την απόφαση η κοινότητα Debian ψήφισε ξανά τον Δεκέμβριο του 2019 και το αποτέλεσμα ήταν να συνεχίσει να επικεντρώνεται στο systemd και να συνεχίζει να αναζητά εναλλακτικές λύσεις.

Οι περιορισμένες επιλογές

Γενικά δεν μπορείτε να επιλέξετε αν θα χρησιμοποιήσετε το systemd με μια συγκεκριμένη διανομή Linux. Αντίθετα, οι ίδιες οι διανομές επιλέγουν αν θέλουν να το χρησιμοποιήσουν οπότε το μόνο που μπορείτε να επιλέξετε είναι το ποια διανομή Linux θα χρησιμοποιήσετε.

Σε όσους χρησιμοποιούν το Debian, το Fedora, το CentOS, το Ubuntu, το Arch, το Solus και το openSUSE, αλλά αντιτίθενται στην υιοθέτηση του systemd, μπορεί να αισθάνονται προδομένοι. Ιδιαίτερα δε αν είναι υπέρμαχοι της UNIX φιλοσοφίας και των POSIX προτύπων, μπορεί να θεωρήσουν αδύνατο να συνεχίσουν να χρησιμοποιούν αυτήν τη διανομή.

Μέσα σε αυτή την 10ετή «μάχη» γεννήθηκαν οι διανομές που για τους μεν είναι σωτήριες για τους δε είναι διανομές «διαμαρτυρίας».

Επίλογος

Υπάρχει φυσικά ένα ευρύ φάσμα στο ζήτημα της αποδοχής η μη του systemd. Στο ένα άκρο, είναι αυτοί που δεν καταλαβαίνουν τα ζητήματα αυτά (ή και δεν τους ενδιαφέρει) και από την άλλη, είναι οι παθιασμένοι αντιρρητές. Κάπου στη μέση είναι εκείνοι που δεν τους αρέσουν μεν οι αλλαγές, αλλά δεν ενοχλούνται αρκετά ώστε να αλλάξουν διανομή. Τέλος, κάπου σε αυτό το φάσμα είναι και αυτοί που δεν πιστεύουν στην φιλοσοφία του UNIX μιας και το Linux… δεν είναι UNIX, και ότι σχετικά με το POSIX το μόνο που πρέπει να φροντίσει το Linux είναι η διαλειτουργικότητα- φορητότητα μεταξύ των διανομών Linux.

Όπου και αν εντάσσεστε σε αυτό το φάσμα διαφορετικών απόψεων, το μόνο σίγουρο είναι ότι το systemd θα είναι εδώ για μεγάλο χρονικό διάστημα. Εάν διαχειρίζεστε υπηρεσίες για πελάτες, ή σκοπεύετε να ασχοληθείτε με DevOPs, με διαχείριση Containers, Kubernetes κλπ θα πρέπει να μάθετε το systemd. Αν η δουελειά σας δεν έχει να κάνει με το Linux και το χρησιμοποιείτε στο σπίτι τότε, επιλέξτε μια διανομή που ανταποκρίνεται στις ανάγκες σας και την φιλοσοφία σας.

Παραπομπές:

Πηγή άρθρου: https://planet.ellak.gr/ https://cerebrux.net/

One thought on “Νέα από τον πλανήτη…planet.ellak.gr: Γιατί το systemd διχάζει ακόμα;

  1. Το systemd καθυστερούσε σημαντικά τον υπολογιστή μου. Για να κλείσει ο υπολογιστής ήθελε 1.5λεπτό.

    Στη συνέχεια ψάχνοντας άρχισα να διαβάζω πως οι μεγάλες εταιρείες άρχισαν να διυσδείουν στο Linux. Έτσι η RedHat άρχισε με τους προγραμματιστές της να καταλαμβάνει καίριες θέσεις. Μην ξεχνάμε και ποιος ήταν υπεύθυνος για την τρύπα στο ssh! Επομένως αυτό που λέει το άρθρο πως είναι λίγοι οι προγραμματιστές της RedHat και περισσότεροι αυτοί που συνεισφέρουν είναι άκυρο καθώς εξαρτάται από το ποιος στην τελική κάνει τα commit στον κώδικα και όχι ποιος συνεισφέρει αλλαγές.

    Το systemd έρχεται να επισκιάσει τη λογική του διαλέγω τι θέλω και συνθέτω το σύστημά μου. Πέρα από το ότι είναι υπερβολικά πολύπλοκο και κακογραμμένο σε αναγκάζει εκ των πραγμάτων να χρησιμοποιήσεις και άλλα τόσα προγράμματα σε αντικατάσταση άλλων σαφώς καλύτερων και πολλές φορές ελαφρύτερων.

    Οι προγραμματιστές του systemd δεν ακούν τους χρήστες. Όποιος παρακολουθεί mailing list θα δει πως πλέον δεν είναι θέμα αποφάσεων κοινότητας και χρηστών. Κακά τα ψέματα, το Linux είναι πλέον ένα δωρεάν λειτουργικό από μεγάλες εταιρείες.

    Το άρθρο ξεχνάει να αναφέρει πως πολλοί βετεράνοι του Debian αποχώρησαν με τά την απόφαση για το systemd. Μερικοί έφτιαξαν το Devuan που κερδίζει έδαφος – είναι το Debian χωρίς systemd – αλλά δε διαφαίνεται να μπορέσει στο μέλλον να ανεξηρτατοποιηθεί.

    Η σύγκριση του πυρήνα με το systemd στο άρθρο είναι άστοχη.

    Αυτό που έχω παρατηρήσει τελευταία είναι η φυγή πολλών που χρησιμοποιούσαν Linux προς BSD λύσεις, όπως το FreeBSD και το OpenBSD. Το ίδιο θα κάνω και εγώ με την πρώτη ευκαιρία.

    Όσοι χρησιμοποιείται ελεύθερο λογισμικό να θυμάστε και τη φράση των προγόνων μας: «Φοβού τους Δαναούς και δώρα φέροντας» – για ποιο λόγο να ρίξουν τόσα χρήματα μεγάλες εταιρείες…

Leave a Reply to Ελεύθερος Πολίτης Cancel reply