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

Μετά από δύο μήνες ανάπτυξης, ο Linus Torvalds παρουσίασε την κυκλοφορία του πυρήνα Linux 6.1. Μεταξύ των πιο αξιοσημείωτων αλλαγών: υποστήριξη για την ανάπτυξη προγραμμάτων οδήγησης και μονάδων στη γλώσσα Rust, εκσυγχρονισμός του μηχανισμού προσδιορισμού χρησιμοποιημένων σελίδων μνήμης, ειδικός διαχειριστής μνήμης για προγράμματα BPF, σύστημα διάγνωσης προβλημάτων μνήμης KMSAN, KCFI (Kernelk Control -Flow Integrity) μηχανισμός προστασίας, η εισαγωγή του δέντρου δομής Maple.

Η νέα έκδοση περιλαμβάνει 15115 διορθώσεις από 2139 προγραμματιστές, το μέγεθος της ενημερωμένης έκδοσης κώδικα είναι 51 MB, που είναι περίπου 2 φορές μικρότερο από το μέγεθος των ενημερώσεων κώδικα από πυρήνες 6.0 και 5.19. Οι αλλαγές επηρέασαν 13165 αρχεία, προστέθηκαν 716247 γραμμές κώδικα και διαγράφηκαν 304560 γραμμές. Περίπου το 45% όλων των αλλαγών που εισάγονται στο 6.1 σχετίζονται με προγράμματα οδήγησης συσκευών, περίπου το 14% των αλλαγών σχετίζονται με την ενημέρωση κώδικα που αφορά τις αρχιτεκτονικές υλικού, το 14% σχετίζονται με τη στοίβα δικτύου, το 3% σχετίζονται με συστήματα αρχείων και το 3% σχετίζονται με εσωτερικά υποσυστήματα πυρήνα.

