Linux

Ιστορικό

Το Linux, είναι σε τεχνοτροπία παρόμοιο με το Unix, που ήταν τότε πολύ δημοφιλές σε ακαδημαϊκά ιδρύματα και επιχειρήσεις.
Το εγχείρημα GNU, που εκπόνησε ο Ρίτσαρντ Στάλλμαν το 1983, έχει ως στόχο την δημιουργία ενός ολοκληρωμένου λειτουργικού συστήματος με ελεύθερο λογισμικό συμβατό με το Unix. Η ανάπτυξη του GNU ξεκίνησε το 1984, ενώ ο Στάλλμαν ίδρυσε το Ίδρυμα Ελεύθερου Λογισμικού το 1985 και το 1989 εξέδωσε την άδεια χρήσης GNU General Public License (GNU GPL). Στις αρχές του '90, είχε ολοκληρωθεί η ανάπτυξη χρήσιμων εργαλείων που απαιτούνται από ένα λειτουργικό (όπως βιβλιοθήκες, μεταγλωττιστές, επεξεργαστές κειμένου, κέλυφος, παραθυρικό περιβάλλον), αλλά είχε καθυστερήσει η ανάπτυξη βασικών και αναγκαίων εργαλείων όπως οι οδηγοί υλικού, οι δαίμονες εργασιών αλλά και ο πυρήνας του λειτουργικού. Αυτή η καθυστέρηση εξώθησε τον Φινλανδό Λίνους Τόρβαλντς να δημιουργήσει τον δικό του πυρήνα το 1991.
Ο Τόρβαλντς ξεκίνησε την ανάπτυξη ενός μη-εμπορικού λειτουργικού του το 1991, ενώ φοιτούσε ακόμα στο Πανεπιστήμιο του Ελσίνκι. Εμπνεύστηκε από το επίσης τεχνοτροπίας Unix λειτουργικό MINIX, και άρχισε να αναπτύσσει τον πυρήνα που έγινε γνωστός ως πυρήνας Linux. Ο Τόρβαλντς αρχικά έγραφε προγράμματα που έτρεχαν και στο MINIX έως ότου το Linux έφτασε σε ένα στάδιο ανάπτυξης όπου δεν ήταν πλέον απαραίτητοι οι δεσμοί μεταξύ των δυο λειτουργικών. Έπειτα, ο Τόρβαλντς αποφάσισε να αλλάξει την άδεια χρήσης, που μέχρι τότε δεν επέτρεπε την αναδιανομή για εμπορικούς σκοπούς, κάνοντας διαθέσιμο το Linux υπό την άδεια GNU GPL. Έτσι το GNU βρήκε έναν πυρήνα για να λειτουργήσει, και το Linux βρήκε έτοιμη μια μεγάλη ποικιλία προγραμμάτων. Εντάσσοντας το εγχείρημά του στο GNU, η ανάπτυξη του Linux ήταν αλματώδης και γρήγορα ξεπέρασε το MINIX σε δημοτικότητα.
Από την προσχώρηση του Linux στο GNU μέχρι σήμερα, χιλιάδες προγραμματιστές από όλο τον κόσμο συνεισφέρουν κώδικα και αναπτύσσουν από κοινού το Linux. Κάθε διανομή υποστηρίζεται από μια οργανωμένη κοινότητα χρηστών και προγραμματιστών, ενώ ορισμένες από τις διανομές υποστηρίζονται και από εταιρίες που πωλούν είτε εμπορικές εκδόσεις είτε τεχνική υποστήριξη για δωρεάν εκδόσεις. Επιπλέον, δεκάδες τρίτες εταιρίες έχουν συνεισφέρει τα τελευταία χρόνια στην ανάπτυξη του Linux - ανάμεσα στις οποίες πολύ γνωστές όπως η IBM, η Intel, η Google, η Hewlett-Packard - κυρίως για να αυξήσουν τις πωλήσεις του υλικού των υπολογιστικών συστημάτων τους - με δεδομένη τη διάδοση του Linux στην αγορά των διακομιστών, των κινητών τηλεφώνων και των netbooks. Το Linux αναπτύσσεται με βάση το πρότυπο POSIX, μία προσπάθεια τυποποίησης όλων των συστημάτων που βασίζονται ή προσομοιώνουν το UNIX.

