Πυρήνας Linux

Ο πυρήνας Linux είναι ένας πυρήνας λειτουργικού συστήματος που χρησιμοποιείται από την οικογένεια Unix-οειδών λειτουργικών συστημάτων της οικογένειας Linux. Θεωρείται ως ένα από τα πιο χαρακτηριστικά παραδείγματα ελεύθερου λογισμικού.Ο πυρήνας Linux διανέμεται υπό τη Γενική Άδεια Δημόσιας Χρήσης GNU έκδοση 2 και ορισμένων άλλων αδειών κλειστού κώδικα, για μερικά προγράμματα οδήγησης. Αναπτύσσεται από προγραμματιστές παγκοσμίως, ο συντονισμός των οποίων γίνεται με καθημερινές συζητήσεις στην αντίστοιχη ταχυδρομική λίστα (Linux kernel mailing list - LKML). Ο πυρήνας Linux δημιουργήθηκε αρχικά από τον Φινλανδό φοιτητή πληροφορικής Λίνους Τόρβαλντς το 1991. Το Linux από την αρχή της δημιουργίας του συγκέντρωσε προγραμματιστές και χρήστες οι οποίοι προσάρμοσαν κώδικα από άλλα έργα ελεύθερου λογισμικού για χρήση με το καινούριο λειτουργικό σύστημα. Ο πυρήνας έχει συγκεντρώσει συνεισφορές από χιλιάδες προγραμματιστές, και πάνω σε αυτόν βασίζονται πολλές διανομές Linux.

 Τον Απρίλιο του 1991, ο Λίνους Τόρβαλντς, ένας 21χρονος φοιτητής στο Πανεπιστήμιο του Ελσίνκι, στη Φινλανδία, άρχισε να δουλεύει πάνω σε μερικές απλές ιδέες για ένα λειτουργικό σύστημα. Ξεκίνησε με έναν Εναλλάκτη εργασίων (task switcher) γραμμένο σε γλώσσα προγραμματισμού Assembly και έναν οδηγό τερματικού. Στις 25 Αυγούστου 1991, ο Τόρβαλντς δημοσίευσε ένα μήνυμα στην ομάδα συζητήσεων comp.os.minix του Usenet, : Φτιάχνω ένα (δωρεάν) λειτουργικό σύστημα (απλά ένα χόμπυ, δεν θα είναι μεγάλο και επαγγελματικό όπως το gnu) για κλώνους των 386(486) AT. Αυτό εξελίσσεται από τον Απρίλιο, και πλησιάζει να είναι έτοιμο. Θα ήθελα κάποια ανάδραση για τα πράγματα που αρέσουν/δεν αρέσουν στους χρήστες του minix, μια που το ΛΣ μου του μοιάζει κάπως (ίδια φυσική διάταξη του συστήματος αρχείων (για πρακτικούς λόγους) μεταξύ άλλων). Μέχρι στιγμής έχω μεταφέρει το bash(1.08) και το gcc(1.40), και φαίνονται να δουλεύουν. Αυτό υπονοεί ότι θα έχω κάτι πρακτικό μέσα σε μερικούς μήνες [...] Ναι - δεν περιέχει καθόλου κώδικα από το minix, και έχει πολυνηματικό σύστημα αρχείων. ΔΕΝ μπορεί να μεταφερθεί σε άλλη πλατφόρμα (χρησιμοποιεί εναλλαγή εργασιών 386 κλπ), και πιθανότατα δεν θα υποστηρίξει ποτέ τίποτα εκτός από σκληρούς δίσκους AT, καθώς μόνο αυτούς έχω:-(. [...] Είναι γραμμένο κυρίως σε C, αλλά οι περισσότεροι δεν θα αποκαλούσαν αυτό που γράφω C. Χρησιμοποιεί κάθε πιθανό χαρακτηριστικό του 386 που μπόρεσα να βρω, μια που ήταν ταυτόχρονα ένα εγχείρημα για να μάθω το 386. Όπως ανάφερα ήδη, χρησιμοποιεί μια μονάδα διαχείρισης μνήμης, τόσο για paging (όχι ακόμα στον δίσκο) όσο και για segmentation. Το segmentation είναι που το κάνει ΠΡΑΓΜΑΤΙΚΑ να εξαρτάται από το 386 (κάθε εργασία έχει ένα segment 64Mb για κώδικα και δεδομένων - μέγιστος αριθμός εργασιών 64 στα 4Gb. Αν κανείς χρειάζεται περισσότερα από 64Mb/εργασία - ατυχήσατε. [...] Μερικά από τα αρχεία "C" (ειδικά το mm.c) είναι σχεδόν εξίσου assembler όσο και C. [...] Αντίθετα με το minix, τυχαίνει να μου αρέσουν τα interrupts, οπότε αυτά χειρίζονται χωρίς προσπάθεια απόκρυψης του λόγου πίσω από αυτά. Μετά από αυτό, πολλοί άνθρωποι συνεισέφεραν κώδικα στο έργο. Από την αρχή, η κοινότητα του MINIX συνείσφερε κώδικα και ιδέες στον πυρήνα Linux. Την ίδια χρονική στιγμή, το GNU Project είχε δημιουργήσει πολλά από τα συστατικά που απαιτούνταν για ένα ελεύθερο λειτουργικό σύστημα, αλλά ο πυρήνας του, το GNU Hurd, ήταν ημιτελής και μη διαθέσιμος. Ταυτόχρονα, το λειτουργικό σύστημα BSD είχε σταματήσει να αναπτύσσεται προσωρινά για νομικούς λόγους. Αυτές οι συγκυρίες έκαναν το Linux να συγκεντρώσει προγραμματιστές και χρήστες, παρά τη μειωμένη λειτουργικότητα των πρώιμων εκδόσεών του. Τον Σεπτέμβριο του 1991 κυκλοφόρησε η έκδοση Linux 0.01, με τα αρχεία στον εξυπηρετητή FTP του Πανεπιστημίου Τεχνολογίας του Ελσίνκι (ftp.funet.fi). Αποτελούνταν από 10,239 γραμμές κώδικα. Τον Οκτώβριο του 1991, κυκλοφόρησε το Linux 0.02.Τον Δεκέμβριο του 1991, κυκλοφόρησε η έκδοση Linux 0.11, η οποία ήταν η πρώτη που μπορούσε να μεταγλωττιστεί πάνω σε έναν υπολογιστή οποίος να τρέχει την ίδια την έκδοση Linux 0.11. Όταν ο Τόρβαλντς κυκλοφόρησε την έκδοση 0.12 τον Φεβρουάριου του 1992, υιοθέτησε και τη Γενική Άδεια Δημόσιας Χρήσης GNU (GPL) αντί της προηγούμενης άδειας χρήσης την οποία είχε επινοήσει ο ίδιος, και η οποία δεν επέτρεπε αναδιανομή για εμπορικό σκοπό.Περίπου την ίδια περίοδο ξεκίνησε και η ομάδα συζητήσεων alt.os.linux, και η πρώτη δημοσίευση σε αυτήν έγινε στις 19 Ιανουαρίου 1992. Τον Μάρτιο του 1992, η ομάδα alt.os.linux μετονομάστηκε σε comp.os.linux.Σύντομα μεταφέρθηκε και το Σύστημα παραθύρων X (X Window System) στο Linux, και η έκδοση 0.95 που κυκλοφόρησε τον Μάρτιο του 1992 ήταν η πρώτη που μπορούσε να τρέξει το X. Αυτό το μεγάλο άλμα στην αρίθμηση των εκδόσεων (από 0.1χ σε 0.9χ) οφειλόταν στο αίσθημα ότι χωρίς περισσότερες μεγάλες αλλαγές στον κώδικα, ήταν κοντά η έκδοση 1.0. Ωστόσο, αυτή η εκτίμηση αποδείκτηκε κάπως υπεραισιόδοξη, και από το 1993 έως τις αρχές του 1994 κυκλοφόρησαν 15 εκδόσεις ανάπτυξης της έκδοσης 0.99. Τελικά, το Linux 1.0.0 κυκλοφόρησε στις 14 Μαρτίου 1994, περιέχοντας 176,250 γραμμές κώδικα, και ένα χρόνο μετά, τον Μάρτιο του 1995 κυκλοφόρησε το Linux 1.2.0 με 310,950 γραμμές. Η έκδοση 2 κυκλοφόρησε στις 9 Ιουνίου του 1996, και ακολούθησαν πρόσθετες μεγάλες εκδόσεις της σειράς 2: 25 Ιανουαρίου 1999: Linux 2.2.0 (1,800,847 γραμμές κώδικα). 18 Δεκεμβρίου 1999: Κυκλοφόρησαν προσθήκες για την έκδοση 2.2.13 ειδικά για τους υπολογιστές mainframe της IBM, οι οποίες επέτρεπαν στο Linux να χρησιμοποιηθεί σε μεγάλα επαγγελματικά μηχανήματα. 4 Ιανουαρίου 2001: Κυκλοφόρησε το Linux 2.4.0 (3,377,902 γραμμές κώδικα). 17 Δεκεμβρίου 2003: Κυκλοφόρησε το Linux 2.6.0 (5,929,913 γραμμές κώδικα).Στις 21 Ιουλίου 2011, ο Λίνους Τόρβαλντς ανακοίνωσε την κυκλοφορία του Linux 3.0: «Οι ημέρες του 2.6.χ έχουν παρέλθει». Η αύξηση του κύριου αριθμού έκδοσης δεν σημαίνει μεγάλες τεχνικές αλλαγές σε σύγκριση με την προηγούμενη έκδοση Linux 2.6.39, αλλά επισημαίνει την επέτειο των 20 χρόνων του πυρήνα. Αρχικά ο Τόρβαλντς διέθεσε τον πυρήνα υπό μία άδεια η οποία απαγόρευε κάθε εμπορική χρήση. Σύντομα όμως, από την έκδοση 0.12, υιοθετήθηκε η Γενική Άδεια Δημόσιας Χρήσης GNU. Αυτή η άδεια επιτρέπει την αναδιανομή και την πώληση εκδοχών του πυρήνα, τροποιημένων ή μη, αλλά απαιτεί οι εκδοχές αυτές και διατίθενται υπό την ίδια άδεια χρήσης, και να συνοδεύονται από τον πλήρη αντίστοιχο πηγαίο κώδικα. Ο Τόρβαλντς περιέγραψε την αδειοδότηση του Linux υπό την GPL ως «το καλύτερο πράγμα που έκανα ποτέ». GPL, έκδοση 3 Μέχρι στιγμής, το Linux διατίθεται μόνο υπό την έκδοση 2 της GPL, χωρίς την επιλογή χρήσης νεότερης έκδοσης, όπως η έκδοση 3 (κάτι ασυνήθιστο για λογισμικό υπό GPL). Ο ίδιος ο Τόρβαλντς επισήμανε κατά την κυκλοφορία της έκδοσης 2.4.0 ότι ο δικός του κώδικας διατίθεται μόνο υπό την έκδοση 2. Ωστόσο, οι όροι της GPL δηλώνουν ότι αν δεν καθορίζεται συγκεκριμένη έκδοση, τότε οποιαδήποτε μπορεί να χρησιμοποιηθεί, και ο Άλαν Κοξ παρατήρησε ότι ελάχιστοι προγραμματιστές του πυρήνα εκτός από τον Τόρβαλντς έχουν καθορίσει συγκεκριμένη έκδοση της GPL. Τον Σεπτέμβριο του 2006, μια έρευνα μεταξύ των 29 βασικότερων προγραμματιστών του πυρήνα έδειξα ότι οι 28 προτιμούσαν την έκδοση 2 της GPL έναντι της έκδοσης 3, η οποία τότε ακόμα βρισκόταν υπό ανάπτυξη. Ο Τόρβαλντς σχολίασε: «Νομίζω ότι μερικοί τρίτοι παρατηρητές… πίστευαν ότι ήταν μόνο δική μου παραξενιά, επειδή δημοσίευσα έντονα τη γνώμη μου για την GPL 3». Υπάρχουν διιστάμενες απόψεις για το αν τα φορτώσιμα αρθρώματα του πυρήνα πρέπει να θεωρούνται παράγωγα έργα από τη νομική άποψη των πνευματικών δικαιωμάτων, οπότε και θα διέπονταν από τους όρους της GPL. Ο Τόρβαλντς δήλωσε ότι πιστεύει ότι τα αρθρώματα τα οποία χρησιμοποιούν μόνο ένα περιορισμένο, «δημόσιο» υποσύνολο των διεπαφών του πυρήνα μπορούν να μην θεωρούνται παράγωγα έργα, οπότε και επιτρέπεται να μην διατίθενται υπό την GPL. Δεν συμφωνούν όλοι οι συμμετέχοντες με αυτή την ερμηνεία, και ακόμα και ο Τόρβαλντς συμφωνεί ότι πολλά αρθρώματα είναι προφανώς παράγωγα έργα, και έχει γράψει ότι «τα αρθρώματα του πυρήνα είναι από προεπιλογή παράγωγα». Από την άλλη, ο Τόρβαλντς έχει επίσης πει ότι «μια γκρίζα περιοχή είναι οι οδηγοί υλικού που γράφτηκαν αρχικά για άλλο λειτουργικό σύστημα (δηλαδή δεν άρχισαν ως παράγωγα έργα του Linux). Αυτή είναι γκρίζα περιοχή και αυτή είναι η περιοχή μέσα στην οποία πιστεύω ότι τα αρθρώματα μπορούν να μην θεωρούνται παράγωγα έργα, απλώς επειδή δεν σχεδιάστηκαν για το Linux και δεν εξαρτώνται από κάποια συμπεριφορά του Linux». Αρκετή συζήτηση γίνεται συγκεκριμένα για τους ιδιόκτητους οδηγούς γραφικών. Η τελική απάντηση σε αυτά τα θέματα ενδεχομένων να δοθεί κάποια στιγμή από ένα δικαστήριο. Ένα σημείο αντιπαραθέσεων σχετικά με την αδειοδότηση, είναι η χρήση δυαδικών firmware για την υποστήριξη μερικών συσκευών. Αυτά τα αρχεία διατίθενται υπό διάφορες άδειες χρήσης και ο πηγαίος τους κώδικας είναι άγνωστος. Ο Ρίτσαρντ Στόλλμαν υποστηρίζει ότι αυτά τα δυαδικά αρχεία κάνουν τον πυρήνα εν μέρει μη-ελεύθερο λογισμικό, και ότι η διανομή του Linux μπορεί ακόμα και να παραβιάζει την άδεια GPL (η οποία απαιτεί «τον πλήρη αντίστοιχο πηγαίο κώδικα» να διατίθεται). Ως απάντηση, το Ίδρυμα Ελεύθερου Λογισμικού της Λατινικής Αμερικής ξεκίνησε ένα έργο, το Linux-libre, για να δημιουργήσει έναν εντελώς ελεύθερο πυρήνα, χωρίς ιδιόκτητα στοιχεία, ο οποίος να μπορεί να χρησιμοποιείται από μερικές εντελώς ελεύθερες διανομές. Στις 15 Δεκεμβρίου 2010 το έργο Debian ανακοίνωσε ότι η επόμενη σταθερή έκδοση του Debian θα περιείχε έναν πυρήνα «απαλλαγμένο από όλα τα μη ελεύθερα στοιχεία». Το Linux είναι εγκεκριμένο εμπορικό σήμα του Λίνους Τόρβαλντς στις ΗΠΑ και σε μερικές άλλες χώρες. Αυτό είναι αποτέλεσμα ενός περιστατικού, κατά το οποίο ο William Della Croce, Jr., ο οποίος δεν ήταν αναμιγμένος στο έργο Linux, κατοχύρωσε το όνομα και στη συνέχεια απαίτησε δικαιώματα για τη χρήση του. Μερικοί υποστηρικτές του Linux ζήτησαν συμβουλή από νομικούς και κατέθεσαν μήνυση εναντίον του Della Croce. Το ζήτημα διευθετήθηκε τον Αύγουστο του 1997, όταν το εμπορικό σήμα κατοχυρώθηκε στον Linus Torvalds. Τον Μάρτιο του 2003, όμιλος SCO κατέθεσε μια μήνυση εναντίον της IBM υποστηρίζοντας ότι η IBM είχε παραβιάσει πνευματική ιδιοκτησία την οποία η SCO διεκδικούσε πάνω στον πηγαίο κώδικα του Unix, συνεισφέροντας τμήματα εκείνου του κώδικα στο Linux. Επιπλέον, η SCO έστειλε επιστολές σε αρκετές εταιρείες προειδοποιώντας ότι η χρήση του Linux χωρίς προηγούμενη άδεια από την SCO μπορεί να παραβιάζει πνευματική ιδιοκτησία, και ισχυρίστηκαν στον Τύπο ότι θα άρχιζαν να μηνύουν χρήστες του Linux. Η ΙΒΜ τότε υποσχέθηκε ότι θα υπερασπιζόταν του πελάτες της που χρησιμοποιούσαν Linux. Αυτή η αντιπαράθεση οδήγησε σε μηνύσεις από την SCO προς τις Novell, DaimlerChrysler και AutoZone, και αντι-μηνύσεις από τη Red Hat και άλλους κατά της SCO. Στις αρχές του 2007 η SCO κατέθεσε τις συγκεκριμένες λεπτομέρειες για τις υποτιθέμενες παραβάσεις δικαιωμάτων. Παρά τους προηγούμενους ισχυρισμούς της SCO ότι ήταν δίκαιοι κάτοχοι ενός εκατομυρίου γραμμών κώδικα, κατέθεσαν 326 γραμμές, από τις οποίες το περιεχόμενο των περισσότερων δεν μπορούσε να κατοχυρωθεί πνευματικά. Τον Αύγουστο του 2007 το δικαστήριο στην υπόθεση της SCO εναντίον της Novell αποφάσισε ότι η SCO δεν κατείχε καν τα αρχικά δικαιώματα του Unix, παρότι αργότερα, τον Αύγουστο του 2009, το Δέκατο Εφετείο αποφάσισε ότι το ποιος ήταν πραγματικά ο ιδιοκτήτης θα έπρεπε να αποφασιστεί από ένα δικαστήριο ενόρκων. Στις 30 Μαρτίου του 2010 οι ένορκοι αποφάσισαν υπέρ της Novell. Τον Ιούλιο του 2009 η Microsoft υπέβαλε τους οδηγούς για το υπερεπόπτη εικονικών μηχανών Hyper-V στον πυρήνα. Αυτό επέτρεψε τη βελτίωση των επιδόσεων των λειτουργικών συστημάτων βασισμένων σε Linux που τρέχουν σε εικονικές μηχανές που εποπτεύονται από τον Hyper-V. Η Microsoft αναγκάστηκε να υποβάλει τον κώδικα όταν ανακαλύφθηκε ότι είχε ενσωματώσει έναν οδηγό δικτύου στο Hyper-V ο οποίος χρησιμοποιούσε για τη λειτουργία του λογισμικό αδειοδοτημένο υπό την GPL. Βάσει των όρων της GPL, ο τρόπος χρήσης (στατική σύνδεση δυαδικών αρχείων) συνιστά επέκταση λογισμικού, το οποίο σημαίνει ότι το σύνολο του λογισμικού πρέπει να διανέμεται μόνο με άδειες συμβατές με την GPL. Ο πυρήνας Linux είναι μία πρωτότυπη υλοποίηση πυρήνα λειτουργικού συστήματος. Αν και δεν χρησιμοποιεί κώδικα του UNIX, μπορεί να θεωρηθεί παρεμφερές σύστημα (ο ακριβής όρος είναι Unix-οειδές, Unix-like) ή ελεύθερη υλοποίησή του, αφού διαθέτει τις περισσότερες εντολές του και την ίδια σχεδόν δομή αρχείων, ενώ η φιλοσοφία της σχεδίασής του πλησιάζει περισσότερο το UNIX από οποιοδήποτε άλλο λειτουργικό σύστημα. Σήμερα το Linux παρέχει όλα όσα θεωρούνται αναγκαία για ένα σύγχρονο πυρήνα λειτουργικού, όπως: υποστήριξη πολυεπεξεργαστικών συστημάτων (SMP) πραγματική πολυδιεργασία εικονική μνήμη διαμοιραζόμενες βιβλιοθήκες σωστή διαχείριση μνήμης δικτύωση μέσω TCP/IP κ.α.Ο πυρήνας Linux αρχικά σχεδιάστηκε για επεξεργαστές της οικογένειας x86 (386/486/Pentium), αλλά σήμερα τρέχει σε πολύ μεγάλη ποικιλία επεξεργαστών, όπως οι Alpha (64 bit), οι Motorola 68000 (Amiga), PowerPC, MIPS κ.α. Love, Robert (Ιούνιος 2010). Linux Kernel Development: A thorough guide to the design and implementation of the Linux kernel. Addison Wesley. ISBN 0672329468. Venkateswaran, Sreekrishnan (Απρίλιος 2008). Essential Linux Device Drivers. Prentice Hall. ISBN 0132396556. Επίσημος ιστότοπος