FreeBSD

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Πήδηση στην πλοήγηση Πήδηση στην αναζήτηση
FreeBSD
FreeBSD 10 Bootloader
Δημιουργός The FreeBSD Project
Πρώτη έκδοση 1 Νοεμβρίου 1993, 24 έτη πριν (1993-11-01)
Τελευταία έκδοση 11.2 (21 Ιουνίου 2018, 3 μήνες πριν (2018-06-21))[1]
Τύπος Λειτουργικό Σύστημα
Κατηγορία BSD, παράγωγο του Unix
Πυρήνας Μονολιθικός πυρήνας με φορτώσιμα αρθρώματα πυρήνα
Αρχιτεκτονική i386, AMD64, PowerPC, SPARC, ARM, MIPS
Διαχείριση πακέτων pkgng
Ανάπτυξη Ενεργό
Άδεια χρήσης BSD
Ιστοσελίδα www.freebsd.org

Το FreeBSD είναι ένα Unix-συμβατό ελεύθερο και ανοικτού κώδικα λειτουργικό σύστημα, το οποίο έχει τις καταβολές του στο Research Unix μέσω του Berkeley Software Distribution (BSD). Το FreeBSD είναι άμεσος απόγονος του BSD, το οποίο ιστορικά ονομαζόταν "BSD Unix" ή "Berkeley Unix" (κατά παράβαση του εμπορικού σήματος UNIX). Η πρώτη έκδοση του FreeBSD κυκλοφόρησε το 1993, και από το 2005 είναι η πιο ευρέως χρησιμοποιούμενη ανοικτού κώδικα διανομή του BSD, καθώς βρίσκεται εγκατεστημένη σε περισσότερο από τα τρία τέταρτα όλων των συστημάτων που τρέχουν ανοικτού κώδικα διανομές του BSD.

Το FreeBSD έχει ομοιότητες με το Linux, με δύο σημαντικές όμως διαφορές. Πρώτον, το FreeBSD αποτελεί ένα πλήρες λειτουργικό σύστημα, δηλαδή παρέχει τον πυρήνα, προγράμματα οδήγησης συσκευών, βοηθητικά προγράμματα για τον χώρο χρήστη και τεκμηρίωση, σε αντίθεση με το Linux το οποίο παρέχει μόνο τον πυρήνα και τα προγράμματα οδήγησης, και βασίζεται σε τρίτους για το λογισμικό συστήματος. Δεύτερον, ο πηγαίος κώδικας του FreeBSD διανέμεται κάτω από την ανεκτική (αγγλ: permissive) άδεια BSD, σε αντίθεση με τη copyleft άδεια GPL που χρησιμοποιείται από το Linux.

Το FreeBSD project περιλαμβάνει ομάδα ασφαλείας, η οποία επιβλέπει όλο το λογισμικό το οποίο διανέμεται στο βασικό σύστημα. Ένα ευρύ φάσμα από πρόσθετες εφαρμογές τρίτων μπορεί να εγκατασταθεί χρησιμοποιώντας το σύστημα διαχείρισης πακέτων pkgng ή τα Ports του FreeBSD, ή μεταγλωττίζοντας απ' ευθείας τον πηγαίο κώδικα. Λόγω των ανεκτικών όρων της άδειας του, μεγάλο μέρος του κώδικα του FreeBSD έχει γίνει αναπόσπαστο μέρος άλλων λειτουργικών συστημάτων, όπως το Darwin της Apple (που είναι η βάση για τα macOS, iOS, watchOS, και tvOS λειτουργικά συστήματα της Apple), το FreeNAS (open source NAS/SAN λειτουργικό σύστημα), το Nintendo Switch system software,[2][3][4] και τα λειτουργικά συστήματα των PlayStation 3[5] και PlayStation 4.[6]

Ιστορία[Επεξεργασία | επεξεργασία κώδικα]

Υπόβαθρο[Επεξεργασία | επεξεργασία κώδικα]

Η ιστορία του FreeBSD ξεκινά από το Πανεπιστήμιο της Καλιφόρνια, Berkeley, όταν αυτό απέκτησε μια άδεια για τον πηγαίο κώδικα του UNIX από την AT&T. Φοιτητές του πανεπιστημίου άρχισαν να τροποποιούν και να βελτιώνουν το AT&T Unix και ονόμασαν αυτή τη τροποποιημένη έκδοση "Berkeley Unix" ή "BSD", υλοποιόντας χαρακτηριστικά όπως το TCP/IP, εικονική μνήμη και το Unix File System. Το BSD project ιδρύθηκε το 1976 από τον Bill Joy, αλλά από τη στιγμή που το BSD περιείχε κώδικα από το AT&T Unix, όλοι όσοι το αποκτούσαν έπρεπε να πάρουν πρώτα άδεια από την AT&T για να τον χρησιμοποιήσουν.