Σχεδίαση

Το Linux υιοθετεί πολλές από τις αρχές λειτουργίας του Unix που καθιερώθηκαν τις δεκαετίες του '70 και του '80. Το σύστημα αποτελείται από  έναν μονολιθικό πυρήνα, τον πυρήνα Linux, που ελέγχει την διαδικασία επεξεργασίας, την δικτύωση, τις περιφερειακές συσκευές και την πρόσβαση στα αρχεία συστήματος. Οι οδηγοί συσκευών εντάσσονται άμεσα και αποτελούν τμήμα του πυρήνα. Διακριτές από τον πυρήνα είναι οι λειτουργίες υψηλού επιπέδου, όπως το γραφικό περιβάλλον χρήστη, οι οποίες διασυνδέονται με τον πυρήνα και συνθέτουν ένα ολοκληρωμένο λειτουργικό σύστημα.
Οι χρήστες μπορούν να ελέγχουν ένα σύστημα Linux μέσω μιας γραμμής εντολών ή από το γραφικό περιβάλλον χρήστη (GUI) , ενώ είναι εφικτή και η χρήση πλήκτρων ειδικής λειτουργίας που υπάρχουν στο σχετικό υλικό, κοινή πρακτική στα ενσωματωμένα συστήματα. Σύγχρονες δημοφιλείς διανομές προεπιλέγουν το γραφικό περιβάλλον, όπου η χρήση γραμμής εντολών είναι διαθέσιμη μέσω ενός τερματικού ή μέσω μιας ξεχωριστής εικονικής κονσόλας. Το πιο διαδεδομένο γραφικό περιβάλλον χρήστη στο Linux είναι το X Window System, που σήμερα γίνονται προσπάθειες να αντικατασταθεί από το Wayland ενώ η εταιρεία Canonical αναπτύσει το σύστημα Mir για την διανομή του Ubuntu. Η επιλογή τους να αναπτύξουν ένα ξεχωριστό γραφικό περιβάλλον σε αντίθεση με σημαντικό ποσοστό των χρηστών οι οποίοι θέλουν να μεταφέρουν τις διανομές τους στο Wayland, συναντά αντιπαράθεση.
Το X Window System (ή εν συντομία το X), παρέχει βασικά εργαλεία για τη δημιουργία, την εμφάνιση, την τοποθέτηση και τη διαχείριση γραφικών παραθύρων. Αυτό το κενό καλύπτουν τα λεγόμενα περιβάλλοντα εργασίας (Desktop Environments), τα οποία υλοποιούν γραμμές εργασιών (taskbars), προφύλαξη οθόνης (screensaver), πίνακες εφαρμογών (panels) κ.α. Δημοφιλή περιβάλλοντα εργασίας είναι το Unity, το GNOME, το KDE, το Cinnamon, το MATE, το LXDE και το Xfce.

Ανάπτυξη

Η κύρια διαφορά μεταξύ του Linux και άλλων δημοφιλών λειτουργικών είναι ότι ο πυρήνας του Linux άλλα και οι σημαντικότερες εφαρμογές του αναπτύσσονται μαζικά και συμμετοχικά από τις κοινότητες χρηστών, μια και πρόκειται για ελεύθερο και ανοικτού κώδικα λογισμικό. Υπάρχουν και άλλα λειτουργικά που κυκλοφορούν με ελεύθερες άδειες χρήσης(όπως τα συστήματα Unix τύπου BSD), αλλά το Linux είναι το πιο διαδεδομένο. Ορισμένες άδειες για ελεύθερο και ανοικτού κώδικα λογισμικό βασίζονται στην αρχή του copyleft, όπου ο καθένας μπορεί να πάρει τον κώδικα και να τον επεξεργαστεί, αναπαράγει, και διαβιβάσει σε τρίτους, αλλά πρέπει να το κάνει κάτω από την ίδια άδεια που το πήρε, κάτι που εξασφαλίζει την ελεύθερη και απρόσκοπτη διάδοση του κώδικα σε όλη τη διάρκεια της ζωής του προς όφελος όλων των ενδιαφερομένων. Η πιο δημοφιλής άδεια ελεύθερου λογισμικού, η GNU GPL, είναι μια μορφή copyleft, και χρησιμοποιείται για τον πυρήνα Linux και για αρκετές εφαρμογές του εγχειρήματος GNU.

