Ο πυρήνας Linux και το έργο GNU

από τον Richard Stallman

 [εικόνα ενός νέου μωρού GNU]

Translations of this page


Πολλοί χρήστες της Πληροφορικής χρησιμοποιούν μία τροποποιημένη έκδοση του συστήματος GNU (18Κ χαρακτήρες) καθημερινά, χωρίς όμως να το γνωρίζουν. Διαμέσου μίας ιδιαίτερης και χαρακτηριστικής σειράς δραστηριοτήτων η έκδοση του συστήματος GNU, ευρέως χρησιμοποιημένη σήμερα, είναι γνωστή ως ``Linux''. Επίσης, πολλοί χρήστες δεν γνωρίζουν το σημείο εκείνο στο οποίο συνδέεται με το έργο GNU.

Όντως υπάρχει ο Linux, και αρκετοί άνθρωποι τον χρησιμοποιούν, αλλά δεν είναι από μόνος του λειτουργικό σύστημα. Ο Linux είναι απλός ένας πυρήνας. Δηλαδή, το πρόγραμμα εκείνο του λειτουργικού συστήματος που δεσμεύει και αποδίδει τους πόρους του Η/Υ σε όλα εκείνα τα προγράμματα που εκτελούν οι χρήστες. Ο πυρήνας θεωρείται αναπόσπαστο κομμάτι του λειτουργικού συστήματος, αλλά από μόνος του είναι παντελώς ανίκανος. Ο μόνος τρόπος που μπορεί να λειτουργήσει είναι να τοποθετηθεί μέσα σε ένα λειτουργικό σύστημα. Ο Linux, συνήθως χρησιμοποιείται σε συνδυασμό με το λειτουργικό σύστημα GNU. Έτσι λοιπόν, το σύστημα GNU χρησιμοποιεί τον Linux ως πυρήνα του.

Πολλοί χρήστες έχουν πλήρη άγνοια όσο αφορά την διάκριση μεταξύ του πυρήνα, τον Linux δηλαδή, και το υπόλοιπο σύστημα GNU, στο οποίο επίσης αναφέρονται ως ``Linux''. Η ασαφής χρήση της λέξης δεν βοηθάει στο να υπάρχει πλήρης κατανόηση. Επίσης αρκετοί χρήστες, πιστεύουν πως ο Linus Torvalds με την υποστήριξη που είχε από όλο το κόσμο ήταν αυτός που κατασκεύασε ολόκληρο το λειτουργικό σύστημα το 1991.

Γενικότερα, οι προγραμματιστές γνωρίζουν ότι ο Linux είναι απλός ένας πυρήνας. Θα πρέπει όμως κάθε φορά που συναναστρέφονται με χρήστες που δεν το γνωρίζουν, να τους πληροφορούν και να του μαθαίνουν την ιστορία του έργου GNU. Επίσης, υπάρχουν αρκετοί προγραμματιστές που νομίζουν πως αφού ο Linus Torvalds ολοκλήρωσε την συγγραφή του πυρήνα Linux, οι χρήστες που τον χρησιμοποιούσαν τότε, αναζήτησαν για περαιτέρω ελεύθερο λογισμικό έτσι ώστε να θέσουν τον πυρήνα σε λειτουργία και ότι ως αποτέλεσμα βρήκαν αρκετό ώστε να ολοκληρώσουν το τότε ελεύθερο συμβατό με το Unix σύστημα.

Όντως βρήκαν ελεύθερο λογισμικό. Διότι όλο εκείνο το λογισμικό που βρέθηκε για να θέσει τον πυρήνα σε λειτουργία δεν ήταν τυχαίο, αλλά ανήκε στο τότε μη ολοκληρωμένο σύστημα GNU. Το διαθέσιμο εκείνο ελεύθερο λογισμικό ανήκε σε ένα σχεδόν ολοκληρωμένο σύστημα που το έργο GNU ξεκίνησε να συγγράφει από το 1984. Στο GNU μανιφέστο (32K χαρακτήρες), είχαμε θέσει έναν στόχο: την υλοποίηση ενός ελεύθερου λειτουργικού συστήματος συμβατό με το Unix. Σήμερα αυτό το σύστημα ονομάζεται GNU σύστημα. Η αρχική ανακοίνωση του έργου GNU επίσης δίνει έμφαση και σε κάποια άλλα ιδιόρρυθμα σχέδια αυτού. Από την στιγμή που είχε συγγραφεί ο πυρήνας Linux, το GNU σύστημα έπαψε να είναι πλέον μη ολοκληρωμένο.