Βασικές καινοτομίες στον πυρήνα 6.1:

  • Υπηρεσίες μνήμης και συστήματος
    • Προστέθηκε η δυνατότητα χρήσης της Rust ως δεύτερης γλώσσας για την ανάπτυξη προγραμμάτων οδήγησης και λειτουργικών μονάδων πυρήνα. Ο κύριος λόγος για την υποστήριξη του Rust είναι να διευκολύνει τη σύνταξη ασφαλών και υψηλής ποιότητας προγραμμάτων οδήγησης συσκευών, μειώνοντας την πιθανότητα σφαλμάτων κατά την εργασία με μνήμη. Η υποστήριξη Rust είναι απενεργοποιημένη από προεπιλογή και δεν έχει ως αποτέλεσμα τη συμπερίληψη του Rust ως απαιτούμενη εξάρτηση κατασκευής πυρήνα. Ο πυρήνας έχει υιοθετήσει μέχρι στιγμής μια ελάχιστη απογυμνωμένη έκδοση των patches, η οποία έχει μειωθεί από 40 σε 13 χιλιάδες γραμμές κώδικα και παρέχει μόνο το απαραίτητο ελάχιστο, αρκετό για τη δημιουργία μιας απλής μονάδας πυρήνα γραμμένη στη γλώσσα Rust. Στο μέλλον, σχεδιάζεται σταδιακή αύξηση της υπάρχουσας λειτουργικότητας, μεταφέροντας άλλες αλλαγές από τον κλάδο Rust-for-Linux. Παράλληλα, αναπτύσσονται έργα για τη χρήση της προτεινόμενης υποδομής για την ανάπτυξη προγραμμάτων οδήγησης για μονάδες NVMe, το πρωτόκολλο δικτύου 9p και την Apple M1 GPU στη γλώσσα Rust.
    • Για συστήματα που βασίζονται σε αρχιτεκτονικές AArch64, RISC-V και LoongArch με EFI, έχει εφαρμοστεί η δυνατότητα απευθείας φόρτωσης συμπιεσμένων εικόνων πυρήνα. Προστέθηκαν προγράμματα χειρισμού για φόρτωση, εκτέλεση και εκφόρτωση εικόνων πυρήνα, που καλούνται απευθείας από το EFI zboot. Προστέθηκαν επίσης προγράμματα χειρισμού για την εγκατάσταση και τη διαγραφή πρωτοκόλλων από τη βάση δεδομένων πρωτοκόλλου EFI. Προηγουμένως, η αποσυσκευασία γινόταν από έναν ξεχωριστό φορτωτή εκκίνησης, αλλά τώρα αυτό μπορεί να γίνει από έναν χειριστή στον ίδιο τον πυρήνα - η εικόνα του πυρήνα σχηματίζεται ως εφαρμογή EFI.
    • Η σύνθεση περιλαμβάνει μέρος των ενημερώσεων κώδικα με την εφαρμογή ενός μοντέλου διαχείρισης μνήμης πολλαπλών επιπέδων, το οποίο σας επιτρέπει να διαχωρίζετε τράπεζες μνήμης με διαφορετικά χαρακτηριστικά απόδοσης. Για παράδειγμα, οι σελίδες που χρησιμοποιούνται περισσότερο μπορεί να αποθηκευτούν στην ταχύτερη μνήμη, ενώ οι σελίδες που χρησιμοποιούνται πιο σπάνια μπορεί να αποθηκευτούν σε σχετικά αργή μνήμη. Ο πυρήνας 6.1 εισάγει έναν μηχανισμό για τον προσδιορισμό του σημείου που βρίσκονται οι πολύ χρησιμοποιούμενες σελίδες σε αργή μνήμη, ώστε να μπορούν να προωθηθούν σε γρήγορη μνήμη, και επίσης εισάγει μια γενική έννοια των επιπέδων μνήμης και της σχετικής απόδοσής τους.
    • Περιλαμβάνει τον μηχανισμό MGLRU (Multi-Generational LRU), ο οποίος αντικαθιστά την παλιά υλοποίηση LRU (Last Recently Used) που βασίζεται σε δύο ουρές με μια δομή πολλαπλών σταδίων που καθορίζει καλύτερα ποιες σελίδες μνήμης χρησιμοποιούνται πραγματικά και ποιες μπορούν να προωθηθούν σε το διαμέρισμα ανταλλαγής.
    • Προστέθηκε υποστήριξη για τη δομή δεδομένων «maple tree» που προτείνεται από τους μηχανικούς της Oracle, η οποία τοποθετείται ως πιο αποτελεσματική αντικατάσταση της δομής «κόκκινο-μαύρο δέντρο». Το Maple tree είναι μια παραλλαγή του B-tree που υποστηρίζει ευρετηρίαση εύρους και έχει σχεδιαστεί για να κάνει αποτελεσματική χρήση της κρυφής μνήμης των σύγχρονων επεξεργαστών. Ορισμένα υποσυστήματα διαχείρισης μνήμης έχουν ήδη μεταφερθεί σε δέντρο σφενδάμου, γεγονός που είχε θετική επίδραση στην απόδοσή τους. Στο μέλλον, το δέντρο σφενδάμου μπορεί να χρησιμοποιηθεί για την εφαρμογή κλειδώματος περιοχής.
    • Στο υποσύστημα BPF προστέθηκε η δυνατότητα δημιουργίας «καταστροφικών» προγραμμάτων BPF, ειδικά σχεδιασμένων για την έναρξη έκτακτης διακοπής λειτουργίας μέσω της κλήσης crash_kexec(). Τέτοια προγράμματα BPF μπορεί να απαιτούνται για σκοπούς εντοπισμού σφαλμάτων για την έναρξη της δημιουργίας μιας ένδειξης σφαλμάτων σε μια συγκεκριμένη χρονική στιγμή. Για να αποκτήσετε πρόσβαση σε καταστροφικές λειτουργίες κατά τη φόρτωση ενός προγράμματος BPF, πρέπει να καθορίσετε τη σημαία BPF_F_DESTRUCTIVE, να ενεργοποιήσετε το sysctl kernel.destructive_bpf_enabled και να έχετε δικαιώματα CAP_SYS_BOOT.
    • Για προγράμματα BPF, είναι δυνατή η απαρίθμηση στοιχείων cgroup, καθώς και η απαρίθμηση πόρων (αρχεία, vma, διεργασίες, κ.λπ.) ενός συγκεκριμένου νήματος ή εργασίας. Ένας νέος τύπος χάρτη έχει εφαρμοστεί για τη δημιουργία buffer δακτυλίου χρήστη.
    • Προστέθηκε μια ειδική κλήση για εκχώρηση μνήμης σε προγράμματα BPF (εκχωρητής μνήμης), η οποία παρέχει ασφαλέστερη εκχώρηση μνήμης στο πλαίσιο του BPF από το τυπικό kmalloc().
    • Το πρώτο μέρος των αλλαγών έχει ενσωματωθεί, παρέχοντας τη δυνατότητα δημιουργίας προγραμμάτων οδήγησης για συσκευές εισόδου με διεπαφή HID (Human Interface Device), που υλοποιείται με τη μορφή προγραμμάτων BPF.
    • Ο πυρήνας έχει αφαιρέσει εντελώς τον κώδικα για την υποστήριξη της μορφής εκτελέσιμου αρχείου a.out, η οποία καταργήθηκε στην έκδοση 5.1 και έχει απενεργοποιηθεί για τις κύριες αρχιτεκτονικές από τις εκδόσεις 5.18 και 5.19. Η μορφή a.out έχει από καιρό καταργηθεί στα συστήματα Linux και η δημιουργία αρχείων a.out δεν υποστηρίζεται από σύγχρονα εργαλεία στις προεπιλεγμένες διαμορφώσεις Linux. Το πρόγραμμα φόρτωσης για αρχεία a.out μπορεί να υλοποιηθεί εξ ολοκλήρου στο χώρο χρήστη.
    • Για συστήματα που βασίζονται στην αρχιτεκτονική συνόλου εντολών LoongArch που χρησιμοποιείται στους επεξεργαστές Loongson 3 5000 και εφαρμόζουν το νέο RISC ISA, παρόμοιο με το MIPS και το RISC-V, υλοποιείται υποστήριξη για συμβάντα μέτρησης απόδοσης (perf events), kexec, kdump και BPF JIT compilation .
    • Η ασύγχρονη διεπαφή εισόδου/εξόδου io_uring προσφέρει μια νέα λειτουργία, IORING_SETUP_DEFER_TASKRUN, η οποία επιτρέπει την προσωρινή αναβολή εργασιών που σχετίζονται με την προσωρινή μνήμη δακτυλίου έως ότου υποβληθεί ένα αίτημα εφαρμογής, το οποίο μπορεί να χρησιμοποιηθεί για ομαδική εργασία και την αποφυγή προβλημάτων καθυστέρησης λόγω προκαταρκτικών εφαρμογών. λάθος στιγμή.
    • Οι διεργασίες στο χώρο του χρήστη έχουν τη δυνατότητα να ξεκινήσουν τη μετατροπή μιας σειράς σελίδων κανονικής μνήμης σε ένα σύνολο σελίδων μεγάλης μνήμης (Transparent Huge-Pages).
    • Προστέθηκε η υλοποίηση της συσκευής /dev/userfaultfd, η οποία επιτρέπει την πρόσβαση στη λειτουργικότητα της κλήσης συστήματος userfaultfd() χρησιμοποιώντας δικαιώματα πρόσβασης στο FS. Η λειτουργία userfaultfd σάς επιτρέπει να δημιουργείτε προγράμματα χειρισμού για πρόσβαση σε σελίδες μνήμης που δεν έχουν εκχωρηθεί (σφάλματα σελίδας) στο χώρο χρήστη.
    • Οι απαιτήσεις για την έκδοση του βοηθητικού προγράμματος GNU Make έχουν αυξηθεί - τουλάχιστον η έκδοση 3.82 απαιτείται τώρα για τη δημιουργία του πυρήνα.
  • Υποσύστημα δίσκου, I/O και συστήματα αρχείων
    • Έχουν γίνει σημαντικές βελτιστοποιήσεις απόδοσης στο σύστημα αρχείων Btrfs· μεταξύ άλλων, η απόδοση της κλήσης FIEMAP ioctl έχει αυξηθεί κατά τάξεις μεγέθους. Προστέθηκε υποστήριξη για ασύγχρονες εγγραφές με buffer για εφαρμογές που χρησιμοποιούν io_uring. Προστέθηκε υποστήριξη για αρχεία που προστατεύονται με fs-verity στη λειτουργία «αποστολή».
    • Το σύστημα αρχείων ext4 έχει προσθέσει βελτιστοποιήσεις απόδοσης που σχετίζονται με τη συντήρηση ημερολογίου και τη λειτουργία μόνο για ανάγνωση.
    • Το σύστημα αρχείων EROFS (Enhanced Read-Only File System), που έχει σχεδιαστεί για χρήση σε διαμερίσματα προσβάσιμα σε λειτουργία μόνο για ανάγνωση, υλοποιεί τη δυνατότητα κοινής χρήσης δεδομένων που αντιγράφονται σε διαφορετικά συστήματα αρχείων.
    • Η κλήση συστήματος statx() έχει προστεθεί για να εμφανίσει πληροφορίες σχετικά με το εάν μπορεί να εφαρμοστεί απευθείας I/O σε ένα αρχείο.
    • Η υποστήριξη για τη δημιουργία προσωρινών αρχείων με τη σημαία O_TMPFILE έχει προστεθεί στο υποσύστημα FUSE (Filesystems in User Space).
  • Εικονικοποίηση και Ασφάλεια
    • Η εφαρμογή του μηχανισμού προστασίας CFI (Control Flow Integrity) έχει αντικατασταθεί, προσθέτοντας ελέγχους πριν από κάθε έμμεση κλήση μιας συνάρτησης για τον εντοπισμό ορισμένων μορφών απροσδιόριστης συμπεριφοράς που θα μπορούσαν ενδεχομένως να οδηγήσουν σε παραβίαση της κανονικής εντολής εκτέλεσης (ροή ελέγχου) αποτέλεσμα της χρήσης εκμεταλλεύσεων που αλλάζουν τους δείκτες σε συναρτήσεις που είναι αποθηκευμένες στη μνήμη. Η τυπική υλοποίηση του CFI από το έργο LLVM έχει αντικατασταθεί από μια επιλογή που βασίζεται επίσης στη χρήση του Clang, αλλά είναι ειδικά προσαρμοσμένη για την προστασία υποσυστημάτων χαμηλού επιπέδου και πυρήνες λειτουργικών συστημάτων. Στο LLVM, μια νέα υλοποίηση θα προσφερθεί στην έκδοση Clang 16 και θα ενεργοποιηθεί με την επιλογή "-fsanitize=kcfi". Η βασική διαφορά με τη νέα υλοποίηση είναι ότι δεν συνδέεται με βελτιστοποιήσεις χρόνου σύνδεσης (LTO) και δεν έχει ως αποτέλεσμα την αντικατάσταση των δεικτών συνάρτησης από συνδέσμους στον πίνακα μετάβασης.
    • Για τις λειτουργικές μονάδες LSM (Linux Security Module), είναι δυνατό να δημιουργηθούν προγράμματα χειρισμού που παρεμποδίζουν λειτουργίες για τη δημιουργία χώρων ονομάτων.
    • Παρέχονται εργαλεία για την επαλήθευση ψηφιακών υπογραφών PKCS#7 σε προγράμματα BPF.
    • Η δυνατότητα ανοίγματος σε λειτουργία μη αποκλεισμού (O_NONBLOCK), η οποία καταργήθηκε κατά λάθος στον πυρήνα 5.6, επέστρεψε στο /dev/random.
    • Σε συστήματα με αρχιτεκτονική x86, έχει προστεθεί μια προειδοποίηση σε περίπτωση αντιστοίχισης σελίδων μνήμης από υποσυστήματα πυρήνα που επιτρέπουν ταυτόχρονα την εκτέλεση και την εγγραφή. Στο μέλλον, εξετάζεται το ενδεχόμενο να απαγορευθεί πλήρως μια τέτοια χαρτογράφηση μνήμης.
    • Προστέθηκε μηχανισμός εντοπισμού σφαλμάτων KMSAN (Kernel Memory Sanitizer) για τον εντοπισμό μη αρχικοποιημένης χρήσης μνήμης στον πυρήνα, καθώς και μη αρχικοποιημένες διαρροές μνήμης μεταξύ του χώρου χρήστη και των συσκευών.
    • Έχουν γίνει βελτιώσεις στην κρυπτο-ασφαλή γεννήτρια ψευδοτυχαίων αριθμών CRNG που χρησιμοποιείται στην κλήση τυχαίας λήψης. Οι αλλαγές προετοιμάστηκαν από τον Jason A. Donenfeld, συγγραφέα του VPN WireGuard, και στοχεύουν στη βελτίωση της ασφάλειας της εξαγωγής ψευδοτυχαίων ακεραίων.
  • Υποσύστημα δικτύου
    • Η στοίβα TCP παρέχει τη δυνατότητα (απενεργοποιημένη από προεπιλογή) να χρησιμοποιεί πίνακες κατακερματισμού υποδοχών ξεχωριστά για κάθε χώρο ονομάτων, γεγονός που βελτιώνει την απόδοση σε συστήματα με μεγάλο αριθμό χώρων ονομάτων.
    • Καταργήθηκε ο κώδικας για την υποστήριξη του παλαιού τύπου πρωτοκόλλου DECnet. Τα στελέχη API χώρου χρήστη παραμένουν στη θέση τους για να επιτρέπεται η μεταγλώττιση εφαρμογών που χρησιμοποιούν DECnet, αλλά αυτές οι εφαρμογές δεν θα μπορούν να συνδεθούν στο δίκτυο.
    • Το πρωτόκολλο netlink είναι τεκμηριωμένο.
  • Оборудование
    • Το πρόγραμμα οδήγησης amdgpu έχει προσθέσει υποστήριξη για προώθηση DSC (Display Stream Compression) για συμπίεση δεδομένων χωρίς απώλειες κατά την ανταλλαγή πληροφοριών με οθόνες που υποστηρίζουν πολύ υψηλές αναλύσεις. Συνεχίζονται οι εργασίες για την παροχή υποστήριξης για τις πλατφόρμες AMD RDNA3 (RX 7000) και CDNA (Instinct). Προστέθηκε υποστήριξη για στοιχεία IP DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x και GMC 11.x. Το πρόγραμμα οδήγησης amdkfd (για διακριτές GPU της AMD όπως το Polaris) παρέχει υποστήριξη για το GFX 11.0.3.
    • Το πρόγραμμα οδήγησης i915 (Intel) περιλαμβάνει υποστήριξη για GPU Meteor Lake. Το Meteor Lake και οι νεότερες GPU υποστηρίζουν τη διεπαφή DP 2.0 (DisplayPort). Προστέθηκαν αναγνωριστικά για κάρτες βίντεο με βάση τη μικροαρχιτεκτονική Alder Lake S.
    • Προστέθηκε υποστήριξη για υποσυστήματα ήχου που υλοποιούνται σε επεξεργαστές Apple Silicon, Intel SkyLake και Intel KabyLake. Το πρόγραμμα οδήγησης ήχου CS35L41 HDA υποστηρίζει τη λειτουργία αναστολής λειτουργίας. Προστέθηκε υποστήριξη ASoC (ALSA System on Chip) για ενσωματωμένα τσιπ ήχου Apple Silicon, AMD Rembrant DSPs, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake and Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSPS,8280com SM8250 και Texas Instruments SRC8450
    • Προστέθηκε υποστήριξη για οθόνες LCD Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux B120AU1, Innolux, B116NW01.6J-R116. NT21WH M-N116, INX N2BCA- EA116 , INX N1BCN-EA0800, Multi-Inno Technology MI9FT-XNUMX.
    • Προστέθηκε υποστήριξη για ελεγκτές AHCI SATA που χρησιμοποιούνται στο Baikal-T1 SoC.
    • Προστέθηκε υποστήριξη για τσιπ Bluetooth MediaTek MT7921, Intel Magnetor (CNVi, Ενσωματωμένη συνδεσιμότητα), Realtek RTL8852C, RTW8852AE και RTL8761BUV (Edimax BT-8500).
    • Το πρόγραμμα οδήγησης ath11k για ασύρματες μονάδες Qualcomm έχει προσθέσει υποστήριξη για φασματική σάρωση στην περιοχή των 160 MHz, έχει εφαρμόσει NAPI πολλαπλών νημάτων και βελτιωμένη υποστήριξη για τσιπ Wi-Fi Qualcomm WCN6750.
    • Προστέθηκαν προγράμματα οδήγησης για πληκτρολόγιο PinePhone, επιφάνειες αφής InterTouch (ThinkPad P1 G3), X-Box Adaptive Controller, PhoenixRC Flight Controller, VRC-2 Car Controller, DualSense Edge Controller, IBM Operation Panel, XBOX One Elite τηλεχειριστήρια, tablet XP-PEN Deco Pro S και Intuos Pro Small (PTH-460).
    • Προστέθηκε πρόγραμμα οδήγησης για κρυπτογραφικούς επιταχυντές Aspeed HACE (Hash and Crypto Engine).
    • Προστέθηκε υποστήριξη για ενσωματωμένους ελεγκτές Thunderbolt/USB4 Intel Meteor Lake.
    • Προστέθηκε υποστήριξη για smartphone Sony Xperia 1 IV, Samsung Galaxy E5, E7 και Grand Max, Pine64 Pinephone Pro.
    • Προστέθηκε υποστήριξη για ARM SoC και πλακέτες: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 και RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-V2.0Qn8062, IPQ8065-v8. BL i.MX8195MM OSM-S, MT4 (Acer Tomato), Radxa ROCK 4C+, NanoPi R1S Enterprise Edition, JetHome JetHub DXNUMXp. Ενημερωμένα προγράμματα οδήγησης για SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom και NXP.

Ταυτόχρονα, το Ίδρυμα Ελεύθερου Λογισμικού Λατινικής Αμερικής δημιούργησε μια έκδοση του εντελώς δωρεάν πυρήνα 6.1 - Linux-libre 6.1-gnu, απαλλαγμένη από στοιχεία υλικολογισμικού και προγράμματα οδήγησης που περιέχουν μη ελεύθερα στοιχεία ή τμήματα κώδικα, το πεδίο εφαρμογής του οποίου είναι περιορισμένη από τον κατασκευαστή. Η νέα έκδοση καθαρίζει το νέο πρόγραμμα οδήγησης rtw8852b και τα αρχεία DTS για διάφορα Qualcomm και MediaTek SoC με επεξεργαστές που βασίζονται στην αρχιτεκτονική AArch64. Ενημερωμένος κώδικας καθαρισμού blob σε προγράμματα οδήγησης και υποσυστήματα amdgpu, i915, brcmfmac, r8188eu, rtw8852c, Intel ACPI. Ο καθαρισμός παλιών προγραμμάτων οδήγησης καρτών τηλεόρασης tm6000, cpia2 v4l, sp8870, av7110 έχει διορθωθεί.

Πηγή: opennet.ru

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