Τον Ιούνιο του 1989, κυκλοφόρησε το "Networking Release 1" ή απλά Net-1 – η πρώτη δημόσια έκδοση του BSD. Μετά την κυκλοφορία του Net-1, ο Keith Bostic, προγραμματιστής του BSD, πρότεινε την αντικατάσταση όλου του κώδικα της AT&T με ανοικτό κώδικα κάτω από την άδεια BSD. Οι εργασίες για την αντικατάσταση ξεκίνησαν και 18 μήνες μετά, ο κώδικας της AT&T είχε αντικατασταθεί, εκτός από έξι αρχεία που παρέμειναν στον πυρήνα και περιείχαν κώδικα της AT&T. Οι προγραμματιστές του BSD, ωστόσο, αποφάσισαν να κυκλοφορήσουν το 1991 το "Networking Release 2" (Net-2) χωρίς αυτά τα έξι αρχεία.

Η γέννηση του FreeBSD[Επεξεργασία | επεξεργασία κώδικα]

Το 1992, αρκετούς μήνες μετά την κυκλοφορία του Net-2, οι William Jolitz και Lynne Jolitz έγραψαν κώδικα για να αντικαταστήσουν τα έξι αρχεία που έλειπαν, προσάρμοσαν το BSD ώστε να εκτελείται στους Intel 80386 μικροεπεξεργαστές, και ονόμασαν το νέο λειτουργικό σύστημα 386BSD, το οποίο και κυκλοφόρησαν μέσω ενός ανώνυμου FTP server. Η ανάπτυξη, όμως, του 386BSD ήταν αργή και ύστερα από μια περίοδο εγκατάλειψης, ορισμένοι χρήστες του 386BSD αποφάσισαν να δημιουργήσουν τη δική τους διανομή, έτσι ώστε να μπορούν να διατηρούν το λειτουργικό σύστημα ενημερωμένο. Στις 19 Ιουνίου 1993, επέλεξαν το FreeBSD ως όνομα της νέας διανομής[7] και η πρώτη έκδοση του κυκλοφόρησε το Νοέμβριο του 1993.[8]

Κατά τον πρώτο καιρό του project, η εταιρεία Walnut Creek CDROM, μετά από πρόταση των FreeBSD developers, συμφώνησε να κυκλοφορήσει το λειτουργικό σύστημα σε CD-ROM. Επιπλέον, η εταιρεία προσέλαβε τους Jordan Hubbard και Ντέιβιντ Greenman (Ιδρυτικά μέλη), εκτελούσε το FreeBSD στους servers της, χορηγούσε συνέδρια με θεματική το FreeBSD και δημοσίευσε βιβλία σχετικά με το FreeBSD, συμπεριλαμβανομένου τουThe Complete FreeBSD από τον Greg Lehey. Από το 1997, το FreeBSD ήταν "το πιο επιτυχημένο προϊόν" του Walnut Creek. Μάλιστα, η ίδια η εταιρεία μετονομάστηκε αργότερα σε Τhe FreeBSD Mall και αργότερα σε iXsystems.

Σήμερα, το FreeBSD χρησιμοποιείται από πολλές εταιρίες πληροφορικής όπως η IBM, η Nokia, η Juniper Networks, και NetApp για να δημιουργήσουν τα προϊόντα τους.[8] Ορισμένα μέρη του Mac OS X βασίζονται στο FreeBSD. Το λειτουργικό σύστημα του PlayStation 3 δανείζεται ορισμένα στοιχεία από το FreeBSD, ενώ το λειτουργικό σύστημα του PlayStation 4 προέρχεται από το FreeBSD 9. Τα Netflix,[9] WhatsApp,[10] και FlightAware[11] είναι επίσης παραδείγματα μεγάλων, επιτυχημένων και σε μεγάλο βαθμό δικτυοκεντρικών εταιρειών που χρησιμοποιούν το FreeBSD.

Δικαστική διαμάχη[Επεξεργασία | επεξεργασία κώδικα]

Το 386BSD και το FreeBSD και τα δύο προέρχονται από την έκδοση του BSD το 1992.[8] Τον Ιανουάριο του 1992, η Berkeley Software Design Inc. (BSDi) άρχισε να κυκλοφορεί το BSD/386, που αργότερα ονομάστηκε BSD/OS, ένα λειτουργικό σύστημα παρόμοιο με το FreeBSD και βασισμένο στην έκδοση του BSD του 1992. Η AT&T κατέθεσε αγωγή κατά της BSDi και ισχυρίστηκε ότι υπήρξε διανομή πηγαίου κώδικα ιδιοκτησίας της, κατά παράβαση των συμφωνηθέντων στην άδεια. Η αγωγή επιλύθηκε εξωδικαστικά και οι ακριβείς όροι δεν έγιναν γνωστοί. Το μόνο που έγινε γνωστό ήταν ότι το BSDi θα πρέπει να βασίσει τον κώδικα του σε αυτόν του 4.4 BSD-Lite. Αν και το FreeBSD δεν ήταν στους άμεσα εμπλεκόμενους της αγωγής τού προτάθηκε να κάνει το ίδιο.[12] Το FreeBSD 2.0, το οποίο κυκλοφόρησε το Νοέμβριο του 1994, ήταν η πρώτη έκδοση του FreeBSD, χωρίς καθόλου κώδικα από την AT&T.

