Έκδοση πυρήνα Linux 5.1

Μετά από δύο μήνες ανάπτυξης, ο Linus Torvalds εισήχθη απελευθέρωση πυρήνα Linux 5.1. Μεταξύ των πιο αξιοσημείωτων αλλαγών: νέα διεπαφή για ασύγχρονη I/O io_uring, δυνατότητα χρήσης NVDIMM ως RAM, υποστήριξη κοινής εικονικής μνήμης στο Nouveau, υποστήριξη κλιμακούμενης παρακολούθησης πολύ μεγάλων συστημάτων αρχείων μέσω fanotify, δυνατότητα διαμόρφωσης συμπίεσης Zstd επίπεδα στο Btrfs, ένας νέος χειριστής cpuidle TEO, υλοποίηση κλήσεων συστήματος για την επίλυση του προβλήματος του 2038, δυνατότητα εκκίνησης από συσκευές χαρτογράφησης συσκευών χωρίς initramfs, μονάδα SafeSetID LSM, υποστήριξη για συνδυασμένες ζωντανές ενημερώσεις κώδικα.

Ο κύριος καινοτομίες:

  • Υποσύστημα δίσκου, I/O και συστήματα αρχείων
    • Υλοποιήθηκε μια νέα διεπαφή για ασύγχρονη I/O - io_uring, το οποίο είναι αξιοσημείωτο για την υποστήριξή του για ψηφοφορία εισόδου/εξόδου και την ικανότητα εργασίας με ή χωρίς buffering. Ας θυμηθούμε ότι ο προηγουμένως προτεινόμενος μηχανισμός ασύγχρονης εισόδου/εξόδου «aio» δεν υποστήριζε προσωρινή I/O, μπορούσε να λειτουργήσει μόνο σε λειτουργία O_DIRECT (χωρίς buffering και παράκαμψη της προσωρινής μνήμης), είχε προβλήματα με το κλείδωμα λόγω αναμονής για διαθεσιμότητα μεταδεδομένων και παρουσίασε μεγάλα γενικά έξοδα λόγω της αντιγραφής δεδομένων στη μνήμη.

      Μέσα στο API
      Οι προγραμματιστές του io_uring προσπάθησαν να εξαλείψουν τις αδυναμίες της παλιάς διεπαφής του aio. Με παραγωγικότητα Το io_uring είναι πολύ κοντά στο SPDK και είναι σημαντικά μπροστά από το libaio όταν εργάζεστε με ενεργοποιημένη τη δημοσκόπηση. Έχει προετοιμαστεί μια βιβλιοθήκη για τη χρήση του io_uring σε τελικές εφαρμογές που εκτελούνται στο χώρο χρήστη απελευθερώνοντας, το οποίο παρέχει ένα πλαίσιο υψηλού επιπέδου πάνω από τη διεπαφή του πυρήνα.

    • Στον μηχανισμό παρακολούθησης συμβάντων στο FS fanotify() προστέθηκε υποστήριξη για την παρακολούθηση καταστάσεων superblock και αλλαγής δομής dirent (γεγονότα δημιουργίας, διαγραφής και μετακίνησης καταλόγων). Τα χαρακτηριστικά που παρουσιάζονται βοηθούν στην επίλυση των προβλημάτων επεκτασιμότητας που προκύπτουν κατά τη δημιουργία αναδρομικής παρακολούθησης αλλαγών σε πολύ μεγάλα συστήματα αρχείων χρησιμοποιώντας τον μηχανισμό inotify (προηγουμένως οι αλλαγές dirent μπορούσαν να παρακολουθούνται μόνο μέσω του inotify, αλλά
      απόδοση σε συνθήκες αναδρομικής παρακολούθησης μεγάλων ένθετων καταλόγων άφησε πολλά να είναι επιθυμητά). Τώρα μια τέτοια παρακολούθηση μπορεί να γίνει αποτελεσματικά μέσω του fanotify.

    • Στο σύστημα αρχείων Btrfs προστέθηκε τη δυνατότητα προσαρμογής του επιπέδου συμπίεσης για τον αλγόριθμο zstd, ο οποίος μπορεί να θεωρηθεί ως βέλτιστος συμβιβασμός μεταξύ του γρήγορου αλλά αναποτελεσματικού lz4 και του αργού αλλά καλής συμπίεσης xz. Κατ' αναλογία με το πώς ήταν προηγουμένως δυνατό να ρυθμιστεί το επίπεδο συμπίεσης κατά τη χρήση zlib, η υποστήριξη για την επιλογή προσάρτησης "-o compress=zstd:level" προστέθηκε για το zstd. Κατά τη διάρκεια της δοκιμής, το ελάχιστο πρώτο επίπεδο παρείχε συμπίεση δεδομένων κατά 2.658 φορές με ταχύτητα συμπίεσης 438.47 MB/s, ταχύτητα αποσυμπίεσης 910.51 MB/s και κατανάλωση μνήμης 780 MB και το μέγιστο επίπεδο 15 παρείχε 3.126 φορές, αλλά με συμπίεση Ταχύτητα 37.30 MB/s αποσυσκευασία 878.84 MB/s και κατανάλωση μνήμης 2547 MB.
    • Προστέθηκε τη δυνατότητα εκκίνησης από ένα σύστημα αρχείων που βρίσκεται στη συσκευή χαρτογράφησης συσκευών, χωρίς τη χρήση initramfs. Ξεκινώντας με την τρέχουσα έκδοση του πυρήνα, οι συσκευές χαρτογράφησης συσκευών μπορούν να χρησιμοποιηθούν απευθείας κατά τη διαδικασία εκκίνησης, για παράδειγμα, ως διαμέρισμα με το ριζικό σύστημα αρχείων. Το διαμέρισμα διαμορφώνεται χρησιμοποιώντας την παράμετρο εκκίνησης "dm-mod.create". Οι μονάδες χαρτογράφησης συσκευών που επιτρέπονται για φόρτωση περιλαμβάνουν: "κρυπτογράφηση", "καθυστέρηση", "γραμμική", "στιγμιότυπο-προέλευση" και "αλήθεια".
    • Η σημαία F2FS_NOCOW_FL έχει προστεθεί στο σύστημα αρχείων F2FS που είναι προσανατολισμένο σε μονάδες Flash, το οποίο σας επιτρέπει να απενεργοποιήσετε τη λειτουργία αντιγραφής σε εγγραφή για ένα δεδομένο αρχείο.
    • Το σύστημα αρχείων καταργήθηκε από τον πυρήνα Exofs, η οποία είναι μια παραλλαγή του ext2, προσαρμοσμένη για εργασία με αποθηκευτικούς χώρους αντικειμένων OSD (Object-based Storage Device). Η υποστήριξη για το πρωτόκολλο SCSI για τέτοιες συσκευές αποθήκευσης αντικειμένων έχει επίσης καταργηθεί.
  • Εικονικοποίηση και Ασφάλεια
    • Προστέθηκε η επιλογή PR_SPEC_DISABLE_NOEXEC στο prctl() για τον έλεγχο της υποθετικής εκτέλεσης εντολών για την επιλεγμένη διαδικασία. Μια νέα επιλογή σάς επιτρέπει να απενεργοποιήσετε επιλεκτικά την κερδοσκοπική εκτέλεση για διεργασίες που θα μπορούσαν ενδεχομένως να υποστούν επίθεση από επίθεση Spectre. Το κλείδωμα διαρκεί μέχρι την πρώτη κλήση στο exec();
    • Εφαρμοσμένη ενότητα LSM SafeSetID, το οποίο επιτρέπει στις υπηρεσίες συστήματος να διαχειρίζονται με ασφάλεια τους χρήστες χωρίς να αυξάνονται τα δικαιώματα (CAP_SETUID) και χωρίς να αποκτούν δικαιώματα root. Τα δικαιώματα εκχωρούνται με τον καθορισμό κανόνων σε Securityfs με βάση μια λευκή λίστα έγκυρων δεσμεύσεων (με τη μορφή "UID1:UID2").
    • Προστέθηκαν αλλαγές χαμηλού επιπέδου που απαιτούνται για τη φόρτωση μονάδων ασφαλείας βάσει στοίβας (LSM). Παρουσιάστηκε η επιλογή εκκίνησης πυρήνα "lsm" για τον έλεγχο ποιες λειτουργικές μονάδες φορτώνονται και με ποια σειρά.
    • Στο υποσύστημα ελέγχου προστέθηκε υποστήριξη για χώρους ονομάτων αρχείων.
    • Αναπτυγμένος τις δυνατότητες του structleak του πρόσθετου GCC, το οποίο σας επιτρέπει να αποκλείσετε πιθανές διαρροές περιεχομένων μνήμης Παρέχεται αρχικοποίηση τυχόν μεταβλητών που χρησιμοποιούνται στον κώδικα μέσω της πρόσβασης αναφοράς στη στοίβα.
  • Υποσύστημα δικτύου
    • Για πρίζες εφαρμόστηκε νέα επιλογή "SO_BINDTOIFINDEX" παρόμοια με
      "SO_BINDTODEVICE", αλλά λαμβάνοντας ως όρισμα τον αριθμό ευρετηρίου της διεπαφής δικτύου αντί για το όνομα της διεπαφής.

    • Η στοίβα mac80211 έχει προσθέσει τη δυνατότητα εκχώρησης πολλαπλών BSSID (διευθύνσεων MAC) σε μία συσκευή. Ως μέρος ενός έργου για τη βελτιστοποίηση της απόδοσης WiFi, η στοίβα mac80211 έχει προσθέσει τη λογιστική του χρόνου ομιλίας και τη δυνατότητα κατανομής του χρόνου ομιλίας μεταξύ πολλών σταθμών (όταν λειτουργεί σε λειτουργία σημείου πρόσβασης, κατανέμοντας λιγότερο χρόνο μετάδοσης σε αργούς ασύρματους σταθμούς, αντί να κατανέμεται ομοιόμορφα ο χρόνος μεταξύ όλων σταθμοί)·
    • Προστέθηκε μηχανισμός "devlink υγεία", το οποίο παρέχει ειδοποιήσεις όταν προκύπτουν προβλήματα με τη διεπαφή δικτύου.
  • Υπηρεσίες μνήμης και συστήματος
    • Εφαρμόστηκε ασφαλής παράδοση σήματος που επιτρέπει την επαναχρησιμοποίηση PID. Για παράδειγμα, όταν καλούσατε το kill προηγουμένως, θα μπορούσε να προκύψει μια κατάσταση όπου, αμέσως μετά την αποστολή ενός σήματος, το PID στόχου θα μπορούσε να ελευθερωθεί λόγω τερματισμού της διαδικασίας και να καταληφθεί από μια άλλη διεργασία και το σήμα θα κατέληγε να περάσει σε άλλη διεργασία. Για την εξάλειψη τέτοιων καταστάσεων, προστέθηκε μια νέα κλήση συστήματος pidfd_send_signal, η οποία χρησιμοποιεί περιγραφείς αρχείων από το /proc/pid για να εξασφαλίσει σταθερή σύνδεση διεργασιών. Ακόμα κι αν το PID επαναχρησιμοποιηθεί κατά την επεξεργασία κλήσεων συστήματος, η περιγραφή του αρχείου δεν θα αλλάξει και μπορεί να χρησιμοποιηθεί με ασφάλεια για την αποστολή σήματος στη διεργασία.
    • Προστέθηκε τη δυνατότητα χρήσης συσκευών μόνιμης μνήμης (μόνιμης μνήμης, για παράδειγμα NVDIMM) ως RAM. Μέχρι τώρα, ο πυρήνας υποστήριζε τέτοιες συσκευές όπως συσκευές αποθήκευσης, αλλά τώρα μπορούν να χρησιμοποιηθούν και ως πρόσθετη μνήμη RAM. Η δυνατότητα υλοποιείται ως απάντηση στις επιθυμίες των χρηστών που είναι πρόθυμοι να αντέξουν μια καθυστέρηση απόδοσης και θέλουν να χρησιμοποιήσουν το εγγενές API διαχείρισης μνήμης πυρήνα Linux αντί να χρησιμοποιούν υπάρχοντα συστήματα κατανομής χώρου χρήστη που τρέχουν πάνω από το mmap για το dax αρχείο;
    • Προστέθηκε ένας νέος χειριστής αδράνειας CPU (cpuidle, αποφασίζει πότε η CPU μπορεί να τεθεί σε λειτουργίες βαθιάς εξοικονόμησης ενέργειας· όσο πιο βαθιά είναι η λειτουργία, τόσο μεγαλύτερη είναι η εξοικονόμηση, αλλά και τόσο περισσότερος χρόνος χρειάζεται για να βγείτε από τη λειτουργία) - TEO (Timer Events Oriented Governor ). Μέχρι τώρα, έχουν προταθεί δύο χειριστές cpuidle - "μενού" και "σκάλα", που διαφέρουν ως προς την ευρετική. Ο χειριστής "μενού" έχει γνωστά προβλήματα με τη λήψη ευρετικών αποφάσεων, για την εξάλειψη των οποίων αποφασίστηκε να προετοιμαστεί ένας νέος χειριστής. Το TEO τοποθετείται ως εναλλακτική λύση στον χειριστή "μενού", επιτρέποντας υψηλότερες επιδόσεις διατηρώντας παράλληλα το ίδιο επίπεδο κατανάλωσης ενέργειας.
      Μπορείτε να ενεργοποιήσετε το νέο πρόγραμμα χειρισμού χρησιμοποιώντας την παράμετρο εκκίνησης "cpuidle.governor=teo".

    • Ως μέρος της εργασίας για την εξάλειψη προβλήματα του 2038, που προκαλείται από υπερχείλιση του τύπου time_t 32 bit, περιλαμβάνει κλήσεις συστήματος που προσφέρουν μετρητές χρόνου 32 bit για αρχιτεκτονικές 64 bit. Ως αποτέλεσμα, η δομή time_t των 64 bit μπορεί πλέον να χρησιμοποιηθεί σε όλες τις αρχιτεκτονικές. Παρόμοιες αλλαγές έχουν εφαρμοστεί και στο υποσύστημα δικτύου για επιλογές timestamp υποδοχές δικτύου?
    • Στο σύστημα θερμής επιδιόρθωσης για τον πυρήνα (ζωντανή επιδιόρθωση) προστέθηκε Λειτουργία «Ατομική αντικατάσταση» για ατομική εφαρμογή μιας σειράς αλλαγών σε μια μεμονωμένη συνάρτηση. Αυτή η δυνατότητα σάς επιτρέπει να διανέμετε συνοπτικές ενημερώσεις κώδικα που καλύπτουν πολλές αλλαγές ταυτόχρονα, αντί για τη διαδικασία της σταδιακής εφαρμογής των ζωντανών ενημερώσεων κώδικα με αυστηρά καθορισμένη σειρά, η οποία είναι αρκετά δύσκολο να διατηρηθεί. Ενώ προηγουμένως κάθε επόμενη αλλαγή έπρεπε να βασίζεται στην κατάσταση της συνάρτησης μετά την τελευταία αλλαγή, τώρα είναι δυνατό να διαδοθούν πολλές αλλαγές που συνδέονται με μια αρχική κατάσταση ταυτόχρονα (δηλαδή, οι συντηρητές μπορούν να διατηρήσουν ένα ενοποιημένο patch σε σχέση με τον βασικό πυρήνα μιας αλυσίδας μπαλωμάτων που εξαρτώνται το ένα από το άλλο).
    • Ανακοινώθηκε καταργήθηκε η υποστήριξη για τη μορφή εκτελέσιμου αρχείου a.out και
      διαγράφηκε κώδικας για τη δημιουργία αρχείων πυρήνα σε μορφή a.out, η οποία βρίσκεται σε εγκαταλελειμμένη κατάσταση. Η μορφή a.out δεν έχει χρησιμοποιηθεί σε συστήματα Linux για μεγάλο χρονικό διάστημα και η δημιουργία αρχείων a.out δεν υποστηρίζεται εδώ και πολύ καιρό από σύγχρονα εργαλεία στις προεπιλεγμένες διαμορφώσεις Linux. Επιπλέον, ο φορτωτής για αρχεία a.out μπορεί να υλοποιηθεί εξ ολοκλήρου στο χώρο του χρήστη.

    • Η δυνατότητα αναγνώρισης και αφαίρεσης αχρησιμοποίητου κώδικα έχει προστεθεί στον μηχανισμό επαλήθευσης του προγράμματος BPF. Ο πυρήνας περιλαμβάνει επίσης patches με υποστήριξη spinlock για το υποσύστημα BPF, παρέχοντας πρόσθετες δυνατότητες για τη διαχείριση της παράλληλης εκτέλεσης προγραμμάτων BPF.
  • Оборудование
    • Πρόγραμμα οδήγησης σε Nouveau προστέθηκε υποστήριξη για ετερογενή διαχείριση μνήμης, επιτρέποντας στην CPU και την GPU να έχουν πρόσβαση σε κοινές περιοχές συγχρονισμένης μνήμης. Το σύστημα κοινής εικονικής μνήμης (SVM, κοινόχρηστη εικονική μνήμη) υλοποιείται με βάση το υποσύστημα HMM (Heterogeneous memory management), το οποίο επιτρέπει τη χρήση συσκευών με τις δικές τους μονάδες διαχείρισης μνήμης (MMU, μονάδα διαχείρισης μνήμης), οι οποίες έχουν πρόσβαση κύρια μνήμη. Συγκεκριμένα, χρησιμοποιώντας το HMM, μπορείτε να οργανώσετε έναν κοινόχρηστο χώρο διευθύνσεων μεταξύ της GPU και της CPU, στον οποίο η GPU μπορεί να έχει πρόσβαση στην κύρια μνήμη της διαδικασίας. Η υποστήριξη SVM είναι προς το παρόν ενεργοποιημένη μόνο για GPU της οικογένειας Pascal, αν και παρέχεται υποστήριξη και για τις GPU Volta και Turing. Επιπλέον, στο Nouveau προστέθηκε νέο ioctl για τον έλεγχο της μετάβασης των περιοχών μνήμης διεργασιών στη μνήμη GPU.
    • Σε πρόγραμμα οδήγησης Intel DRM για GPU Skylake και νεότερη έκδοση (gen9+) περιλαμβάνεται Από προεπιλογή, η λειτουργία fastboot εξαλείφει τις περιττές αλλαγές λειτουργίας κατά την εκκίνηση. Προστέθηκε новые αναγνωριστικά συσκευών με βάση τις μικροαρχιτεκτονικές Coffelake και Ice Lake. Για τσιπς Coffelake προστέθηκε Υποστήριξη GVT (Εικονικοποίηση GPU). Για εικονικές GPU εφαρμόστηκε Υποστήριξη VFIO EDID. Για οθόνες LCD MIPI/DSI προστέθηκε υποστήριξη για στοιχεία ACPI/PMIC. Εφαρμόστηκε νέες λειτουργίες τηλεόρασης 1080p30/50/60 TV.
    • Προστέθηκε υποστήριξη για Vega10/20 BACO GPU στο πρόγραμμα οδήγησης amdgpu. Υλοποιήθηκαν πίνακες ελέγχου διαχείρισης ενέργειας Vega 10/20 και ψυγείου Vega 10. Προστέθηκαν νέα αναγνωριστικά συσκευών PCI για GPU Picasso. Προστέθηκε διεπαφή για τη διαχείριση προγραμματισμένων εξαρτήσεων για την αποφυγή αδιεξόδων.
    • Προστέθηκε Πρόγραμμα οδήγησης DRM/KMS για επιταχυντές οθόνης ARM Komeda (Mali D71);
    • Προστέθηκε υποστήριξη για πάνελ οθόνης Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 και Kingdisplay kd097d04.
    • Προστέθηκε υποστήριξη για τους κωδικοποιητές ήχου Rockchip RK3328, Cirrus Logic CS4341 και CS35L36, MediaTek MT6358, Qualcomm WCD9335 και Ingenic JZ4725B, καθώς και την πλατφόρμα ήχου Mediatek MT8183.
    • Προστέθηκε υποστήριξη για ελεγκτές NAND Flash STMicroelectronics FMC2, Amlogic Meson;
    • Προστέθηκε υποστήριξη επιταχυντή για συστήματα υλικού Habana AI.
    • Προστέθηκε υποστήριξη για ελεγκτές Ethernet gigabit NXP ENETC και ασύρματες διεπαφές MediaTek MT7603E (PCIe) και MT76x8.

Ταυτόχρονα, το Ίδρυμα Ελεύθερου Λογισμικού της Λατινικής Αμερικής σχηματίστηκε
επιλογή εντελώς δωρεάν πυρήνας 5.1 - Linux-libre 5.1-gnu, απαλλαγμένα από στοιχεία υλικολογισμικού και προγράμματος οδήγησης που περιέχουν μη ελεύθερα στοιχεία ή τμήματα κώδικα, το πεδίο εφαρμογής των οποίων περιορίζεται από τον κατασκευαστή. Στη νέα έκδοση, το blob loading είναι απενεργοποιημένο στα προγράμματα οδήγησης mt7603 και goya. Ενημερωμένος κώδικας καθαρισμού blob σε προγράμματα οδήγησης και υποσυστήματα wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk και touchscreen_dmi. Ο καθαρισμός Blob στον φορτωτή υλικολογισμικού lantiq xrx200 έχει διακοπεί λόγω της αφαίρεσής του από τον πυρήνα.

Πηγή: opennet.ru

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