FreeBSD

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Εκκίνηση του FreeBSD 14 σε εικονικό περιβάλλον VirtualBox
FreeBSD
Γενικά
ΔημιουργοίThe FreeBSD Project
Ημερ. Δημιουργίας1 Νοέμβριος 1993
ΕίδοςBSD, παράγωγο του Unix
Διανομή
Έκδοση14.0 (14 Νοέμβριος 2023)[1]
Λειτουργικά
ΠυρήναςΜονολιθικός πυρήνας με φορτώσιμα αρθρώματα πυρήνα
Αρχιτεκτονικήx86-64, ARM64, ARM32, IA-32, PowerPC, RISC-V
Διαχείριση πακέτωνpkg
Ανάπτυξη
ΤύποςΛειτουργικό Σύστημα
Γραμμένο σεC
ΚατάστασηΕνεργό
Άδεια χρήσηςBSD
Σύνδεσμοι
Επίσημος ιστότοπος
www.freebsd.org
Αποθετήριο κώδικα
https://cgit.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 περιλαμβάνει ομάδα ασφαλείας, η οποία επιβλέπει όλο το λογισμικό το οποίο διανέμεται στο βασικό σύστημα. Ένα ευρύ φάσμα από πρόσθετες εφαρμογές τρίτων μπορεί να εγκατασταθεί χρησιμοποιώντας το σύστημα διαχείρισης πακέτων pkg ή τα 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 και το Lumina, και υπολογιστικά μη-απαιτητικούς διαχειριστές παραθύρων όπως το Openbox, Fluxbox, dwm και bspwm είναι επίσης διαθέσιμα για το 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, οι αρχιτεκτονικές που δεν έχουν καμία υποστήριξη.

Έως τον Δεκέμβριο του 2023, το FreeBSD έχει μεταφερθεί στις ακόλουθες αρχιτεκτονικές:[13]

Αρχιτεκτονική Επίπεδο υποστήριξης Σημειώσεις
x86-64 Κατηγορίας 1 αναφέρεται ως "amd64"
64-bit ARMv8 Κατηγορίας 1 αναφέρεται ως "aarch64"
x86 (IA-32) Κατηγορίας 2 αναφέρεται ως "i386", μη υποστηριζόμενη στην έκδοση 15.x
32-bit ARMv7 Κατηγορίας 2 αναφέρεται ως "armv7"
32-bit και 64-bit PowerPC Κατηγορίας 2 αναφέρεται ως "powerpc", "powerpcspe", "powerpc64", "powerpc64le". Η αρχιτεκτονική 32 bit δεν θα υποστηρίζεται από την έκδοση 15.x
64-bit RISC-V Κατηγορίας 2 αναφέρεται ως "riscv64"
MIPS Μη υποστηριζόμενη αναφέρεται ως "mips", "mipsel", "mipshf", "mipselhf", "mipsn32", "mips64", "mips64el", "mips64hf", "mips64elhf", κατηγορίας 2 μέχρι εκδόσεις 12.x

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

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

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

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

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

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

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

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

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

Το bhyve, ένα καινούργιο σύστημα εικονικοποίησης, το οποίο εισήχθη στο FreeBSD 10.0 και επιτρέπει στο χρήστη να εκτελεί μια σειρά από φιλοξενούμενα λειτουργικά συστήματα (FreeBSD, OpenBSD, Linuxκαι Microsoft Windows[17]) ταυτόχρονα. Υποστήριξη για περισότερεα λειτουργικά συστήματα όπως το 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 συστήματα.[18]

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

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

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

Το προεπιλεγμένο κέλυφος του υπερχρήστη (root) σε εκδόσεις παλαιότερες του FreeBSD 13 είναι το tcsh shell, ενώ σε FreeBSD 14 και νεότερες εκδόσεις το sh shell. Αντίθετα, το προεπιλεγμένο κέλυφος ενός κανονικού χρήστη είναι το sh.[23]

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

Η τρέχουσα έκδοση FreeBSD είναι η 14, με ημερομηνία έκδοσης 20 Νοεμβρίου του 2023 και υποστήριξη έως 30 Νοεμβρίου του 2028. Η νέα έκδοση φέρνει ορισμένα νέα χαρακτηριστικά και αναβαθμίσεις:[24]

  • Ενημέρωση του OpenSSH στην έκδοση 9.5p1.
  • Το OpenSSL αναβαθμίστηκε στην έκδοση 3.0.12, μία σημαντική ενημέρωση από την έκδοση OpenSSL 1.1.1t του FreeBSD 13.2-RELEASE.
  • Υποστήριξη έως και 1024 πυρήνων σε πλατφόρμες amd64 και arm64.
  • Αναβάθμιση του ZFS σε OpenZFS 2.2, με σημαντικές βελτιώσεις απόδοσης.
  • Πειραματικές εικόνες ZFS είναι τώρα διαθέσιμες για AWS και Azure.
  • Ο προεπιλεγμένος μηχανισμός ελέγχου συμφόρησης για TCP είναι τώρα το CUBIC.

Παράγωγα[Επεξεργασία | επεξεργασία κώδικα]

Υπάρχει ένας αριθμός διανομών λογισμικού που βασίζονται στο FreeBSD. Αξιοσημείωτα παράγωγα αποτελούν:

  • DesktopBSD (λειτουργικό σύστημα με στόχο την χρήση ως desktop, αρχικά βασισμένο σε KDE)
  • TrueNAS (για αποθηκευτικά μέσα συνδεδμένα μέσω δικτύου)
  • FreeSBIE (live CD)
  • GhostBSD (διανομή βασισμένη σε MATE, που προσφέρει επίσης και άλλα γραφικά περιβάλλοντα)
  • MidnightBSD
  • NanoBSD
  • PicoBSD
  • pfSense (τείχος προστασίας)
  • TrueOS, προηγουμένως γνωστό ως PC-BSD
  • TrustedBSD