Χαρακτηριστικά[Επεξεργασία | επεξεργασία κώδικα]

Εκκίνηση του FreeBSD 9.1 με console login prompt

Χρήσεις[Επεξεργασία | επεξεργασία κώδικα]

Ως γενικού σκοπού λειτουργικό σύστημα, το FreeBSD μπορεί να χρησιμοποιηθεί σε διάφορα σενάρια:

Εξυπηρετητές (Servers)
Το FreeBSD περιέχει πληθώρα λογισμικού για χρήση σε εξυπηρετητές, τόσο στο βασικό σύστημα όσο και στη συλλογή των ports. Το FreeBSD είναι δυνατόν να ρυθμιστεί και να χρησιμοποιηθεί ως mail server, web server, Firewall, FTP server, DNS server και router, μεταξύ άλλων.
Επιφάνεια εργασίας
Το X Window System δεν είναι εγκατεστημένο από προεπιλογή, αλλά είναι διαθέσιμο στη συλλογή των ports του FreeBSD. Μια σειρά από γραφικά περιβάλλοντα όπως το GNOME, το KDE και το Xfce, και υπολογιστικά μη-απαιτητικούς διαχειριστές παραθύρων όπως το Openbox, Fluxbox και dwm είναι επίσης διαθέσιμα για το FreeBSD.
Ενσωματωμένα συστήματα
Αν και κύρια το FreeBSD επικεντρώνεται στις IA-32 και x86-64 αρχιτεκτονικές, παρέχει υποστήριξη και για άλλες σε μικρότερο βαθμό όπως οι ARM, PowerPC και MIPS.

Δικτύωση[Επεξεργασία | επεξεργασία κώδικα]

Το TCP/IP υποσύστημα του FreeBSD βασίζεται σε αυτό του 4.2 BSD, το οποίο συνέβαλε σημαντικά στην ευρεία υιοθέτηση αυτών των πρωτοκόλλων. Tο FreeBSD υποστηρίζει τα πρωτόκολλα IPv6, SCTP, IPSec, καθώς και ασύρματη δικτύωση (Wi-Fi). Τα IPv6 και IPSec υποσυστήματα ελήφθησαν από το KAME project. Επίσης, το FreeBSD υποστηρίζει τα IPX και AppleTalk πρωτόκολλα, τα οποία όμως θεωρούνται παλιά και έχει προγραμματιστεί η υποστήριξή τους να λήξει ξεκινώντας από το FreeBSD 11.0.

Από το FreeBSD 5.4 και μετά παρέχεται υποστήριξη για το Common Address Redundancy Protocol (CARP), του οποίου ο κώδικας προέρχεται από το OpenBSD project. Το πρωτόκολλο αυτό επιτρέπει σε πολλαπλούς κόμβους να μοιράζονται ένα σύνολο από IP διευθύνσεις, ώστε αν κάποιος από τους κόμβους καταρρεύσει, οι υπόλοιποι μπορούν να συνεχίσουν να εξυπηρετούν τα εισερχόμενα αιτήματα.

Αποθήκευση[Επεξεργασία | επεξεργασία κώδικα]

Το FreeBSD έχει πολλά μοναδικά χαρακτηριστικά που σχετίζονται με την αποθήκευση δεδομένων. Κάποια από αυτά είναι: τα Soft updates τα οποία προστατεύουν τη ακεραιότητα του UFS filesystem (ευρέως χρησιμοποιούμενο στις BSD διανομές) σε περίπτωση κατάρρευσης του συστήματος. Τα στιγμιότυπα του συστήματος αρχείων (αγγλ: filesystem snapshots) επιτρέπουν τη λήψη μιας εικόνας του συστήματος αρχείων UFS σε μια στιγμή στο χρόνο,[8] επιτρέποντας έτσι την αξιόπιστη δημιουργία αντιγράφων ασφαλείας όσο το σύστημα είναι σε λειτουργία. Το GEOM είναι ένα αρθρωτό υποσύστημα, το οποίο επιτρέπει τη δημιουργία συστοιχιών RAID (επιπέδων 0, 1 και 3 επί του παρόντος), την πλήρη κρυπτογράφηση δίσκου, τη δυνατότητα για journaling, τον συνδυασμό ξεχωριστών δίσκων σε έναν εικονικό δίσκο, την χρήση κρυφής μνήμης (αγγλ: caching) για καλύτερη απόδοση και τη δυνατότητα για πρόσβαση σε δικτυακά μέσα αποθήκευσης. Με τον συνδυασμό όλων το προηγούμενων το GEOM κάνει εφικτή τη δημιουργία περίπλοκων συστημάτων αποθήκευσης. Το FreeBSD παρέχει δύο υποσυστήματα για την κρυπτογράφηση δεδομένων: το GBDE και το Geli, τα οποία και τα δύο λειτουργούν στο επίπεδο του δίσκου. Το GBDE γράφτηκε από τον Poul-Henning Kamp και διανέμεται υπό την two-clause BSD άδεια. Το Geli αποτελεί εναλλακτική του πρώτου το οποίο έγραψε ο Pawel Jakub Dawidek και εμφανίστηκε για πρώτη φορά στο FreeBSD 6.0.