Χρήσεις

Κάθε διανομή Linux ακολουθεί την δική της φιλοσοφία, άλλες είναι γενικού σκοπού και άλλες πιο εξειδικευμένες. Πολλές διανομές στοχεύουν σε συγκεκριμένο τύπο χρηστών ή λειτουργούν μόνο σε συγκεκριμένο υλικό υπολογιστών. Επιπλέον κάθε διανομή δίνει έμφαση σε ένα διαφορετικό τομέα του συστήματος, όπως η ευχρηστία, η ασφάλεια, η σταθερότητα, η πολυγλωσσία, η υψηλή απόδοση του συστήματος κ.α. Αξίζει να αναφέρουμε ότι ορισμένες διανομές περιλαμβάνουν βάση σχεδιασμού μόνο ελεύθερο λογισμικό. Περίπου τριακόσιες διανομές βρίσκονται σήμερα υπό ενεργή ανάπτυξη, ενώ δώδεκα πιο δημοφιλείς από αυτές είναι διανομές γενικού σκοπού.
Το Linux είναι ένα εξαιρετικά μεταφέρσιμο λειτουργικό σύστημα. Ο πυρήνας του, μπορεί να εκτελεστεί σε μια μεγάλη ποικιλία υπολογιστικών αρχιτεκτονικών, όπως οι πλατφόρμες ARM, iPAQ, IBM System z9 και System z10, και σε συσκευές από κινητά τηλέφωνα μέχρι υπερυπολογιστές. Δεν υπάρχουν πολλές εξειδικευμένες διανομές για τις ευρέος χρησιμοποιούμενες αρχιτεκτονικές. Ο πυρήνας ELKS μπορεί να εκτελεστεί στούς 16-bitους επεξεργαστές Intel 8086 και Intel 80286, ενώ ο πυρήνας µClinux μπορεί να εκτελεστεί σε συστήματα που δεν διαθέτουν μονάδα διαχείρισης μνήμης. Και οι δύο αυτοί πυρήνες αποτελούν fork του αρχικού πυρήνα Linux. Ο πυρήνας Linux λειτουργεί επίσης σε κλειστές αρχιτεκτονικές όπου προορίζονται για αποκλειστική εκμετάλλευση από τον κατασκευαστή, όπως οι υπολογιστές Macintosh (με PowerPC και Intel επεξεργαστές), διάφορα PDAs, παιχνιδομηχανές, φορητές συσκευές αναπαραγωγής πολυμέσων και κινητά τηλέφωνα.
Αυτό που το κάνει να διαφέρει από τα υπόλοιπα λειτουργικά συστήματα, είναι η ευκολία με την οποία μπορεί να επεκταθεί για να καλύψει και τις πιο απαιτητικές ανάγκες. Ακόμα και αν δεν έχει κάποιος γνώσεις προγραμματισμού, μπορεί να προτείνει βελτιώσεις στους αρχικούς προγραμματιστές ή ακόμα να χρηματοδοτήσει κάποιον για να υλοποιήσει αυτές τις βελτιώσεις (πολλά ελεύθερα προγράμματα χρηματοδοτούνται και αναπτύσσονται με αυτόν τον τρόπο). Υπάρχουν αρκετές βιομηχανικές ενώσεις και συνέδρια hardware διατηρούν και βελτιώνουν την υποστήριξη των συσκευών στο Linux, όπως το FreedomHEC.

