Ποιόν σταθερό πυρήνα

πρέπει να χρησιμοποιούμε;

Ένα εύλογο ερώτημα που προκύπτει σε όσους/ες ενδιαφέρονται για τη σωστή και ασφαλή λειτουργία του συστήματός τους. Ποιο πυρήνα πρέπει να χρησιμοποιώ ώστε να:

  1. Είναι το σύστημά μου σταθερό
  2. Είναι το σύστημά μου ασφαλές (απειλές, επιθέσεις κλπ.)
  3. Υποστηρίζονται νέες συσκευές, οδηγοί (drivers) κλπ.
  4. Διαθέτει νέα χαρακτηριστικά και βελτιώσεις που θα κάνουν την εμπειρία χρήσης καλύτερη

κ.α.

Σύντομη απάντηση

Κατά σειρά προταιρεότητας από τη καλύτερη(απάντηση) στη χειρότερη:

α) Εκείνον που μας προσφέρει η διανομή που χρησιμοποιούμε, πλήν ίσως λίγων εξαιρέσεων.
β) Τον τελευταίο σταθερό πυρήνα που είναι διαθέσιμος στο kernel.org
γ) Τον τελευταίο LTS πυρήνα που είναι διαθέσιμος στο kernel.org
δ) Παλαιότερο, πλήν όμως υποστηριζόμενο, LTS πυρήνα που είναι διαθέσιμος στο kernel.org


Στο παραπάνω στιγμιότυπο οθόνης, όπως αυτό τραβήχτηκε στις 25.08.2018, βλέπουμε ότι ο τελευταίος σταθερός πύρήνας είναι ο 4.18.5. Ο 4.14.67 είναι ο τελευταίος LTS πυρήνας.
Επίσης, οι 4.9.124 , 4.4.152 και 3.16.57 είναι παλαιότεροι LTS πυρήνες οι οποίοι συντηρούνται ακόμη για κάποιο λόγο.
Οι 4.17.19 και 3.18.119 έχουν χαρακτηριστεί EOL (End Of Life) και θα αποσυρθούν σε λίγες ημέρες.

Πυρήνες διανομών

Η καλύτερη λύση για όλους τους χρήστες Linux είναι να χρησιμοποιούν τον πυρήνα που διατίθεται από τη διανομή που χρησιμοποιούν. Υπάρχουν διανομές οι οποίες ακολουθούν το Latest Upstream Stable μοντέλο και διαθέτουν στους χρήστες τους πάντα τον τελευταίο σταθερό πυρήνα. Δοκιμασμένο, με ίσως κάποια λίγα patches/modifications τα οποία θεωρούνται απαραίτητα από τους developers της διανομής για τη σωστή λειτουργία της. Μερικές από αυτές είναι: Το Arch Linux, το Fedora, το openSUSE κα.

Κάποιες άλλες διανομές, όπως το Ubuntu και το Debian, προτιμούν να μένουν σε μια έκδοση πυρήνα καθ’ όλη τη διάρκεια της υποστήριξης της έκδοσης του λειτουργικού συστήματος. Ειδικά οι εκδόσεις Stable του Debian και LTS του Ubuntu, μπορεί να χρησιμοποιούν μια έκδοση πυρήνα για πολλά χρόνια. Η δουλειά που κάνουν οι maintainers αυτών των διανομών είναι πραγματικά αξιοθαύμαστη καθώς καταφέρνουν να φέρουν bugfixes από νεότερους πυρήνες σε παλαιότερους, ενίοτε και νέα χαρακτηριστικά (backporting). Είναι εντάξει να χρησιμοποιούμε αυτούς τους πυρήνες.

Επομένως, κρατάμε ως τη καλύτερη απάντηση στο ερώτημα “Ποιον πυρήνα πρέπει να χρησιμοποιώ;” εκείνον που διατίθεται επίσημα από τη διανομή Linux που έχουμε εγκαταστήσει.

Τελευταίος σταθερός πυρήνας

Αυτός ο πυρήνας είναι ο τελευταίος ο οποίος διατίθεται από τη κοινότητα των προγραμματιστών του πυρήνα Linux και χαρακτηρίζεται ως σταθερός. Περίπου κάθε τρεις μήνες η κοινότητα διαθέτει έναν νέο σταθερό πυρήνα ο οποίος περιέχει νέα χαρακτηριστικά, υποστηρίζει νέο υλικό, εμπεριέχει όλες τις τελευταίες βελτιώσεις απόδοσης.
Σημαντικό είναι, ότι ο νέος σταθερός πυρήνας περιέχει και όλα εκείνα τα bugfixes που διοθώνουν λάθη και “τρύπες” ασφαλείας τα οποία εντοπίστικαν σε προηγούμενες εκδόσεις.

Αν έχουμε νέο υλικό το οποίο αγοράσαμε μετά την ημερομηνία του τελευταίου LTS πυρήνα, τότε προτείνεται να χρησιμοποιούμε τον τελευταίο σταθερό.
Ένας άτυπος κανόνας είναι ότι σε Desktops και Laptops, καθώς και Servers βασισμένους σε νέο υλικό μπορούμε να χρησιμοποιούμε αυτό τον πυρήνα.

LTS πυρήνες