Από την έκδοση 7.0 και μετά, το FreeBSD υποστηρίζει το σύστημα αρχείων (αγγλ: filesystem) ZFS. Το ZFS στο παρελθόν ήταν ανοικτού κώδικα και αναπτύχθηκε από την Sun Microsystems, αλλά όταν η τελευταία εξαγοράστηκε από την Oracle, το ZFS μετατράπηκε σε κλειστού κώδικα προϊόν. Ωστόσο, το FreeBSD project συνεχίζει να αναπτύσσει και να βελτιώνει το ZFS μέσω του OpenZFS.

Ασφάλεια[Επεξεργασία | επεξεργασία κώδικα]

Το FreeBSD παρέχει αρκετά χαρακτηριστικά που σχετίζονται με την ασφάλεια, όπως λίστες ελέγχου πρόσβασης (ACLs), έλεγχο συμβάντων ασφαλείας, εκτεταμένο σύστημα αρχείων χαρακτηριστικά, υποχρεωτικός έλεγχος πρόσβασης (MAC) και σύστημα δυνατοτήτων (capabilities system). Τα παραπάνω χαρακτηριστικά αναπτύχθηκαν από το TrustedBSD, το οποίο ιδρύθηκε από Robert Watson, με στόχο την εφαρμογή των συστάσεων που περιέχονται στο Common Criteria for Information Technology Security Evaluation ISO πρότυπο και στο Trusted Computer System Evaluation Criteria (Πορτοκαλί Βιβλίο) πρότυπο του Υπουργείου Άμυνας των Ηνωμένων Πολιτειών. Το project αυτό είναι σε εξέλιξη και πολλές από τις επεκτάσεις του έχουν ενσωματωθεί στο FreeBSD. Το TrustedBSD υποστηρίζεται από μια ποικιλία οργανισμών, συμπεριλαμβανομένων των DARPA, NSA, Network Associates Laboratories, Safeport Network Services, Πανεπιστήμιο της Πενσυλβάνια, Yahoo!, McAfee, SPARTA, Apple Computer, nCircle Network Security, Google, Εργαστήριο Υπολογιστών του Πανεπιστήμιο του Cambridge και άλλων.

Το TrustedBSD έχει επίσης μεταφέρει την υλοποίηση του FLASK/TE της NSA από το SELinux στο FreeBSD. Ακόμα έχει αναπτύξει το OpenBSM, το οποίο αποτελεί μέρος του FreeBSD από την έκδοση 6.2. Άλλα υποσυστήματα του FreeBSD που αναπτύχθηκαν από το TrustedBSD συμπεριλαμβάνουν το GEOM και το OpenPAM.

Τα περισσότερα συστατικά του TrustedBSD ενσωματώνονται στο τέλος στον πηγαίο κώδικα του FreeBSD, αλλά και σε άλλα λειτουργικά συστήματα μόλις θεωρηθούν πλήρως λειτουργικά. Παραδείγματα αποτελούν το OpenPAM που έχει υιοθετηθεί από το NetBSD και το TrustedBSD MAC Framework από την Apple για το macOS.

Το FreeBSD διατίθεται με τρία διαφορετικά τείχη προστασίας: τα IPFW, pf και IPFilter. Το IPFW ήταν το αρχικό τείχος προστασίας του FreeBSD, το pf μεταφέρθηκε από το OpenBSD και το IPFilter μεταφέρθηκε στο FreeBSD από τον Darren Reed.[8]

Το OpenSSH, το οποίο έχει μεταφερθεί από το OpenBSD, περιλαμβάνεται στην προεπιλεγμένη εγκατάσταση. Το OpenSSH είναι μια ανοικτού κώδικα υλοποίηση του SSH πρωτοκόλλου και αποτελεί αντικαταστάτη του telnet, σε αντίθεση με το οποίο κρυπτογραφεί όλες τις πληροφορίες (συμπεριλαμβανομένου του ονόματος χρήστη και του κωδικού πρόσβασης).[8]

