การเผยแพร่เคอร์เนล Linux 7.2

หลังจากพัฒนามาสองเดือน ลินัส ทอร์วัลด์ส ก็ได้ปล่อยเคอร์เนลเวอร์ชันใหม่ Linux 7.2. การเปลี่ยนแปลงที่โดดเด่นที่สุด ได้แก่ กลไกการสตรีมข้อมูล USB4STREAM, การเพิ่มประสิทธิภาพการทำงานของ btrfs, xfs และ ext4, การลบโค้ดเพื่อรองรับ CPU i486 อย่างต่อเนื่อง, ความสามารถในการสร้างตัวกำหนดตารางเวลา SCHED_EXT แบบซ้อนกัน, การลดการใช้หน่วยความจำในระบบย่อย swap, การเร่งความเร็วของไปป์ที่ไม่มีชื่อ, การสนับสนุนส่วนขยาย Intel MBEC และ AMD GMET ใน KVM, การลบโปรโตคอล AppleTalk, และการสนับสนุนเบื้องต้นสำหรับ HDMI 2.1 FRL ในไดรเวอร์ AMDGPU

คุณสมบัติใหม่หลักในเคอร์เนล 7.2 (1, 2, 3):

  • ระบบย่อยของดิสก์ I/O และระบบไฟล์
    • ในกลไก iomap ได้มีการลบการเรียกใช้ฟังก์ชัน memset เพิ่มเติมสำหรับการวนซ้ำที่เสร็จสมบูรณ์แล้วในฟังก์ชัน iomap_iter() ซึ่งเมื่อมีการใช้งาน I/O สูงบนไดรฟ์ NVMe ที่รวดเร็ว จะทำให้จำนวนการดำเนินการอินพุต/เอาต์พุตต่อวินาที (IOPS) เพิ่มขึ้น 5% ในการทดสอบที่ดำเนินการเมื่อใช้ระบบไฟล์ ext4 และ xfs
    • XFS ได้รับการประกาศว่ามีเสถียรภาพสำหรับการรองรับอุปกรณ์จัดเก็บข้อมูลแบบแบ่งโซน (ซึ่งแบ่งกลุ่มของบล็อกหรือเซกเตอร์ออกเป็นโซน โดยอนุญาตให้เพิ่มข้อมูลตามลำดับเท่านั้น และจะอัปเดตทั้งกลุ่มบล็อก)
    • Btrfs รองรับ folio ขนาดใหญ่เป็นค่าเริ่มต้นแล้ว ช่วยลดภาระและปรับปรุงประสิทธิภาพระหว่างการอ่าน/เขียนข้อมูลแบบต่อเนื่องอย่างหนักหน่วง มีการเพิ่มการรองรับ folio ขนาดใหญ่มาก (สูงสุด 2 MB) ไว้ในระหว่างการทดลอง มีการเพิ่ม ioctl ใหม่ชื่อ GET_CSUMS สำหรับดึงข้อมูล checksum ในพื้นที่ผู้ใช้ เช่น สำหรับยูทิลิตี้ mkfs และการเพิ่มประสิทธิภาพการลดความซ้ำซ้อน ประสิทธิภาพการเขียนแบบต่อเนื่องเพิ่มขึ้น 15% และประสิทธิภาพการอ่าน/เขียนข้อมูลโดยตรงเพิ่มขึ้น 59%
    • กลไก "fast commit" ของระบบไฟล์ Ext4 ได้รับการออกแบบใหม่ทั้งหมดเพื่อขจัดปัญหาการแย่งชิงทรัพยากรและการติดตาย การส่งออกสถิติสแนปช็อตของ inode ได้ถูกเพิ่มเข้ามาผ่านทาง /proc/fs/ext4/*/fc_info ประสิทธิภาพการคำนวณแฮชของไดเร็กทอรีได้รับการปรับให้เหมาะสม (ความเร็วเพิ่มขึ้นเกือบสองเท่าสำหรับชื่อที่มี 255 ตัวอักษร เพิ่มขึ้น 27% สำหรับชื่อที่มี 64 ตัวอักษร และเพิ่มขึ้น 11% สำหรับชื่อที่มี 32 ตัวอักษร)
    • F2FS รองรับการส่งคืนค่าข้อผิดพลาด fserror แล้ว ทำให้สามารถตรวจสอบปัญหาของระบบไฟล์จากพื้นที่ผู้ใช้ได้ และเวลาที่ใช้ในการจัดการการขัดจังหวะก็ลดลงแล้ว
    • มีการเพิ่มตัวจัดการ dm-inlinecrypt ใหม่ลงใน Device Mapper (DM) เพื่อการเข้ารหัสและถอดรหัสอุปกรณ์บล็อกอย่างโปร่งใส โดยใช้อุปกรณ์ฮาร์ดแวร์ที่มีฟังก์ชันการเข้ารหัสแบบอินไลน์
    • มีการจัดเตรียมเอกสารเกี่ยวกับการเพิ่มระบบไฟล์ใหม่ลงในเคอร์เนลแล้ว
    • ใน NFS ขนาดบล็อกเริ่มต้นได้เพิ่มขึ้นเป็น 4 MB บนระบบที่มี RAM อย่างน้อย 16 GB (คุณสามารถใช้ /proc/fs/nfsd/max_block_size เพื่อเปลี่ยนขนาดบล็อกด้วยตนเองได้) มีการเพิ่มการสนับสนุนการมอบหมายสิทธิ์การเข้าถึงไดเร็กทอรี ทำให้สามารถดำเนินการกับไดเร็กทอรีที่กำหนดได้ในช่วงเวลาหนึ่งโดยไม่ต้องตรวจสอบการเปลี่ยนแปลงสถานะ เซิร์ฟเวอร์.
    • ขณะนี้เซิร์ฟเวอร์ SMB รองรับไฟล์ที่จัดเก็บในรูปแบบบีบอัด รวมถึงการบีบอัดข้อมูลระหว่างการส่งผ่านเครือข่ายด้วย
    • ระบบไฟล์ NTFS เวอร์ชันใหม่ (ntfsplus) เพิ่มการรองรับลิงก์สัญลักษณ์ Windows และรับประกันได้ว่าสามารถจัดการกับความเสียหายของเมตาเดต้าหลายประเภทได้อย่างถูกต้อง
    • ส่วนหลังบ้าน fscache สำหรับแคชข้อมูล EROFS (Enhanced Read-Only File System) ซึ่งถูกยกเลิกการใช้งานไปเมื่อสองปีก่อน ได้ถูกลบออกแล้ว
    • ขณะนี้ Ceph FS รองรับการรีเซ็ตเซสชันไคลเอ็นต์ด้วยตนเองแล้ว
    • ระบบไฟล์ 9P ได้รับการปรับแต่งเพื่อเพิ่มประสิทธิภาพในสถานการณ์ต่างๆ เช่น การสร้างโปรเจ็กต์
    • มีการเพิ่มแฟล็กสำหรับเรียกดูข้อมูลเกี่ยวกับความไวต่อตัวพิมพ์ใหญ่เล็กของระบบไฟล์ลงในระบบเรียกใช้ file_getattr() แล้ว แฟล็ก FS_XFLAG_CASEFOLD ระบุว่าการตรวจสอบชื่อไฟล์จะดำเนินการโดยไม่คำนึงถึงตัวพิมพ์ใหญ่เล็ก และแฟล็ก FS_XFLAG_CASENONPRESERVING ระบุว่าข้อมูลตัวพิมพ์ใหญ่เล็กจะไม่ถูกเก็บรักษาไว้เมื่อสร้างชื่อไฟล์ใหม่ แฟล็กเหล่านี้สามารถใช้ได้ในไคลเอ็นต์ NFS ที่ไม่คำนึงถึงตัวพิมพ์ใหญ่เล็ก
    • มีการเพิ่มแฟล็ก O_EMPTYPATH ลงในระบบเรียกใช้ openat2() ซึ่งอนุญาตให้ส่งพาธไฟล์ว่างได้ ในกรณีนี้ พาธไปยังไฟล์ที่กำลังเปิดจะถูกกำหนดโดยอิงจากตัวระบุไฟล์ที่ส่งเข้ามา
    • มีการเพิ่มแฟล็ก OPENAT2_REGULAR ลงในระบบเรียกใช้ openat2() ซึ่งอนุญาตให้เปิดเฉพาะไฟล์ทั่วไปเท่านั้น (จะส่งคืนข้อผิดพลาด EFTYPE หากพยายามเปิดไฟล์พิเศษ เช่น ซ็อกเก็ต ท่อ หรืออุปกรณ์)
  • บริการหน่วยความจำและระบบ
    • กลไก USB4STREAM ถูกนำมาใช้สำหรับการสตรีมข้อมูลระหว่างคอมพิวเตอร์ที่เชื่อมต่อผ่านพอร์ต USB4 มีการเพิ่มอุปกรณ์ /dev/tbstreamX ซึ่งช่วยให้คุณสามารถอ่านและเขียนข้อมูลโดยใช้ฟังก์ชัน read() และ write() มาตรฐาน คล้ายกับการอ่านและเขียนไฟล์ ตัวอย่างเช่น บนโฮสต์หนึ่ง คุณสามารถส่งข้อมูลโดยใช้คำสั่ง "echo hello > /dev/tbstream0" และบนอีกโฮสต์หนึ่ง คุณสามารถอ่านข้อมูลโดยใช้คำสั่ง "cat /dev/tbstream0" กลไก USB4STREAM สามารถใช้ร่วมกับความสามารถในการสร้างการเชื่อมต่อเครือข่ายผ่านสาย USB4 (thunderbolt_net) หรือใช้แยกต่างหากเพื่อถ่ายโอนข้อมูลระหว่างแอปพลิเคชันที่ไม่รองรับซ็อกเก็ตเครือข่าย
    • การเปลี่ยนแปลงชุดที่สองเพื่อลบการสนับสนุนโปรเซสเซอร์ i486 ได้ถูกเพิ่มเข้ามาแล้ว โค้ดมากกว่า 13 บรรทัดที่เกี่ยวข้องกับการจำลองหน่วยประมวลผลทศนิยมสำหรับโปรเซสเซอร์ที่ไม่มี FPU ได้ถูกลบออกไปแล้ว การสนับสนุนโปรเซสเซอร์ i486 ที่ไม่มีการทำงานของฮาร์ดแวร์ CX8 (เปรียบเทียบและแลกเปลี่ยน 8 ไบต์) และ TSC (ตัวนับรอบการทำงานของ CPU ที่ใช้ในตัวกำหนดตารางงาน) ได้ถูกลบออกไปแล้ว เนื่องจากโค้ดการจำลองสำหรับการทำงานเหล่านี้ได้ถูกลบออกไปแล้ว
    • มีการประกาศว่าการสนับสนุนโปรเซสเซอร์ AMD Geode ที่ใช้ในคอมพิวเตอร์ OLPC XO-1 นั้นถูกยกเลิกแล้ว
    • เพิ่มการสนับสนุนสำหรับการอัปเดตการใช้งาน TDX (Trusted Domain Extensions) ของ Intel ซึ่งเป็นกลไกที่ใช้ในการเข้ารหัส RAM ของระบบเกสต์ TDX ถูกใช้งานในรูปแบบโมดูลซอฟต์แวร์รันไทม์พิเศษที่จะถูกถ่ายโอนจากหน่วยความจำแฟลชไปยัง RAM โดย BIOS ระหว่างการบูต เคอร์เนลในปัจจุบันมีคุณสมบัติในการจัดการโมดูลนี้และแทนที่ด้วยเวอร์ชันใหม่กว่าในระบบที่กำลังทำงานอยู่โดยไม่ต้องรีบูต
    • มีการนำตัวจัดตารางการจัดสรรทรัพยากร GPU ใหม่ (Fair GPU scheduler) มาใช้งานแล้ว ตัวจัดตารางนี้ใช้ในการกำหนดลำดับการทำงานของกระบวนการที่ใช้ GPU แทนที่จะใช้คิว FIDO แบบดั้งเดิมสำหรับการร้องขอ GPU ตัวจัดตารางใหม่นี้ใช้กลไกการจัดสรรทรัพยากรที่เป็นธรรมโดยอิงจากตัวจัดตารางงาน Completely Fair Scheduler (CFS) ซึ่งใช้แผนการเริ่มต้นที่มีเวลาเปลี่ยนผ่านสำหรับกระบวนการถัดไป ผลกระทบที่เห็นได้ชัดที่สุดของตัวจัดตารางใหม่นี้พบได้ในระหว่างการทำงานแบบขนานของงานแบบโต้ตอบที่ใช้ GPU อย่างหนัก ก่อนการปล่อยเคอร์เนลเวอร์ชัน 7.2 ในนาทีสุดท้าย ตัวจัดตาราง Fair GPU ถูกปิดใช้งานและตัวจัดตาราง FIFO แบบเก่าถูกนำกลับมาใช้ใหม่เนื่องจากจำเป็นต้องแก้ไขข้อผิดพลาดที่ทำให้ประสิทธิภาพลดลงและใช้ GPU 100% เมื่อเล่นเกมบางเกมใน Proton
    • การเปลี่ยนแปลงในระบบย่อย eBPF: เพิ่มความสามารถในการแนบโปรแกรม BPF เดียวเข้ากับ tracepoint หลายตัว โปรแกรม BPF ที่แนบกับ tracepoint สามารถเข้าถึงหน่วยความจำของส่วนประกอบในพื้นที่ผู้ใช้ได้แล้ว โดยมีการจัดการหน้าหน่วยความจำที่ไม่ได้จัดสรร (page fault) อย่างถูกต้อง การเรียกใช้ระบบ bpf() รองรับแอตทริบิวต์มาตรฐาน (log_buf, log_size, log_level และ log_true_size) ซึ่งช่วยให้การถ่ายโอนเมตาเดต้าเป็นหนึ่งเดียวในคำสั่ง BPF ทั้งหมด ไม่จำกัดเฉพาะ BPF_PROG_LOAD, BPF_BTF_LOAD และ BPF_MAP_CREATE ข้อจำกัดในการส่งพารามิเตอร์ไม่เกิน 5 ตัวไปยังฟังก์ชัน BPF ถูกลบออกแล้ว เพิ่มความสามารถในการเข้าถึงหน่วยความจำที่ใช้ร่วมกันของ bpf_arena ได้อย่างปลอดภัยโดยไม่ต้องกังวลเกี่ยวกับการเข้าถึงหน้าหน่วยความจำที่ไม่ได้จัดสรร (page fault) มีการใช้งานโครงสร้าง hash map เวอร์ชันใหม่ของ BPF ซึ่งช่วยให้สามารถปรับขนาดแบบไดนามิกได้
    • การสร้างเอาต์พุต "/proc/interrupts" ที่มีสถิติการขัดจังหวะได้รับการปรับปรุงให้เหมาะสมยิ่งขึ้น และโครงสร้างสำหรับการจัดเก็บตัวนับการขัดจังหวะได้รับการปรับปรุงให้ทันสมัยขึ้น พร้อมทั้งเพิ่มการแคชเข้ามาด้วย
    • การสร้างไฟล์ "/proc/filesystems" ที่ใช้ใน libselinux ได้รับการปรับปรุงให้เร็วขึ้น
    • ขณะนี้ตัวจัดตารางงานรองรับการกระจายโหลดระหว่างคอร์ CPU โดยคำนึงถึงสถานะของแคชภายในของโปรเซสเซอร์ ตัวจัดตารางงานจะพยายามจัดกลุ่มกระบวนการที่ใช้ทรัพยากรร่วมกัน เช่น เธรดภายในกระบวนการเดียว เพื่อใช้แคชระดับสูงเดียวกัน ซึ่งจะช่วยเพิ่มประสิทธิภาพการเข้าถึงข้อมูลโดยเพิ่มโอกาสที่จะพบข้อมูลที่ต้องการในแคช
    • กลไก SCHED_EXT ซึ่งอนุญาตให้ใช้ BPF ในการสร้างตัวจัดตารางเวลา CPU ได้ดำเนินการพัฒนาความสามารถในการสร้างตัวจัดตารางเวลาแบบซ้อนกัน (ตัวจัดตารางเวลาย่อย) อย่างต่อเนื่อง ซึ่งช่วยให้แต่ละ cgroup สามารถใช้ตัวจัดตารางเวลางานของตนเองได้
    • ดำเนินการย้ายการเปลี่ยนแปลงจากสาขา Rust-for- อย่างต่อเนื่องLinuxเกี่ยวข้องกับการใช้ Rust เป็นภาษาที่สองในการพัฒนาไดรเวอร์และโมดูลเคอร์เนล (โดยค่าเริ่มต้น การสนับสนุน Rust ไม่ได้เปิดใช้งาน และไม่ได้รวม Rust เป็นส่วนประกอบที่จำเป็นในการสร้างเคอร์เนล) การสนับสนุน Rust ในเคอร์เนลได้รับการพัฒนาสำหรับสถาปัตยกรรม s390 แล้ว โดยรวมถึงแพ็กเกจ "zerocopy" ซึ่งมีฟังก์ชันจัดการหน่วยความจำที่รวดเร็วสำหรับโค้ดในโหมด "unsafe"
    • เวอร์ชันขั้นต่ำของชุดเครื่องมือ LLVM ที่จำเป็นสำหรับการสร้างเคอร์เนลได้รับการเพิ่มขึ้นเป็น 17.0.1 แล้ว
    • ในไลบรารี C ขนาดเล็กอย่าง nolibc ที่มาพร้อมกับซอร์สโค้ดของเคอร์เนล Linux และเป็นกรอบการทำงานสำหรับการเรียกใช้ระบบพื้นฐาน โดยรองรับสถาปัตยกรรม OpenRISC และ PA-RISC 32 บิต
    • ระบบสวอปได้รับการปรับแต่งเพื่อเพิ่มประสิทธิภาพและลดการใช้หน่วยความจำภายในระบบเอง โดยการกำจัดค่าใช้จ่ายเพิ่มเติมเมื่อจัดเก็บข้อมูลเมตาแบบคงที่ และรวมหน่วยความจำแบบไม่ระบุชื่อและหน่วยความจำที่ใช้ร่วมกันเมื่อใช้โทม การลดการใช้หน่วยความจำนั้นค่อนข้างมาก ตัวอย่างเช่น การติดตั้งพาร์ติชันสวอปขนาด 1 TB ช่วยลดการใช้หน่วยความจำลงประมาณ 512 MB
    • ประสิทธิภาพของกลไกการลบหรือย้ายหน่วยความจำไปยังพื้นที่สวอปเพื่อเพิ่มพื้นที่ว่างในหน่วยความจำเมื่อระบบทำงานหนักได้รับการปรับปรุงแล้ว ภายใต้ภาระงานบางอย่าง เช่น เมื่อทดสอบ MongoDB โดยใช้ YCSB (Yahoo! Cloud Serving Benchmark) พบว่าประสิทธิภาพเพิ่มขึ้นสูงสุดถึง 30%
    • คำสั่ง "make sbom" ได้ถูกเพิ่มเข้าไปในระบบการสร้างเพื่อสร้างรายการ SBOM (Software Bill Of Materials) ซึ่งสะท้อนถึงส่วนประกอบ ไลบรารี และการพึ่งพาที่ใช้ในการสร้างเคอร์เนลปัจจุบัน รวมถึงข้อมูลใบอนุญาตที่ได้จากส่วนหัว SPDX ในไฟล์โค้ด
    • การใช้งานไปป์ไร้ชื่อได้รับการปรับให้เหมาะสมสำหรับการจัดการล็อก (การดำเนินการจัดสรรหน่วยความจำถูกย้ายออกไปนอกขอบเขตของล็อก) ซึ่งส่งผลให้ปริมาณงานของไปป์ไร้ชื่อเพิ่มขึ้น 21-48% และลดความหน่วงลง 17-33%
  • การจำลองเสมือนและความปลอดภัย
    • ตัวจัดสรรหน่วยความจำแบบ Slab ในปัจจุบันรองรับการใช้ Allocation Tokens ซึ่งถูกนำมาใช้ในคอมไพเลอร์ Clang 22 Tokens ช่วยให้สามารถกำหนดตัวระบุที่ไม่ซ้ำกันสำหรับการดำเนินการจัดสรรหน่วยความจำ และแยกการจัดสรรสำหรับวัตถุประเภทต่างๆ เพื่อลดความยากในการใช้ประโยชน์จากช่องโหว่บัฟเฟอร์โอเวอร์โฟลว์ (ด้วยการแยกประเภท บัฟเฟอร์โอเวอร์โฟลว์ในวัตถุประเภทหนึ่งจะไม่สามารถถูกใช้ประโยชน์เพื่อทำลายวัตถุประเภทอื่นๆ ได้ง่าย)
    • กลไก AF_ALG ซึ่งถูกใช้ในช่องโหว่ Copy Fail เพื่อแก้ไขข้อมูลในแคชเพจนั้น ถูกยกเลิกการใช้งานแล้ว และมีกำหนดจะถูกลบออกในเวอร์ชันถัดไป AF_ALG ช่วยให้สามารถใช้ตัวเร่งฮาร์ดแวร์สำหรับการคำนวณทางด้านการเข้ารหัสใน Crypto API ของเคอร์เนล แต่จะใช้ในสถานการณ์ที่ค่อนข้างเฉพาะเจาะจง ในเคอร์เนล 7.2 การสนับสนุน I/O แบบอะซิงโครนัส ไดรเวอร์แบบเก่า และกลไก zero-copy ในการใช้งาน skcipher และ aead ถูกลบออกจาก AF_ALG แล้ว เหลือไว้เพียงการใช้งานซอฟต์แวร์ของอัลกอริทึมการเข้ารหัสเท่านั้น และการสนับสนุนตัวเร่งการเข้ารหัสฮาร์ดแวร์ใน Crypto API ของเคอร์เนลถูกลบออก เนื่องจาก AF_ALG ขยายพื้นที่การโจมตีอย่างมาก แต่ไม่ให้ประโยชน์ด้านประสิทธิภาพเมื่อเทียบกับการใช้งานการเข้ารหัสในพื้นที่ผู้ใช้ AF_ALG เคยใช้ในชุดเครื่องมือ Cryptsetup แต่การสนับสนุนถูกลบออกในเวอร์ชัน 2.8.7 ล่าสุด
    • กลไก IMA (Integrity Measurement Architecture) ซึ่งอนุญาตให้บริการภายนอกตรวจสอบสถานะของระบบย่อยของเคอร์เนลเพื่อให้มั่นใจในความถูกต้อง ได้รับการเสริมด้วยการสนับสนุนการส่งออกตารางภายในที่มีผลการวัดไปยังพื้นที่ผู้ใช้ และลบออกจากบัฟเฟอร์ของเคอร์เนลเพื่อประหยัดหน่วยความจำ
    • ในโมดูล Landlock ซึ่งช่วยให้โปรแกรมที่ไม่มีสิทธิ์พิเศษสามารถจำกัดการใช้งานอ็อบเจ็กต์ของเคอร์เนลได้ Linux (เช่น ลำดับชั้นของไฟล์, ซ็อกเก็ตเครือข่าย, ioctl เป็นต้น) ได้มีการเพิ่มการสนับสนุนการควบคุมการเข้าถึงซ็อกเก็ต UDP รวมถึงความสามารถในการปิดใช้งานการแสดงข้อมูลการล็อกวัตถุในบันทึกเพื่อป้องกันไม่ให้บันทึกเต็มไปด้วยข้อมูลที่ไม่เกี่ยวข้อง
    • เคอร์เนลได้ยกเลิกการใช้งานฟังก์ชัน strncpy() ซึ่งคัดลอกจำนวนไบต์ที่กำหนดจากสตริงอินพุต การใช้ strncpy() ก่อให้เกิดความเสี่ยงต่อข้อผิดพลาดเนื่องจากขาดอักขระ null ที่ส่วนท้ายของสตริงหรือการเติมศูนย์เพิ่มเติม แทนที่จะใช้ strncpy() ขอแนะนำให้ใช้ฟังก์ชัน strscpy() และ strscpy_pad() สำหรับการคัดลอกสตริงที่ลงท้ายด้วย null รวมถึง strtomem_pad(), memcpy_and_pad() และ memcpy() สำหรับการคัดลอกสตริงที่มีขนาดคงที่ที่ทราบ การดำเนินการเพื่อยกเลิกการใช้งาน strncpy() ในเคอร์เนลเริ่มต้นในปี 2020 และต้องใช้การแก้ไข 362 ครั้งจากนักพัฒนา 70 คน
    • ในไฮเปอร์ไวเซอร์ KVM เพิ่มการรองรับส่วนขยาย Intel MBEC (Mode-Based Execution Control) และ AMD GMET (Guest-Mode Execution Trap) ซึ่งช่วยให้สามารถจัดการสิทธิ์การเรียกใช้งานเคอร์เนลและพื้นที่ผู้ใช้ในระบบเกสต์แยกกันได้ในตารางการแปลหน่วยความจำ ก่อนหน้านี้ ส่วนขยายการจำลองเสมือนฮาร์ดแวร์ของ Intel และ AMD อนุญาตให้ทำเครื่องหมายหน้าหน่วยความจำเป็นไฟล์ที่สามารถเรียกใช้งานได้ด้วยบิตเดียวเท่านั้น โดยมีการแยกสิทธิ์เคอร์เนลและพื้นที่ผู้ใช้ด้วยซอฟต์แวร์ในระดับไฮเปอร์ไวเซอร์ การใช้ MBEC และ GMET ช่วยลดการตรวจสอบสิทธิ์ฝั่งไฮเปอร์ไวเซอร์และลดการถ่ายโอนการควบคุมที่ใช้ทรัพยากรมากจากระบบเกสต์ไปยังไฮเปอร์ไวเซอร์ VMexit ได้อย่างมาก
  • ระบบย่อยของเครือข่าย
    • ส่วนขยาย TCP-AO (TCP Authentication Option, RFC 5925) ได้ถูกย้ายไปยังไลบรารีการเข้ารหัสลับ libcrypto ใหม่แล้ว ซึ่งทำให้โค้ดง่ายขึ้นและประสิทธิภาพดีขึ้น TCP-AO ช่วยให้สามารถตรวจสอบส่วนหัวของ TCP โดยใช้รหัส MAC (Message Authentication Code) โดยใช้อัลกอริธึม HMAC-SHA-1-96 และ AES-128-CMAC-96 ที่ทันสมัยกว่า แทนที่ตัวเลือก TCP-MD5 ที่มีอยู่ก่อนหน้านี้ซึ่งใช้อัลกอริธึม MD5 ที่ล้าสมัย
    • จำนวนซับสตรีมที่รองรับสำหรับการเชื่อมต่อ Multipath TCP (MPTCP) ได้เพิ่มขึ้นจาก 8 เป็น 64
    • การดำเนินการเพื่อลดการใช้ล็อกส่วนกลาง rtnl_lock ในสแต็กเครือข่ายของเคอร์เนลยังคงดำเนินต่อไป
    • เคอร์เนลได้ลบการใช้งานโปรโตคอล AppleTalk ซึ่งใช้ในคอมพิวเตอร์ Apple มาตั้งแต่ปี 1985 และถูกแทนที่ในช่วงทศวรรษ 1990 ด้วยโปรโตคอลอื่น TCP/IPนอกจากนี้ ส่วนประกอบเทคโนโลยีการถ่ายโอนข้อมูล ATM ที่ไม่เกี่ยวข้องกับ PPPoATM ได้ถูกลบออกไปแล้ว เช่นเดียวกับอินเทอร์เฟซเครือข่าย ARCnet ที่ใช้บัส ISA และ PCMCIA อะแดปเตอร์ Bluetooth ที่มีอินเทอร์เฟซ PCMCIA ตัวเร่งความเร็ว TLS ของ Chelsea โค้ดสำหรับการรวม TLS กับ sockmap และการสนับสนุนย่านความถี่ 5/10 MHz ในสแต็กไร้สาย cfg80211/mac80211 เนื่องจากปัญหาการบล็อกที่ยังไม่ได้รับการแก้ไขและการขาดผู้ดูแลระบบ การใช้งานเฉพาะของการเร่งความเร็วการประมวลผล TLS ที่ใช้ TCP Offload Engine จึงถูกลบออกไป (การใช้งาน TLS offload ทั่วไปยังคงอยู่) โค้ดความเข้ากันได้กับ x_tables 32 บิตบนระบบ 64 บิตถูกปิดใช้งานและมีกำหนดการที่จะลบออก
    • ไดรเวอร์ pppoe ในปัจจุบันรองรับกลไก GRO (Generic Receive Offload) และ GSO (Generic Segmentation Offload) สำหรับการเร่งความเร็วฮาร์ดแวร์ในการประกอบและแบ่งแพ็กเก็ต การใช้ GRO และ GSO ช่วยเพิ่มปริมาณการรับส่งข้อมูลขาเข้าได้อย่างมาก ตัวอย่างเช่น บนอุปกรณ์ MediaTek MT7621 ที่กำหนดค่าด้วยตัวแปลงที่อยู่ ปริมาณการรับส่งข้อมูลสูงสุดเพิ่มขึ้นจาก 130 Mbit/s เป็น 630 Mbit/s
  • Оборудование
    • ไดรเวอร์ AMDGPU ตอนนี้รองรับเทคโนโลยี HDMI 2.1 FRL (Fixed Rate Link) ในเบื้องต้นแล้ว ทำให้สามารถส่งสัญญาณวิดีโอแบบไม่บีบอัดที่ความละเอียด 4K/120Hz และ 8K/60Hz ได้ ก่อนหน้านี้ การรองรับ HDMI 2.1 ทำได้ยากในไดรเวอร์โอเพนซอร์สเนื่องจากข้อกำหนดด้านลิขสิทธิ์ของ HDMI Forum แต่ขณะนี้ AMD ได้ดำเนินการเพื่อให้ได้มาซึ่งการใช้งานที่คล้ายคลึงกันแล้ว
    • ไดรเวอร์ i915 ตอนนี้รองรับการตั้งค่าสีพื้นหลังสำหรับตัวควบคุมจอแสดงผลแล้ว โดยได้มีการเพิ่มพารามิเตอร์ pin_params.needs_low_address เข้ามาแล้ว
    • การพัฒนาไดรเวอร์ Xe DRM (Direct Rendering Manager) สำหรับ GPU ที่ใช้สถาปัตยกรรม Intel Xe ซึ่งใช้ในกราฟิกการ์ด Intel Arc ซีรีส์และกราฟิกรวม เริ่มต้นจากโปรเซสเซอร์ Tiger Lake ยังคงดำเนินต่อไป มีการเพิ่มการสนับสนุนเบื้องต้นสำหรับแพลตฟอร์ม CRI (Crescent Island) และได้มีการนำตัวควบคุมระบบมาใช้กับแพลตฟอร์ม dGPU Xe3p แล้ว
    • ไดรเวอร์ Nouveau ช่วยแก้ไขปัญหาที่เกิดขึ้นกับ GPU NVIDIA GA100
    • ไดรเวอร์ v3d ได้รับการอัปเดตเพื่อเพิ่มความสามารถในการจัดการการใช้พลังงานของ GPU v3D บนบอร์ด Raspberry Pi
    • เราได้ดำเนินการผสานรวมส่วนประกอบไดรเวอร์ Nova สำหรับ GPU ของ NVIDIA ที่ติดตั้งเฟิร์มแวร์ GSP ซึ่งใช้มาตั้งแต่ซีรี่ส์ NVIDIA GeForce RTX 2000 ที่ใช้สถาปัตยกรรม Turing ไดรเวอร์นี้เขียนด้วยภาษา Rust และได้เพิ่มการรองรับสำหรับ GPU ซีรี่ส์ NVIDIA GA100, Hopper และ Blackwell แล้ว
    • เพิ่มการรองรับสำหรับบอร์ด ARM, SoC และอุปกรณ์ต่างๆ ได้แก่: Apple t8122 (M3), Motorola Edge 30, Nothing Phone 3a, Google Pixel 3a XL, Qualcomm Dragonwing IPQ9650, Huawei Hawi, ZTE zx297520v3, Renesas R-Car M3Le, ASPEED AST27xx, Cortina Gemini, NXP i.MX6/8/9, NXP LX2160A, TI K3 AM62x

ในเวลาเดียวกัน มูลนิธิซอฟต์แวร์เสรีแห่งละตินอเมริกาได้สร้างเคอร์เนลเวอร์ชัน 7.2 ที่เป็นโอเพนซอร์สโดยสมบูรณ์ Linux-libre 7.2-gnu เวอร์ชันนี้ได้รับการแก้ไขโดยการกำจัดส่วนประกอบเฟิร์มแวร์และไดรเวอร์ที่ไม่ใช่โอเพนซอร์ส หรือส่วนของโค้ดที่มีขอบเขตจำกัดจากผู้ผลิต เวอร์ชัน 7.2 นี้รวมถึงการแก้ไขชื่อไฟล์ (blob cleanup) สำหรับไดรเวอร์ rt722-sdca และ tac5xx2 ใหม่ โค้ดสำหรับการแก้ไขไดรเวอร์ amdgpu, nova core, qcom iris, q6v5, iwlwifi, amdxnda, adreno, r8152 และ mt792x ได้รับการอัปเดตแล้ว อินเทอร์เฟซสำหรับการโหลดเฟิร์มแวร์ได้รับการปรับปรุง ชื่อไฟล์ (blob names) ในไฟล์ devicetree (dts) สำหรับชิป ARM ได้รับการแก้ไขแล้ว

ที่มา: opennet.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster