Δεν είναι λίγοι αυτοί που συγχέουν το BSD με το Linux, νομίζοντας ότι το πρώτο είναι ένα παράγωγο ή μια διανομή του δεύτερου. Αυτό όμως είναι απόλυτα λαθεμένο.
Παρακάτω γίνεται μια επεξήγηση στις διαφορές που έχουν αυτά τα δυο, συγγενή μεν, αλλά διαφορετικά Λειτουργικά Συστήματα.
Τι είναι το BSD Unix;
Η οικογένεια συστημάτων BSD Unix είναι βασισμένη στον πηγαίο κώδικα του πραγματικού Unix που αναπτύχθηκε στα εργαστήρια Bell Labs και αργότερα αγοράστηκε από το πανεπιστήμιο της Καλιφόρνια (Berkeley Software Distribution). Τα σύγχρονα συστήματα BSD στέκονται πάνω στον πηγαίο κώδικα που εκδόθηκε στις αρχές του 1990 (Net/2 Lite και 386/BSD έκδοση).
Το BSD είναι πίσω από την φιλοσοφία της δικτύωσης TCP/IP και κατά συνέπεια του διαδικτύου, είναι ένα αναπτυγμένο σύστημα Unix με προχωρημένες δυνατότητες. Εκτός από το ιδιοταγές BSD/OS, η ανάπτυξη του οποίου διακόπηκε, υπάρχουν σήμερα κάμποσα συστήματα BSD. Τα FreeBSD, NetBSD, OpenBSD, και OSX το οποίο προήλθε από το FreeBSD. Υπάρχουν επίσης ανάλογα forks των παραπάνω.
Σκοπός των παραπάνω forks είναι να συμπεριλάβουν διάφορα χαρακτηριστικά που λείπουν από τα παραπάνω συστήματα BSD, από τα οποία είναι εξαρτημένα, χωρίς να λαμβάνεται υπόψη το πόσο καλά είναι σχεδιασμένα. Ορισμένα έχουν περισσότερες γραφικές δυνατότητες από το FreeBSD, αλλά δεν υπάρχουν ουσιώδεις διαφορές ανάμεσα τους. Κάποια δεν μπορουν από μόνα τους να “αναπνεύσουν” χωρίς το FreeBSD, ενώ το FreeBSD και OpenBSD είναι ανεξάρτητα μεταξύ τους.
Τι είναι το Linux;
Μολονότι οι χρήστες αρέσκονται να χρησιμοποιούν τον όρο Linux για κάθε διανομή Linux, όπως Red Hat, Mageia Linux κλπ, για τους επαγγελματίες της επιστήμης υπολογιστών το Linux είναι μόνο ο πυρήνας. Το Linux ξεκίνησε στα 1991 όπου ο συγγραφέας του, Linus Torvalds, ξεκίνησε την εργασία του πάνω σε έναν δωρεάν αντικαταστάτη του Minix. Οι μηχανικοί λογισμικού που ανέπτυξαν μερικά Linux system utilities, χρησιμοποίησαν τον πηγαίο κώδικα από το BSD, καθώς τα δύο αυτά συστήματα αναπτύσσονταν παράλληλα, την ίδια χρονική περίοδο (1992-1993) ως λογισμικό ανοικτού κώδικα.
Σήμερα υπάρχουν κάποιοι, αν όχι αρκετοί μηχανικοί ανάπτυξης λογισμικού, που ανέπτυξαν δικούς τους πυρήνες, όπως FreeDOS, Agnix, ReactOS, Inferno κλπ. Αλλά αυτοί οι τύποι απλώς δεν μπήκαν στο τρένο όταν πέρναγε. Δεν έχασαν βέβαια κάτι, εκτός από το γεγονός πως θα μπορούσαν να γινόντουσαν καλύτεροι προγραμματιστές. Και σίγουρα την αναγνώριση και το feedback από το κοινό.
O Linus έχτισε τη δόξα του επίσης από την εργασία πολλών μηχανικών ανάπτυξης λογισμικού, επιβιβάστηκε δε στο τρένο στη σωστή στιγμή. Έτσι, ο ίδιος αξίζει μια διάκριση σαν εμπνευστής της ιδέας του λογισμικού αυτού.
Το OpenBSD σε σύγκριση με το Linux
Είναι συχνά δύσκολο να πεις τι είναι καλύτερο όταν συγκρίνεις δύο πράγματα, χωρίς να συγκεκριμενοποιήσεις τον σκοπό χρήσης τους. Το Mobile Internet ίσως φαίνεται καλύτερο για κάποιον που ταξιδεύει συχνά, αλλά για κάποιον που εργάζεται στο σπίτι, δεν είναι απαραίτητο.
Έτσι μοιάζει χαζή η ερώτηση “Τι είναι πιο καλό, το κινητό ή το σταθερό internet”; Αυτό εξαρτάται.
Αν συγκρίνει κάποιος το Linux και το OpenBSD για τις δυνατότητες τους στο γραφείο, το Linux προσφέρει περισσότερες εφαρμογές από το OpenBSD, αλλά ως λύση εξυπηρετητή, τα συστήματα BSD είναι γνωστά ως εύρωστα, περισσότερο σταθερά και ασφαλή, και μάλιστα χωρίς πολλά patches τα οποία οι διανομείς εκδίδουν αμέσως μετά από κάποια έκδοση του Linux, όταν η τελευταία έρχεται στο φως. Επίσης, τα συστήματα BSD βασίζονται στον γνήσιο πηγαίο κώδικα Unix, συγκρινόμενα με το Linux το οποίο αναπτύχθηκε από “scratch” (πυρήνας).
Διαφορές ανάμεσα σ ε BSD και Linux
1) . Άδειες
Η άδεια BSD επιτρέπει σε χρήστες ή εταιρίες να αλλάξουν τον πηγαίο κώδικα ενός προγράμματος, χωρίς να δημοσιεύσουν τις αλλαγές στο κοινό. Με άλλα λόγια, οι άδειες BSD επιτρέπουν εμπορική χρήση και εταιρική συγχώνευση του κώδικα μέσα σε ιδιοταγή εμπορικά προϊόντα. Με αυτόν τον τρόπο η Microsoft ενσωμάτωσε το δικτυακό μέρος του BSD στα προϊόντα της, αλλά και το Mac OS X κερδίζει χρήματα από το BSD.
To Linux χρησιμοποιεί την άδεια GPL τις περισσότερες φορές, (βέβαια εφαρμογές Linux μπορούν να έχουν άδειες BSD ή άλλες άδειες, εξαρτάται από τους μηχανικούς ανάπτυξης λογισμικού στο τι θα αποφασίσουν). Με την άδεια GPL λοιπόν σε ένα πρόγραμμα, οποιοσδήποτε μπορεί να αλλάξει τον πηγαίο κώδικα, αλλά πρέπει να τον διαμοιραστεί με την κοινότητα ανοικτού λογισμικού, προκειμένου να είναι σίγουρο πως ο καθένας θα επωφεληθεί από αυτή την αλλαγή.
2) . To core system
Το BSD έχει το λεγόμενο core system (χωρίς πακέτα). Το core system αποτελείται από βασικά utilities (όπως ssh, fdisk, διάφορες εντολές όπως chmod ή sysctl, σελίδες manual και άλλα), και οτιδήποτε πέρα από αυτά θεωρείται αυστηρά ως πρόσθετο. To Linux από την άλλη, και βεβαίως όχι μόνο ο πυρήνας, συνήθως πακετάρεται σαν ένα ολοκληρωμένο σύστημα, όπου αυτή η αλλαγή δεν είναι εμφανής.
3) . Directories
Σε συστήματα BSD, όλα τα πρόσθετα πακέτα (add-on) είναι αυστηρά τοποθετημένα μέσα στο /usr/local directory:
documents στο user/local/share/docs/application_name,
themes και άλλα πράγματα στο /usr/local/share/application_name,
binaries στο /usr/local/bin/application_name.
Λέγοντας “application_name” εννοούμε το όνομα ενός προγράμματος, έτσι αν εγκαταστήσετε το IceWM για παράδειγμα, το binary του θα είναι εδώ:
/usr/local/bin/icewm.
Στο Linux από την άλλη, όλες οι εφαρμογές πάνε ως επί το πλείστον στο /usr/bin directory.
4) . Τα ports και τα πακέτα
Τα BSD, χρησιμοποιούν το σύστημα των “ports”, τα οποία είναι fingerprints των εφαρμογών μέσα στο /usr/ports directory, όπου ένας χρήστης μπορεί να κάνει “cd”, και να εκτελέσει μια εντολή make, η οποία θα κατεβάσει μέσω μιας ντιρεκτίβας που εμπεριέχεται στον κώδικα ενός τέτοιου fingerprint, το source της εφαρμογής και το σύστημα θα την κάνει επίσης compile.
Τα “ports” είναι στην πραγματικότητα add-on πακέτα για BSD συστήματα και είναι επίσης πακεταρισμένα σε αποθετήριο πακέτων ενός μονολιθικού (concrete) συστήματος BSD.
Μπορούν να εγκατασταθούν και ως binaries με τη χρήση του “pkg_add” είτε απευθείας από το διαδίκτυο, είτε τοπικά. Αλλά τα “ports” έχουν το πλεονέκτημα πως αν ο συγγραφέας ενός πακέτου, φτιάξει μια νέα βερσιόν, ένας χρήστης μπορεί να πάρει κατευθείαν την καινούργια ανανεωμένη βερσιόν. Πακέτα που εκδίδονται για μια συγκεκριμένη έκδοση BSD, όπως OpenBSD 4.1, δεν αναβαθμίζονται, και οι χρήστες πρέπει να περιμένουν για την επόμενη έκδοση του BSD, (όπως OpenBSD 4.2).
5) . Εκδόσεις, σταθερές εκδόσεις, development εκδόσεις κλπ.
Τα BSD συστήματα έχουν επίσης τις σταθερές τους εκδόσεις. Στο FreeBSD για παράδειγμα, έχουμε μια FreeBSD-Release (που μπορεί να χρησιμοποιείται κανονικά), μια FreeBSD-Stable (περισσότερο ελεγμένη για σφάλματα και κενά ασφαλείας), και μια Development Version – Current, η οποία δεν είναι σταθερή και δε συνίσταται για νορμάλ χρήση. Ορισμένες διανομές του Linux άρχισαν να υιοθετούν αυτή τη φιλοσοφία των εκδόσεων, αλλά στα συστήματα BSD αυτός ο τρόπος διανομής έχει γίνει ο κανόνας.
6) . Πυρήνας
Φυσικά, ο πυρήνας, (BSD σε σύγκριση με Linux) είναι εντελώς διαφορετικός.
7) . Σύστημα αρχείων
Το BSD έχει το σύστημα αρχείων FFS, είναι το μόνο σύστημα αρχείων σε αντίθεση με το Linux, όπου έχεις πολλά συστήματα αρχείων όπως ext2, ext3, ext4, ReiserFS, XFS κλπ.
8) . Κατατμήσεις και εσωτερικές διαιρέσεις
Τα συστήματα BSD διαιρούν τις κατατμήσεις τους εσωτερικά. Αυτό σημαίνει πως μετά την εγκατάσταση ενός BSD στο σκληρό δίσκο, προγράμματα όπως το fdisk, Partition Magic, Norton Ghost και άλλα, δε θα δουν αυτή την εσωτερική διαίρεση ενός BSD (FFS) δίσκου. Έτσι, η διαδικασία επανακατάτμησης ενός δίσκου δεν είναι τόσο επίπονη όταν οι διαχειριστές συστημάτων ζητούν ένα αυστηρό partitioning (για τα /home, /tmp, /var, /etc directories). Σαν αποτέλεσμα των παραπάνω, η ονομασία των κατατμήσεων επίσης διαφέρει λίγο.
Ένας δίσκος /dev/ad0s3b στο FreeBSD σημαίνει πως έχεις να κάνεις με το “slice” 3 (“s3”) το οποίο σε Linux αντιστοιχεί στο /dev/hda3. Το εσωτερικό partition έχει την ονομασία ενός γράμματος “a”, “b”, “e”, κλπ. (Το “b” είναι μια swap partition). Τα συστήματα BSD χρησιμοποιούν επίσης άλλα συμβατικά ονόματα για τις συσκευές (δίσκους κλπ).
9) . Κατατμήσεις και εγκατάσταση
Εκτός της περίπτωσης να κάνετε ένα kernel hack, τα λειτουργικά BSD μπορούν να εγκαθίστανται μόνο στην πρωτεύουσα κατάτμηση (primary partition). Αυτό, δεν είναι κανόνας για το Linux. Βέβαια, εφ’ όσον τα λειτουργικά BSD ακολουθούν εσωτερικές διαιρέσεις όπως είπαμε, αυτό δεν είναι μεγάλο θέμα. Η αρχιτεκτονική των PC για το IDE, ακολουθεί τον κανόνα του να υπάρχουν μέχρι 4 primary partitions. Στο Linux θα τα λέγαμε: dev/hda1 (πρώτο partition στον master δίσκο στο πρώτο IDE κανάλι), dev/hda2 (δεύτερο partition), dev/hda3 (τρίτο partition) και dev/hda4 (τέταρτο partition).
Στη συνέχεια, η αρχιτεκτονική του PC, επιτρέπει τη δημιουργία των λεγόμενων λογικών δίσκων (logical disks) σε ένα φυσικό δίσκο, (dev/hda5, dev/hda6) κλπ. Μπορείς να κάνεις λοιπόν κατατμήσεις “λογικούς δίσκους”, όσους θέλεις, και μπορείς να εγκαταστήσεις το Linux σε έναν τέτοιο “logical disk”. Απο την άλλη, το να εγκαταστήσεις το BSD σε λογική κατάτμηση (logical partition) είναι αδύνατον υπό κανονικές συνθήκες.
10) . Ρύθμιση του συστήματος
Η ρύθμιση του συστήματος γίνεται χειροκίνητα ως επί το πλείστον, αλλά μερικοί κλώνοι όπως το PC BSD σπάνε τον κανόνα. Η χειροκίνητη προσέγγιση είναι πολύ καλό πράγμα καθώς οι administrators έχουν τα πάντα υπό έλεγχο, χωρίς να χάνουν τον καιρό τους σε ένα λαβύρινθο από μενού. Μια καλή παρομοίωση γι’ αυτό, είναι ένας μηχανικός να προσπαθεί να επισκευάσει τη μηχανή ενός αυτοκίνητου που είναι καλυμμένο με ένα κάλυμμα.
Για να πούμε ένα καλύτερο παράδειγμα, δύσκολα θα βρούμε μια διανομή Linux η οποία δεν είναι αυτοματοποιημένη να ξεκινά με Χ startup (γραφικό περιβάλλον). Φυσικά, αυτό μπορούμε να το απενεργοποιήσουμε κατά τη διάρκεια της εγκατάστασης. Αλλά αν ξεχάσουμε να το κάνουμε, δύσκολα πάλι θα βρούμε σε ένα μενού τον τρόπο που αυτό θα γίνει. Συνειδητοποιούμε έτσι, πως οι διανομές θέλουν να μας δείχνουν τη γραφική προσέγγιση, δηλαδή να πηγαίνουμε πρώτα στο κάλυμμα του αυτοκινήτου, και μετά στη μηχανή.
Αν είσαστε όμως καλός διαχειριστής συστήματος, δεν εμπιστεύεστε τους διανομείς, ποιανού το πρόγραμμα θα χρησιμοποιήσετε και το πως θα το χρησιμοποιήσετε, θέλετε να κάνετε εσείς κουμάντο και να έχετε τη δική σας ελευθερία. Οπωσδήποτε στις περισσότερες περιπτώσεις χάνετε μερικές ώρες για να απενεργοποιήσετε διάφορα services τα οποία δεν είναι απαραίτητα αλλά είναι όμως ενεργοποιημένα εξ’ αρχής.
To Linux φημίζεται λοιπόν και σαν καλό desktop λειτουργικό, και σαν server, αλλά οι καλοί διαχειριστές συστημάτων δε χρειάζονται τα Χ. Και όσο περισσότερο λογισμικό είναι εγκατεστημένο στον σκληρό σας δίσκο, τόσα πιο πολλά προβλήματα ασφαλείας θα αντιμετωπίζετε, διότι δεν μπορείς να παρακολουθείς το κάθε πακέτο κάτω από περίεργες συνθήκες. Τα καλά και ασφαλή συστήματα είναι απλά, λιτά και “δεμένα”.
11). Συμβατότητες προγραμμάτων
Όλα τα συστήματα BSD έχουν Linux emulation υποστήριξη. Το να τρέξεις όμως BSD binaries σε Linux είναι πιο δύσκολο.
12) . Υποστήριξη υλικού
Τα BSD λειτουργικά έχουν μικρότερη υποστήριξη για οδηγούς υλικού από τους κατασκευαστές. Έτσι, υστερούν σ’ αυτό τον τομέα, καθώς οι περισσότεροι κατασκευαστές υποστηρίζουν Microsoft και Linux. Έτσι, εάν σας ενδιαφέρει το BSD θα πρέπει να κάνετε πρώτα μια έρευνα για υποστηριζόμενο υλικό, chipsets και άλλα, πριν αγοράσετε hardware.
13) . Unix System V “runlevel scripts”
Τα λειτουργικά συστήματα BSD δε χρησιμοποιούν τα Unix System V “runlevel scripts” (initialization startup scripts) όπως το Linux.
14) . Επίπεδα ασφαλείας
Οι πυρήνες BSD μπορούν να ρυθμιστούν σε διαφορετικά επίπεδα ασφαλείας. Αυτό μπορεί να γίνει και με το Linux, αλλά το BSD έχει ειδική μέριμνα σε αυτή τη δυνατότητα ρύθμισης του πυρήνα (kernel-tuning feature), η οποία καθιστά σχεδόν αδύνατο να γίνονται αλλαγές σε αρχεία σε υψηλά επίπεδα ασφαλείας, (δεν μπορείς επίσης να τα διαγράφεις).
15) . Συμβατότητες και πακέτα
Τα BSD λειτουργικά συστήματα έχουν τα πάντα κάτω από την ίδια στέγη. Αντίθετα, σε Linux, διάφορα linux προγράμματα δεν είναι συμβατά σε όλες τις διανομές. Για παράδειγμα, αν εγκαταστήσεις ένα SuSE RPM πακέτο στο Mageia μπορεί να μη λειτουργήσει. Τα BSDs λοιπόν έχουν μια συγκεντρωμένη ισχύ σε αυτό, και αν ποτέ μετακινηθείτε από το Linux στο FreeBSD θα δείτε σύντομα πως βγαίνετε έξω από αυτό το χάος.
Θέλετε ένα πακέτο; Απλώς επισκεφθείτε το About FreeBSD Ports | The FreeBSD Project και κατεβάστε το.
Θα δουλέψει σε όλες τις περιπτώσεις, εκτός αν ο προγραμματιστής έχει κάποια προγραμματιστικά λάθη μέσα.
16) . Ταχύτητα εκκίνησης
Γενικά, τα BSD συστήματα εκκινούν πιο γρήγορα από τα Linux συστήματα. Βέβαια, και τα Linux λειτουργικά συστήματα μπορούν να το κάνουν αυτό, αλλά συνήθως έρχονται σε “βαριά” DVD και από την άλλη έχουν συμπιεσμένο πυρήνα. Τα BSD συστήματα δε χρησιμοποιούν, αν και μπορούν να το κάνουν, έναν εξ’ αρχής συμπιεσμένο πυρήνα, και έτσι το σύστημα εκκινεί πάντα πιο γρήγορα.
Όπως είπα και προηγουμένως στο άρθρο, οι διανομείς Linux χρησιμοποιούν πολλές φορές services τα οποία δε χρειάζονται, για παράδειγμα δε χρειάζεσαι τη Samba (file και print services) και πολλά άλλα. Η επανεκκίνηση σε Linux διαρκεί περισσότερο, και αυτό γιατί πρέπει να απενεργοποιηθούν αυτά τα services. Πολλοί χρήστες Linux μάλιστα, αγνοούν και τον σκοπό αυτών των services.
17) . Ταχύτητα και λιτότητα
Συγκρινόμενες με το BSD, οι περισσότερες διανομές Linux είναι παραφουσκωμένες.
Ορισμένοι χρήστες σωστά επισήμαναν αυτό το πράγμα στο παρελθόν, και μια νέα τάση στον κόσμο του Linux αρχίζει να έρχεται, με ιδέες πιο κοντά στο στυλ του BSD. Μια διανομή με αυτή την τάση είναι το Gentoo Linux αλλά και το Slackware, το οποίο διατήρησε τη σιλουέτα του από την εποχή που πρωτοεκδόθηκε στα 1993. Η σελίδα του Gentoo, gentoo.org , αναφέρει πως το Gentoo είναι ένα ελεύθερο λειτουργικό σύστημα βασισμένο στο Linux ή το BSD. Συνεπώς, διανομές όπως Gentoo ή Slackware θα εκκινούν πάντα πιο γρήγορα από άλλα Linux.
18) . Μεταγλωττίσεις πακέτων
Εάν μεταγλωττίσετε (compile) προγράμματα από ports δε θα πέσετε σε σφάλματα μεταγλώττισης, καθώς οι πακεταριστές του BSD προετοιμάζουν τα πακέτα τους πολύ προσεκτικά, έτσι ώστε οι χρήστες να τα μεταγλωττίζουν με επιτυχία. Αυτό δε συμβαίνει πάντοτε σε Linux.
Συμπερασματικά
Πραγματικά, μου αρέσουν όλα τα συστήματα BSD, και αν ενδιαφέρεστε, ρίξτε μια ματιά στην τεκμηρίωση του FreeBSD, ένα από τα καλύτερα documentation. Θα σας δώσει μια καλή οπτική, την ιστορία, και τη σκληρή δουλειά που έχει γίνει πάνω στην ανάπτυξη αυτών των συμπαγών συστημάτων. Σήμερα τα BSD λειτουργικά συστήματα είναι η μόνη εναλλακτική λύση ποιότητας απέναντι στο Linux στον κόσμο του ανοικτού λογισμικού.