Έκθεση Ανάπτυξης του FreeBSD για το πρώτο τρίμηνο του 2020

Που δημοσιεύθηκε έκθεση για την ανάπτυξη του έργου FreeBSD από τον Ιανουάριο έως τον Μάρτιο του 2020. Μεταξύ των αλλαγών μπορούμε να σημειώσουμε:

  • Γενικά και συστημικά θέματα
    • Καταργήθηκε το σύνολο μεταγλωττιστών GCC από το δέντρο προέλευσης του FreeBSD-CURRENT, καθώς και τα αχρησιμοποίητα βοηθητικά προγράμματα gperf, gcov και gtc (devicetree compiler). Όλες οι πλατφόρμες που δεν υποστηρίζουν το Clang έχουν αλλάξει στη χρήση εξωτερικών εργαλείων κατασκευής εγκατεστημένων από θύρες. Το βασικό σύστημα απέστειλε μια παλιά έκδοση του GCC 4.2.1 και η ενσωμάτωση νεότερων εκδόσεων δεν ήταν δυνατή λόγω της μετάβασης της 4.2.2 στην άδεια GPLv3, η οποία θεωρήθηκε ακατάλληλη για τα βασικά στοιχεία του FreeBSD. Οι τρέχουσες εκδόσεις του GCC, συμπεριλαμβανομένου του GCC 9, μπορούν ακόμα να εγκατασταθούν από πακέτα και θύρες.
    • Η υποδομή εξομοίωσης περιβάλλοντος Linux (Linuxulator) έχει προσθέσει υποστήριξη για την κλήση συστήματος sendfile, τη λειτουργία TCP_CORK (απαιτείται για το nginx) και τη σημαία MAP_32BIT (λύνει το πρόβλημα με την εκκίνηση πακέτων με Mono από το Ubuntu Bionic). Τα προβλήματα με την ανάλυση DNS κατά τη χρήση του glibc νεότερο από 2.30 (για παράδειγμα από το CentOS 8) έχουν επιλυθεί.
      Η υποδομή συνεχούς ενοποίησης παρέχει τη δυνατότητα εκτέλεσης εργασιών LTP (Linux Testing Project) που εκτελούν το Linuxulator για δοκιμή βελτιώσεων που έγιναν στον κώδικα για υποστήριξη Linux. Περίπου 400 δοκιμές αποτυγχάνουν και απαιτούν επιδιόρθωση (ορισμένα σφάλματα προκαλούνται από ψευδώς θετικά αποτελέσματα, ορισμένα απαιτούν ασήμαντες επιδιορθώσεις, αλλά υπάρχουν άλλα που απαιτούν προσθήκη υποστήριξης για νέες κλήσεις συστήματος για επιδιόρθωση). Έγινε εργασία για τον καθαρισμό του κώδικα Linuxulator και την απλοποίηση του εντοπισμού σφαλμάτων. Οι ενημερώσεις κώδικα με υποστήριξη για εκτεταμένα χαρακτηριστικά και την κλήση συστήματος fexecve έχουν προετοιμαστεί, αλλά δεν έχουν ακόμη ελεγχθεί.

    • Συνεχίζονται οι συναντήσεις της ομάδας εργασίας που δημιουργήθηκε για να πραγματοποιήσει τη μετάβαση των πηγαίων κωδίκων από το κεντρικό σύστημα ελέγχου πηγής Subversion στο αποκεντρωμένο σύστημα Git. Μια έκθεση με προτάσεις για τη μετανάστευση βρίσκεται στο στάδιο της προετοιμασίας.
    • В rtld (σύνδεση χρόνου εκτέλεσης) βελτιωμένη λειτουργία άμεσης εκτέλεσης (“/libexec/ld-elf.so.1 {path} {arguments}”).
    • Το έργο για τη δοκιμή fuzzing του πυρήνα του FreeBSD χρησιμοποιώντας το σύστημα syzkaller συνεχίζει να αναπτύσσεται. Κατά την περίοδο αναφοράς, εξαλείφθηκαν προβλήματα στη στοίβα δικτύου και στον κώδικα για την εργασία με πίνακες περιγραφών αρχείων που εντοπίστηκαν χρησιμοποιώντας το syzkaller. Μετά τη διάγνωση σφάλματος, προστέθηκαν αλλαγές στη στοίβα SCTP για να διευκολυνθεί ο εντοπισμός σφαλμάτων. Στο σετ stress2 προστέθηκαν κανόνες για τον εντοπισμό πιθανών παλινδρομήσεων. Προστέθηκε υποστήριξη για fuzz testing νέων κλήσεων συστήματος, συμπεριλαμβανομένων των κλήσεων copy_file_range(), __realpathat() και Capsicum. Συνεχίζονται οι εργασίες για την κάλυψη του επιπέδου εξομοίωσης Linux με δοκιμές fuzz. Αναλύσαμε και εξαλείψαμε τα σφάλματα που σημειώθηκαν στις πιο πρόσφατες αναφορές Σάρωσης κάλυψης.
    • Το σύστημα συνεχούς ολοκλήρωσης έχει αλλάξει στην εκτέλεση όλων των δοκιμών διακλάδωσης κεφαλής μόνο χρησιμοποιώντας clang/lld. Κατά τη δοκιμή για RISC-V, διασφαλίζεται ο σχηματισμός μιας πλήρους εικόνας δίσκου για την εκτέλεση δοκιμών στο QEMU χρησιμοποιώντας το OpenSBI. Προστέθηκαν νέες εργασίες για τη δοκιμή εικόνων και εικονικών μηχανών powerpc64 (FreeBSD-head-powerpc64-images, FreeBSD-head-powerpc64-testvm).
    • Γίνονται εργασίες για τη μεταφορά της δοκιμαστικής σουίτας Kyua από τις θύρες (devel/kyua) στο βασικό σύστημα για την επίλυση προβλημάτων (τα πακέτα εγκαθίστανται πολύ αργά) που προκύπτουν κατά τη χρήση του Kyua σε νέες αρχιτεκτονικές, η ανάπτυξη των οποίων πραγματοποιείται με χρήση εξομοιωτή ή FPGA. Η ενσωμάτωση στο βασικό σύστημα θα απλοποιήσει σημαντικά τις δοκιμές των ενσωματωμένων πλατφορμών και τη διασύνδεση με συστήματα συνεχούς ολοκλήρωσης.
    • Ένα έργο έχει ξεκινήσει για τη βελτιστοποίηση της απόδοσης του προγράμματος οδήγησης γέφυρας δικτύου if_bridge, το οποίο χρησιμοποιεί ένα μόνο 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, ο οποίος επιτρέπει τη χρήση μιας διασύνδεσης υποδοχής για αλληλεπίδραση μεταξύ του συστήματος επισκέπτη και του περιβάλλοντος υποδοχής χωρίς τη δημιουργία δικτύου.
    • Γίνονται εργασίες για την παροχή επαναλήψεων εκδόσεων του FreeBSD, καθιστώντας δυνατή τη διασφάλιση ότι τα εκτελέσιμα αρχεία των στοιχείων του συστήματος έχουν μεταγλωττιστεί ακριβώς από τους δηλωμένους πηγαίους κώδικες και δεν περιέχουν ξένες αλλαγές.
    • Στο βοηθητικό πρόγραμμα elfctl προστέθηκε η δυνατότητα ελέγχου της συμπερίληψης πρόσθετων μηχανισμών προστασίας (ASLR, PROT_MAX, stack gap, W+X mapping) σε επίπεδο μεμονωμένων διεργασιών
  • Αποθήκευση και συστήματα αρχείων
    • Γίνονται εργασίες για την υλοποίηση της δυνατότητας λειτουργίας του NFS μέσω ενός κρυπτογραφημένου καναλιού επικοινωνίας που βασίζεται στο TLS 1.3, αντί της χρήσης Kerberos (λειτουργία sec=krb5p), η οποία περιορίζεται στην κρυπτογράφηση μόνο μηνυμάτων RPC και υλοποιείται μόνο σε λογισμικό. Η νέα υλοποίηση χρησιμοποιεί τη στοίβα TLS που παρέχεται από τον πυρήνα για να ενεργοποιήσει την επιτάχυνση υλικού. Ο κώδικας NFS μέσω TLS είναι σχεδόν έτοιμος για δοκιμή, αλλά εξακολουθεί να απαιτεί εργασία για την υποστήριξη υπογεγραμμένων πιστοποιητικών πελατών και την προσαρμογή της στοίβας TLS του πυρήνα για αποστολή δεδομένων NFS (οι ενημερώσεις κώδικα για λήψη είναι ήδη έτοιμες).
  • Υποστήριξη υλικού
    • Γίνονται εργασίες για την προσθήκη υποστήριξης για την κινεζική x86 CPU Hygon που βασίζεται σε τεχνολογίες AMD.
    • Ως μέρος του CheriBSD, ένα fork του FreeBSD για την αρχιτεκτονική επεξεργαστών έρευνας CHERI (Capability Hardware Enhanced RISC Instructions), συνεχίζει να εφαρμόζεται η υποστήριξη για τον επεξεργαστή ARM Morello, ο οποίος θα υποστηρίζει το σύστημα ελέγχου πρόσβασης μνήμης CHERI που βασίζεται στο μοντέλο ασφαλείας του έργου Capsicum. Τσιπ Morello προγραμματίζουν κυκλοφορία το 2021. Επί του παρόντος, οι εργασίες επικεντρώνονται στην προσθήκη υποστήριξης για την πλατφόρμα Arm Neoverse N1 που τροφοδοτεί το Morello. Παρουσιάστηκε μια αρχική θύρα του CheriBSD για την αρχιτεκτονική RISC-V. Η ανάπτυξη CheriBSD συνεχίζεται για το πρωτότυπο αναφοράς CHERI που βασίζεται στην αρχιτεκτονική MIPS64.
    • Η μεταφορά του FreeBSD συνεχίζεται για το SoC 64-bit NXP LS1046A που βασίζεται στον επεξεργαστή ARMv8 Cortex-A72 με ενσωματωμένη μηχανή επιτάχυνσης επεξεργασίας πακέτων δικτύου, Ethernet 10 Gb, 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/ μικρό. Μια ενημέρωση για το ENA 2.2.0 ετοιμάζεται.
    • Οι βελτιώσεις στη θύρα FreeBSD για την πλατφόρμα powerpc64 συνεχίζονται. Η εστίαση είναι στην παροχή ποιοτικών επιδόσεων σε συστήματα με επεξεργαστές IBM POWER8 και POWER9. Κατά τη διάρκεια της περιόδου αναφοράς, το FreeBSD-CURRENT μεταφέρθηκε για χρήση του μεταγλωττιστή LLVM/Clang 10.0 και του συνδέσμου lld αντί του GCC. Από προεπιλογή, τα συστήματα powerpc64 χρησιμοποιούν το ELFv2 ABI και η υποστήριξη για το ELFv1 ABI έχει διακοπεί. Το FreeBSD-STABLE έχει ακόμα gcc 4.2.1. Τα προβλήματα με τα προγράμματα οδήγησης virtio, aacraid και ixl επιλύθηκαν. Στα συστήματα powerpc64 είναι δυνατή η εκτέλεση του QEMU χωρίς υποστήριξη Huge Pages.
    • Συνεχίζονται οι εργασίες για την υλοποίηση υποστήριξης για την αρχιτεκτονική RISC-V. Στην τρέχουσα μορφή του, το FreeBSD εκκινεί ήδη με επιτυχία στην πλακέτα SiFive Hifive Unleashed, για την οποία έχουν προετοιμαστεί προγράμματα οδήγησης
      UART, SPI και PRCI, υποστηρίζει υλικολογισμικό OpenSBI και SBI 0.2. Κατά την περίοδο αναφοράς, οι εργασίες επικεντρώθηκαν στη μετανάστευση από το GCC στο clang and lld.

  • Εφαρμογές και σύστημα λιμένων
    • Η συλλογή θυρών του FreeBSD έχει ξεπεράσει το όριο των 39 χιλιάδων θυρών, ο αριθμός των μη κλειστών PR ξεπερνά ελαφρώς τα 2400, εκ των οποίων τα 640 PR δεν έχουν ακόμη ταξινομηθεί. Κατά την περίοδο αναφοράς, έγιναν 8146 αλλαγές από 173 προγραμματιστές. Τέσσερις νέοι συμμετέχοντες έλαβαν δικαιώματα δέσμευσης (Loïc Bartoletti, Mikael Urankar, Kyle Evans, Lorenzo Salvadore). Προστέθηκε σημαία USES=qca και καταργήθηκε η σημαία USES=zope (λόγω ασυμβατότητας με την Python 3). Γίνονται εργασίες για την κατάργηση της Python 2.7 από το δέντρο των θυρών - όλες οι θύρες που βασίζονται σε 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 (μια θύρα που επιτρέπει τη λειτουργία των μονάδων amdgpu, i915 και radeon DRM, χρησιμοποιώντας το πλαίσιο linuxkpi για συμβατότητα με το Direct Rendering Manager του πυρήνα Linux) ενημερωμένο.

    • Η επιφάνεια εργασίας KDE Plasma, τα Πλαίσια KDE, οι Εφαρμογές 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 έχει υλοποιηθεί και τοποθετηθεί σε θύρες (devel/libsysctlmibinfo2), παρέχοντας ένα API για την πρόσβαση στο sysctl MIB και τη μετάφραση των ονομάτων sysctl σε αναγνωριστικά αντικειμένων (OID).
    • Δημιουργήθηκε μια ενημέρωση διανομής NomadBSD 1.3.1, η οποία είναι μια έκδοση του FreeBSD προσαρμοσμένη για χρήση ως φορητή επιφάνεια εργασίας με δυνατότητα εκκίνησης από μονάδα USB. Το γραφικό περιβάλλον βασίζεται σε έναν διαχειριστή παραθύρων Ανοιχτό κουτί. Χρησιμοποιείται για την τοποθέτηση μονάδων δίσκου DSBMD (υποστηρίζεται η τοποθέτηση CD9660, FAT, HFS+, NTFS, Ext2/3/4), για τη διαμόρφωση ενός ασύρματου δικτύου - wifimgrκαι για να ελέγξετε την ένταση - DSBMixer.
    • Ξεκίνησε εργασία σχετικά με τη σύνταξη πλήρους τεκμηρίωσης για τον διευθυντή περιβάλλοντος της φυλακής μπορώ. Το Pot 0.11.0 ετοιμάζεται για κυκλοφορία, το οποίο θα περιλαμβάνει εργαλεία για τη διαχείριση της στοίβας δικτύου.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο