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

หลังจากพัฒนามาสองเดือน ลินัส ทอร์วัลด์ส ก็ได้ปล่อยเคอร์เนลเวอร์ชันใหม่ Linux 7.3. การเปลี่ยนแปลงที่โดดเด่นที่สุด ได้แก่ กลไกการแยกไฟล์ระบบโดยอิงจากระบบไฟล์เสมือน failfs และการเรียกใช้ระบบ fchroot(), การสนับสนุนการสร้างตัวกำหนดตารางเวลา SCHED_EXT แบบซ้อนกัน, ตัวจัดการ BPF สำหรับการเรียกใช้ไฟล์ปฏิบัติการ, สตรีมข้อมูลทางเลือกใน NTFS3, การเพิ่มประสิทธิภาพการทำงานสำหรับ FUSE, Btrfs และ Ext4, การสนับสนุน Apple Time Machine ใน ksmbd, การลบไฟล์ระบบ EFS และ FreeVxFS, โหมดการเข้าถึงโดยตรงไปยังอุปกรณ์บล็อก, การจัดการหน่วยความจำวิดีโอต่ำที่ดีขึ้น, การตรวจสอบการเข้าถึงหน่วยความจำระบบของแขกผ่าน userfaultfd, การบีบอัดกฎ AppArmor, การจำกัดการเข้าถึง AF_ALG, การสนับสนุนชิป Apple M3 Pro, Max และ Ultra