Τα περισσότερα έργα ελεύθερου λογισμικού κατασκευάζονται για να εξυπηρετήσουν τις ανάγκες του καθενός. Δηλαδή, κατασκευάζονται για μια συγκεκριμένη δουλεία. Για παράδειγμα, ο Linus Torvalds κατασκεύασε τον συμβατό με το Unix πυρήνα Linux. Ο Donald Knuth κατασκεύασε ένα σύστημα διαμόρφωσης κειμένου (TeX). Ο Bob Scheilfler κατασκεύασε ένα παραθυρικό περιβάλλον (X Window System). Είναι πολύ φυσικό το να μετράμε την συνεισφορά τέτοιου είδους εργασιών με συγκεκριμένα προγράμματα που βγαίνουν από τα έργα αυτά.

Εάν προσπαθήσουμε να κάνουμε το ίδιο και με το έργο GNU, θα διαπιστώσουμε πως η συνεισφορά είναι αρκετά μεγάλη. Ύστερα από κάποιες μετρήσεις που έγιναν διαπιστώθηκε πως σε ένα ελάχιστο GNU σύστημα ο πυρήνας Linux καταλαμβάνει μόνο το 3% του συστήματος σε επίπεδο πηγαίου κώδικα και ότι το υπόλοιπο αντίστοιχή στο λογισμικό GNU. Τονίζει να σημειώσουμε πως στις μετρήσεις τοποθετήθηκαν συστατικά που είναι αναγκαία για να λειτουργεί μόνο το σύστημα και όχι περαιτέρω λογισμικό. Οπότε καταλαβαίνουμε τελικά, πως εάν χρειαστεί να διαλέξουμε κάποιο όνομα για να αναφερόμαστε στο ποιος κατασκεύασε τα προγράμματα στο σύστημα, τότε το μόνο κατάλληλο όνομα είναι το ``GNU''.

Δεν πιστεύουμε όμως πως αυτός είναι ο σωστός τρόπος για να εξακριβώσουμε την συνεισφορά του έργου GNU. Το έργο GNU δεν ήταν και ούτε πρόκειται να γίνει το έργο εκείνο που πρόκειται να κατασκευάσει συγκεκριμένα πακέτα λογισμικού. Δεν ήταν το έργο που έπρεπε να κατασκευάσει έναν μεταγλωττιστή της C, ασχέτως το ότι έγινε. Επίσης δεν ήταν το έργο εκείνο όπου έπρεπε να κατασκευάσει έναν συντάκτη κειμένου, ασχέτως το ότι έγινε και αυτό. Στην πραγματικότητα ο μόνος στόχος του έργου GNU ήταν να κατασκευάσει ένα πλήρης ελεύθερο και συμβατό με το Unix λειτουργικό σύστημα. Το GNU σύστημα δηλαδή.

Αρκετοί άνθρωποι έχουν κάνει ανεκτίμητες συνεισφορές όσο αφορά το ελεύθερο λογισμικό που υπάρχει στο σύστημα, και φυσικά όλοι τους αξίζουν συγχαρητήρια. Όμως ο μόνος λόγος για τον οποίο το σύστημα είναι ολοκληρωμένο, και όχι απλός μια συλλογή προγραμμάτων, είναι επειδή το έργο GNU προσπάθησε αρκετά. Δημιουργήσαμε μια λίστα με όλα τα αναγκαία προγράμματα που χρειαζόμασταν έτσι ώστε να κατασκευάσουμε ένα ολοκληρωμένο ελεύθερο λειτουργικό σύστημα. Επίσης, βρήκαμε, γράψαμε, και βρήκαμε άλλους που ήθελαν να γράψουν τα προγράμματα που είχαμε καταγράψει στην λίστα. Κατασκευάσαμε πολύ σημαντικά (1) συστατικά που δεν κινούν το ενδιαφέρον ενός τελικού χρήστη, όμως πρέπει να τονίσουμε πως δίχως αυτά το σύστημα δεν θα μπορούσε να λειτουργήσει. Μερικά από αυτά τα συστατικά, όπως τα προγραμματιστικά εργαλεία, έγιναν διάσημα από μόνα τους ανάμεσα στους προγραμματιστές. Κατασκευάσαμε πολλά συστατικά τα οποία δεν ανήκουν στην κατηγορία των εργαλείων (2). Παράλληλα δημιουργήσαμε ένα αρκετά έμπειρο σκάκι, το GNU Chess, επειδή ένα ολοκληρωμένο σύστημα χρειάζεται και παιχνίδια για την ψυχαγωγία των χρηστών.