Άδεια χρήσης

Το Linux, καθώς και τα περισσότερα συνοδευτικά προγράμματα, διανέμεται υπό τους όρους του GNU General Public License. Η άδεια αυτή δημιουργήθηκε για να εξασφαλίσει την ελεύθερη διανομή των προγραμμάτων που την χρησιμοποιούν. Έτσι κάποιο πρόγραμμα κάτω από την GNU GPL πρέπει υποχρεωτικά να συνοδεύεται από τον πηγαίο κώδικα του, ενώ στην περίπτωση που κάποιος τροποποιήσει ένα τέτοιο πρόγραμμα και θέλει να το διανέμει είναι υποχρεωμένος να διανέμει τον αρχικό κώδικα καθώς και τις δικές του τις αλλαγές στον κώδικα. Με την έννοια του ελεύθερου προγράμματος δεν υπονοείται ότι είναι δωρεάν, αλλά ότι διανέμεται ελεύθερα, με τον πηγαίο κώδικά του διαθέσιμο στον καθένα, και αυτό δίνει την δυνατότητα όχι μόνο της χρησιμοποίησης του λειτουργικού, αλλά και της αναδιανομής του, της πώλησης του, τροποποίησής του, της επέκτασής του, πρόσβαση στον πηγαίο κώδικα και συνήθως σε εκτενή τεκμηρίωση.
Το λογισμικό του Linux που υπόκειται στην άδεια GNU GPL μπορεί να αντιγραφεί, να παραχωρηθεί ή ακόμη και να πωληθεί ελεύθερα. Το αν αυτό ισχύει για ολόκληρες διανομές του Linux, εξαρτάται πρωτίστως από την συγκεκριμένη διανομή. Αν η διανομή αυτή είναι η Debian GNU/Linux, Slackware ή Fedora, καθώς και την λίστα των διανομών τις οποίες το Ίδρυμα Ελεύθερου Λογισμικού αναγνωρίζει ως πλήρως ελεύθερα, τότε όλα τα παραπάνω επιτρέπονται (μιας και δεν συμπεριλαμβάνει, στη βασική διανομή, μη ελεύθερα προγράμματα). Οι υπόλοιπες διανομές μπορεί να περιέχουν και μη ελεύθερο λογισμικό. Σε αυτές τις διανομές επιτρέπονται τα παραπάνω μόνο στα ελεύθερα προγράμματα τα οποία πρέπει να ξεχωρίσει ο ενδιαφερόμενος (συνήθως η κάθε διανομή δίνει μια ελεύθερη έκδοσή της, ή έχει σε ξεχωριστά CDs τα μη ελεύθερα προγράμματα).

Διαθέσιμες εφαρμογές

Οι διανομές συνήθως διαθέτουν πολύ μεγάλη ποικιλία προγραμμάτων. Υπάρχουν δεκάδες χιλιάδες ελεύθερα προγράμματα τα οποία έρχονται με άδεια παρόμοια με του Linux (ή χαλαρότερη), τα οποία καλύπτουν τις περισσότερες δυνατότητες που προσφέρουν τα αντίστοιχα κλειστού κώδικα. Σήμερα συντηρούνται μεγάλες βάσεις δεδομένων ώστε να ταξινομηθούν αυτά τα προγράμματα.
Λογισμικό κλειστού κώδικα (proprietary) ή/και με περιορισμένες ελευθερίες χρήσης προγράμματα, υπάρχουν και στο Linux και καλύπτουν αρκετούς τομείς εξειδικευμένου λογισμικού όπως παιχνίδια, βάσεις δεδομένων και οδηγούς συσκευών.
Πέρα από την μεγάλη ποικιλία εφαρμογών που έχουν δημιουργηθεί για το Linux, υπάρχει επίσης κάποια δυνατότητα να εκτελεσθούν σε περιβάλλον Linux και προγράμματα που έχουν κατασκευαστεί για MS Windows. Αυτό γίνεται χρησιμοποιώντας κάποια "ενδιάμεση" εφαρμογή όπως είναι το Wine, το οποίο είναι μία ελεύθερη υλοποίηση του API των Windows, η οποία αναλαμβάνει να γεφυρώσει το χάσμα.