Το Νοέμβριο του 2012, η Ομάδα Ασφαλείας του FreeBSD ανακοίνωσε ότι χάκερ απέκτησαν μη εξουσιοδοτημένη πρόσβαση σε δύο από τους διακομιστές του project. Οι διακομιστές αυτοί απενεργοποιήθηκαν άμεσα και περαιτέρω έρευνα έδειξε ότι η πρώτη μη εξουσιοδοτημένη πρόσβαση από τους χάκερ συνέβη στις 19 Σεπτεμβρίου. Οι χάκερ απέκτησαν πρόσβαση στους διακομιστές, με την κλοπή των κλειδιών SSH ενός από τους προγραμματιστές και όχι εκμεταλλευόμενοι κάποιο bug στο λειτουργικό σύστημα. Οι δύο αυτοί διακομιστές χρησιμοποιούνταν για την κατασκευή των πακέτων λογισμικού τρίτων. Η Ομάδα Ασφαλείας έλεγξε την ακεραιότητα των πακέτων και ανακοίνωσε ότι δεν παρατηρήθηκε καμία μη εξουσιοδοτημένη αλλαγή σε αυτά, αλλά δήλωσε ότι δεν μπορεί να εγγυηθεί την ακεραιότητα των πακέτων που είχαν μεταφορτωθεί από τους διακομιστές μεταξύ 19 Σεπτεμβρίου και 11 Νοεμβρίου.

Φορητότητα[Επεξεργασία | επεξεργασία κώδικα]

Τo FreeBSD έχει μεταφερθεί σε μια ποικιλία από αρχιτεκτονικές συνόλου εντολών. Το FreeBSD project οργανώνει τις αρχιτεκτονικές σε κατηγορίες αντίστοιχα με το επίπεδο της υποστήριξης που παρέχεται. Οι αρχιτεκτονικές Κατηγορίας 1 υποστηρίζονται πλήρως, οι αρχιτεκτονικές Κατηγορίας 2 βρίσκονται υπό σημαντική ανάπτυξη. Στην Κατηγορία 3 βρίσκονται οι αρχιτεκτονικές σε πειραματικό στάδιο ή αυτές που δεν αναπτύσσονται πλέον ενεργά και στη Κατηγορία 4, οι αρχιτεκτονικές που δεν έχουν καμία υποστήριξη.

Έως τον Ιανουάριο του 2018, το FreeBSD έχει μεταφερθεί στις ακόλουθες αρχιτεκτονικές:

Αρχιτεκτονική Επίπεδο υποστήριξης Σημειώσεις
x86 (IA-32) Κατηγορίας 1 αναφέρεται ως "i386"
x86-64 Κατηγορίας 1 αναφέρεται ως "amd64"
NEC PC-9801 Κατηγορίας 2 αναφέρεται ως "pc98", η υποστήριξη αφαιρέθηκε στην έκδοση 12-CURRENT
64-bit αρχιτεκτονική SPARC Κατηγορίας 2 μόνο 64-bit (V9) αρχιτεκτονική
32-bit και 64-bit PowerPC Κατηγορίας 2
32-bit ARM Κατηγορίας 2
64-bit ARM Κατηγορίας 2
IA-64 Κατηγορίας 3 δεν υποστηρίζεται από την έκδοση 11.0
MIPS Κατηγορίας 3
RISC-V Κατηγορίας 3 μόνο στην έκδοση 12-CURRENT
DEC Alpha Κατηγορίας 4 η υποστήριξη διακόπηκε στην έκδοση 7.0

Αν και οι ARM και MIPS εκδόσεις του FreeBSD προσανατολίζονται κυρίως στην υποστήριξη ενσωματωμένων συστημάτων, το FreeBSD/ARM είναι συμβατό με αρκετά single-board computers, συμπεριλαμβανομένων των BeagleBone Black, Raspberry Pi και Wandboard.[13]

Λογισμικό τρίτων[Επεξεργασία | επεξεργασία κώδικα]

Screenshot από το FreeBSD 11.0, το οποίο χρησιμοποιεί το γραφικό περιβάλλον Xfce 4.12.

Το FreeBSD διαθέτει αποθετήριο λογισμικού με πάνω από 26.000 εφαρμογές που έχουν αναπτυχθεί από τρίτους. Παραδείγματα περιλαμβάνουν: παραθυρικά συστήματα, προγράμματα περιήγησης στο web, προγράμματα ηλεκτρονικού ταχυδρομείου, σουίτες γραφείου και ούτω καθεξής. Σε γενικές γραμμές, οι προγραμματιστές του FreeBSD δεν αναπτύσσουν οι ίδιοι το λογισμικό αυτό, αλλά παρέχουν μόνο το πλαίσιο το οποίο διευκολύνει αυτά τα προγράμματα να εγκατασταθούν, γνωστό και ως η συλλογή των Ports. Οι εφαρμογές μπορούν να είναι είτε μεταγλωττισμένες από τον πηγαίο κώδικα ("ports") (αν οι όροι της άδειας χρήσης τους, το επιτρέπουν αυτό) είτε σε μορφή προ-μεταγλωττισμένου εκτελέσιμου ("πακέτα").[14] Η συλλογή των Ports υποστηρίζει την τρέχουσα και την υπό ανάπτυξη έκδοση του FreeBSD. Παλαιότερες εκδόσεις δεν υποστηρίζονται και είναι πιθανό να μην λειτουργούν σωστά με τη τρέχουσα συλλογή των Ports.

