Πολλά ακούγονται για τα διάφορα εναλλακτικά inits Αλλά κανένας από όσους εναντιώνονται στο systemd
δεν μπήκε στον κόπο να μας πει που υστερούν και που υπερτερούν. Ο Laurent Bercot, γνωστός και σαν Ska ή skarnet κάνει επιτέλους μια σύγκριση. Σαν τον δημιουργό του s6
[1] η γνώμη του μετράει, αλλά δεν μπορεί να χαρακτηριστεί προφανώς αντικειμενική. Επίσης δεν πρέπει να ξεχνάμε πως κάθε σύστημα έχει και τον δικό του σχεδιασμό, στόχους και χρήσεις.
[1] Ένα ενδιαφέρον εναλλακτικό init system που έχει υιοθετηθεί από 2 μικρές διανομές. Στο παρόν φόρουμ θα βρείτε αναλυτική παρουσίαση του
Ελπίζω να αποτελέσει επιτέλους μια βάση για κάποιο σωστό διάλογο, χωρίς ανοησίες του στυλ μας παρακολουθεί η NASA. Με μια ελπίδα ζει κανείς
Requirement | OpenRC | systemd | s6-rc 0.5.2.1 |
---|---|---|---|
Extremely reliable? | Not really. OpenRC’s code paths are more convoluted than they need to be. | No. systemd is known for its complexity and unpredictability. | Yes. s6-rc is as simple and straightforward as a service manager can be.[/color] |
Lightweight? | Reasonably. OpenRC consumes a little more resources than would strictly be needed. | No. systemd uses way too many resources for system infrastructure software. | Yes. s6-rc was designed to be as lightweight as possible. |
Easy to bootstrap? | Yes. OpenRC is C and shell. | Yes. systemd is C. However, it only supports the GNU libc, which may be a problem for musl-based distributions. | Yes. s6-rc is C. |
Reproducible service environment? | No. OpenRC starts services as scions of the openrc or service command. | Yes. systemd always spawns the services from pid 1. | Yes. s6-rc always spawns the services from its supervision tree. |
Working with a supervision system? | Not really. OpenRC can spawn rudimentary supervisors for its daemons, but the supervisors are not supervised themselves and offer few benefits. | Yes. systemd provides process supervision itself. | Yes. s6-rc works with the s6 process supervision system. |
Guarantees system bootability? | No. A configuration change can make the system unbootable. | No. A configuration change can make the system fail to boot — or even to shut down. | Yes. If a configuration applies successfully, the system will boot. |
Parallel? | Not really. OpenRC has a parallel mode that has never worked properly and is actively discouraged by its developers. | Yes, and too much: systemd cheats and ignores some dependencies in order to start services faster. It impacts its reliability and predictability. | Yes. s6-rc starts services exactly when it’s safe to do so. |
Supports readiness notification? | No. OpenRC’s startup sequence is full of race conditions. | Yes, via the sd_notify protocol. | Yes, via the s6 notification protocol. |
Interfaces with external events? | No, which is a main reason why Alpine aims to replace it. | systemd supports dynamic events internally, and provides its own network manager, but does not interface with other software. | No. The 0.5.2.1 version of s6-rc uses a static service database and does not accommodate external events. |
Declarative service files? | Simple services can be configured purely declaratively. For complex cases, code snippets are still needed. | The unit files are as declarative as can be. | Service configuration files are scripts, no syntactic sugar is provided to the user. |
Usable in containers? | In theory yes, but OpenRC embeds a lot of policy that makes it difficult to adapt and more of an annoyance than the benefit is worth. | As with everything systemd, the features are there, as long as you fully opt into the model; here, the host has to run systemd. Plus, systemd does not support musl, and is too big to be a good fit for containers. | s6-rc is small and separates mechanism from policy, so it’s possible to write container-specific service sets. |
Κάθε τι δεν μετράει το ίδιο, και ο συγγραφέας χρησιμοποιεί ένα χρωματικό κώδικα, που δυστυχώς δεν μπορώ να κάνω κάτι τέτοιο στο φόρουμ. Οπότε προσπάθησα να το μεταφέρω με emoji. Ανατρέξτε στην αρχική δημοσίευση, και επισημάνετε τυχόν λάθη.
Προσωπική γνώμη
Επιτέλους κάποια σοβαρότητα από κάποιον που δεν γουστάρει το systemd
γιατί από την σοβαρότητα κάποιων υποστηρικτών και διανομών, χορτάσαμε, ευχαριστώ Αν θέλεις να αντικαταστήσεις κάτι θα πρέπει πρώτα να γνωρίζεις τι κάνει καλά ο ανταγωνιστής σου και τι κάνει λάθος. Και να κάνεις κάτι καλύτερο, αν τα καταφέρεις. Όχι να είσαι απλά “αντί”…
Η σύγκριση γίνετε μόνο στο systemd-init
και το systemd κάνει πολύ περισσότερα, αλλά ας μείνουμε στο init
κομμάτι μόνο. Δεν συμφωνώ καθόλου με τις δυο πρώτες θέσεις. Την δεύτερη την κατανοώ λιγάκι, μιας και το κείμενο έχει γραφτεί για τις ανάγκες του Alpine Linux
που δεν είναι μια διανομή γενικής χρήσης. Η διανομή χρησιμοποιεί την musl
οπότε δεν έχει κανένα νόημα η θέση 3. Στην πραγματικότητα, για “πολιτικούς” λόγους το θεωρώ πλεονέκτημα. Είμαι υπέρ του GPL και η musl
δεν είναι. Αλά η σοβαρή ερώτηση είναι: “Τι δεν υποστηρίζει η musl και δεν μπορεί να τρέξει το systemd;” Μάλλον κάποια χαρακτηριστικά ασφάλειας του πυρήνα, και άρα δεν κάνει πλήρη χρήση των δυνατοτήτων του. Επίσης δεν αναφέρει καν την λέξη cgroup
στο κείμενο…
Την θέση “Guarantees system bootability? " δεν την κατάλαβα καθόλου. " If a configuration applies successfully, the system will boot.” Μα το θέμα είναι στην αντίθετη περίπτωση… Επίσης δεν κατάλαβα το “Interfaces with external events?” την στιγμή που κάνει χρήση του D-Bus.
Ας κρατήσουμε το συμπέρασμα του συγγραφέα πως το runit
δεν έχει κάτι σημαντικό να προσφέρει και έχει πολλές αδυναμίες. Το s6
κατά το ίδιο τον συγγραφέα του, είναι απλά ένα πειραματικό πρωτότυπο που δεν είναι έτοιμο ακόμα και του λείπουν σημαντικά χαρακτηριστικά.
Προφανώς και οι γνώμες μου είναι εξίσου μην αντικειμενικές, έχω μεν το πλεονέκτημα να μην γράφω κάποιο init system (σικ), και να μην είμαι σε κάποιο στρατόπεδο φανατικός και απλά να βλέπω τι καλό υπάρχει. Ταυτόχρονα όμως δεν είμαι και κάποιος ειδικός, αλλά απλά κάποιος άσχετος που έχει διαβάσει πολλά και έχει γράψει κάποια λίγα. Αλλά άσχετοι δεν θα είμαστε πάντοτε όλοι μας; Ειλικρινά ελπίζω να μπορέσει να γίνει κάποια καλή κουβέντα επιτέλους.
Διαβάστε
- H πηγή του πίνακα: skarnet.com: projects
- Για το Alpine Linux και γιατί χρειάζεται κάτι σαν το systemd: