Εκτός αν ζείτε κάτω από ένα βράχο ή χειρότερα - δεν σας ενδιαφέρει πολύ το πώς λειτουργεί το Linux, πρέπει να έχετε ακούσει για το systemd, το (σχετικά) νέο σύστημα init που αντικαθιστά το παλιό και ξεπερασμένο SysV init που υιοθετήθηκε πρόσφατα από τα περισσότερα μεγάλα Linux distros.

Τι είναι ένα σύστημα init;

Όταν ξεκινήσει η μηχανή του Linux, θα εκτελεστεί πρώτα κάποιος "ενσωματωμένος" κώδικας, ο οποίος φορτώνεται πρώτα από το BIOS ή το UEFI, ακολουθούμενος από το bootloader, ο οποίος σύμφωνα με τη διαμόρφωσή του φορτώνει έναν πυρήνα Linux. Ο πυρήνας φορτώνει τους οδηγούς και, καθώς η πρώτη του δουλειά ξεκινάει τη διαδικασία init, η οποία είναι η πρώτη λαμβάνει το PID (Process ID) 1.

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

Ο τρόπος με τον οποίο εφαρμόζεται αυτό, ωστόσο, δεν είναι καθόλου ομοιόμορφος και αυτό πραγματικά σταματάει να είναι κοινό και σαφώς καθορισμένο.

Το παλιό σύστημα init

Το σύστημα init που χρησιμοποιήθηκε από τα περισσότερα mainstream Linux distros μέχρι πρόσφατα ήταν το System V init (ή το SysV init εν συντομία), το οποίο απέκτησε το όνομά του UNIX System V (Pronounced "System Five"), το πρώτο εμπορικά διαθέσιμο σύστημα UNIX. Το σύστημα V OS είχε έναν συγκεκριμένο τρόπο για να εκτελέσει τη διαδικασία του init και το SysV init έχει κρατήσει πιστό σε αυτό με την πάροδο των ετών.

Και εδώ και πολλά χρόνια. Το UNIX System V κυκλοφόρησε αρχικά το 1983, καθιστώντας την init SysV init μια προσέγγιση άνω των 30 ετών για την εκκίνηση μηχανών Linux.

Η ανάγκη για μια αλλαγή

Όπως έχει σημειωθεί, το SysV init έχει ξεπερασθεί και έχει καθυστερήσει να αντικατασταθεί. Μερικοί από τους λόγους για αυτό περιλαμβάνουν:

  • Το SysV init χρησιμοποιεί / sbin / init για να ξεκινήσει τη διαδικασία init, αλλά το ίδιο το init έχει πολύ περιορισμένο ρόλο. Το init κάνει λίγο παραπάνω από την έναρξη του /etc/init.d/rc, σύμφωνα με τη διαμόρφωση που διαβάζεται από το / etc / inittab, το οποίο με τη σειρά του θα τρέξει σενάρια για να κάνει την πραγματική εργασία της διαδικασίας init. Αυτό, εκτός εάν υπάρχει ειδική παρουσίαση (όπως με το startpar στο Debian), θα συμβεί διαδοχικά, ένα σενάριο ξεκινώντας από το άλλο, καθιστώντας την όλη διαδικασία αργή, καθώς κάθε σενάριο πρέπει να περιμένει για να ολοκληρωθεί το προηγούμενο.
  • Το SysV init δεν έχει πρόσβαση στο PID ή στις διαδικασίες που έχει ξεκινήσει (έμμεσα). Διαβάζει μόνο τα PID και τα συνδέει με τις πραγματικές διαδικασίες με έναν περίπλοκο και περίπλοκο τρόπο.
  • Για τους διαχειριστές συστημάτων που προσπαθούν να τροποποιήσουν το περιβάλλον κάτω από το οποίο θα ξεκινήσει μια συγκεκριμένη διαδικασία, είναι αρκετά δύσκολο με το SysV init. (Προκειμένου να επιτευχθεί αυτό, θα πρέπει να τροποποιηθεί η αρχική δομή που είναι υπεύθυνη για την έναρξη της δεδομένης διαδικασίας.)
  • Υπάρχει κάποια λειτουργικότητα κοινή σε κάθε υπηρεσία που δεν εφαρμόζεται από το SysV, αλλά κάθε διαδικασία θα έπρεπε να εφαρμοστεί από μόνη της, όπως η ίδια "δαίμονα" (να γίνει δαιμόνιο συστήματος), η οποία είναι μια περίπλοκη και μακρά διαδικασία. Αντί να υλοποιήσει αυτά τα βήματα μία φορά, το SysV απαιτεί από κάθε διαδικασία να κάνει τη δουλειά τους.
  • Το SysV αφήνει επίσης κάποια λειτουργικότητα σε εξωτερικά προγράμματα και δεν γνωρίζει τίποτα για τις υπηρεσίες που ξεκινούν από αυτές.

Όλα τα παραπάνω, και πολλά άλλα ελαττώματα στο σχεδιασμό, ή μάλλον το ξεπερασμένο σύστημα σχεδιασμού του SysV, έχει κάνει τη δημιουργία ενός σύγχρονου συστήματος init πολύ καιρό καθυστερημένο.