Τα Ports κάνουν χρήση των Makefiles ώστε να ανακτούν αυτόματα τον πηγαίου κώδικα της εκάστοτε εφαρμογής είτε από κάποιο τοπικό είτε από κάποιο απομακρυσμένο αποθετήριο, να τον αποσυμπιέζουν, και να τον μεταγλωττίζουν. Ανάλογα με το μέγεθος του πηγαίου κώδικα, η μεταγλώττιση μπορεί να πάρει πολύ χρόνο, αλλά δίνει στον χρήστη περισσότερες επιλογές παραμετροποίησης τόσο της διαδικασία όσο και του αποτελέσματος. Τα περισσότερα Ports διαθέτουν και αντίστοιχο πακέτο (μορφή προ-μεταγλωττισμένου εκτελέσιμου), επιτρέποντας στον χρήστη να επιλέξει. Παρόλο που αυτή η μέθοδος είναι ταχύτερη, ο χρήστης έχει λιγότερες δυνατότητες παραμετροποίησης.[14]

Η έκδοση 10.0 του FreeBSD εισήγαγε το package manager pkg το οποίο αντικατέστησε τα προηγούμενα εργαλεία για την διαχείριση των πακέτων. Το pkg είναι λειτουργικά παρόμοιο με το apt και το yum των Linux διανομών και επιτρέπει την εγκατάσταση, αναβάθμιση και αφαίρεση πακέτων, αλλά και Ports. Επιπλέον του pkg, το PackageKit μπορεί επίσης να χρησιμοποιηθεί τη διαχείριση της συλλογής των Ports.

Κελιά (Jails)[Επεξεργασία | επεξεργασία κώδικα]

Τα κελιά εμφανίστηκαν για πρώτη φορά στην έκδοση 4 του FreeBSD[15] και αποτελούν μηχανισμό ασφαλείας, ο οποίος υλοποιεί εικονικοποίηση (virtualization) επιπέδου λειτουργικού συστήματος. Αυτό επιτρέπει στο χρήστη να εκτελεί πολλαπλά φιλοξενούμενα λειτουργικά συστήματα πάνω από το FreeBSD. Αποτελόυν ουσιαστικά μια βελτιωμένη έκδοση του chroot μηχανισμού. Μια διεργασία που εκτελείται μέσα σε ένα κελί δεν είναι σε θέση να έχει πρόσβαση στους πόρους έξω από αυτό. Κάθε κελί έχει το δικό του όνομα δικτύου και διεύθυνση IP. Η παράλληλε εκτέλεση πολλαπλών κελιών είναι εφικτή, αλλά όλα μοιράζονται τον ίδιο πυρήνα. Ως εκ τούτου, μόνο λογισμικό που υποστηρίζεται από τον πυρήνα του FreeBSD μπορεί να εκτελεστεί μέσα σε ένα κελί.

Εικονικοποίηση (Virtualization)[Επεξεργασία | επεξεργασία κώδικα]

Το bhyve, ένα καινούργιο σύστημα εικονικοποίησης, το οποίο εισήχθη στο FreeBSD 10.0 και επιτρέπει στο χρήστη να εκτελεί μια σειρά από φιλοξενούμενα λειτουργικά συστήματα (FreeBSD, OpenBSD, Linuxκαι Microsoft Windows[16]) ταυτόχρονα. Υποστήριξη για περισότερεα λειτουργικά συστήματα όπως το Illumos έχει προγραμματιστεί. Το bhyve γράφτηκε από τους Neel Natu και Peter Grehan και ανακοινώθηκε το 2011 στο συνέδριο BSDCan για πρώτη φορά. Η κύρια διαφορά μεταξύ του bhyve και του συστήματος των κελιών είναι ότι τα κελία υλοποιούν εικονικοποίηση (virtualization) επιπέδου λειτουργικού συστήματος και είναι περιορισμένα μόνο σε φιλοξενούμενα FreeBSD, ενώ bhyve είναι τύπου 2 hypervisor και δεν περιορίζεται μόνο στο FreeBSD. Για σύγκριση, το bhyve είναι παρόμοια με το KVM, ενώ τα κελιά είναι πιο κοντά στα LXC containers ή στα Solaris Zones.

Το VirtualBox (χωρίς τα closed-source Πακέτα Επέκτασης) και το QEMU είναι διαθέσιμα για το FreeBSD.

Επίπεδα συμβατότητας λειτουργικού συστήματος[Επεξεργασία | επεξεργασία κώδικα]