Στις αρχές του '90 είχαμε ολοκληρώσει όλο το λογισμικό του συστήματος, εκτός αυτό του πυρήνα (όμως δουλεύαμε το GNU Hurd, το οποίο τρέχει στην κορυφή του μικρο-πυρήνα Mach). Η αποσφαλμάτωση του GNU Hurd τελικά φάνηκε πως ήταν μια αρκετά πολύπλοκη και επίπονη διαδικασία. Το GNU Hurd άρχισε να λειτουργεί αξιόπιστα το 2001. Αυτή τη περίοδο προσπαθούμε να ετοιμάσουμε την νέα έκδοση του GNU συστήματος που κάνει χρήση του GNU Hurd.

Φυσικά, δεν ήμασταν σε θέση να αναμένουμε την ολοκλήρωση του Hurd, επειδή ο Linux ήταν διαθέσιμο. Όταν ο Linus Torvalds έγραψε τον Linux, τότε εκείνο το βασικό κενό του συστήματος έπαψε να υπάρχει. Οι χρήστες τότε μπορούσαν να συνδυάζουν τον Linux μαζί με το GNU σύστημα, για να έχουν ένα πλήρες ελεύθερο λειτουργικό σύστημα: μια έκδοση του GNU συστήματος βασισμένη στον πυρήνα Linux, εν συντομία το GNU/Linux σύστημα. Τελικά, τα πιο πρόσφατα έγγραφα τεκμηρίωσης του Linux, μαρτυρούν πως τελικά ο Linux είναι ένα πυρήνας που χρησιμοποιήθηκε σε συνδυασμό με το σύστημα GNU: "Τα περισσότερα εργαλεία που χρησιμοποιούνται με τον Linux είναι GNU λογισμικό και βρίσκονται υπό την άδεια αντιγραφής του GNU. Αυτά τα εργαλεία δεν βρίσκονται στην αναμονή - ρώτα με (ή GNU) για περισσότερες πληροφορίες."

Μπορεί να ακούγεται απλή διαδικασία ο συνδυασμός του GNU συστήματος και του πυρήνα Linux. Στην πραγματικότητα ομως δεν ήταν και τόσο απλή. Μερικά από τα συστατικά (3) του GNU χρειαζόταν ουσιαστική αλλαγή για να λειτουργήσουν με τον Linux. Αναπτύσσοντάς ένα ολοκληρωμένο λειτουργικό σύστημα ως διανομή όπου θα μπορούσε να τρέχει αξιόπιστα ``εκτός του κουτιού'' ήταν επίσης αρκετά μεγάλη διαδικασία. Χρειαζόταν να διευθυνσιοδοτήσουμε το θέμα που αφορά την εγκατάσταση και την εκκίνηση του συστήματος. Αυτό ήταν ένα πρόβλημα που δεν είχαμε προμελετήσει διότι δεν είχαμε φτάσει ακόμα εκεί. Πάντως, οι χρήστες που κατασκεύασαν τις διάφορες διανομές συνείσφεραν ουσιαστικά σε αυτό το πρόβλημα.

Το έργο GNU υποστηρίζει τα GNU/Linux συστήματα τόσο καλά όσο και το GNU σύστημα (ακόμη και με χρήματα). Χρειάστηκε να δοθούν χρήματα έτσι ώστε να ξαναγραφτούν οι σχετιζόμενες επεκτάσεις του Linux στην GNU C βιβλιοθήκη, έτσι ώστε να είναι τέλεια αναπτυγμένη, και τα πιο πρόσφατα GNU/Linux συστήματα να χρησιμοποιούν την πιο τρέχουσα έκδοση τις χωρίς να χρειάζονται αλλαγές. Επίσης χρειάστηκε να δοθούν χρήματα για την ανάπτυξη τις διανομής Debian GNU/Linux.