Εισάγετε σύστημα

Υπήρξαν πολλές προσπάθειες για τη δημιουργία ενός εναλλακτικού συστήματος init, του οποίου το σύστημα είναι μόνο ένα από αυτά. Το Ubuntu χρησιμοποιείται για να τρέξει το δικό του σύστημα init που ονομάζεται εκκίνηση. Το Gentoo εξακολουθεί να χρησιμοποιεί το OpenRC. Άλλα συστήματα init περιλαμβάνουν initng, busybox-init, runit και Mudur και άλλα.

Ο λόγος systemd είναι ένας σαφής νικητής είναι ότι έχει υιοθετηθεί από τις περισσότερες μεγάλες διανομές. Οι RHL και CentOS προχώρησαν φυσικά, καθώς ο Fedora ήταν ο πρώτος διανομέας που υιοθετήθηκε επίσημα το 2011. Ωστόσο, το σύστημα έχει γίνει το πρώτο σύστημα για να τα κυβερνήσει όλα, όταν το Debian 8 επισήμως άλλαξε στο systemd, φέρνοντας μαζί του το Ubuntu και τα παράγωγα, ξεπερνώντας την αρχική αντίθεση του Canonical (ή πιο συγκεκριμένα του Mark Shuttleworth) προς την systemd.

Πώς είναι διαφορετικό το σύστημα;

  • Ο Systemd στοχεύει στην παροχή ενός ενιαίου κεντρικού τρόπου διαχείρισης της αρχικής διαδικασίας από την αρχή μέχρι το τέλος.
  • Αρχίζει και σταματά τις διαδικασίες και τις υπηρεσίες ενώ παρακολουθεί τις εξαρτήσεις τους. Μπορεί ακόμη και να ξεκινήσει μια διαδικασία ως απάντηση στην απαίτηση εξάρτησης μιας άλλης διαδικασίας.
  • Εκτός από τις διαδικασίες εκκίνησης και τερματισμού κατά τη διάρκεια της εκκίνησης, το Systemd μπορεί επίσης να ξεκινήσει οποιαδήποτε στιγμή, όταν το σύστημα είναι σε εξέλιξη σε απόκριση ορισμένων γεγονότων ενεργοποίησης, όπως όταν είναι συνδεδεμένη μια συσκευή.
  • Επίσης, δεν απαιτεί διαδικασίες για να διαδηλώσουν τον εαυτό τους. Σε αντίθεση με το SysV init, το systemd μπορεί να χειριστεί τις υπηρεσίες που εκτελούνται χωρίς να χρειάζεται να περάσει από τη μακρά διαδικασία να γίνεις δαίμονες.
  • Σε αντίθεση με το SysV init, το systemd γνωρίζει και παρακολουθεί όλες τις διαδικασίες, συμπεριλαμβανομένων των PID, και η λήψη πληροφοριών σχετικά με τις διαδικασίες είναι πολύ απλούστερη για τους διαχειριστές συστημάτων υπό systemd.
  • Το Systemd υποστηρίζει δοχεία που είναι βασικά απομονωμένα περιβάλλοντα υπηρεσιών χωρίς την απαίτηση των εικονικών μηχανών. Αυτό έχει μεγάλες δυνατότητες για πιο ασφαλή και απλούστερα σχεδιασμό συστημάτων στο μέλλον.

Φυσικά αυτά είναι μόνο μερικά από τα μεγάλα πλεονεκτήματα. Για μια πλήρη συζήτηση σχετικά με τα πλεονεκτήματα του συστήματος, θα πρέπει να διαβάσετε τη "Δήλωση Συστήματος Θέσης" του Debian 8,

Αμφισβήτηση

Φυσικά το σύστημα δεν ήταν ευπρόσδεκτο από όλους. Στην πραγματικότητα, πολλοί έχουν και εξακολουθούν να το κρύβουν, ονομάζοντάς το μονολιθικό και δυσκίνητο, μερικοί με κατηγορούν ακόμη ότι πηγαίνουν στον "δρόμο των παραθύρων" να έχουν όλα συγκεντρωμένα. Πολλοί υποστηρίζουν ότι δεν είναι "ο τρόπος Linux", και σίγουρα systemd δεν φαίνεται να είναι σύμφωνα με τα πρότυπα POSIX, και αν θεωρούμε systemd ως εργαλείο (πέρα από το μόνο δυαδικό), είναι σίγουρα hugae.

Παρ 'όλα αυτά, το systemd είναι σαφώς ένα βήμα προς τα εμπρός, και ενώ δεν είναι τέλειο, μεγάλο μέρος της κριτικής που έχει λάβει έχει αντιμετωπιστεί από τον αρχικό συγγραφέα και προγραμματιστή του Lennart Poettering. Είναι σίγουρα μια πολύ αναγκαία πρόοδος και ένα βήμα από το παλιό σύστημα init. Ο Linus Torvalds, ο δημιουργός του Linux, δεν φαίνεται να πειράζει υπερβολικά, και ποιοι είμαστε για να διαφωνήσουμε με τον "Δημιουργό".

συμπέρασμα

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

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