Αναφορά προόδου του FreeBSD Q2019 XNUMX

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

  • Γενικά και συστημικά θέματα
    • Η ομάδα Core αποφάσισε να δημιουργήσει μια ομάδα εργασίας για να διερευνήσει τη δυνατότητα μετακίνησης του πηγαίου κώδικα από το κεντρικό σύστημα ελέγχου πηγών Subversion στο αποκεντρωμένο σύστημα Git.
    • Πραγματοποιήθηκε δοκιμή fuzz του πυρήνα του FreeBSD χρησιμοποιώντας το σύστημα syzkaller και διορθώθηκαν ορισμένα λάθη που εντοπίστηκαν. Προστέθηκε ένα επίπεδο για τη δοκιμή fuzzing των βιβλιοθηκών για συμβατότητα με περιβάλλον 32 bit σε συστήματα με πυρήνα 64 bit. Εφάρμοσε τη δυνατότητα εκτέλεσης του syzkaller σε εικονικές μηχανές που βασίζονται σε bhyve. Στο επόμενο στάδιο, σχεδιάζεται να επεκταθεί η κάλυψη της δοκιμής κλήσεων συστήματος, να χρησιμοποιηθεί απολυμαντικό LLVM για να ελέγξει τον πυρήνα, να χρησιμοποιηθεί το netdump για να αποθηκεύσετε τις απορρίψεις πυρήνα κατά τη διάρκεια σφαλμάτων κατά τη διάρκεια της δοκιμής fuzzing κ.λπ.
    • Ξεκίνησαν οι εργασίες για την ενημέρωση της εφαρμογής zlib σε επίπεδο πυρήνα. Για πρόσβαση στον πυρήνα στον κώδικα zlib, ο κατάλογος contrib/zlib μετονομάστηκε σε sys/contrib/zlib και το αρχείο κεφαλίδας crc.h μετονομάστηκε επίσης για να αποφευχθεί η διένεξη με το zlib/crc.h. Εκκαθάριση κώδικα παλαιού τύπου που εξαρτιόταν από το zlib και το inflate. Στη συνέχεια, σχεδιάζεται να παρέχεται η δυνατότητα κατασκευής του πυρήνα ταυτόχρονα με το παλιό και το νέο zlib για τη σταδιακή μεταφορά στη νέα έκδοση λειτουργιών που χρησιμοποιούν συμπίεση.
    • Η υποδομή εξομοίωσης περιβάλλοντος Linux (Linuxulator) έχει ενημερωθεί. Αυξημένη υποστήριξη για εργαλεία εντοπισμού σφαλμάτων Linux όπως το βοηθητικό πρόγραμμα strace. Το πακέτο linux-c7-strace έχει προστεθεί στις θύρες, οι οποίες μπορούν να χρησιμοποιηθούν για την ανίχνευση εκτελέσιμων αρχείων Linux αντί για τα τυπικά βοηθητικά προγράμματα trus και ktrace, τα οποία δεν μπορούν ακόμη να αποκωδικοποιήσουν ορισμένες σημαίες και δομές ειδικά για το Linux. Επιπλέον, έχει προστεθεί το πακέτο linux-ltp με εκτελέσιμα αρχεία Linux Test Project και έχουν επιλυθεί προβλήματα συμβατότητας με εκτελέσιμα αρχεία που συνδέονται με νέες εκδόσεις του glibc.
    • Η υλοποίηση των πράξεων καθυστερημένης ακύρωσης στον μηχανισμό pmap έχει μεταφερθεί στη χρήση ενός αλγόριθμου επεξεργασίας ουράς που λειτουργεί χωρίς κλειδώματα, γεγονός που κατέστησε δυνατή την επίλυση προβλημάτων επεκτασιμότητας κατά την εκτέλεση μεγάλου αριθμού παράλληλων λειτουργιών unmap.
    • Ο μηχανισμός αποκλεισμού του vnode κατά την εκτέλεση κλήσεων συστήματος της οικογένειας execve() έχει αλλάξει, γεγονός που κατέστησε δυνατή την επίτευξη αυξημένης απόδοσης κατά την ταυτόχρονη εκτέλεση του execve() για το ίδιο αρχείο (για παράδειγμα, κατά την εκτέλεση εργασιών συναρμολόγησης με παραλληλοποίηση της εκκίνησης του μεταγλωττιστή).
  • Ασφάλεια
    • Ο hypervisor bhyve συνεχίζει να βελτιώνει την υποστήριξη για τη ζωντανή μετεγκατάσταση περιβαλλόντων επισκέπτη από τον έναν κεντρικό υπολογιστή στον άλλο και τη λειτουργία Αποθήκευση/Επαναφορά, η οποία σας επιτρέπει να παγώσετε το σύστημα επισκέπτη, να αποθηκεύσετε την κατάσταση σε ένα αρχείο και στη συνέχεια να συνεχίσετε την εκτέλεση.
    • Μέσω της χρήσης της βιβλιοθήκης libvdsk, η bhyve έχει προσθέσει υποστήριξη για εικόνες δίσκου σε μορφή QCOW2. Απαιτεί εγκατάσταση για να λειτουργήσει
      ειδικά τροποποιημένο έκδοση του bhyve, η οποία έχει μετατραπεί για να χρησιμοποιεί χειριστές λειτουργίας αρχείων που βασίζονται στο libvdsk. Κατά τη διάρκεια της περιόδου αναφοράς, η libvdsk πραγματοποίησε επίσης εργασίες για την απλοποίηση της ενσωμάτωσης υποστήριξης για νέες μορφές, βελτίωσε την απόδοση ανάγνωσης και εγγραφής και πρόσθεσε υποστήριξη για Αντιγραφή σε Εγγραφή. Από τις υπόλοιπες εργασίες, σημειώνεται η ενσωμάτωση του libvdsk στην κύρια δομή του bhyve.

    • Ένα σύστημα συλλογής πληροφοριών κίνησης έχει προστεθεί στα λιμάνια
      Maltrail, το οποίο σας επιτρέπει να δημιουργείτε παγίδες για αιτήματα κακόβουλου δικτύου (τα IP και οι τομείς από τις μαύρες λίστες ελέγχονται) και να στέλνετε πληροφορίες σχετικά με τη δραστηριότητα που έχει εντοπιστεί σε έναν κεντρικό διακομιστή για επακόλουθο αποκλεισμό ή ανάλυση προσπαθειών επίθεσης.

    • Έχουν προστεθεί πλατφόρμες στις θύρες για τον εντοπισμό επιθέσεων, την ανάλυση αρχείων καταγραφής και την παρακολούθηση της ακεραιότητας των αρχείων Wazuh (fork of Ossec με υποστήριξη για ενσωμάτωση με ELK-Στοίβα);
  • Υποσύστημα δικτύου
    • Το πρόγραμμα οδήγησης ena έχει ενημερωθεί για να υποστηρίζει τη δεύτερη γενιά προσαρμογέων δικτύου ENAv2 (Elastic Network Adapter) που χρησιμοποιούνται στην υποδομή Elastic Compute Cloud (EC2) για την οργάνωση της επικοινωνίας μεταξύ κόμβων EC2 σε ταχύτητες έως και 25 Gb/s. Η υποστήριξη NETMAP έχει προστεθεί στο πρόγραμμα οδήγησης ena.
    • Το FreeBSD HEAD υιοθετεί μια νέα στοίβα MMC/SD, που βασίζεται στο πλαίσιο CAM και σας επιτρέπει να συνδέετε συσκευές με διεπαφή SDIO (Secure Digital I/O). Για παράδειγμα, το SDIO χρησιμοποιείται σε μονάδες WiFi και Bluetooth για πολλές πλακέτες, όπως το Raspberry Pi 3. Η νέα στοίβα επιτρέπει επίσης τη χρήση της διεπαφής CAM για την αποστολή εντολών SD από εφαρμογές στο χώρο χρήστη, γεγονός που καθιστά δυνατή τη δημιουργία συσκευής προγράμματα οδήγησης που λειτουργούν σε επίπεδο χρήστη. Ξεκίνησαν οι εργασίες για τη δημιουργία προγραμμάτων οδήγησης για ασύρματα τσιπ Broadcom που λειτουργούν σε λειτουργία FullMAC (από την πλευρά του τσιπ εκτελεί μια ομοιότητα του δικού του λειτουργικού συστήματος με υλοποιήσεις της ασύρματης στοίβας 802.11).
    • Γίνονται εργασίες για την υλοποίηση του NFSv4.2 (RFC-7862) για το FreeBSD. Η νέα έκδοση του NFS προσθέτει υποστήριξη για τις συναρτήσεις posix_fadvise, posix_fallocate, τις λειτουργίες SEEKHOLE/SEEKDATA στο lseek και τη λειτουργία τοπικής αντιγραφής τμημάτων ενός αρχείου στον διακομιστή (χωρίς μεταφορά στον πελάτη).

      Το FreeBSD παρέχει επί του παρόντος βασική υποστήριξη για τις λειτουργίες LayoutError, IOAdvise, Allocate και Copy. Το μόνο που μένει είναι να υλοποιηθεί η λειτουργία Αναζήτηση που απαιτείται για τη χρήση του lseek(SEEKHOLE/SEEKDATA) με το NFS. Η υποστήριξη NFSv4.2 έχει προγραμματιστεί για το FreeBSD 13.

  • Αποθήκευση και συστήματα αρχείων
    • Το έργο για την εκ νέου επεξεργασία του προγράμματος οδήγησης για το υποσύστημα FUSE (File system in USERspace), το οποίο επιτρέπει τη δημιουργία υλοποιήσεων συστημάτων αρχείων στο χώρο του χρήστη, πλησιάζει στην ολοκλήρωση. Το πρόγραμμα οδήγησης που παρέχεται αρχικά είναι ξεπερασμένο και περιέχει πολλά σφάλματα. Ως μέρος του έργου εκσυγχρονισμού προγραμμάτων οδήγησης, υλοποιήθηκε η υποστήριξη για το πρωτόκολλο FUSE 7.23 (προηγουμένως υποστηριζόταν η έκδοση 7.8, που κυκλοφόρησε πριν από 11 χρόνια), προστέθηκε κώδικας για τον έλεγχο των δικαιωμάτων πρόσβασης στην πλευρά του πυρήνα (“-o default_permissions”), κλήσεις σε Προστέθηκαν VOP_MKNOD, VOP_BMAP και VOP_ADVLOCK, δυνατότητα διακοπής λειτουργιών FUSE, πρόσθετη υποστήριξη για μη κατονομαζόμενους σωλήνες και υποδοχές unix σε ασφάλειες, δυνατότητα χρήσης kqueue για /dev/fuse, δυνατότητα ενημέρωσης παραμέτρων προσάρτησης μέσω "mount -u", προστέθηκε υποστήριξη για την εξαγωγή ασφαλειών μέσω NFS, εφαρμόστηκε λογιστική RLIMIT_FSIZE, προστέθηκαν σημαίες FOPEN_KEEP_CACHE και FUSE_ASYNC_READ, έγιναν σημαντικές βελτιστοποιήσεις απόδοσης και βελτιώθηκε η οργάνωση της προσωρινής αποθήκευσης.
    • Η υποστήριξη για τη λειτουργία BIO_DELETE έχει προστεθεί στον κώδικα ανταλλαγής τηλεειδοποίησης, ο οποίος σας επιτρέπει να χρησιμοποιείτε την εντολή TRIM όταν αφαιρείτε μπλοκ από μονάδες SSD για να αυξήσετε τη διάρκεια ζωής τους.
  • Υποστήριξη υλικού
    • Συνεχίζονται οι εργασίες για την υλοποίηση υποστήριξης για το ARM64 SoC Broadcom BCM5871X με επεξεργαστές ARMv8 Cortex-A57, με στόχο τη χρήση σε δρομολογητές, πύλες και αποθήκευση δικτύου. Κατά την περίοδο αναφοράς, βελτιώθηκε η υποστήριξη για εσωτερικούς και εξωτερικούς διαύλους iProc PCIe, προστέθηκε υποστήριξη για BNXT Ethernet και βρίσκονται σε εξέλιξη εργασίες για τη χρήση της ενσωματωμένης μηχανής κρυπτογράφησης για την επιτάχυνση του IPsec. Η ενσωμάτωση του κώδικα στον κλάδο HEAD αναμένεται το δεύτερο εξάμηνο του έτους.
    • Ξεκίνησαν οι εργασίες για την υποστήριξη του SoC 64-bit NXP LS1046A που βασίζεται στον επεξεργαστή ARMv8 Cortex-A72 με ενσωματωμένη μηχανή επιτάχυνσης επεξεργασίας πακέτων δικτύου, Ethernet 10 Gb, PCIe 3.0, SATA 3.0 και USB 3.0. Η υποστήριξη για τη βασική πλατφόρμα (multi-user SMP) και το SATA 3.0 έχει ήδη υλοποιηθεί. Η υποστήριξη για USB 3.0, SD/MMC και I2C βρίσκεται σε εξέλιξη. Τα σχέδια περιλαμβάνουν υποστήριξη για Ethernet, GPIO και QSPI. Ολοκλήρωση εργασιών και ένταξη στον κλάδο HEAD αναμένεται το 4ο τρίμηνο του 2019.
    • Ενημερωμένα προγράμματα οδήγησης mlx5en και mlx5ib για προσαρμογείς Mellanox ConnectX-4 [Lx], ConnectX-5 [Ex] και ConnectX-6 [Dx] Ethernet και InfiniBand. Προστέθηκε υποστήριξη για προσαρμογείς Mellanox Socket Direct (ConnectX-6), επιτρέποντας απόδοση έως και 200 ​​Gb/s στο δίαυλο PCIe Gen 3.0. Για τσιπ BlueField πολλαπλών πυρήνων, έχει προστεθεί υποστήριξη για το πρόγραμμα οδήγησης RShim. Το πακέτο mstflint με ένα σύνολο βοηθητικών προγραμμάτων διάγνωσης για προσαρμογείς Mellanox έχει προστεθεί στις θύρες.
  • Εφαρμογές και σύστημα λιμένων
    • Τα στοιχεία στοίβας γραφικών έχουν ενημερωθεί. Το πρόγραμμα οδήγησης drm.ko (Διαχείριση άμεσης απόδοσης) έχει μεταφερθεί από τον πυρήνα του Linux 5.0. Αυτό το πρόγραμμα οδήγησης θεωρείται πειραματικό και έχει προστεθεί στο δέντρο των ports ως graphics/drm-devel-kmod. Δεδομένου ότι το πρόγραμμα οδήγησης χρησιμοποιεί το ενημερωμένο πλαίσιο Linux KPI για να είναι συμβατό με το DRM API του πυρήνα του Linux, απαιτείται η εκτέλεση του FreeBSD CURRENT. Το πρόγραμμα οδήγησης vboxvideo.ko drm για την εικονική GPU VirtualBox έχει επίσης μεταφερθεί από το Linux. Το πακέτο Mesa έχει ενημερωθεί για να κυκλοφορήσει την 18.3.2 και άλλαξε για χρήση LLVM από τη θύρα devel/llvm80 αντί για devel/llvm60.
    • Το δέντρο θυρών του FreeBSD έχει ξεπεράσει τις 37000 θύρες, ο αριθμός των μη κλειστών PR παραμένει σε 2146. Κατά την περίοδο αναφοράς, έγιναν 7837 αλλαγές από 172 προγραμματιστές. Τρεις νέοι συμμετέχοντες έλαβαν δικαιώματα committer. Μεταξύ των σημαντικών ενημερώσεων έκδοσης στις θύρες είναι: MySQL 5.7, Python 3.6, Ruby 2.5, Samba 4.8, Julia 1.0, Firefox 68.0, Chromium 75.0.3770.100. Όλες οι θύρες Go έχουν μετατραπεί ώστε να χρησιμοποιούν τη σημαία "USES=go". Προστέθηκε η σημαία "USES=cabal" στον διαχειριστή πακέτων Cabal που χρησιμοποιείται για τον κώδικα Haskell. Η λειτουργία αυστηρής προστασίας στοίβας είναι ενεργοποιημένη. Η προεπιλεγμένη έκδοση της Python είναι 3.6 αντί για 2.7.
    • Η έκδοση του βοηθητικού προγράμματος έχει ετοιμαστεί nsysctl 1.0, το οποίο προσφέρει ένα ανάλογο στο /sbin/sysctl που χρησιμοποιεί libxo για έξοδο και παροχή ενός διευρυμένου συνόλου επιλογών. Το Nsysctl μπορεί να χρησιμοποιηθεί για την οπτική παρακολούθηση της κατάστασης των τιμών sysctl και την παρουσίαση πληροφοριών για αντικείμενα σε δομημένη μορφή. Είναι δυνατή η έξοδος σε μορφές XML, JSON και HTML.

Πηγή: opennet.ru

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