เวอร์ชันใหม่นี้ประกอบด้วยแพตช์ 20260 รายการจากนักพัฒนา 3171 คน โดย 807 คนในจำนวนนี้ได้ส่งการเปลี่ยนแปลงไปยังเคอร์เนลเป็นครั้งแรก ขนาดของแพตช์คือ 63 MB (การเปลี่ยนแปลงส่งผลกระทบต่อไฟล์ 14923 ไฟล์ เพิ่มโค้ด 943849 บรรทัด)
(ลบโค้ดไป 297515 บรรทัด) เวอร์ชันก่อนหน้านี้มีการแก้ไข 17833 รายการจากนักพัฒนา 2766 คน โดยมีขนาดแพทช์ 68 MB ประมาณ 44% ของการเปลี่ยนแปลงทั้งหมดในเวอร์ชัน 7.3 เกี่ยวข้องกับไดรเวอร์อุปกรณ์ ประมาณ 12% เกี่ยวข้องกับการอัปเดตโค้ดเฉพาะสำหรับสถาปัตยกรรมฮาร์ดแวร์ 12% เกี่ยวข้องกับสแต็กเครือข่าย 5% เกี่ยวข้องกับระบบไฟล์ และ 3% เกี่ยวข้องกับระบบย่อยภายในของเคอร์เนล

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

  • ระบบย่อยของดิสก์ I/O และระบบไฟล์
    • ประสิทธิภาพของระบบไฟล์ Btrfs ได้รับการปรับปรุงให้ดีขึ้นแล้ว สำหรับไดรฟ์ที่ไม่ใช่ SSD นั้น ได้กำจัดความหน่วงที่ไม่จำเป็นออกไป ส่งผลให้ปริมาณงานที่ใช้ fsync อย่างหนัก เช่น การเขียนบันทึก เพิ่มขึ้นถึงห้าเท่า ขณะนี้ fsync จะปิดการตรวจจับช่องว่างในไฟล์ที่มีส่วนขยายจำนวนมากและไม่มีช่องว่าง ทำให้การทดสอบบางอย่างเร็วขึ้นถึงห้าเท่า

      เมื่อติดตามบัฟเฟอร์ส่วนขยายที่ไม่สามารถแคชได้ โครงสร้าง xarray ได้ถูกแทนที่ด้วยรายการ LRU ในเครื่อง ทำให้ประสิทธิภาพการทำงานดีขึ้นถึง 3 เท่า ปัญหาคอขวดด้านประสิทธิภาพที่เกิดจากข้อบกพร่องในเคอร์เนลเวอร์ชันก่อนหน้าเมื่อใช้โหมด I/O โดยตรงได้รับการแก้ไขแล้ว การล็อกระหว่างการอ่านล่วงหน้าส่วนขยายลดลง ทำให้ลดภาระเมื่อภารกิจต่างๆ เข้าถึงพื้นที่ที่ทับซ้อนกัน

    • Btrfs ได้ยกเลิกการสนับสนุนแคชพื้นที่ว่างเวอร์ชันแรกแล้ว ระบบไฟล์ที่สร้างบนระบบเก่าจะต้องย้ายไปใช้แคชเวอร์ชันที่สองโดยใช้ยูทิลิตี้ btrfstune มิฉะนั้นจะทำงานช้าลง นอกจากนี้ ตัวเลือกการเมานต์ "usebackuproot" ก็ถูกลบออกแล้ว ควรใช้ "rescue=usebackuproot" แทน
    • ระบบไฟล์ Ext4 มีประสิทธิภาพที่ดีขึ้นสำหรับการเขียนข้อมูลแบบขนานระหว่างการอ่านเขียนโดยตรง และการจัดสรรพื้นที่ว่างที่เร็วขึ้นผ่านฟังก์ชัน fallocate() นอกจากนี้ยังได้แก้ไขข้อผิดพลาดที่ลดประสิทธิภาพระหว่างการเขียนข้อมูลแบบบัฟเฟอร์แล้ว
    • ในระบบไฟล์ Ext4 โหมดการเมานต์ "data=journal" ได้ถูกยกเลิกแล้ว และมีแผนจะยุติการสนับสนุนตัวเลือกการเมานต์นี้ในปี 2028 ตัวเลือก "data=journal" เปิดใช้งานการบันทึกข้อมูลแบบเต็มรูปแบบ ซึ่งไม่เพียงแต่บันทึกเมตาเดต้าเท่านั้น แต่ยังบันทึกข้อมูลจริงด้วย ทำให้มีความยืดหยุ่นสูงในกรณีที่เกิดความล้มเหลว แต่ทำให้การบำรุงรักษาโค้ดซับซ้อนขึ้นและส่งผลให้ประสิทธิภาพลดลงอย่างมากเมื่อเทียบกับโหมด "data=ordered" และ "data=writeback"
    • ระบบไฟล์ EFS ซึ่งเคยใช้ในระบบปฏิบัติการ IRIX เวอร์ชันแรกๆ นั้นเลิกใช้งานแล้ว มันถูกละทิ้งไปเมื่อประมาณ 30 ปีที่แล้ว และไม่มีการบำรุงรักษามานานกว่า 20 ปีแล้ว สำหรับผู้ที่ต้องการเข้าถึงพาร์ติชัน EFS ก็สามารถใช้ยูทิลิตี้ในพื้นที่ผู้ใช้ได้
    • ระบบไฟล์ FreeVxFS ซึ่งใช้รูปแบบระบบไฟล์ VERITAS VxFS ที่ใช้ใน SCO UnixWare ในช่วงทศวรรษ 1990 และเลิกใช้ไปนานแล้ว ได้ถูกลบออกไปแล้ว
    • กลไกการสร้างระบบไฟล์ในพื้นที่ผู้ใช้ของ FUSE ได้ปรับปรุงประสิทธิภาพและลดการใช้หน่วยความจำเมื่อใช้ระบบ I/O แบบอะซิงโครนัส io_uring ความเร็วที่เพิ่มขึ้นนี้เกิดขึ้นได้จากการเพิ่มความสามารถในการถ่ายโอนพูลบัฟเฟอร์จากพื้นที่ผู้ใช้ไปยังเคอร์เนล และกำจัดบัฟเฟอร์ที่ไม่จำเป็น (zero-copy) เมื่อเซิร์ฟเวอร์ FUSE เข้าถึงหน้าหน่วยความจำของกระบวนการไคลเอ็นต์หรือแคชหน้า
    • สำหรับอุปกรณ์บล็อก จะมีการใช้งานแฟล็ก RWF_DONTCACHE ในลักษณะเดียวกับโหมด I/O โดยตรง
      (Direct I/O) ซึ่งสามารถใช้ในฟังก์ชัน preadv2() และ pwritev2() หรือในคำขออ่านและเขียนผ่าน io_uring เพื่อเข้าถึงอุปกรณ์บล็อกโดยไม่ต้องผ่านแคชเพจ ตัวอย่างเช่น แฟล็กนี้สามารถใช้ใน DBMS สำหรับการทำงานระดับต่ำกับอุปกรณ์บล็อกได้
    • ระบบไฟล์ overlayfs ในปัจจุบันรองรับการแมปด้วยรหัสผู้ใช้ ซึ่งใช้ในการเชื่อมโยงไฟล์ของผู้ใช้เฉพาะรายบนพาร์ติชันภายนอกที่เชื่อมต่ออยู่กับผู้ใช้รายอื่นในระบบปัจจุบัน
    • ปรับปรุงการรองรับการเมานต์ระบบไฟล์หลายระบบจากอุปกรณ์บล็อกเดียวให้ดียิ่งขึ้น
    • ไดรเวอร์ ntfs3 รองรับการใช้งานสตรีมข้อมูลทางเลือกเบื้องต้น โดยคั่นด้วยเครื่องหมายโคลอนในชื่อไฟล์ ในการสร้างสตรีมข้อมูลทางเลือกใหม่ ให้ใช้คำสั่ง "touch file:stream" ในการอ่าน ให้ใช้คำสั่ง "cat file:stream" ในการลบ และใช้คำสั่ง "rm file:stream" และในการแสดงรายการสตรีมที่มีอยู่ ให้ใช้คำสั่ง "cat file:query_streams"
    • การใช้งาน NTFS แบบใหม่ (ntfsplus) ในโหมดอ่านอย่างเดียวรองรับเทคโนโลยีการบีบอัดไฟล์แบบโปร่งใสโดยใช้ตัวกรองโอเวอร์เลย์ WOF (Windows (ตัวกรองแบบซ้อนทับ)
    • ขณะนี้เซิร์ฟเวอร์ NFS รองรับการทำงาน CB_NOTIFY ซึ่งช่วยให้ไคลเอ็นต์สามารถแคชข้อมูลเมตาของไดเร็กทอรีไว้ในฝั่งของตนเอง ขณะที่รับการแจ้งเตือนการเปลี่ยนแปลงจากเซิร์ฟเวอร์
    • ระบบไฟล์ F2FS รองรับการลบพาร์ติชันแบบไดนามิก (โดยไม่ต้องยกเลิกการเมานต์ระบบไฟล์) จากพูลที่ใช้ร่วมกัน พร้อมการถ่ายโอนข้อมูลไปยังพาร์ติชันอื่นโดยอัตโนมัติ และเรียกคืนกลับมาได้ (ตัวอย่างเช่น คุณสามารถถอดไดรฟ์ออกชั่วคราวเพื่อใช้งานอื่นได้)
    • XFS เพิ่มการรองรับแฟล็ก FALLOC_FL_WRITE_ZEROES ในการเรียกใช้ระบบ fallocate() ซึ่งอนุญาตให้เติมค่าศูนย์ในช่วงที่กำหนดในไฟล์โดยใช้คำสั่ง WRITE_ZERO ซึ่งรองรับโดย SSD บางรุ่น และทำการเติมค่าศูนย์โดยไม่ต้องมีการอ่าน/เขียนข้อมูล
  • บริการหน่วยความจำและระบบ
    • การจัดการหน่วยความจำวิดีโอที่ดีขึ้น เมื่อหน่วยความจำวิดีโอหมดลง เคอร์เนลจะพยายามย้ายบัฟเฟอร์จากหน่วยความจำวิดีโอสำหรับแอปพลิเคชันที่ไม่มีโควต้าหน่วยความจำที่รับประกัน (dmem cgroup) ไปยังหน่วยความจำระบบ (GTT) แทนที่จะปฏิเสธการจัดสรรหน่วยความจำวิดีโอทันที วิธีการนี้รับประกันว่าทรัพยากรจะถูกจัดสรรให้กับแอปพลิเคชันที่ระบบได้สงวนหน่วยความจำวิดีโอไว้ให้ แม้ว่าหน่วยความจำนั้นจะถูกจัดสรรให้กับแอปพลิเคชันอื่นไปแล้วก็ตาม ก่อนหน้านี้ หากแอปพลิเคชันที่ไม่มีโควต้าได้รับการจัดสรรหน่วยความจำวิดีโอไปแล้ว ในสถานการณ์ที่หน่วยความจำวิดีโอขาดแคลน แอปพลิเคชันที่มีโควต้าที่รับประกันจะไม่สามารถรับหน่วยความจำนั้นได้ และแทนที่จะได้รับหน่วยความจำวิดีโอ แอปพลิเคชันนั้นจะได้รับการจัดสรรหน่วยความจำระบบที่ช้ากว่า ซึ่งสามารถเข้าถึงได้จาก GPU (GTT) ผ่านระบบย่อย TTM (Translation Table Maps)
      การรองรับ dmem cgroup นั้นมีให้ใช้งานสำหรับไดรเวอร์ nouveau, xe และ amdgpu แล้ว
    • ในกลไก SCHED_EXT ซึ่งอนุญาตให้ใช้ BPF ในการสร้างตัวจัดตารางเวลา CPU นั้น ได้มีการพัฒนาความสามารถในการสร้างตัวจัดตารางเวลาแบบซ้อนกัน (ตัวจัดตารางเวลาย่อย) ซึ่งจะช่วยให้แต่ละ cgroup สามารถใช้ตัวจัดตารางเวลางานของตนเองได้
    • ตัวจัดตารางงานได้รับการปรับปรุงเพื่อรองรับ cgroups และแก้ไขปัญหาการกระจายน้ำหนักที่ก่อให้เกิดภาระและเวลาแฝงเพิ่มเติม มีการแนะนำวิธีการกระจายน้ำหนักหลายวิธีสำหรับ cgroups ได้แก่ 'up', 'max', 'concur' และ 'tasks' ซึ่งตั้งค่าผ่านพารามิเตอร์ cgroup_mode มีการใช้ runqueue เดียวสำหรับการจัดตารางงานภายใน cgroups เวลาแฝงเมื่อจัดตารางงานที่ได้รับการจัดสรรช่วงเวลา CPU สั้นๆ ได้รับการลดลงโดย
      ความสามารถในการยกเลิก อัปเดต หรือลดระยะเวลาการทำงานของงานที่ปลอดภัยจากการถูกขัดจังหวะได้ตามต้องการ
    • กลไก binfmt_misc (/proc/sys/fs/binfmt_misc) ดำเนินการดังนี้
      ความสามารถในการเชื่อมต่อแฮนด์เลอร์ BPF เพื่อเพิ่มการสนับสนุนรูปแบบไฟล์ปฏิบัติการใหม่ การเปลี่ยนแปลงนี้ช่วยให้สามารถวิเคราะห์ประเภทไฟล์ปฏิบัติการได้โดยอัตโนมัติทุกครั้งที่เรียกใช้งาน และเลือกตัวแปลภาษาหรือตัวโหลดแบบไดนามิกสำหรับไฟล์นั้น โดยไม่จำเป็นต้องใช้เทคนิคพิเศษ เช่น patchelf และการผูกสคริปต์ ตัวอย่างเช่น โปรแกรม BPF สามารถตรวจจับไฟล์ปฏิบัติการสำหรับสถาปัตยกรรมหรือแพลตฟอร์มอื่น ๆ และเรียกใช้โปรแกรมจำลองหรือ Wine ที่เกี่ยวข้องได้ รวมถึงทำให้การเรียกใช้ไฟล์ปฏิบัติการในแพ็กเกจที่ติดตั้งในไดเร็กทอรีต่าง ๆ บนระบบที่มีตัวจัดการแพ็กเกจ Nix ง่ายขึ้นด้วย
    • ดำเนินการย้ายการเปลี่ยนแปลงจากสาขา Rust-for- อย่างต่อเนื่องLinuxเกี่ยวข้องกับการใช้ Rust เป็นภาษาที่สองสำหรับการพัฒนาไดรเวอร์และโมดูลเคอร์เนล (โดยค่าเริ่มต้น การสนับสนุน Rust จะไม่เปิดใช้งาน และจะไม่ทำให้ Rust ถูกรวมอยู่ในรายการการพึ่งพาการสร้างที่จำเป็นสำหรับเคอร์เนล) ขณะนี้สามารถใช้ Rust บนสถาปัตยกรรม PowerPC ได้แล้ว คุณสมบัติต่อไปนี้ได้รับการพัฒนาขึ้น: โมดูลสำหรับการแปลงจำนวนเต็มแบบไม่สูญเสียข้อมูล โหมดการบันทึกค่าตัวชี้แบบซ่อนเร้นเพื่อป้องกันการรั่วไหลของข้อมูลพื้นที่แอดเดรส ตัวห่อหุ้มรอบฟังก์ชัน synchronize_rcu() ตัวกั้นหน่วยความจำ โมดูลการขัดจังหวะสำหรับการเปิด/ปิดการขัดจังหวะ ประเภทอินพุต/เอาต์พุต ตัวห่อหุ้มรอบ fwctl กลไก SRCU (sleepable read-copy-update) และตัวห่อหุ้มรอบ gem shmem
      SpinLockIrq คือสปินล็อกที่ป้องกันการขัดจังหวะในส่วนวิกฤต
    • เพิ่มพารามิเตอร์ sysctl syscall_user_dispatch เพื่อควบคุมการเปิดใช้งานโหมดการส่งคำสั่งระบบในพื้นที่ผู้ใช้ ซึ่งอนุญาตให้กระบวนการหนึ่งดักจับคำสั่งระบบของอีกกระบวนการหนึ่งได้ (ใช้ใน Wine เพื่อจำลองคำสั่งระบบ) Windows).
    • ฟังก์ชัน bpf_sock_read_xattr() ได้ถูกเพิ่มเข้าไปใน BPF แล้ว ทำให้โปรแกรม BPF สามารถอ่านแอตทริบิวต์เพิ่มเติมที่ผู้ใช้กำหนดได้
      (ผู้ใช้*) จาก inode ของซ็อกเก็ต แอปพลิเคชัน BPF รองรับการกำหนดตัวแปรส่วนกลางที่ผูกกับ CPU แล้ว ตัวตรวจสอบโปรแกรม BPF ให้ข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดที่ตรวจพบ ทำให้การระบุปัญหาทำได้ง่ายขึ้น
    • ขณะนี้เครื่องมือติดตาม kprobes, uprobes และ fprobes รองรับการแปลงประเภทข้อมูลโดยใช้ข้อมูล BTF (BPF Type Format) พร้อมข้อมูลการตรวจสอบประเภทในรหัสเทียม BPF และการดึงข้อมูลตัวแปรที่ได้รับการปรับปรุงแล้ว
    • ระบบย่อย DAMON (Data Access Monitor) ซึ่งช่วยให้คุณติดตามการเข้าถึงข้อมูลใน RAM ของกระบวนการ (ตัวอย่างเช่น คุณสามารถค้นหาว่ากระบวนการใดเข้าถึงพื้นที่หน่วยความจำส่วนใด และพื้นที่หน่วยความจำส่วนใดที่ยังไม่ได้ใช้งาน) ได้รับการเสริมด้วยความสามารถในการตรวจสอบการเปลี่ยนแปลงในคุณลักษณะของข้อมูล (หน่วยความจำนิรนาม ไฟล์ที่แมปกับหน่วยความจำ การเข้าถึงแบบอ่านอย่างเดียว การไม่สามารถเข้าถึงหน่วยความจำ ฯลฯ)
    • กลไก KHO (Kexec HandOver) ซึ่งใช้ในการเรียกใช้เคอร์เนลใหม่จากเคอร์เนลเก่าโดยไม่สูญเสียสถานะของระบบ ตอนนี้ได้คำนึงถึงการจัดสรรหน้าหน่วยความจำขนาดใหญ่ในระหว่างการบูตแล้ว หน้าหน่วยความจำดังกล่าวจะถูกทำเครื่องหมายและเก็บรักษาไว้หลังจากที่เรียกใช้เคอร์เนลใหม่แล้ว
    • โค้ดระดับต่ำสำหรับระบบการสลับได้ถูกย้ายไปยังโครงสร้างข้อมูลระดับต่ำใหม่ที่เรียกว่า swap_ops ซึ่งช่วยลดความซับซ้อนในการบำรุงรักษาโค้ดและนำเอาแนวคิดเชิงนามธรรมที่จำเป็นสำหรับการขยายฟังก์ชันการทำงานในอนาคตมาใช้
    • คำสั่ง ioctl ALLOCINFO_IOC_CONTENT_ID, ALLOCINFO_IOC_GET_AT และ ALLOCINFO_IOC_GET_NEXT ได้ถูกเพิ่มเข้ามา เพื่อให้สามารถส่งข้อมูลการวิเคราะห์การจัดสรรหน่วยความจำไปยังพื้นที่ผู้ใช้ได้อย่างเลือกสรร เมื่อเปรียบเทียบกับอินเทอร์เฟซ /proc/allocinfo ที่มีอยู่ก่อนหน้านี้ การเรียกใช้ ioctl เหล่านี้ช่วยปรับปรุงประสิทธิภาพการสืบค้นข้อมูลการวิเคราะห์ได้สูงสุดถึง 20 เท่า โดยการกรองข้อมูลที่ไม่จำเป็นออกไป
  • การจำลองเสมือนและความปลอดภัย
    • มีการเสนอวิธีการแยกส่วนแบบใหม่ที่ปิดกั้นการเข้าถึงเนื้อหาของระบบไฟล์ ยกเว้นทรัพยากรที่ถูกถ่ายโอนไปยังสภาพแวดล้อมแซนด์บ็อกซ์อย่างชัดเจนผ่านตัวระบุไฟล์ กลไกนี้ถูกนำไปใช้โดยใช้ระบบไฟล์เสมือน failfs และการเรียกใช้ระบบ fchroot

      ระบบไฟล์เสมือน failfs มีลักษณะคล้ายกับระบบไฟล์ nullfs แต่แตกต่างจากระบบไฟล์ nullfs ตรงที่ failfs ใช้หลักการ "ไม่เก็บรักษาข้อมูลใดๆ" แทนหลักการ "ไม่จัดเก็บข้อมูลใดๆ" คุณสมบัตินี้ป้องกันการเมานต์สิ่งใดๆ บน failfs การโคลนระบบไฟล์ และการตรวจสอบสถานะผ่าน statmount(), listmount() และ /proc/ /mountinfo และ /proc/filesystems หากไดเร็กทอรีรากหรือไดเร็กทอรีทำงานของกระบวนการอยู่ใน failfs ความพยายามใดๆ ในการนำทางระบบไฟล์โดยใช้เส้นทางไฟล์แบบสัมบูรณ์ ลิงก์สัญลักษณ์ และเส้นทางสัมพัทธ์ที่ขึ้นอยู่กับไดเร็กทอรีทำงานปัจจุบันจะถูกบล็อก กระบวนการจะได้รับอนุญาตให้เข้าถึงไดเร็กทอรีที่ระบุโดยใช้ตัวระบุไฟล์ที่เปิดไว้ก่อนการแยกเท่านั้น

      เพื่อเปลี่ยนไปใช้โหมดการแยกการทำงานแบบใหม่ ได้มีการเพิ่มการเรียกใช้ระบบ fchroot เข้ามา ซึ่งคล้ายกับการเรียกใช้ระบบ chroot แต่ทำงานที่ระดับตัวระบุไฟล์ นอกจากนี้ยังได้เพิ่มแฟล็ก FD_FAILFS_ROOT เข้าไปในการเรียกใช้ระบบ fchdir เพื่อย้ายไดเร็กทอรีการทำงานของกระบวนการไปยังระบบไฟล์ failfs
      มีแฟล็กที่คล้ายกันให้ใช้งานในระบบเรียกใช้ fchroot

    • เพิ่มความสามารถในการตรวจสอบการเข้าถึงหน่วยความจำของระบบแขกโดยใช้กลไก userfaultfd ซึ่งอนุญาตให้สร้างตัวจัดการสำหรับการเข้าถึงหน้าหน่วยความจำที่ไม่ได้จัดสรรหรือได้รับการป้องกันในพื้นที่ผู้ใช้ ในทางปฏิบัติ คุณสมบัตินี้ช่วยให้ไฮเปอร์ไวเซอร์ระบุหน้าหน่วยความจำที่ไม่ได้ถูกเข้าถึงในเครื่องเสมือนและย้ายไปยังหน่วยความจำที่ช้ากว่าหรือที่เก็บข้อมูลภายนอก เพื่อติดตามการละเมิดข้อห้ามการอ่าน/เขียนในพื้นที่หน่วยความจำที่ตรวจสอบ ได้มีการเพิ่มแฟล็ก UFFDIO_REGISTER_MODE_RWP แฟล็กนี้สามารถใช้เป็นทางเลือกที่มีประสิทธิภาพสูงกว่า mprotect(PROT_NONE) ร่วมกับตัวจัดการสำหรับสัญญาณที่สร้างขึ้นเมื่อเข้าถึงหน่วยความจำที่มีการตั้งค่าข้อห้ามการอ่าน/เขียน (ในกรณีของ userfaultfd จะมีการสร้างข้อยกเว้นและจัดการในพื้นที่ผู้ใช้) การเปลี่ยนแปลงนี้จัดทำโดย AI ("Assisted-by: Claude:claude-opus-4-6")
    • การแยกส่วนระหว่างเธรดเคอร์เนล (kthread) และกระบวนการเริ่มต้น (PID 1) ได้รับการปรับปรุงให้ชัดเจนยิ่งขึ้น ก่อนหน้านี้ เธรดเคอร์เนลและ PID 1 ใช้สถานะระบบไฟล์ร่วมกัน
      วิธีนี้ทำให้สามารถกำหนดสถานะของระบบไฟล์ใหม่สำหรับเธรดเคอร์เนลทั้งหมดได้โดยการเรียกใช้ pivot_root() ในเวอร์ชันใหม่ PID 1 ใช้โครงสร้าง fs_struct ที่แยกต่างหากโดยสิ้นเชิง และเธรดเคอร์เนลจะถูกแยกไว้ในจุดเชื่อมต่อที่แยกต่างหากด้วย nullfs
    • ไลบรารีการเข้ารหัสในตัว (libcrypto) รองรับโหมดการเข้ารหัส AES ต่อไปนี้: ECB, CBC, CBC-CTS, CTR, XCTR, XTS, GCM และ CCM
    • ระบบควบคุมการเข้าถึงแบบบังคับของ AppArmor ตอนนี้รองรับการโหลดชุดกฎแบบบีบอัดแล้ว และเพิ่มโหมดตรวจสอบ (audit mode) เข้ามาด้วย
    • พารามิเตอร์ sysctl af_alg_restrict ได้ถูกเพิ่มเข้ามาแล้ว พารามิเตอร์นี้ควบคุมว่าจะเปิดใช้งานการเข้าถึง API การเข้ารหัส AF_ALG จากพื้นที่ผู้ใช้หรือไม่ AF_ALG ช่วยให้สามารถใช้ตัวเร่งฮาร์ดแวร์สำหรับการคำนวณการเข้ารหัสใน API การเข้ารหัสของเคอร์เนล แต่จะใช้ในสถานการณ์ที่ค่อนข้างเฉพาะเจาะจงและไม่ได้ให้ประสิทธิภาพที่เพิ่มขึ้นเมื่อเทียบกับการเร่งความเร็วจากพื้นที่ผู้ใช้เสมอไป มีการระบุช่องโหว่หลายอย่าง เช่น Copy Fail ในตัวจัดการที่เกี่ยวข้องกับ AF_ALG ซึ่งอนุญาตให้มีการแก้ไขข้อมูลในแคชเพจ เพื่อลดพื้นที่การโจมตี การเข้าถึง AF_ALG จึงถูกจำกัดบางส่วนโดยค่าเริ่มต้น กำลังพิจารณาที่จะลบ AF_ALG ในเวอร์ชันที่จะออกในอนาคต
    • การตรวจสอบความถูกต้องของโปรแกรม BPF ที่ลงลายมือชื่อดิจิทัลได้รับการปรับปรุงให้เข้มงวดขึ้น โดยได้เพิ่มการตรวจสอบความสมบูรณ์ของข้อมูลเมตาของโปรแกรม BPF ก่อนการโหลด
    • มีการเพิ่มแฟล็กเข้าไปในระบบเรียกใช้ landlock_restrict_self() ซึ่งใช้สำหรับเปิดใช้งาน Landlocks แล้ว
      LANDLOCK_RESTRICT_SELF_NO_NEW_PRIVS เป็นคำสั่งที่ป้องกันไม่ให้กระบวนการปัจจุบันได้รับสิทธิ์ใหม่ใดๆ กลไก Landlock อนุญาตให้โปรแกรมที่ไม่มีสิทธิ์พิเศษสามารถละทิ้งสิทธิ์ที่ตนไม่ต้องการอีกต่อไป ซึ่งเป็นการจำกัดการเข้าถึงระบบในอนาคตโดยสมัครใจเพื่อวัตถุประสงค์ด้านความปลอดภัย เช่น การป้องกันการพยายามใช้ประโยชน์จากช่องโหว่ในโปรแกรม
    • ไดรเวอร์ VirtIO-GPU ซึ่งให้บริการการทำงานของ GPU เสมือน ได้รับการอัปเดตเพื่อรองรับโหมดจำศีล S4 แล้ว
  • ระบบย่อยของเครือข่าย
    • ksmbd ซึ่งเป็นเซิร์ฟเวอร์ในตัวของเคอร์เนลสำหรับโปรโตคอล SMB ได้รับการอัปเดตเพื่อรองรับส่วนขยาย Apple Time Machine สำหรับจัดเก็บข้อมูลสำรองที่สร้างขึ้น macOS แอปพลิเคชันนี้ได้นำกลไกการแยกคำสั่ง SMB ตาม MessageId มาใช้เพื่อป้องกันการโจมตีโดยการส่งคำขอที่ไม่ถูกต้องหรือซ้ำซ้อน นอกจากนี้ยังเพิ่มการสนับสนุนสำหรับการส่งคำขอซ้ำผ่านโปรโตคอล SMB3 โดยไม่รบกวนสถานะเซสชันหากคำขอครั้งก่อนสูญหาย SMB3 รองรับการเข้ารหัสในระดับการแชร์ และเพิ่มการสนับสนุนสำหรับการเข้ารหัสช่องทางการสื่อสาร SMB Direct โดยใช้เทคโนโลยี RDMA (Remote Direct Memory Access)
    • ได้เพิ่มความสามารถในการใช้แพ็กเก็ต TCP ร่วมกับส่วนขยาย BIG TCP ซึ่งช่วยเพิ่มขนาดแพ็กเก็ต TCP สูงสุดเป็น 4 GB ในอุโมงค์ UDP ที่ใช้โปรโตคอล VXLAN และ GENEVE
    • เพิ่มการรองรับการส่งต่อโปรโตคอล MCTP (Management Component Transport Protocol) ผ่าน USB (MCTP-over-USB 1.1)
    • ขณะนี้สามารถปิดใช้งาน (ยกเลิกการลงทะเบียน) อุปกรณ์เครือข่าย (netkit, veth, vxcan, bareudp, geneve, ipvlan, macvlan ฯลฯ) สำหรับเนมสเปซที่เลือกได้แล้ว
    • สำหรับ Bluetooth 6.2 ขึ้นไป ได้มีการนำกลไก SCI (Shorter Connection Interval) มาใช้งานเพื่อลดความล่าช้าเมื่อส่งข้อมูลในโหมด Bluetooth LE (Low Energy)
    • API nl80211 ได้รับการอัปเดตด้วยกลไกแบบรวม (NL80211_CMD_PROBE_PEER) สำหรับตรวจสอบอุปกรณ์ที่เชื่อมต่อ ซึ่งใช้งานได้ทั้งบนจุดเชื่อมต่อไร้สายและฝั่งไคลเอ็นต์
  • Оборудование
    • แพลตฟอร์ม ARM รุ่นเก่า ซึ่งไม่ค่อยได้ใช้งานและขัดขวางการบำรุงรักษาระบบย่อยในปัจจุบัน ได้ถูกยกเลิกการใช้งานและมีกำหนดจะถูกลบออกในเคอร์เนลเวอร์ชัน 7.5 โค้ดประมาณ 55 บรรทัดที่เกี่ยวข้องกับการสนับสนุนแพลตฟอร์ม sa1100, omap24xx, i.MX31, samv7, lpc18xx, riscpc, axxia, footbridge, บอร์ด pxa รุ่นเก่า, orion, dove และ mv78xx0, ชิปที่ไม่มีหน่วยจัดการหน่วยความจำ (MMU) และไมโครคอนโทรลเลอร์ stm32f4/f7/h7 มีกำหนดจะถูกลบออก
    • เพิ่มการรองรับเบื้องต้นสำหรับชิป Apple M3 Pro, Max และ Ultra และปรับปรุงระบบจัดการพลังงานสำหรับชิป Apple SoC
    • มีการเพิ่มคุณสมบัติ "รูปแบบสี" ลงในระบบย่อย DRM (Direct Rendering Manager) คุณสมบัตินี้ช่วยให้ผู้ใช้สามารถเปลี่ยนรูปแบบสีสำหรับอุปกรณ์เอาต์พุตได้ คุณสมบัตินี้ถูกนำไปใช้กับไดรเวอร์ GPU i915 (HDMI, DP), amdgpu (HDMI, DP) และ rockchip (HDMI) สำหรับการทดสอบ คุณสามารถใช้คำสั่งเช่น "modetest -s 115:1920×1080-60@NV12 -w 115:'color format':4" โดยที่ 115 คือรหัสตัวเชื่อมต่อ และ '4' คือหมายเลขรูปแบบ YUV420
    • ไดรเวอร์ amdgpu ตอนนี้รองรับตัวแก้ไข DRM สำหรับ GPU ซีรี่ส์ AMD GFX6-8 (Southern Islands, Sea Islands และ Volcanic Islands) มีการใช้งานการสนับสนุนเบื้องต้นสำหรับ DCN 6.0.0 (Display Core Next) แล้ว และได้ทำการปรับปรุงโค้ดเก่าให้เรียบร้อย
      ได้เปิดใช้งานการรองรับ CACP (Content Adaptive Contrast and Power) ซึ่งช่วยลดการใช้พลังงานบนแผง OLED สำหรับหน่วยประมวลผลแสดงผลที่ใช้สถาปัตยกรรม DCN4 ได้เปิดใช้งานการรองรับกลไก IPS (Idle Power State) เพื่อลดการใช้พลังงานในระหว่างที่ไม่ได้ใช้งาน นอกจากนี้ยังเพิ่มการรองรับการ์ดกราฟิก AMD Barco ด้วย
    • ไดรเวอร์ i915 ได้ปรับปรุงโค้ดสำหรับการตรวจจับและกู้คืนความสามารถของคอนเนคเตอร์ DisplayPort แล้ว นอกจากนี้ยังเพิ่มการรองรับ CMTG (Common Mode Timing Generator) และ DC3DO (Display C3 with Clock Off) สำหรับ GPU ตระกูล Novalake (NVL) ด้วย
    • การพัฒนาไดรเวอร์ Xe DRM (Direct Rendering Manager) สำหรับ GPU ที่ใช้สถาปัตยกรรม Intel Xe ซึ่งใช้ในกราฟิกการ์ด Intel Arc ซีรีส์และกราฟิกรวม เริ่มต้นจากโปรเซสเซอร์ Tiger Lake ยังคงดำเนินต่อไป มีการเพิ่มตัวระบุอุปกรณ์ที่รองรับใหม่ มีการใช้งานแอตทริบิวต์ 'enable_multi_queue' ใน configfs เพื่อปิดการใช้งานคิวคำสั่งหลายคิวพร้อมกัน และปรับปรุงการรองรับการสลับไปยังโหมดสลีปให้ดียิ่งขึ้น
    • เราได้ดำเนินการผสานรวมส่วนประกอบไดรเวอร์ Nova สำหรับ GPU ของ NVIDIA ที่ติดตั้งเฟิร์มแวร์ GSP ซึ่งใช้มาตั้งแต่ซีรี่ส์ NVIDIA GeForce RTX 2000 ที่ใช้สถาปัตยกรรม Turing ไดรเวอร์นี้เขียนด้วยภาษา Rust เวอร์ชันใหม่นี้มีการเปลี่ยนไปใช้ภาพเฟิร์มแวร์ TLV ใหม่ แทนที่เวอร์ชันเก่าที่ใช้ในไดรเวอร์ Nouveau และได้เพิ่มการสนับสนุนแล้ว
      กำลังเปิดตัวเฟิร์มแวร์สำหรับชิป GSP (GPU System Processor) ที่เปิดใช้งาน vGPU แล้ว มีการเพิ่ม API สำหรับดึงข้อมูลขนาดหน่วยความจำวิดีโอ
    • ไดรเวอร์ Tyr ซึ่งเขียนด้วยภาษา Rust และรองรับ GPU ARM Mali ตอนนี้รองรับการโหลดเฟิร์มแวร์ Mali CSF การเปิดใช้งานหน่วยความจำเสมือนของ GPU และการเรียกใช้ MCU แล้ว
    • เพิ่มการรองรับ GPU Adreno Shikra (A704) และ Eliza (722) ในไดรเวอร์ msm แล้ว
    • เพิ่มการรองรับอุปกรณ์เสียงและ ASoC: Pioneer DJ DJM-S11
      AW88399 (Lenovo Legion Pro), AW88399 (Lenovo Legion), Lisuan, ALC235, RME HDSPe AIO, RT766/RT767 SDCA, Maili, Hawi, CS35L62 (SoundWire), RT766/RT767 VA1
    • เพิ่มการรองรับคอนโทรลเลอร์ Steam (รุ่นปี 2026); เมาส์ Logitech G502 X Plus และ G502 X Lightspeed; คีย์บอร์ด Endorfy Thock TKL, Zenbook A16; ชุดหูฟัง Nova 5X, Nova 7 และ Arctis 7; พวงมาลัยเกม Turtle Beach VelocityOne Race; และเกมแพด MSI Claw
    • ปรับปรุงการรองรับเสียงบนอุปกรณ์ ASUS VivoBook M515DA/X515DAP
      LG gram 16 (16Z90TR), Minisforum AI X1 Pro, HP Pavilion 15-eh2xxx, HP Laptop 15-dy0xxx และ HP Specter x360 16-aa0xxx, HP EliteBook 6 G1, HP OmniBook X Flip 14, Lenovo Yoga Pro 7, Huawei Matebook
      ThinkPad X1 Carbon รุ่นที่ 6, HP ProBook 440 G5, Acer Aspire A515-57
    • เพิ่มการรองรับสำหรับสมาร์ทโฟน แท็บเล็ต และแล็ปท็อป: Motorola Edge 30, Motorola Moto G2, Xiaomi 12 Lite 5G, Microsoft Surface Pro, Honor MagicBook art 1412in, Sony Xperia M2, Vicharak Axon, Axon Mini และ Vaaman2, Asus Zenbook A16, Lenovo Thinkedge se70
    • เพิ่มการรองรับบอร์ดและชิป ARM ได้แก่ Samsung Exynos 1580 (ใช้ในสมาร์ทโฟนระดับเรือธงตั้งแต่ปี 2024), Orange Pi 5 pro, Sophgo SG2000 (Arm/RISC-V hybrid), BeagleBadge, Qualcomm "Shikra" และ "Altera" (Cortex-A78C), Agilex72 (Cortex-A720), Alientek ATK-DLRV1126, Variscite SoC DART-MX8M-PLUS, DART-MX8M-MINI, VAR-SOM-MX8QM และบอร์ด Sonata/Symphony ที่ใช้ชิปเหล่านี้, 9Tripod X3568 v4, Youyeetoo YY3588, milk-v duo, ArmSoM CM5, Freescale Verdin iMX8M Mini, Anbernic rg vita-pro, Embedfire lubancat 4, Vicharak Vaaman, LincStation E1, HINLINK H28K.