Οδηγοί συσκευών και ζητήματα συμβατότητας υλικού

Σε ιδιαίτερη κατηγορία ανήκουν οι οδηγοί συσκευών (drivers). Λόγω της ιδιαίτερης φύσης τους, μπορεί να απαιτούνται για τη συγγραφή τους συγκεκριμένες πληροφορίες για τις προδιαγραφές και το σχεδιασμό της ελεγχόμενης συσκευής. Οι πληροφορίες αυτές δεν είναι πάντοτε διαθέσιμες, καθώς οι κατασκευαστές πολλές φορές διστάζουν να τις κοινοποιήσουν, επικαλούμενοι ζητήματα έλλειψης ζήτησης, τεχνικές δυσκολίες, καθώς και μη συμβατότητα με το επιχειρησιακό τους μοντέλο έναντι του ελεύθερου λογισμικού.
Μερικές φορές είναι δυνατόν να δημιουργηθεί ένας "ελεύθερος" οδηγός με τη χρήση αντίστροφης επεξεργασίας(reverse engineering), από τον κώδικα μηχανής σε πηγαιό κώδικα, και πράγματι για πολλά περιφερειακά υπάρχουν σήμερα τέτοιοι οδηγοί που λειτουργούν ικανοποιητικά. Σε άλλες περιπτώσεις, οι κατασκευαστές παρέχουν τις απαραίτητες πληροφορίες, αποβλέποντας στη διάδοση του προϊόντος τους στην επεκτεινόμενη κοινότητα των χρηστών του Linux. Με μερικές συσκευές οι χρήστες του Linux είναι υποχρεωμένοι να χρησιμοποιήσουν οδηγούς κλειστού κώδικα. Αυτό δημιουργεί μεγάλα προβλήματα στη διάδοση του ελεύθερου λογισμικού, καθώς οι οδηγοί αυτοί δεν μπορούν να διανεμηθούν ελεύθερα, ούτε και να τροποποιηθούν κατάλληλα, ακολουθώντας την εξέλιξη του Linux, και οι χρήστες τους εξαρτώνται ουσιαστικά από την καλή θέληση των κατασκευαστών. Το πρόβλημα αυτό είναι ιδιαίτερα έντονο σε σχέση με τα μόντεμ, διότι πολλά μόντεμ (software modems) είναι σχεδιασμένα να λειτουργούν με οδηγούς που είναι διαθέσιμοι μόνο για MS Windows. Τα μόντεμ αυτά καλούνται συνήθως "winmodems", ενώ για όσα από αυτά καθίσταται δυνατό να λειτουργήσουν με ελεύθερους οδηγούς έχει επικρατήσει ο όρος "linmodems". Επίσης αντίστοιχο πρόβλημα υπάρχει και με τις σύγχρονες κάρτες γραφικών, όπου ο χρήστης για να μπορέσει να εκμεταλλευτεί πλήρως τις 3D ικανότητες της κάρτας του, είναι αναγκασμένος να κατεβάσει τον κατάλληλο οδηγό του κατασκευαστή. Οι ανάλογοι οδηγοί ελεύθερου λογισμικού περιορίζονται μόνο στην υποστήριξη των 2D ικανοτήτων της κάρτας ή υποστηρίζουν ένα μικρό σύνολο των 3D δυνατοτήτων τους.
Οι περισσότεροι διανομείς του Linux καταρτίζουν σε τακτά διαστήματα έναν κατάλογο συσκευών που είναι "συμβατές" με τη διανομή τους του Linux. Αυτές οι λίστες ονομάζονται "λίστες συμβατότητας υλικού" (Hardware Compatibility Lists) ή HCL για συντομία.