Αν το υλικό είναι παλαιότερης γενιάς ή έχουμε κάποια embedded συσκευή , τότε ο επόμενος πυρήνας που προτείνεται να χρησιμοποιήσουμε είναι ο LTS. Ας σημειώσουμε εδώ ότι οι LTS πυρήνες δεν ενσωματώνουν (συνήθως) νέα χαρακτηριστικά. Λαμβάνουν όμως ενημερώσεις ασφαλείας. Επίσης, δεν τυγχάνουν μεγάλων αλλαγών πχ. έκδοσης (δηλ. από 4.14 σε 4.15).
Οπότε, όσοι/ες “φοβούνται” τις μεγάλες αλλαγές στις εκδόσεις του πυρήνα, μπορούν να προτιμήσουν μια τέτοια έκδοση η οποία θα υποστηρίζεται για κάμποσα χρόνια.

Παλαιότεροι LTS

Υπάρχουν κάποιοι παλαιότεροι πυρήνες οι οποίοι υποστηρίζονται ακόμη. Για παράδειγμα οι 4.9 , 4.4 , 3.16. Από τους κυριότερους λόγους που κρατάνε αυτούς τους πυρήνες ακόμη “εν ζωή” είναι οι εταιρίες λογισμικού οι οποίες τους χρειάζονται. Δυο παραδείγματα: Ubuntu , Android. Δεν υπάρχει λόγος για εμάς να χρησιμοποιούμε τόσο παλιό λογισμικό.

Μη υποστηριζόμενοι

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

  1. Εκείνους των οποίων ο χρόνος υποστήριξης έχεις παρέλθει (EOL)
  2. Όσοι έχουν παρεμβάσεις με διάφορα patches ή configurations, τα οποία δεν έχουν γίνει αποδεκτά από την κοινότητα των Developers.

Για την πρώτη κατηγορία δεν χρειάζεται να συζητήσουμε πολλά. Απλά δεν τους χρησιμοποιούμε. Τέλος.
Για τη δεύτερη κατηγορία, μπορούμε να χρησιμοποιήσουμε κάποιον τέτοιο πυρήνα (custom), έχοντας όμως υπόψη μας πως την ευθύνη για ότι συμβεί την έχουμε αποκλειστικά εμείς.
Τι μπορεί να συμβεί;

  1. Να μη λειτουργεί σωστά κάποιο υλικό, κάρτα δικτύου/γραφικών κλπ (ακόμη ίσως να πάθει ζημιά σε ακραίες περιπτώσεις)
  2. Χαμηλή απόδοση λειτουργικού συστήματος
  3. Κενά ασφαλείας (που να δημιουργεί το patch που έχει ενσωματωθεί)
  4. Kernel Panics
  5. Να μη μπορούμε να εκκινήσουμε το λειτουργικό σύστημα

κ.α.

Σε αυτούς τους πυρήνες εντάσω και εκείνους που πακετάρω και συντηρώ στα προσωπικά αποθετήρια (PPAs) που διατηρώ στο Launchpad.

Έχουν κυκλοφορήσει αρκετές εκδόσεις custom πυρήνων οι οποίοι υπόσχονται καλύτερη απόδοση συστήματος, λιγότερη κατανάλωση ενέργειας κλπ. Χρησιμοποιούν διάφορα patches, ναι μεν ανοιχτού κώδικα, αλλά αμφιβόλου ποιότητας, καθώς δεν έχουν δοκιμαστεί όσο δοκιμάζεται ο επίσημος πυρήνας και φυσικά (τα patches) δεν έχουν γίνει αποδεκτά από την κοινότητα προγραμματιστών του επίσημου πυρήνα.
Ας σκεφτούμε μόνο ότι στον επίσημο πυρήνα συνεισφέρουν άνω των 4000+ developers και 500+ εταιρίες.

Ο πυρήνας Linux αποτελεί το μεγαλύτερο στον κόσμο συλλογικό λογισμικό.

Ναι, ο πειραματισμός είναι καλός, αλλά με το σωστό τρόπο. Ο σωστός τρόπος συνήθως είναι και ο δύσκολος (πχ. συζήτηση με άλλους developers, ακολουθώντας συγκεκριμένα guidelines, timing, αλλαγή του κώδικά μας κλπ), μέχρι να γίνει αποδεκτό το όποιο patch έχουμε στείλει.
Εξάλλου τα patches ακολουθούν συγκεκριμένους κανόνες για να γίνουν αποδεκτά.
Ένα patch πρέπει:

  1. να είναι εμφανώς σωστό και να έχει δοκιμαστεί επαρκώς
  2. να είναι το πολύ 100 γραμμές
  3. να διορθώνει μόνον ένα πράγμα
  4. να διορθώνει κάτι το οποίο έχει αναφερθεί ως πρόβλημα
  5. να υποστηρίζει ένα νέο υλικό ή να προσθέτει μια νέα λειτουργία σε υφιστάμενο
  6. να έχει ήδη ενσωματωθεί (merged) στο δένδρο του Linus

Έπειτα θα εξεταστεί εκ νέου και εφόσον κριθεί ‘ΟΚ’ από όσους φέρουν ευθύνη, τότε θα ενσωματωθεί στον σταθερό πυρήνα.

Ανακεφαλεώνοντας

Κατά προταιρεότητα χρησιμοποιούμε τον πυρήνα ο οποίος διατίθεται επίσημα από τη διανομή που χρησιμοποιούμε.

  • Laptop/Desktop: Τελευταία σταθερή έκδοση
  • Server: Τελευταία σταθερή έκδοση ή τελευταία LTS έκδοση
  • Embedded συσκευές: Τελευταία LTS έκδοση ή παλαιότερη υποστηριζόμενη LTS έκδοση

Βασισμένο στη πρόσφατη δημοσίευση του Greg Kroah-Hartman

Until next time ... "Keep Your Mind in a Constant State of Openness"