ในเวลาเดียวกัน มูลนิธิซอฟต์แวร์เสรีแห่งละตินอเมริกาได้ก่อตั้งขึ้น
เคอร์เนลเวอร์ชัน 7.3 เวอร์ชันฟรีโดยสมบูรณ์ — Linux-libre 7.3-gnu เวอร์ชันนี้ได้รับการแก้ไขโดยการกำจัดส่วนประกอบเฟิร์มแวร์และไดรเวอร์ที่ไม่ใช่โอเพนซอร์ส หรือส่วนของโค้ดที่มีขอบเขตการใช้งานจำกัด เวอร์ชัน 7.3 นี้รวมถึงการแก้ไขชื่อไฟล์ (blob cleanup) สำหรับไดรเวอร์ใหม่สำหรับ GPU Mali Tyr, Wi-Fi Morse Micro mm81x, Wi-Fi NXP และการ์ดเครือข่ายที่ใช้ชิป Realtek โค้ดสำหรับการแก้ไขได้รับการอัปเดตสำหรับไดรเวอร์ Wi-Fi nova-core, amdgpu, adreno, tegra, iris, rtw89 และ mt76, Qualcomm Q6V5 PAS, qla2xxx scsi และตัวแปลงสัญญาณเสียง aw88399 ชื่อไฟล์ (blob names) ในไฟล์ devicetree (dts) สำหรับชิป Qualcomm ARM ได้รับการแก้ไขแล้ว

ที่มา: opennet.ru

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