Σήμερα, χρησιμοποιούμε GNU συστήματα βασισμένα στον Linux, και ελπίζουμε στο μέλλον να χρησιμοποιήσετε και εσείς. Επίσης, υπάρχουν πολλές διαφορετικές εκδόσεις του συστήματος GNU/Linux (συνήθως ονομάζονται ``Διανομές''). Πολλές όμως από αυτές συμπεριλαμβάνουν μη-ελεύθερο λογισμικό. Δυστυχώς, οι κατασκευαστές αυτών έχουν υιοθετήσει την φιλοσοφία του Linux και όχι του GNU. Επίσης υπάρχουν ολοκληρωμένες ελεύθερες GNU/Linux διανομές.

Είτε χρησιμοποιείτε το GNU/Linux, είτε όχι, σας παρακαλούμε να μην μπερδεύεται τον υπόλοιπο κόσμο χρησιμοποιώντας το όνομά ``Linux'' λανθασμένα. Ο Linux είναι πυρήνας, το πιο αναπόσπαστο κομμάτι του συστήματος. Αν δούμε όλο το σύστημα ως σύνολο τότε πάνω κάτω όλο είναι λογισμικό GNU και κάνει χρήση του πυρήνα Linux. Όταν μιλάτε για αυτόν το συνδυασμό παρακαλούμε αναφέρετε τον όρο ``GNU/Linux''.

Εάν χρειάζεστε κάποιον σύνδεσμο που να αναλύει το ``GNU/Linux'' τότε αυτός είναι ο κατάλληλος: http://www.gnu.org/gnu/the-gnu-project.el.html. Εάν χρειάζεστε κάποιον σύνδεσμο που να αναλύει τον Linux, ως πυρήνα, τότε αυτός είναι ο κατάλληλος: http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?Linux.

Πέρα από το έργο GNU, ένα άλλο έργο που λειτουργούσε ανεξάρτητα κατασκεύασε ένα ελεύθερο λειτουργικό σύστημα συμβατό με το σύστημα Unix. Το σύστημα αυτό είναι γνωστό ως BSD και δημιουργήθηκε στο πανεπιστήμιο του Berkeley. Το '80 ήταν μη ελεύθερο, όμως στις αρχές του '90 τελικά έγινε ελεύθερο. Όλα τα ελεύθερα λειτουργικά συστήματα που υπάρχουν σήμερα είναι βασισμένα είτε στο σύστημα GNU είτε στο BSD.

Οι χρήστες μερικές φορές ρωτάνε εάν το BSD είναι κάποια έκδοση του GNU, όπως για παράδειγμα το GNU/Linux. Οι κατασκευαστές του BSD εμπνεύστηκαν από το έργο GNU όσο αφορά την ελευθερία του λογισμικού, και για αυτό ο κώδικας του BSD συστήματος είναι ελεύθερος. Ο κώδικας του συστήματος BSD διαφέρει από τον κώδικα του συστήματος GNU. Τα συστήματα BSD σήμερα χρησιμοποιούν μερικά από τα προγράμματα του GNU, όπως επίσης το σύστημα GNU χρησιμοποιεί μερικά συστατικά από το σύστημα BSD. Ωστόσο, είναι δυο διαφορετικά συστήματα τα οποία αναπτύχθηκαν ξεχωριστά. Οι κατασκευαστές του BSD δεν έγραψαν κάποιον πυρήνα και τον ενσωμάτωσαν στο GNU σύστημα. Για αυτό, το όνομα GNU/BSD δεν ταίριαζε σε αυτήν την περίπτωση.

[Σε περίπτωση που θα θέλατε να μάθετε περισσότερα για αυτό το θέμα καλό θα ήταν να διαβάσετε το GNU/Linux FAQ].

Σημειώσεις:

  1. Μη ενθουσιώδη άλλα απαραίτητα ουσιαστικά συστατικά: ο GNU συμβολομεταφραστής (assembler) (GAS) και ο συνδέτης (linker) (GLD), όπου και τα δύο είναι μέρη του GNU Binutils πακέτου, του GNU tar, και άλλων.
  2. Για παράδειγμα, Το Bourne Again SHell (BASH), ο PostScript διερμηνέας Ghostscript, και η GNU C βιβλιοθήκη δεν είναι προγραμματιστικά εργαλεία. Όπως επίσης ούτε και το GNUCash, GNOME, και GNU Chess.
  3. Για παράδειγμα, η GNU C βιβλιοθήκη.

Translations of this page:
[ Català | 简体中文 | 繁體中文 | Česky | Deutsch | English | Español | فارسی | Français | עברית | Italiano | Ελληνικά | 日本語 | 한국어 | Polski | Português | Română | Русский | Srpsko-Hrvatski | Slovensko | Српски | Tagalog ]