Το μεγαλύτερο μέρος του λογισμικού που τρέχει σε Linux μπορεί να τρέξει και στο FreeBSD κάνοντας χρήση ενός ενσωματωμένου προαιρετικού επιπέδου συμβατότητας. Επομένως, τα περισσότερα εκτελέσιμα του Linux μπορούν να τρέξουν στο FreeBSD, συμπεριλαμβανομένων και εφαρμογές κλειστού κώδικα που διανέμονται μόνο σε εκτελέσιμη μορφή (και δεν μπορούν να μεταγλωττιστούν για το FreeBSD). Αυτό το επίπεδο συμβατότητας δεν είναι αποτελεί μορφή εξομοίωσης (αγγλ: emulation). Αντίθετα ο πυρήνας του FreeBSD παρέχει ειδική διεπαφή που υλοποιεί τις κλήσεις συστήματος του Linux και, ως εκ τούτου, τα εκτελέσιμα και οι κοινόχρηστες βιβλιοθήκες του Linux αντιμετωπίζονται από το λειτουργικό σύστημα με τον ίδιο που αντιμετωπίζονται και τα αντίστοιχα του FreeBSD. Επιπλέον, το FreeBSD παρέχει επίπεδα συμβατότητας και για πολλά άλλα Unix-συμβατά λειτουργικά συστήματα, εκτός από το Linux, όπως το BSD/OS και το System V Release 4, ωστόσο, είναι πιο συνηθισμένο για τους χρήστες να μεταγλωττίζουν τα προγράμματα απευθείας για το FreeBSD.[12]

Κατά την εκτέλεση Linux εφαρμογών δεν έχουν παρατηρηθεί μειωμένες επιδόσεις και σε ορισμένες περιπτώσεις μπορεί να εκτελούνται ακόμη και πιο ομαλά από ότι στο Linux. Ωστόσο, το επίπεδο δεν είναι εντελώς διάφανο για τις εφαρμογές και κάποια εκτελέσιμα του Linux δεν μπορούν να χρησιμοποιηθούν ή εμφανίζουν περιορισμένη λειτουργικότητα στο FreeBSD. Υποστηρίζονται κλήσεις συστήματος μέχρι και την έκδοση 2.6.18 του Linux. Από την έκδοση 10.3 και μετά, το FreeBSD μπορεί να τρέξει 64-bit Linux εκτελέσιμα.

Το FreeBSD υλοποιεί μια σειρά από NDIS διεπαφές του πυρήνα των Windows ώστε να μπορεί να εκτελεί προγράμματα οδήγησης καρτών δικτύου διαθέσιμα μόνο για Windows συστήματα.[17]

Πυρήνας[Επεξεργασία | επεξεργασία κώδικα]

ο πυρήνας του FreeBSD παρέχει υποστήριξη για βασικές εργασίες, όπως τη διαχείριση των διεργασιών και την επικοινωνία μεταξύ τους, την εκκίνηση του λειτουργικού και συστήματα αρχείων. Ο πυρήνας του FreeBSD είναι μονολιθικός,[18] με αρθρωματικό (αγγλ: modular) σχεδιασμό. Τα διάφορα μέρη του πυρήνα, όπως τα προγράμματα οδήγησης, έχουν σχεδιαστεί ως αρθρώματα. Ο χρήστης μπορεί να φορτώσει και να ξεφορτώσει τα αρθρώματα αυτά ανά πάσα στιγμή.[19] Ο προεπιλεγμένος χρονοπρογραμματιστής (αγγλ: scheduler) του FreeBSD από την έκδοση 7.1 και μετά είναι ο ULE, ο οποίος υποστηρίζει SMP και SMT. Ο πυρήνας του FreeBSD διαθέτει επίσης και μια κλιμακούμενη (αγγλ: scalable) διεπαφή ειδοποιήσεων, που ονομάζεται kqueue και η οποία έχει μεταφερθεί σε άλλα BSD λειτουργικά συστήματα όπως το OpenBSD και το NetBSD. Η νηματοποίηση πυρήνα (αγγλ: kernel threading) εισήχθη στην έκδοση 5.0 και βασιζόταν στο M:N μοντέλο νηματοποίησης. Αν και αυτό το μοντέλο λειτουργεί καλά στη θεωρία,[20][8] είναι δύσκολο να υλοποιηθεί στη πράξη και λίγα λειτουργικά συστήματα το υποστηρίζουν. Η υλοποίηση του FreeBSD αν και λειτουργική, δεν παρουσίαζε καλή απόδοση και από την έκδοση 7.0 και μετά, το FreeBSD ξεκίνησε να χρησιμοποιεί ένα 1:1 μοντέλο νηματοποίησης, που ονομάζεται libthr.[8]

Τεκμηρίωση και υποστήριξη[Επεξεργασία | επεξεργασία κώδικα]