Όλες αυτές οι διανομές έχουν καθόλου ή ελάχιστες διαφορές συγκριτικά με το αρχικό βασικό σύστημα του FreeBSD. Η κύρια διαφορά με το FreeBSD είναι ότι έχουν προ-εγκατεστημένο και προ-παραμετροποιημένο λογισμικό για συγκεκριμένες χρήσεις. Αυτό μπορεί να συγκριθεί με τις διανομές Linux, που είναι δυαδικά συμβατές καθώς χρησιμοποιούν τον ίδιο πηρύνα και τα ίδια βασικά εργαλεία, μεταγλωττιστές και βιβλιοθήκες, ενώ διαθέτουν ξεχωριστές εφαρμογές και επιλογές.

Εκτός από αυτές τις διανομές, υπάρχουν και μερικά αυτόνομα λειτουργικά συστήματα βασισμένα στο FreeBSD. Το DragonFly BSD είναι ένας κλάδος του FreeBSD 4.8 που στοχεύει σε διαφορετική στρατηγική multiprocessor synchronization από αυτή που έχει επιλεχθεί για το FreeBSD 5. Δεν στοχεύει να παραμείνει συμβατή με το FreeBSD και έχει μεγάλες διαφορές στον πυρήνα και στο userland. Το MidnightBSD είναι κλάδος του FreeBSD 6.1 που δανίζεται χαρακτηριστικά από το NeXTSTEP, ιδιαίτερα στον τομέα της διεπαφής χρήστη.

Το Darwin, ο πυρήνας του macOS της Apple, περιλαμβάνει ένα εικονικό σύστημα αρχείων και network stack που προέρχονται από το FreeBSD.

Μερικές συνδρομητικές υπηρεσίες που βασίζονται άμεσα στο FreeBSD είναι:

  • Το WhatsApp – που κατέχει 2 εκατομμύρια ταυτόχρονες TCP συνδέσεις ανά εξυπηρετητή.

Ενσωματωμένα συστήματα βασιζόμενα στο FreeBSD είναι:

  • PlayStation 4 ("Orbis OS")



Παραπομπές[Επεξεργασία | επεξεργασία κώδικα]

  1. «FreeBSD 14.0-RELEASE Release Notes». 14 Νοέμβριος 2023. Ανακτήθηκε στις 14 Νοέμβριος 2023. 
  2. «What hackers know of the Nintendo Switch so far». Wololo.net. 9 Μαρτίου 2017. Ανακτήθηκε στις 12 Μαρτίου 2017. 
  3. Marc Sauter· Andreas Sebayang· Michael Wieczorek (1 Μαρτίου 2017). «Nintendo Switch im Test: Klack und los, egal wie und wo» [Nintendo Switch review: Click and go, no matter how and where] (στα Γερμανικά). Golem Media GmbH. σελ. 7. Αρχειοθετήθηκε από το πρωτότυπο στις 2 Μαρτίου 2017. Ανακτήθηκε στις 2 Μαρτίου 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». Αρχειοθετήθηκε από το πρωτότυπο στις 8 Ιουλίου 2018. Ανακτήθηκε στις 12 Σεπτεμβρίου 2018. 
  5. Alex, Rosenberg (17 Δεκεμβρίου 2013). «FreeBSD Handbook and PS3». Αρχειοθετήθηκε από το πρωτότυπο στις 2 Φεβρουαρίου 2017. Ανακτήθηκε στις 22 Ιανουαρίου 2016. 
  6. http://doc.dl.playstation.net/doc/ps4-oss/
  7. «June 19 is National FreeBSD Day!». FreeBSD Foundation. Αρχειοθετήθηκε από το πρωτότυπο στις 16 Σεπτεμβρίου 2018. Ανακτήθηκε στις 13 Νοεμβρίου 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. «Platforms». The FreeBSD Project (στα Αγγλικά). Ανακτήθηκε στις 26 Δεκεμβρίου 2023. 
  14. «FreeBSD/arm». Αρχειοθετήθηκε από το πρωτότυπο στις 29 Σεπτεμβρίου 2018. Ανακτήθηκε στις 30 Νοεμβρίου 2014. 
  15. 15,0 15,1 Lucas.
  16. https://www.freebsd.org/releases/4.0R/announce.html
  17. «What's new for FreeBSD 11». wiki.freebsd.org. Ανακτήθηκε στις 28 Σεπτεμβρίου 2015. 
  18. Bill Paul (24 January 2004). «Project Evil: The Evil Continues». freebsd-current mailing list. Αρχειοθετήθηκε από το πρωτότυπο στις 2017-07-02. https://web.archive.org/web/20170702154132/https://lists.freebsd.org/pipermail/freebsd-current/2004-January/019489.html. Ανακτήθηκε στις 2018-10-10. 
  19. McKusick & Neville-Neil 2004.
  20. Michael Lucas 2007.
  21. «Thread models semantics: Solaris and Linux M:N to 1:1 thread model» (PDF). Department of computer Science and Engineering, Air University Multan Pakistan. Αρχειοθετήθηκε από το πρωτότυπο (PDF) στις 16 Σεπτεμβρίου 2014. Ανακτήθηκε στις 16 Σεπτεμβρίου 2014. 
  22. «dmesgd». dmesgd.nycbug.org. NYC*BUG. Ανακτήθηκε στις 16 Δεκεμβρίου 2015. 
  23. https://docs.freebsd.org/en/articles/linux-users/
  24. «FreeBSD 14.0-RELEASE Announcement». The FreeBSD Project (στα Αγγλικά). Ανακτήθηκε στις 26 Δεκεμβρίου 2023.