Η ιστορία πίσω από το "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 – προγραμματιστές και διαχειριστές συστήματος.

Σε αυτό το άρθρο, θα συζητήσουμε και θα λύσουμε ακολουθώντας όλα τα ερωτήματα ένα προς ένα.

  1. Τι είναι το init;
  2. Τι είναι το systemd;
  3. Γιατί έπρεπε να αντικατασταθεί το init;
  4. Τι χαρακτηριστικά θα διαθέτει η 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 με κάτι πιο τέλειο έγινε αισθητή εδώ και πολύ καιρό και κατά καιρούς αναπτύχθηκαν αρκετές εναλλακτικές λύσεις, μερικές από τις οποίες έγιναν η εγγενής αντικατάσταση έναρξης της διανομής, μερικές από τις οποίες είναι:

  1. Upstart – Ένας αρχικός δαίμονας αντικατάστασης που υλοποιείται στο Ubuntu GNU/Linux και έχει σχεδιαστεί για να ξεκινά τη διαδικασία ασύγχρονα.
  2. Epoch – Ένας αρχικός δαίμονας αντικατάστασης βασισμένος στην απλότητα και τη διαχείριση υπηρεσιών, σχεδιασμένος να ξεκινά τη διαδικασία με ένα νήμα.
  3. Mudar – Ένας αρχικός δαίμονας αντικατάστασης γραμμένος σε Python, που υλοποιείται στο Pardus GNU/Linux και έχει σχεδιαστεί για να ξεκινά τη διαδικασία ασύγχρονα.
  4. 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
  1. Καθαρός, σταθερός και αποτελεσματικός σχεδιασμός.
  2. Απλούστερη διαδικασία εκκίνησης.
  3. Ταυτόχρονη και παράλληλη επεξεργασία κατά την εκκίνηση.
  4. Καλύτερο API.
  5. Απλή Σύνταξη Ενοτήτων.
  6. Δυνατότητα αφαίρεσης προαιρετικών εξαρτημάτων.
  7. Χαμηλή μνήμη.
  8. Βελτιωμένη τεχνική έκφρασης εξαρτήσεων.
  9. Οδηγίες αρχικοποίησης γραμμένες σε αρχείο ρυθμίσεων και όχι σε σενάριο φλοιού.
  10. Χρησιμοποιήστε το Unix Domain Socket.
  11. Προγραμματισμός εργασιών χρησιμοποιώντας συστηματικούς χρονομετρητές ημερολογίου.
  12. Καταγραφή συμβάντων με ημερολόγιο.
  13. Επιλογή καταγραφής συμβάντων συστήματος με systemd καθώς και syslog.
  14. Τα αρχεία καταγραφής αποθηκεύονται σε δυαδικό αρχείο.
  15. systemd κατάσταση μπορεί να διατηρηθεί για να κληθεί αργότερα στο μέλλον.
  16. Παρακολουθήστε τη διαδικασία χρησιμοποιώντας την ομάδα c του πυρήνα και όχι το PID.
  17. Η σύνδεση των χρηστών διαχειρίζεται το systemd-logind.
  18. Καλύτερη ενσωμάτωση με το Gnome για διαλειτουργικότητα.
Συστήματα συμφόρησης
  1. Όλα σε ένα μέρος.
  2. Όχι πρότυπο 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. Μην ξεχάσετε να μας δώσετε τα πολύτιμα σχόλιά σας στα παρακάτω σχόλια.