Η ιστορία πίσω από το "init" και το "systemd": Γιατί το "init" πρέπει να αντικατασταθεί με το "systemd" στο Linux
Είμαι συνδρομητής σε πολλές λίστες αλληλογραφίας που σχετίζονται με διάφορες Διανομές και Εφαρμογές Linux μόνο και μόνο για να ενημερώνομαι για το τι συμβαίνει. Ποια είναι τα νέα σφάλματα; Τι είναι τα Patches που κυκλοφόρησαν; Τι αναμένεται στην επόμενη κυκλοφορία; και ένα σωρό άλλα πράγματα. Αυτές τις μέρες η λίστα αλληλογραφίας είναι γεμάτη με το "Choose your side on Linux Divide", κυρίως στη λίστα αλληλογραφίας του Debian μαζί με μερικές άλλες.
Τι είναι το "Επιλέξτε την πλευρά σας στο Linux Divide";
Ο δαίμονας init πρόκειται να αντικατασταθεί με το daemon systemd σε ορισμένες από τις διανομές Linux, ενώ πολλοί από αυτούς τον έχουν ήδη εφαρμόσει. Αυτό δημιουργεί/θα δημιουργήσει ένα τεράστιο χάσμα μεταξύ του παραδοσιακού Unix/Linux Guard και του New Linux Guard – προγραμματιστές και διαχειριστές συστήματος.
Σε αυτό το άρθρο, θα συζητήσουμε και θα λύσουμε ακολουθώντας όλα τα ερωτήματα ένα προς ένα.
- Τι είναι το init;
- Τι είναι το systemd;
- Γιατί έπρεπε να αντικατασταθεί το init;
- Τι χαρακτηριστικά θα διαθέτει η systemd.
Τι έχει μέσα?
Στο Linux, το init είναι συντομογραφία του Initialization. Το init είναι μια διαδικασία δαίμονα που ξεκινά μόλις ξεκινήσει ο υπολογιστής και συνεχίζει να λειτουργεί μέχρι να τερματιστεί. Στην πραγματικότητα το init είναι η πρώτη διεργασία που ξεκινά όταν εκκινείται ένας υπολογιστής, καθιστώντας τον γονέα όλων των άλλων διεργασιών που εκτελούνται άμεσα ή έμμεσα και ως εκ τούτου τυπικά του εκχωρείται "pid=1".
Εάν με κάποιο τρόπο δεν μπορούσε να ξεκινήσει ο δαίμονας init, δεν θα ξεκινήσει καμία διαδικασία και το σύστημα θα φτάσει σε ένα στάδιο που ονομάζεται "Πανικός πυρήνα". Το init αναφέρεται συνήθως ως System V init. Το System V είναι το πρώτο εμπορικό λειτουργικό σύστημα UNIX που σχεδιάστηκε και οι χρήσεις του init στο μεγαλύτερο μέρος της σημερινής διανομής Linux είναι πανομοιότυπες με το System V OS με λίγες εξαιρέσεις όπως το Slackware που χρησιμοποιεί στυλ BSD και το Gentoo με χρήση προσαρμοσμένου init .
Η ανάγκη αντικατάστασης του init με κάτι πιο τέλειο έγινε αισθητή εδώ και πολύ καιρό και κατά καιρούς αναπτύχθηκαν αρκετές εναλλακτικές λύσεις, μερικές από τις οποίες έγιναν η εγγενής αντικατάσταση έναρξης της διανομής, μερικές από τις οποίες είναι:
- Upstart – Ένας αρχικός δαίμονας αντικατάστασης που υλοποιείται στο Ubuntu GNU/Linux και έχει σχεδιαστεί για να ξεκινά τη διαδικασία ασύγχρονα.
- Epoch – Ένας αρχικός δαίμονας αντικατάστασης βασισμένος στην απλότητα και τη διαχείριση υπηρεσιών, σχεδιασμένος να ξεκινά τη διαδικασία με ένα νήμα.
- Mudar – Ένας αρχικός δαίμονας αντικατάστασης γραμμένος σε Python, που υλοποιείται στο Pardus GNU/Linux και έχει σχεδιαστεί για να ξεκινά τη διαδικασία ασύγχρονα.
- systemd – Ένας αρχικός δαίμονας αντικατάστασης σχεδιασμένος για την παράλληλη εκκίνηση της διαδικασίας, που υλοποιείται σε μια σειρά τυπικών διανομών – Fedora, OpenSuSE, Arch, RHEL, CentOS κ.λπ.
Τι είναι το systemd;
Το systemd είναι ένας δαίμονας διαχείρισης συστήματος που ονομάζεται σύμφωνα με τη σύμβαση UNIX για την προσθήκη «d» στο τέλος του δαίμονα. Έτσι, ώστε να αναγνωρίζονται εύκολα. Αρχικά κυκλοφόρησε με GNU General Public License, αλλά τώρα οι εκδόσεις γίνονται με GNU Lesser General Public License. Παρόμοια με το init, το systemd είναι ο γονέας όλων των άλλων διεργασιών άμεσα ή έμμεσα και είναι η πρώτη διεργασία που ξεκινά κατά την εκκίνηση, επομένως συνήθως εκχωρείται ένα "pid=1".
Ένα σύστημα, μπορεί να αναφέρεται σε όλα τα πακέτα, τα βοηθητικά προγράμματα και τις βιβλιοθήκες γύρω από τον δαίμονα. Σχεδιάστηκε για να ξεπεράσει τις αδυναμίες του init. Είναι από μόνο του μια διεργασία παρασκηνίου που έχει σχεδιαστεί για την παράλληλη έναρξη διεργασιών, μειώνοντας έτσι τον χρόνο εκκίνησης και την υπολογιστική επιβάρυνση. Έχει πολλά άλλα χαρακτηριστικά σε σύγκριση με το init.
Γιατί χρειάστηκε να αντικατασταθεί;
Μια διαδικασία έναρξης ξεκινά σειριακά, δηλαδή, μια εργασία ξεκινά μόνο αφού η τελευταία εκκίνηση εργασίας ήταν επιτυχής και φορτώθηκε στη μνήμη. Αυτό συχνά είχε ως αποτέλεσμα καθυστερημένο και μεγάλο χρόνο εκκίνησης. Ωστόσο, το systemd δεν σχεδιάστηκε για ταχύτητα, αλλά για να κάνει τα πράγματα τακτοποιημένα, τα οποία με τη σειρά τους αποφεύγουν όλη την απαραίτητη καθυστέρηση των Ηνωμένων Εθνών.
Χαρακτηριστικά του systemd
- Καθαρός, σταθερός και αποτελεσματικός σχεδιασμός.
- Απλούστερη διαδικασία εκκίνησης.
- Ταυτόχρονη και παράλληλη επεξεργασία κατά την εκκίνηση.
- Καλύτερο API.
- Απλή Σύνταξη Ενοτήτων.
- Δυνατότητα αφαίρεσης προαιρετικών εξαρτημάτων.
- Χαμηλή μνήμη.
- Βελτιωμένη τεχνική έκφρασης εξαρτήσεων.
- Οδηγίες αρχικοποίησης γραμμένες σε αρχείο ρυθμίσεων και όχι σε σενάριο φλοιού.
- Χρησιμοποιήστε το Unix Domain Socket.
- Προγραμματισμός εργασιών χρησιμοποιώντας συστηματικούς χρονομετρητές ημερολογίου.
- Καταγραφή συμβάντων με ημερολόγιο.
- Επιλογή καταγραφής συμβάντων συστήματος με systemd καθώς και syslog.
- Τα αρχεία καταγραφής αποθηκεύονται σε δυαδικό αρχείο.
- systemd κατάσταση μπορεί να διατηρηθεί για να κληθεί αργότερα στο μέλλον.
- Παρακολουθήστε τη διαδικασία χρησιμοποιώντας την ομάδα c του πυρήνα και όχι το PID.
- Η σύνδεση των χρηστών διαχειρίζεται το systemd-logind.
- Καλύτερη ενσωμάτωση με το Gnome για διαλειτουργικότητα.
Συστήματα συμφόρησης
- Όλα σε ένα μέρος.
- Όχι πρότυπο POSIX.
Systemd and Distro Integration
- Linux Distribution
Ενσωμάτωση
- Fedora
Ναι, πρώτη διανομή που θα υιοθετήσει το systemd
- Arch
Ναί
- RedHat
Ναί
- CentOS
Ναί
- Debian
-
Ναι, το Debian 8 με την κωδική ονομασία Jessie θα έχει systemd από προεπιλογή
- Gentoo
Ναι, αλλά πρέπει να γίνει λήψη, εγκατάσταση και ρύθμιση παραμέτρων με προσαρμοσμένο init
- OpenSUSE
Ναί
- Slack
Όχι (αν και δεν έχει υιοθετηθεί μέχρι τώρα στο slackware, ο Patric Volkerding δεν έχει δείξει καμία ένδειξη εάν θα υιοθετηθεί ή όχι)
- Ubuntu
Ναι, πρέπει να εγκατασταθεί και να ρυθμιστεί με το Upstream.
Αμφισβήτηση
Ο Linus Torvalds, επικεφαλής αρχιτέκτονας του πυρήνα Linux, πιστεύει ότι η στάση του βασικού προγραμματιστή του systemd προς τους χρήστες και οι αναφορές σφαλμάτων δεν φαίνονται εντάξει. Αναφέρθηκε επίσης ότι η συστημική φιλοσοφία είναι περίεργη και ένας ξένος τρόπος ελέγχου των διαδικασιών του συστήματος. Το ίδιο έχει καταγραφεί από τον Patric Volkerding και άλλους αξιόλογους χρήστες και προγραμματιστές Linux καθώς και από το διαδικτυακό φόρουμ, κατά καιρούς.
systemd vs init
Features | init | systemd |
DBus Dependency – Mandatory | No | Yes |
Device based Activation | No | Yes |
Device dependency configuration with udev | No | Yes |
Timer based Activation | Cron/at | Proprietary |
Quota Management | No | Yes |
Automatic Service Dependency Handling | No | Yes |
Kills users Process at logout | No | Yes |
Swap Management | No | Yes |
SELinux integration | No | Yes |
Support for Encrypted HDD | No | Yes |
Static kernle module loading | No | Yes |
GUI | No | Yes |
List all the child processes | No | Yes |
Sysv compatible | Yes | Yes |
Interactive booting | No | Yes |
Portable to non x86 | Yes | No |
Adopted on | Several Distro | Several Distro |
Parallel service startup | No | Yes |
Resource limit per service | No | Yes |
Easy extensible startup script | Yes | No |
Separate Code and Configuration File | Yes | No |
Automatic dependency calculation | No | Yes |
Verbose debug | Yes | No |
Version | N/A | V44+ |
Size | 560 KB | N/A |
Number of Files | 75 files | 900 files + glib + DBus |
Lines of code – LOC | 15000 (Approx) | 224000 (Approx) (inc Codes, comments and white space) 125000 (Approx) (acctual code) |
συμπέρασμα
Οτιδήποτε τρέχει ως pid=1 δεν πρέπει να σπάει, να μην είναι ακατάστατο και πρέπει να ελέγχεται από τους χρήστες αποτελεσματικά και αποδοτικά. Πολλοί χρήστες πιστεύουν ότι η αντικατάσταση του init με το systemd δεν είναι τίποτα άλλο από την επανεφεύρεση του τροχού κάθε φορά ως παρενέργεια του Linux. Αλλά αυτή είναι η ποικιλόμορφη φύση του Linux. Αυτό συμβαίνει επειδή το Linux είναι πολύ ισχυρό. Η αλλαγή είναι καλή και πρέπει να την εκτιμήσουμε αν είναι για καλό λόγο.
Αυτα για τωρα. Θα είμαι ξανά εδώ με ένα άλλο ενδιαφέρον άρθρο που θα λατρέψετε να διαβάσετε. Μέχρι τότε μείνετε συντονισμένοι και συνδεδεμένοι στο Tecmint. Μην ξεχάσετε να μας δώσετε τα πολύτιμα σχόλιά σας στα παρακάτω σχόλια.