Δυόμισι χρόνια μετά τη δημιουργία του κλάδου 12.x, κυκλοφόρησε η έκδοση 13.0 του FreeBSD, η οποία είναι έτοιμη για τις αρχιτεκτονικές amd64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv6, armv7, aarch64 και riscv64. Επιπλέον, έχουν δημιουργηθεί εικόνες για συστήματα εικονικοποίησης (QCOW2, VHD, VMDK, raw) και περιβάλλοντα cloud Amazon EC2, Google Compute Engine και Vagrant.
Βασικές καινοτομίες:
- Η μετάβαση σε ένα ενιαίο c έχει ολοκληρωθεί Linux Η υλοποίηση του συστήματος αρχείων ZFS από το έργο OpenZFS. Τα χαρακτηριστικά που έγιναν διαθέσιμα στο FreeBSD μετά τη μετάβαση στο OpenZFS περιλαμβάνουν: ένα διευρυμένο σύστημα ποσοστώσεων, κρυπτογράφηση συνόλου δεδομένων, ξεχωριστή επιλογή κλάσης κατανομής, χρήση οδηγιών διανυσματικού επεξεργαστή για την επιτάχυνση της υλοποίησης RAIDZ και των υπολογισμών αθροίσματος ελέγχου, υποστήριξη για τον αλγόριθμο συμπίεσης ZSTD, λειτουργία πολλαπλών κεντρικών υπολογιστών (MMP, Προστασία Πολλαπλών Τροποποιητών), βελτιωμένα εργαλεία γραμμής εντολών και διορθώσεις για πολλά σφάλματα συνθηκών κούρσας και κλειδώματος.
- Η θύρα για την αρχιτεκτονική ARM64 (AArch64) έχει μετακινηθεί στο Επίπεδο 1, το οποίο υποστηρίζεται από ομάδες υπεύθυνες για την επιδιόρθωση τρωτών σημείων, την προετοιμασία εκδόσεων και τη συντήρηση θυρών. Η υποστήριξη Επιπέδου XNUMX περιλαμβάνει τη δημιουργία συγκροτημάτων εγκατάστασης, δυαδικών ενημερώσεων και έτοιμων πακέτων, καθώς και την παροχή εγγυήσεων για την επίλυση συγκεκριμένων προβλημάτων και τη συντήρηση του ABI για το περιβάλλον χρήστη και τον πυρήνα (εκτός από ορισμένα υποσυστήματα).
- Η αρχιτεκτονική i386 έχει μετακινηθεί στο δεύτερο επίπεδο υποστήριξης πλατφόρμας (Επίπεδο 2), το οποίο θα συνεχίσει να δημιουργεί συγκροτήματα εγκατάστασης, δυαδικές ενημερώσεις και έτοιμα πακέτα, αλλά δεν εγγυάται ότι θα επιλυθούν συγκεκριμένα προβλήματα. Ο προεπιλεγμένος τύπος CPU (CPUTYPE) για την αρχιτεκτονική i386 έχει αλλάξει από 486 σε 686 (εάν είναι επιθυμητό, τα συγκροτήματα για i486 και i586 μπορούν να δημιουργηθούν ανεξάρτητα).
- Τα στοιχεία clang, lld, lldb, compiler-rt, llvm, libunwind και libc++ έχουν ενημερωθεί στην έκδοση 11.
- Η ανάπτυξη έχει μετακινηθεί από το κεντρικό σύστημα ελέγχου πηγαίου κώδικα Subversion στο αποκεντρωμένο σύστημα Git.
- Το βασικό σύστημα έχει καθαριστεί από εφαρμογές με άδεια χρήσης GPL. Τα Binutils 2.17 και gcc 4.2.1 έχουν αφαιρεθεί από το δέντρο πηγαίου κώδικα, όλες οι υποστηριζόμενες αρχιτεκτονικές έχουν μετεγκατασταθεί στο κιτ εργαλείων LLVM/clang. Έχουν συμπεριληφθεί εκδόσεις των grep και dtc (Device Tree Compiler) με άδεια χρήσης BSD, αντικαθιστώντας τις εκδόσεις με άδεια χρήσης GPL. Η διαδικασία αυτόματης προσάρτησης amd έχει αφαιρεθεί, με τη λειτουργικότητά της να υλοποιείται πλέον μέσω του autofs. Το βοηθητικό πρόγραμμα ctm έχει αφαιρεθεί και συνιστάται η χρήση της θύρας misc/ctm.
- Η στοίβα δρομολόγησης έχει ξαναγραφτεί για να υποστηρίζει αντικείμενα nexthop που αποθηκεύουν δεδομένα κατάστασης που χρησιμοποιούνται για την προώθηση ενός πακέτου στον επιθυμητό προορισμό. Έχει προστεθεί η δυνατότητα σύνδεσης προσαρμοσμένων αλγορίθμων αναζήτησης διαδρομής. Έχουν προστεθεί αλγόριθμοι αναζήτησης διαδρομής από το DPDK (Data Plane Development Kit) της librte, επιτρέποντας τη βελτιστοποίηση της εργασίας με πολύ μεγάλους πίνακες δρομολόγησης. Η διεπαφή fib χρησιμοποιείται για αιτήματα proxyarp. Έχει προστεθεί η δυνατότητα αλλαγής του αριθμού fib εν κινήσει μέσω του sysctl net.fibs. Έχει υλοποιηθεί υποστήριξη για προσωρινές διαδρομές για IPv4 και IPv6 (με καθορισμένη διάρκεια ζωής).
- Η υποστήριξη δρομολόγησης πολλαπλών διαδρομών έχει ξαναγραφτεί και έχει γίνει πιο επεκτάσιμη, με τον χρόνο αναζήτησης ανεξάρτητο από το μέγεθος της λίστας (O(1)). Η νέα υλοποίηση Multipath συνδέεται πλέον με την παράμετρο πυρήνα ROUTE_MPATH, η οποία αντικαθιστά την RADIX_MPATH και είναι ενεργοποιημένη από προεπιλογή. Το net.route.multipath sysctl προτείνεται για τον έλεγχο του Multipath.
- Το κρυπτογραφικό πλαίσιο σε επίπεδο πυρήνα έχει αναδιαμορφωθεί για να υποστηρίζει σύγχρονους κρυπτογραφικούς αλγόριθμους και να απλοποιεί τη διεπαφή για τη χρήση κρυπτογράφησης σε προγράμματα οδήγησης και άλλα στοιχεία του πυρήνα. Οι παρωχημένοι αλγόριθμοι ARC4, Blowfish, CAST128, DES, DES, MD5-HMAC και Skipjack έχουν αφαιρεθεί. Τα IPsec και Kerberos δεν υποστηρίζουν πλέον αλγόριθμους που έχουν παρωχηθεί στα RFC 8221 και RFC 6649/8429, συμπεριλαμβανομένου του 3DES. Οι προηγουμένως παρωχημένοι αλγόριθμοι έχουν αφαιρεθεί από το υποσύστημα κρυπτογράφησης δίσκου geli και cryptodev.
- Ο πυρήνας GENERIC περιλαμβάνει υποστήριξη για τους οδηγούς aesni και armv8crypto για την επιτάχυνση της κρυπτογράφησης δίσκου που βασίζεται σε geli χρησιμοποιώντας οδηγίες AES-NI για αρχιτεκτονικές amd64/i386 και AES-XTS για ARM64.
- Προστέθηκε πρόγραμμα οδήγησης qat για τους επιταχυντές κρυπτογράφησης Intel QuickAssist (QAT) και το πρόγραμμα οδήγησης ossl με υλοποίηση επιταχυνόμενων ρουτινών κρυπτογράφησης λογισμικού από το OpenSSL, βελτιστοποιημένες με χρήση κώδικα assembler. Στο πρόγραμμα οδήγησης armv8crypto προστέθηκε υποστήριξη για AES-XTS και AES-GCM χρησιμοποιώντας αντίστοιχες οδηγίες των επεξεργαστών ARMv8.
- Έχει προστεθεί μια υλοποίηση TLS σε επίπεδο πυρήνα (kTLS) του FreeBSD, η οποία επιτρέπει σημαντική αύξηση στην απόδοση κρυπτογράφησης για υποδοχές TCP. Υποστηρίζονται οι εκδόσεις TLS 1.0 έως 1.3. Για την κρυπτογράφηση χρησιμοποιούνται προγράμματα οδήγησης κρυπτογράφησης πυρήνα με υποστήριξη AES-CBC ή AES-GCM. Η χρήση kTLS στον χώρο χρήστη απαιτεί την ανακατασκευή του OpenSSL με την επιλογή WITH_OPENSSL_KTLS.
- Έχει προστεθεί ένας νέος τύπος buffer δεδομένων δικτύου (mbuf) που μπορεί να αναπαραστήσει πολλαπλές μη αντιστοιχισμένες σελίδες φυσικής μνήμης σε ένα μόνο buffer, βελτιώνοντας την απόδοση του sendfile(2) μειώνοντας το μέγεθος των λιστών mbuf στα buffer υποδοχών.
- Η στοίβα TCP διαθέτει ενσωματωμένη υποστήριξη για τον αλγόριθμο Proportional Rate Reduction (RFC 6937), ο οποίος επιτρέπει την ταχύτερη ανάκτηση των βέλτιστων παραμέτρων ροής μετά από προσωρινά προβλήματα με τη μετάδοση δεδομένων. Για να απενεργοποιήσετε το PRR, χρησιμοποιήστε την εντολή sysctl net.inet.tcp.do_prr.
- Οι δυνατότητες του hypervisor Bhyve έχουν επεκταθεί: Έχει προστεθεί υποστήριξη για κοινή χρήση αρχείων χρησιμοποιώντας το VirtIO-9p (VirtFS). Έχει υλοποιηθεί υποστήριξη στιγμιότυπων. εικονικές μηχανέςΠροστέθηκε υποστήριξη για συσκευές PCI HDAudio και πρόσθετες σειριακές θύρες COM3 και COM4. Αφαιρέθηκαν τα παρωχημένα μοντέλα συσκευών bvmconsole και bvmdebug. Βελτιωμένη σταθερότητα με τους πελάτες VNC, συμπεριλαμβανομένων των macOS-Εφαρμογή κοινής χρήσης οθόνης.
- Τα προγράμματα οδήγησης VirtIO έχουν ενημερωθεί για να υποστηρίζουν την προδιαγραφή VirtIO V1, βελτιώνοντας τη συμβατότητα των φιλοξενούμενων προγραμμάτων του FreeBSD με διάφορους εξομοιωτές και υπερεπόπτες.
- Για διεργασίες που είναι συνδεδεμένες σε περιβάλλοντα jail, οι συνδέσεις CPU μετατρέπονται (το cpuset που ήταν αρχικά συνδεδεμένο στη διεργασία θα αντικατασταθεί λαμβάνοντας υπόψη το cpuset jail και τους περιορισμούς που έχουν οριστεί).
- Έχει προστεθεί η δυνατότητα δημιουργίας του βασικού συστήματος FreeBSD σε περιβάλλοντα που βασίζονται σε άλλα λειτουργικά συστήματα. Η ανάγκη δημιουργίας σε άλλα λειτουργικά συστήματα καθοδηγείται από την επιθυμία χρήσης εργαλείων συνεχούς ενσωμάτωσης για τον έλεγχο του FreeBSD, τα οποία βασίζονται σε Linux ή macOS.
- Προτείνεται μια νέα στοίβα MMC/SD, βασισμένη στο πλαίσιο CAM και επιτρέποντας τη σύνδεση συσκευών με τη διεπαφή SDIO (Secure Digital I/O). Για παράδειγμα, το SDIO χρησιμοποιείται σε μονάδες WiFi και Bluetooth για πολλές μητρικές, όπως το Raspberry Pi 3. Η νέα στοίβα επιτρέπει επίσης τη χρήση της διεπαφής CAM για την αποστολή εντολών SD από εφαρμογές χώρου χρήστη, γεγονός που καθιστά δυνατή τη δημιουργία προγραμμάτων οδήγησης συσκευών που λειτουργούν σε επίπεδο χρήστη.
- Βελτιωμένη απόδοση ενδιάμεσων στρώσεων για συμβατότητα με LinuxΤα αρχεία DTS (Device Tree Sources - Πηγές Δέντρου Συσκευών) συγχρονίζονται με τον πυρήνα Linux 5.8.
- Προστέθηκε υποστήριξη για το NFSv4.2 (RFC-7862) και υλοποιήθηκε η δυνατότητα εκτέλεσης NFS μέσω κρυπτογραφημένου καναλιού επικοινωνίας βασισμένου στο TLS 1.3, αντί για τη χρήση του Kerberos (λειτουργία sec=krb5p), το οποίο περιοριζόταν στην κρυπτογράφηση μόνο μηνυμάτων RPC και υλοποιήθηκε μόνο σε λογισμικό.
- Η παρωχημένη έκδοση του προγράμματος εντοπισμού σφαλμάτων GDB, η οποία ήταν προηγουμένως εγκατεστημένη στον κατάλογο /usr/libexec και χρησιμοποιούνταν στο βοηθητικό πρόγραμμα crashinfo, έχει αφαιρεθεί. Αντί για το προεγκατεστημένο GDB, τώρα σας προσφέρεται να εγκαταστήσετε μια νέα έκδοση του GDB από θύρες ή πακέτα για να λάβετε λεπτομερείς πληροφορίες σχετικά με τις αιτίες της συντριβής. Η υποστήριξη για διεργασίες εντοπισμού σφαλμάτων μέσω procfs έχει διακοπεί. Έχει προστεθεί το πρόγραμμα οδήγησης netgdb, το οποίο σας επιτρέπει να έχετε πρόσβαση στο πρόγραμμα εντοπισμού σφαλμάτων πυρήνα μέσω δικτύου.
- Αφαιρέθηκε η συνάρτηση unsafe gets από το libc (αυτή η συνάρτηση εξαιρείται από την προδιαγραφή από την έκδοση C11) και προσαρμόστηκαν οι θύρες που εξακολουθούν να χρησιμοποιούν αυτήν τη συνάρτηση. Αφαιρέθηκαν οι συναρτήσεις cap_random (θα πρέπει να χρησιμοποιείται το getrandom).
- Προστέθηκε μια νέα κλήση συστήματος copy_file_range συμβατή με την υλοποίηση του πυρήνα. Linux και επιτρέπει την επιτάχυνση της αντιγραφής δεδομένων από το ένα αρχείο στο άλλο, εκτελώντας τη λειτουργία μόνο στην πλευρά του πυρήνα χωρίς πρώτα να διαβάσουν τα δεδομένα στη μνήμη της διεργασίας. Η κλήση συστήματος χρησιμοποιείται επίσης σε υπηρέτης NFSv4.2 για την εκτέλεση λειτουργιών αντιγραφής τοπικά στον διακομιστή (χωρίς μετάδοση στον πελάτη).
- Ο μηχανισμός ασύγχρονης εισόδου/εξόδου POSIX AIO εισάγει υποστήριξη για διανυσματικές συναρτήσεις. Συγκεκριμένα, έχουν προστεθεί οι κλήσεις συστήματος aio_writev και aio_readv, επιτρέποντας την υλοποίηση διανυσματικών ισοδύναμων των συναρτήσεων aio_read και aio_write.
- Απαρχαιωμένα στοιχεία χώρου χρήστη για υποστήριξη μορφής εκτελέσιμου αρχείου a.out σε συστήματα i386. Αφαιρέθηκε το βοηθητικό πρόγραμμα elf2aout.
- Τα βοηθητικά προγράμματα ping και ping6 έχουν συγχωνευθεί. Η δυνατότητα ορισμού παραμέτρων ποιότητας υπηρεσίας (QoS) μέσω IP DSCP και Ethernet PCP έχει προστεθεί στο ping.
- Το βοηθητικό πρόγραμμα freebsd-update εμφανίζει πλέον την πρόοδο των λήψεων αρχείων και προσθέτει τις εντολές updatesready και showconfig για να ελέγχει για ενημερώσεις και να εμφανίζει τη διαμόρφωση.
- Έχει γίνει πολλή δουλειά για τη βελτίωση της υποστήριξης για συστήματα NUMA (Μη Ομοιόμορφη Πρόσβαση Μνήμης).
- Ενημερώθηκαν τα προγράμματα οδήγησης γραφικών και τα στοιχεία της στοίβας γραφικών. Επιλύθηκαν προβλήματα με περιβάλλοντα που βασίζονται σε πρωτόκολλο Wayland.
- Προστέθηκε υποσύστημα οπίσθιου φωτισμού για τη δημιουργία προγραμμάτων οδήγησης ελέγχου οπίσθιου φωτισμού. Προστέθηκε πρόγραμμα οδήγησης pwm-backlight για τον έλεγχο οπίσθιου φωτισμού Pinebook και Pinebook Pro.
- Η υποστήριξη για το πρωτόκολλο SCTP μεταφέρεται σε ξεχωριστή ενότητα sctp.ko, η οποία είναι απενεργοποιημένη από προεπιλογή στον πυρήνα GENERIC.
- Για τις συσκευές εισόδου, έχει εισαχθεί ένας νέος οδηγός usbhid, ο οποίος χρησιμοποιεί το πλαίσιο hid για να λειτουργεί με συσκευές USB HID, αντί για τους οδηγούς ukbd, ums και uhid.
- Το πρόγραμμα οδήγησης cpufreq εφαρμόζει υποστήριξη για την τεχνολογία Intel Speed Shift.
- Προστέθηκε υποστήριξη για νέες μητρικές που βασίζονται σε επεξεργαστές ARMv64 8-bit, συμπεριλαμβανομένων των SoCs Broadcom BCM5871X και NXP LS1046A.
- Έχει υλοποιηθεί υποστήριξη για εικονικές διευθύνσεις 64-bit (LA57) για την αρχιτεκτονική AMD57. Έχει προστεθεί υποστήριξη για την κινεζική CPU x86 Hygon Dhyana που βασίζεται σε τεχνολογίες AMD.
- Η θύρα για την αρχιτεκτονική powerpc64 έχει μετατραπεί για να χρησιμοποιεί LLVM και ELFv2 ABI (τα δυαδικά αρχεία από προηγούμενες εκδόσεις του FreeBSD δεν θα είναι χρησιμοποιήσιμα στο FreeBSD 13). Οι οδηγοί virtio, ixl, mrsas, aacraid, cpld έχουν μεταφερθεί για το powerpc64.
- Αφαιρέθηκαν προγράμματα οδήγησης για παλαιότερους προσαρμογείς Ethernet:
- bm(4)BMAC
- cs(4) Κρυσταλλικός Ημιαγωγός CS8900/CS8920
- de(4) DEC DC21x4x
- ed(4) NE-2000 και WD-80×3
- επ(4) 3Com Etherlink III (3c5x9) ISA
- π.χ. (4) Intel EtherExpress Pro/10 και Pro/10+
- fe(4) Fujitsu MB86960A/MB86965A
- hme(4) Sun Microelectronics STP2002-STQ
- pcn(4) AMD PCnet
- sf(4) Αστρική φωτιά
- sn(4) SMC 91Cxx
- tl(4) Texas Instruments ThunderLAN
- tx(4)SMC83c17x
- txp(4) 3Com 3XP Typhoon/Sidewinder (3CR990)
- vx(4) 3Com EtherLink III / Γρήγορο EtherLink III (3c59x) PCI
- wb(4) Winbond W89C840F
- xe(4) Xircom PCMCIA
- Αφαιρέθηκαν τα προγράμματα οδήγησης ubsec (επιταχυντές κρυπτογράφησης Broadcom BCM58xx), ufm (δέκτες FM με διεπαφή USB), ctau (Cronix Tau), cx (Cronix Sigma) και vpo (παράλληλη θύρα SCSI).
Πηγή: opennet.ru
