μια έκθεση σχετικά με την ανάπτυξη του έργου FreeBSD από τον Ιανουάριο έως τον Μάρτιο του 2020. Μεταξύ των αλλαγών, μπορούμε να σημειώσουμε:
- Γενικά και συστημικά θέματα
- Η σουίτα μεταγλωττιστών GCC έχει αφαιρεθεί από το δέντρο πηγαίου κώδικα του FreeBSD-CURRENT, καθώς και τα αχρησιμοποίητα βοηθητικά προγράμματα gperf, gcov και gtc (devicetree compiler). Όλες οι πλατφόρμες που δεν υποστηρίζουν το Clang έχουν αλλάξει σε χρήση εξωτερικών εργαλείων δημιουργίας που έχουν εγκατασταθεί από ports. Το βασικό σύστημα διέθετε την ξεπερασμένη έκδοση GCC 4.2.1 και η ενσωμάτωση νεότερων εκδόσεων δεν ήταν δυνατή λόγω της μετάβασης της έκδοσης 4.2.2 στην άδεια GPLv3, η οποία κρίθηκε μη αποδεκτή για τα βασικά στοιχεία του FreeBSD. Οι τρέχουσες εκδόσεις του GCC, συμπεριλαμβανομένου του GCC 9, μπορούν ακόμα να εγκατασταθούν από πακέτα και ports.
- Υποδομή εξομοίωσης περιβάλλοντος Linux (Linuxulator) πρόσθεσε υποστήριξη για την κλήση συστήματος sendfile, τη λειτουργία TCP_CORK (απαιτείται για το nginx) και τη σημαία MAP_32BIT (λύνει το πρόβλημα με την εκτέλεση πακέτων με Mono από Ubuntu Bionic). DNS που επιλύει προβλήματα κατά τη χρήση glibc νεότερης από την έκδοση 2.30 (για παράδειγμα, από CentOS 8).
Η υποδομή συνεχούς ολοκλήρωσης παρέχει τη δυνατότητα εκτέλεσης εργασιών για την εκτέλεση LTP (Linux Έργο Δοκιμών) που διαχειρίζεται Linuxulator για τον έλεγχο βελτιώσεων που έγιναν στον κώδικα για την υποστήριξη LinuxΠερίπου 400 δοκιμές αποτυγχάνουν και απαιτούν διόρθωση (ορισμένα σφάλματα προκαλούνται από ψευδώς θετικά αποτελέσματα, κάποια απαιτούν ασήμαντες διορθώσεις και άλλα απαιτούν την προσθήκη υποστήριξης για νέες κλήσεις συστήματος). Ο καθαρισμός κώδικα έχει ολοκληρωθεί. Linuxιουλωτή και απλοποίηση της αποσφαλμάτωσης. Έχουν προετοιμαστεί ενημερώσεις κώδικα που υποστηρίζουν εκτεταμένα χαρακτηριστικά και την κλήση συστήματος fexecve, αλλά δεν έχουν ακόμη αξιολογηθεί. - Η ομάδα εργασίας που δημιουργήθηκε για τη μετεγκατάσταση του πηγαίου κώδικα από το κεντρικό σύστημα ελέγχου πηγαίου κώδικα Subversion στο αποκεντρωμένο σύστημα Git συνεχίζει να συνεδριάζει. Μια έκθεση με προτάσεις μετεγκατάστασης βρίσκεται υπό προετοιμασία.
- В (συνδέτης χρόνου εκτέλεσης) βελτιωμένη λειτουργία άμεσης εκτέλεσης ("/libexec/ld-elf.so.1 {διαδρομή} {ορίσματα}").
- Το έργο fuzzing του πυρήνα του FreeBSD χρησιμοποιώντας το σύστημα syzkaller συνεχίζει να εξελίσσεται. Κατά την περίοδο αναφοράς, επιλύθηκαν προβλήματα στη στοίβα δικτύου και στον κώδικα για την εργασία με πίνακες περιγραφέων αρχείων που εντοπίστηκαν χρησιμοποιώντας το syzkaller. Μετά από διαγνωστικά σφαλμάτων, προστέθηκαν αλλαγές στη στοίβα SCTP για την απλοποίηση του εντοπισμού σφαλμάτων. Προστέθηκαν κανόνες για τον εντοπισμό πιθανών παλινδρομήσεων στο σύνολο stress2. Προστέθηκε υποστήριξη για δοκιμές fuzzing νέων κλήσεων συστήματος, συμπεριλαμβανομένων των κλήσεων υποσυστήματος copy_file_range(), __realpathat() και Capsicum. Συνεχίζονται οι εργασίες για την κάλυψη του επιπέδου εξομοίωσης με δοκιμές fuzzing. LinuxΤα σφάλματα που εντοπίστηκαν σε πρόσφατες αναφορές Coverity Scan αναλύθηκαν και διορθώθηκαν.
- Στο σύστημα συνεχούς ολοκλήρωσης, έγινε μετάβαση στην εκτέλεση όλων των δοκιμών του head branch χρησιμοποιώντας μόνο το clang/lld. Κατά τη δοκιμή για RISC-V, δημιουργείται μια πλήρης εικόνα δίσκου για την εκτέλεση δοκιμών στο QEMU χρησιμοποιώντας OpenSBI. Έχουν προστεθεί νέες εργασίες για τη δοκιμή εικόνων powerpc64 και εικονικών μηχανών (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
- Βρίσκεται σε εξέλιξη εργασία για τη μετεγκατάσταση της σουίτας δοκιμών Kyua από τις θύρες (devel/kyua) στο βασικό σύστημα, για την αντιμετώπιση προβλημάτων (τα πακέτα εγκαθίστανται πολύ αργά) που προκύπτουν κατά τη χρήση του Kyua σε νέες αρχιτεκτονικές για τις οποίες η ανάπτυξη πραγματοποιείται χρησιμοποιώντας έναν εξομοιωτή ή FPGA. Η ενσωμάτωση στο βασικό σύστημα θα απλοποιήσει σημαντικά τις δοκιμές των ενσωματωμένων πλατφορμών και τη διασύνδεση με συστήματα συνεχούς ολοκλήρωσης.
- Ένα έργο για τη βελτιστοποίηση της απόδοσης του προγράμματος οδήγησης γέφυρας δικτύου έχει ξεκινήσει , το οποίο χρησιμοποιεί ένα μόνο mutex για το κλείδωμα εσωτερικών δεδομένων, κάτι που δεν επιτρέπει την επίτευξη της επιθυμητής απόδοσης σε συστήματα με μεγάλο αριθμό jail περιβαλλόντων ή εικονικών μηχανών ενωμένων σε ένα μόνο δίκτυο. Σε αυτό το στάδιο, έχουν προστεθεί δοκιμές στον κώδικα για την αποτροπή παλινδρομήσεων κατά τη διαδικασία αναβάθμισης της εργασίας με κλειδώματα. Εξετάζεται η δυνατότητα χρήσης του ConcurrencyKit για την παραλληλοποίηση χειριστών μεταφοράς δεδομένων (bridge_input(), bridge_output(), bridge_forward(), ...).
- Έχει προστεθεί μια νέα κλήση συστήματος sigfastblock που επιτρέπει σε ένα νήμα να καθορίσει ένα μπλοκ μνήμης για έναν γρήγορο χειριστή σήματος για να βελτιώσει την απόδοση των χειριστών εξαιρέσεων.
- Ο πυρήνας υποστηρίζει πλέον ατομικές εντολές LSE (Large System Extension) που υποστηρίζονται από συστήματα ARMv8.1. Αυτές οι εντολές είναι απαραίτητες για τη βελτίωση της απόδοσης στις μητρικές Cavium ThunderX2 και AWS Graviton 2. Οι πρόσθετες αλλαγές ανιχνεύουν την παρουσία υποστήριξης LSE και επιτρέπουν δυναμικά την ατομική υλοποίηση με βάση αυτές. Κατά τη διάρκεια των δοκιμών, η χρήση του LSE επέτρεψε τη μείωση του χρόνου που αφιερώνεται στον επεξεργαστή για τη συναρμολόγηση του πυρήνα κατά 15%.
- Έχουν γίνει βελτιστοποιήσεις απόδοσης και η λειτουργικότητα του κιτ εργαλείων για εκτελέσιμα αρχεία ELF έχει επεκταθεί.
Προστέθηκε υποστήριξη για την προσωρινή αποθήκευση πληροφοριών εντοπισμού σφαλμάτων DWARF, επιλύθηκαν προβλήματα σε βοηθητικά προγράμματα elfcopy/objcopy, προστέθηκε χειρισμός DW_AT_ranges,
Το readelf έχει πλέον τη δυνατότητα να αποκωδικοποιεί τις σημαίες PROTMAX_DISABLE, STKGAP_DISABLE και WXNEEDED, καθώς και τα Xen και GNU Build-ID.
- Ασφάλεια
- Για τη βελτίωση της απόδοσης του FreeBSD σε περιβάλλοντα cloud Azure, βρίσκονται σε εξέλιξη εργασίες για την παροχή υποστήριξης για τον μηχανισμό HyperV Socket, ο οποίος επιτρέπει τη χρήση μιας διεπαφής socket για αλληλεπίδραση guest-host χωρίς διαμόρφωση δικτύου.
- Βρίσκεται σε εξέλιξη εργασία για να διασφαλιστεί η επαναλήψιμη δημιουργία builds του FreeBSD, η οποία θα μας επιτρέψει να επαληθεύσουμε ότι τα εκτελέσιμα αρχεία των στοιχείων του συστήματος έχουν δημιουργηθεί από τον δηλωμένο πηγαίο κώδικα και δεν περιέχουν καμία περιττή αλλαγή.
- Το βοηθητικό πρόγραμμα elfctl έχει πλέον τη δυνατότητα να ελέγχει την συμπερίληψη πρόσθετων μηχανισμών προστασίας (ASLR, PROT_MAX, stack gap, W+X mapping) σε επίπεδο μεμονωμένων διεργασιών.
- Αποθήκευση και συστήματα αρχείων
- Βρίσκεται σε εξέλιξη εργασία για την υλοποίηση της δυνατότητας εκτέλεσης NFS μέσω κρυπτογραφημένου καναλιού επικοινωνίας βασισμένου στο TLS 1.3, αντί της χρήσης του Kerberos (λειτουργία sec=krb5p), το οποίο περιορίζεται στην κρυπτογράφηση μόνο μηνυμάτων RPC και υλοποιείται μόνο σε λογισμικό. Η νέα υλοποίηση χρησιμοποιεί τη στοίβα TLS που παρέχεται από τον πυρήνα, η οποία επιτρέπει τη χρήση εργαλείων επιτάχυνσης υλικού. Ο κώδικας NFS μέσω TLS είναι σχεδόν έτοιμος για δοκιμή, αλλά εξακολουθεί να απαιτεί εργασία για την υποστήριξη υπογεγραμμένων πιστοποιητικών πελατών και την προσαρμογή της στοίβας TLS του πυρήνα για την αποστολή δεδομένων NFS (οι ενημερώσεις κώδικα για τη λήψη είναι ήδη έτοιμες).
- Υποστήριξη υλικού
- Βρίσκεται σε εξέλιξη εργασία για την προσθήκη υποστήριξης για την κινεζική CPU x86 Hygon που βασίζεται σε τεχνολογίες AMD.
- Μέσα στο CheriBSD, ένα fork του FreeBSD για μια αρχιτεκτονική επεξεργαστή έρευνας (Capability Hardware Enhanced RISC Instructions), συνεχίζει να υποστηρίζει τον επεξεργαστή ARM Morello, ο οποίος θα υποστηρίζει το σύστημα ελέγχου πρόσβασης μνήμης CHERI που βασίζεται στο μοντέλο προστασίας του έργου Capsicum. Το τσιπ Morello θα κυκλοφορήσει το 2021. Οι εργασίες επικεντρώνονται επί του παρόντος στην προσθήκη υποστήριξης για την πλατφόρμα Arm Neoverse N1, η οποία αποτελεί τη βάση του Morello. Έχει παρουσιαστεί μια αρχική μεταφορά του CheriBSD για την αρχιτεκτονική RISC-V. Η ανάπτυξη του CheriBSD συνεχίζεται για το πρωτότυπο αναφοράς CHERI που βασίζεται στο MIPS64.
- Η μεταφορά του FreeBSD για το 64-bit NXP LS1046A SoC που βασίζεται στον επεξεργαστή ARMv8 Cortex-A72 με ενσωματωμένη μηχανή επιτάχυνσης πακέτων δικτύου, 10 Gb Ethernet, PCIe 3.0, SATA 3.0 και USB 3.0 έχει συνεχιστεί. Οι οδηγοί QorIQ και LS1046A, GPIO, QorIQ LS10xx AHCI, VF610 I2C, Epson RX-8803 RTC και QorIQ LS10xx SDHCI προετοιμάζονται αυτήν τη στιγμή για συμπερίληψη στην κύρια διανομή του FreeBSD.
- Το πρόγραμμα οδήγησης ena έχει ενημερωθεί στην έκδοση 2.1.1 με υποστήριξη για τη δεύτερη γενιά προσαρμογέων δικτύου ENAv2 (Elastic Network Adapter) που χρησιμοποιούνται στην υποδομή Elastic Compute Cloud (EC2) για την οργάνωση της επικοινωνίας μεταξύ κόμβων EC2 σε ταχύτητες έως και 25 Gb/s. Ετοιμάζεται ενημέρωση για την έκδοση ENA 2.2.0.
- Η θύρα FreeBSD για την πλατφόρμα powerpc64 συνεχίζει να βελτιώνεται. Η κύρια έμφαση δίνεται στη διασφάλιση υψηλής ποιότητας λειτουργίας σε συστήματα με επεξεργαστές IBM POWER8 και POWER9. Κατά την περίοδο αναφοράς, το FreeBSD-CURRENT μεταφέρθηκε για να χρησιμοποιεί τον μεταγλωττιστή LLVM/Clang 10.0 και τον σύνδεσμο lld αντί για το GCC. Από προεπιλογή, το ELFv64 ABI είναι ενεργοποιημένο για συστήματα powerpc2 και η υποστήριξη για το ELFv1 ABI έχει διακοπεί. Το FreeBSD-STABLE εξακολουθεί να διαθέτει την έκδοση gcc 4.2.1. Έχουν επιλυθεί προβλήματα με τους οδηγούς virtio, aacraid και ixl. Σε συστήματα powerpc64, είναι πλέον δυνατή η εκτέλεση του QEMU χωρίς την υποστήριξη Huge Pages.
- Οι εργασίες για την υλοποίηση υποστήριξης για την αρχιτεκτονική RISC-V συνεχίστηκαν. Στην τρέχουσα μορφή του, το FreeBSD ήδη εκκινείται με επιτυχία στην μητρική SiFive Hifive Unleashed, για την οποία έχουν προετοιμαστεί προγράμματα οδήγησης.
UART, SPI και PRCI, υποστηρίζει firmware OpenSBI και SBI 0.2. Κατά την περίοδο αναφοράς, οι εργασίες επικεντρώθηκαν στη μετεγκατάσταση από το GCC στο clang και το lld.
- Εφαρμογές και σύστημα λιμένων
- Η συλλογή ports του FreeBSD έχει ξεπεράσει το όριο των 39 ports, με λίγο πάνω από 2400 μη κλειστά PRs, εκ των οποίων τα 640 PRs δεν έχουν ακόμη επιλυθεί. Κατά την περίοδο αναφοράς, έγιναν 8146 αλλαγές από 173 προγραμματιστές. Τέσσερις νέοι συνεισφέροντες έλαβαν δικαιώματα committer (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Προστέθηκε η σημαία USES=qca και αφαιρέθηκε η σημαία USES=zope (λόγω ασυμβατότητας με την Python 3). Βρίσκονται σε εξέλιξη εργασίες για την αφαίρεση της Python 2.7 από το δέντρο ports — όλες οι θύρες που είναι συνδεδεμένες με την Python 2 πρέπει να μεταφερθούν στην Python 3 ή να αφαιρεθούν. Ο διαχειριστής πακέτων pkg έχει ενημερωθεί στην έκδοση 1.13.2.
- Ενημερώθηκαν τα στοιχεία της στοίβας γραφικών και οι θύρες που σχετίζονται με το xorg.
Ο διακομιστής X.org έχει ενημερωθεί στην έκδοση 1.20.8 (προηγουμένως κυκλοφορούσε ο κλάδος 1.18), γεγονός που επέτρεψε στο FreeBSD να μεταβεί στη χρήση του backend udev/evdev από προεπιλογή για τον χειρισμό συσκευών εισόδου. Το πακέτο Mesa έχει αλλάξει ώστε να χρησιμοποιεί την επέκταση DRI3 από προεπιλογή αντί για DRI2. Εργασίες βρίσκονται σε εξέλιξη για να διατηρούνται ενημερωμένα τα προγράμματα οδήγησης γραφικών, η στοίβα συσκευών εισόδου και τα στοιχεία drm-kmod (μια θύρα που ενεργοποιεί μονάδες DRM για amdgpu, i915 και radeon, χρησιμοποιώντας το πλαίσιο linuxkpi για συμβατότητα με τον Direct Rendering Manager του πυρήνα). Linux). - Η επιφάνεια εργασίας KDE Plasma, τα KDE Frameworks, οι εφαρμογές KDE και το Qt ενημερώνονται με τις πιο πρόσφατες εκδόσεις. Μια νέα εφαρμογή, το kstars (star atlas), έχει προστεθεί στις θύρες.
- Έχουν πραγματοποιηθεί εργασίες για την εξάλειψη των οπισθοδρομικών αλλαγών στον διαχειριστή παραθύρων xfwm4 που εμφανίστηκαν μετά την ενημέρωση του Xfce στην έκδοση 4.14 (για παράδειγμα, εμφανίστηκαν αντικείμενα κατά τη διακόσμηση παραθύρων).
- Η μεταφορά του Wine έχει ενημερωθεί στην έκδοση Wine 5.0 (προηγουμένως προσφερόταν η έκδοση 4.0.3).
- Ξεκινώντας από την έκδοση 1.14, ο μεταγλωττιστής Go προσθέτει επίσημη υποστήριξη για την αρχιτεκτονική ARM64 για το FreeBSD 12.0.
- Το OpenSSH στο βασικό σύστημα έχει ενημερωθεί στην έκδοση 7.9p1.
- Η βιβλιοθήκη sysctlmibinfo2 έχει υλοποιηθεί και τοποθετηθεί σε ports (devel/libsysctlmibinfo2), παρέχοντας ένα API για την πρόσβαση στο sysctl MIB και τη μετάφραση των ονομάτων sysctl σε αναγνωριστικά αντικειμένων (OID).
- Δημιουργήθηκε ενημέρωση διανομής , η οποία είναι μια έκδοση του FreeBSD προσαρμοσμένη για χρήση ως φορητή επιφάνεια εργασίας με δυνατότητα εκκίνησης από μονάδα USB. Το γραφικό περιβάλλον βασίζεται σε έναν διαχειριστή παραθύρων . Χρησιμοποιείται για την τοποθέτηση μονάδων δίσκου (υποστηρίζεται η τοποθέτηση CD9660, FAT, HFS+, NTFS, Ext2/3/4), για τη διαμόρφωση ενός ασύρματου δικτύου - και για να ελέγξετε την ένταση - .
- Ξεκίνησε σχετικά με τη σύνταξη πλήρους τεκμηρίωσης για τον διαχειριστή περιβάλλοντος φυλακής Το pot 0.11.0 προετοιμάζεται για κυκλοφορία, το οποίο θα περιλαμβάνει εργαλεία διαχείρισης στοίβας δικτύου.
Πηγή: opennet.ru