Η τεκμηρίωση του FreeBSD, η οποία συντηρείται κυρίως από την Ομάδα Τεκμηρίωσης του FreeBSD αποτελείται από εγχειρίδια, σελίδες οδηγιών (αγγλ: manual pages), αρχεία των λιστών ηλεκτρονικού ταχυδρομείου, έγγραφα συχνών ερωτήσεων (FAQs) και μια ποικιλία από άρθρα. Η τεκμηρίωση του έχει μεταφραστεί σε πολλές γλώσσες[8] και όλα τα επίσημα έγγραφά της κυκλοφορούν κάτω από τη FreeBSD Documentation License, "μια ανεκτική non-copyleft άδεια ελεύθερης τεκμηρίωσης που είναι συμβατή με την GNU FDL". Η τεμκηρίωση του FreeBSD τεκμηρίωση περιγράφεται ως "υψηλής ποιότητας".[12]

Το FreeBSD διατηρεί μια ποικιλία από λίστες ταχυδρομείου. Από τις πιο δημοφιλείς λίστες είναι η FreeBSD-questions (για γενικές ερωτήσεις) και η FreeBSD-hackers (για ερωτήσεις τεχνικού χαρακτήρα).[12]

Από το 2004, το BSD Users Group της Νέας Υόρκης παρέχει μια βάση δεδομένων με πληροφορίες ανακτημένες μέσω της εντολής dmesg για μια πλειάδα υπολογιστικών συστημάτων (φορητοί υπολογιστές, σταθμοί εργασίας, ενσωματωμένα συστήματα, εικονικές μηχανές, κλπ.) που τρέχουν το FreeBSD.[21]

Κέλυφος (Shell)[Επεξεργασία | επεξεργασία κώδικα]

Το προεπιλεγμένο κέλυφος του FreeBSD είναι το tcsh shell.[22]

Αναφορές[Επεξεργασία | επεξεργασία κώδικα]

  1. «FreeBSD 11.2-RELEASE Announcement». FreeBSD.org. 27 June 2018. Ανακτήθηκε στις 27 June 2018. 
  2. «What hackers know of the Nintendo Switch so far». Wololo.net. 9 March 2017. Ανακτήθηκε στις 13 March 2017. 
  3. Marc Sauter, Andreas Sebayang, Michael Wieczorek (1 March 2017). «Nintendo Switch im Test: Klack und los, egal wie und wo» [Nintendo Switch review: Click and go, no matter how and where] (στα German). Golem Media GmbH. σελ. 7. Αρχειοθετήθηκε από το πρωτότυπο στις 1 March 2017. Ανακτήθηκε στις 2 March 2017. The most interesting thing is that the operating system is not based on a classic Linux or Android, but on FreeBSD. The latter also takes Sony as the basis for the system of the Playstation. This avoids Nintendo’s licensing requirements for the Linux kernel, but can easily use Nvidia’s proprietary graphics driver. CS1 maint: Multiple names: authors list (link)
  4. Bhartiya, Swapnil. «Nintendo Switch introduces a new concept for consoles». 
  5. Alex, Rosenberg (17 December 2013). «FreeBSD Handbook and PS3». Ανακτήθηκε στις 22 January 2016. 
  6. http://doc.dl.playstation.net/doc/ps4-oss/
  7. «June 19 is National FreeBSD Day!». FreeBSD Foundation. Ανακτήθηκε στις 13 November 2017. 
  8. 8,0 8,1 8,2 8,3 8,4 8,5 8,6 8,7 8,8 Lucas 2007.
  9. https://lists.freebsd.org/pipermail/freebsd-stable/2012-June/068129.html
  10. https://www.freebsdfoundation.org/press/2013Jul-newsletter#whatsapp
  11. http://flightaware.com/about/code/freebsd.rvt
  12. 12,0 12,1 12,2 12,3 Lehey 2003.
  13. «FreeBSD/arm». Ανακτήθηκε στις 30 November 2014. 
  14. 14,0 14,1 Lucas.
  15. https://www.freebsd.org/releases/4.0R/announce.html
  16. «What's new for FreeBSD 11». wiki.freebsd.org. Ανακτήθηκε στις 28 September 2015. 
  17. Bill Paul (24 January 2004). «Project Evil: The Evil Continues». freebsd-current mailing list. http://lists.freebsd.org/pipermail/freebsd-current/2004-January/019489.html. 
  18. McKusick & Neville-Neil 2004.
  19. Michael Lucas 2007.
  20. «Thread models semantics: Solaris and Linux M:N to 1:1 thread model» (PDF). Department of computer Science and Engineering, Air University Multan Pakistan. Ανακτήθηκε στις 16 September 2014. 
  21. «dmesgd». dmesgd.nycbug.org. NYC*BUG. Ανακτήθηκε στις 16 December 2015. 
  22. https://www.freebsd.org/doc/en_US.ISO8859-1/articles/linux-users/shells.html