การเปิดตัวเคอร์เนล Linux 6.2

หลังจากสองเดือนของการพัฒนา Linus Torvalds ได้เปิดตัว Linux kernel 6.2 การเปลี่ยนแปลงที่โดดเด่นที่สุด: อนุญาตให้ยอมรับรหัสภายใต้ลิขสิทธิ์ Copyleft-Next, การใช้งาน RAID5/6 ใน Btrfs ได้รับการปรับปรุง, การบูรณาการการรองรับสำหรับภาษา Rust ยังคงดำเนินต่อไป, ค่าใช้จ่ายในการป้องกันการโจมตี Retbleed ลดลง, เพิ่มความสามารถในการควบคุมการใช้หน่วยความจำในระหว่างการเขียนกลับ มีการเพิ่มกลไกสำหรับการปรับสมดุล TCP PLB (Protective Load Balancing) มีการเพิ่มกลไกการป้องกันการไหลของคำสั่งไฮบริด (FineIBT) ขณะนี้ BPF มีความสามารถในการกำหนดวัตถุและโครงสร้างข้อมูลของตัวเอง ยูทิลิตี้ rv (Runtime Verification) รวมอยู่ด้วย การใช้พลังงานในการใช้งานการล็อค RCU ลดลง

เวอร์ชันใหม่ประกอบด้วยการแก้ไข 16843 รายการจากนักพัฒนา 2178 ราย ขนาดแพตช์คือ 62 MB (การเปลี่ยนแปลงส่งผลกระทบต่อไฟล์ 14108 ไฟล์ เพิ่มโค้ด 730195 บรรทัด และลบ 409485 บรรทัด) ประมาณ 42% ของการเปลี่ยนแปลงทั้งหมดที่นำมาใช้ใน 6.2 เกี่ยวข้องกับไดรเวอร์อุปกรณ์ ประมาณ 16% ของการเปลี่ยนแปลงเกี่ยวข้องกับการอัปเดตโค้ดเฉพาะสำหรับสถาปัตยกรรมฮาร์ดแวร์ 12% เกี่ยวข้องกับสแต็กเครือข่าย 4% เกี่ยวข้องกับระบบไฟล์ และ 3% เกี่ยวข้องกับระบบย่อยเคอร์เนลภายใน

นวัตกรรมที่สำคัญในเคอร์เนล 6.2:

  • บริการหน่วยความจำและระบบ
    • อนุญาตให้รวมไว้ในโค้ดเคอร์เนลและการเปลี่ยนแปลงที่มีให้ภายใต้ลิขสิทธิ์ Copyleft-Next 0.3.1 ใบอนุญาต Copyleft-Next สร้างขึ้นโดยหนึ่งในผู้เขียน GPLv3 และเข้ากันได้กับใบอนุญาต GPLv2 โดยสมบูรณ์ ตามที่ได้รับการยืนยันจากทนายความจาก SUSE และ Red Hat เมื่อเปรียบเทียบกับ GPLv2 แล้ว ใบอนุญาต Copyleft-Next มีขนาดกะทัดรัดและเข้าใจง่ายกว่ามาก (ส่วนเกริ่นนำและการกล่าวถึงการประนีประนอมที่ล้าสมัยได้ถูกลบออกแล้ว) กำหนดกรอบเวลาและขั้นตอนในการขจัดการละเมิด และลบข้อกำหนดด้านลิขสิทธิ์สำหรับซอฟต์แวร์ที่ล้าสมัยโดยอัตโนมัติ มีอายุมากกว่า 15 ปี

      Copyleft-Next ยังมีส่วนคำสั่งการให้สิทธิ์เทคโนโลยีที่เป็นกรรมสิทธิ์ ซึ่งแตกต่างจาก GPLv2 ที่ทำให้ใบอนุญาตนี้เข้ากันได้กับใบอนุญาต Apache 2.0 เพื่อให้มั่นใจว่าสามารถใช้งานร่วมกับ GPLv2 ได้อย่างสมบูรณ์ Copyleft-Next ระบุอย่างชัดเจนว่าอาจมีการจัดหางานลอกเลียนแบบภายใต้ใบอนุญาต GPL นอกเหนือจากใบอนุญาต Copyleft-Next ดั้งเดิม

    • โครงสร้างประกอบด้วยยูทิลิตี้ "rv" ซึ่งจัดเตรียมอินเทอร์เฟซสำหรับการโต้ตอบจากพื้นที่ผู้ใช้กับตัวจัดการระบบย่อย RV (Runtime Verification) ซึ่งได้รับการออกแบบมาเพื่อตรวจสอบการทำงานที่ถูกต้องบนระบบที่เชื่อถือได้สูงซึ่งรับประกันว่าจะไม่เกิดความล้มเหลว การตรวจสอบจะดำเนินการในขณะรันไทม์โดยการแนบตัวจัดการเพื่อติดตามจุดที่ตรวจสอบความคืบหน้าที่แท้จริงของการดำเนินการกับแบบจำลองที่กำหนดการอ้างอิงที่กำหนดไว้ล่วงหน้าของเครื่องซึ่งกำหนดลักษณะการทำงานที่คาดหวังของระบบ
    • อุปกรณ์ zRAM ซึ่งอนุญาตให้พาร์ติชั่นสลับถูกเก็บไว้ในหน่วยความจำในรูปแบบการบีบอัด (อุปกรณ์บล็อกถูกสร้างขึ้นในหน่วยความจำซึ่งดำเนินการสลับด้วยการบีบอัด) ใช้ความสามารถในการบรรจุหน้าใหม่โดยใช้อัลกอริธึมทางเลือกเพื่อให้บรรลุระดับที่สูงขึ้น ของการบีบอัด แนวคิดหลักคือการมีตัวเลือกระหว่างอัลกอริธึมต่างๆ (lzo, lzo-rle, lz4, lz4hc, zstd) โดยเสนอการประนีประนอมระหว่างความเร็วการบีบอัด/คลายการบีบอัด และระดับการบีบอัด หรือเหมาะสมที่สุดในสถานการณ์พิเศษ (เช่น สำหรับการบีบอัดขนาดใหญ่ หน้าหน่วยความจำ)
    • เพิ่ม API "iommufd" สำหรับจัดการระบบจัดการหน่วยความจำ I/O - IOMMU (หน่วยจัดการหน่วยความจำ I/O) จากพื้นที่ผู้ใช้ API ใหม่ทำให้สามารถจัดการตารางเพจหน่วยความจำ I/O โดยใช้ตัวอธิบายไฟล์
    • BPF มอบความสามารถในการสร้างประเภท กำหนดออบเจ็กต์ของคุณเอง สร้างลำดับชั้นของออบเจ็กต์ของคุณเอง และสร้างโครงสร้างข้อมูลของคุณเอง เช่น รายการที่เชื่อมโยงได้อย่างยืดหยุ่น สำหรับโปรแกรม BPF ที่จะเข้าสู่โหมดสลีป (BPF_F_SLEEPABLE) ได้มีการเพิ่มการสนับสนุนการล็อค bpf_rcu_read_{,un}lock() แล้ว ดำเนินการสนับสนุนสำหรับการบันทึกวัตถุ task_struct เพิ่มประเภทแผนที่ BPF_MAP_TYPE_CGRP_STORAGE ซึ่งให้ที่เก็บข้อมูลในตัวเครื่องสำหรับ cgroups
    • สำหรับกลไกการบล็อก RCU (อ่าน-คัดลอก-อัปเดต) จะมีการใช้กลไกทางเลือกของการเรียกกลับแบบ "lazy" ซึ่งการเรียกกลับหลายครั้งจะได้รับการประมวลผลพร้อมกันโดยใช้ตัวจับเวลาในโหมดแบทช์ การประยุกต์ใช้การเพิ่มประสิทธิภาพที่นำเสนอช่วยให้เราสามารถลดการใช้พลังงานบนอุปกรณ์ Android และ ChromeOS ได้ 5-10% โดยการเลื่อนคำขอ RCU ในระหว่างเวลาว่างหรือโหลดในระบบต่ำ
    • เพิ่ม sysctl split_lock_mitigate เพื่อควบคุมวิธีที่ระบบตอบสนองเมื่อตรวจพบการแยกล็อคที่เกิดขึ้นเมื่อเข้าถึงข้อมูลที่ไม่สอดคล้องกันในหน่วยความจำ เนื่องจากข้อมูลที่ข้ามสองบรรทัดแคชของ CPU เมื่อดำเนินการคำสั่งอะตอมมิก การอุดตันดังกล่าวส่งผลให้ประสิทธิภาพลดลงอย่างมาก การตั้งค่า split_lock_mitigate เป็น 0 จะส่งคำเตือนว่ามีปัญหาเท่านั้น ในขณะที่การตั้งค่า split_lock_mitigate เป็น 1 ยังทำให้กระบวนการที่ทำให้การล็อคช้าลงเพื่อรักษาประสิทธิภาพสำหรับส่วนที่เหลือของระบบ
    • มีการเสนอการใช้งาน qspinlock ใหม่สำหรับสถาปัตยกรรม PowerPC ซึ่งแสดงให้เห็นถึงประสิทธิภาพที่สูงขึ้น และแก้ไขปัญหาการล็อคบางอย่างที่เกิดขึ้นในกรณีพิเศษ
    • โค้ดการจัดการการขัดจังหวะของ MSI (Message-Signaled Interrupts) ได้รับการปรับปรุงใหม่ ขจัดปัญหาทางสถาปัตยกรรมที่สะสม และเพิ่มการสนับสนุนสำหรับการเชื่อมโยงตัวจัดการแต่ละตัวกับอุปกรณ์ต่างๆ
    • สำหรับระบบที่ใช้สถาปัตยกรรมชุดคำสั่ง LoongArch ที่ใช้ในโปรเซสเซอร์ Loongson 3 5000 และการใช้งาน RISC ISA ใหม่ ซึ่งคล้ายกับ MIPS และ RISC-V จะมีการรองรับ ftrace, การป้องกันสแต็ก, โหมดสลีป และโหมดสแตนด์บาย
    • มีการจัดเตรียมความสามารถในการกำหนดชื่อให้กับพื้นที่ของหน่วยความจำที่ไม่เปิดเผยตัวตนแบบแบ่งใช้ (ก่อนหน้านี้ สามารถกำหนดชื่อให้กับหน่วยความจำแบบไม่ระบุชื่อส่วนตัวที่กำหนดให้กับกระบวนการเฉพาะเท่านั้น)
    • เพิ่มพารามิเตอร์บรรทัดคำสั่งเคอร์เนลใหม่ “trace_trigger” ซึ่งออกแบบมาเพื่อเปิดใช้งานทริกเกอร์การติดตามที่ใช้ในการผูกคำสั่งตามเงื่อนไขที่เรียกเมื่อมีการทริกเกอร์การตรวจสอบการควบคุม (เช่น trace_trigger=”sched_switch.stacktrace ถ้า prev_state == 2″)
    • ข้อกำหนดสำหรับเวอร์ชันของแพ็คเกจ binutils เพิ่มขึ้น การสร้างเคอร์เนลตอนนี้ต้องใช้ binutils 2.25 เป็นอย่างน้อย
    • เมื่อเรียก exec() ได้มีการเพิ่มความสามารถในการวางกระบวนการในเนมสเปซเวลา ซึ่งเวลาแตกต่างจากเวลาของระบบ
    • เราได้เริ่มถ่ายโอนฟังก์ชันเพิ่มเติมจากสาขา Rust-for-Linux ที่เกี่ยวข้องกับการใช้ภาษา Rust เป็นภาษาที่สองสำหรับการพัฒนาไดรเวอร์และโมดูลเคอร์เนล การสนับสนุน Rust ถูกปิดใช้งานตามค่าเริ่มต้น และไม่ส่งผลให้ Rust ถูกรวมไว้เป็นการพึ่งพาการสร้างเคอร์เนลที่จำเป็น ฟังก์ชันการทำงานพื้นฐานที่นำเสนอในรุ่นล่าสุดได้รับการขยายเพื่อรองรับโค้ดระดับต่ำ เช่น ประเภท Vec และมาโคร pr_debug!(), pr_cont!() และ pr_alert!() เช่นเดียวกับมาโครขั้นตอน `#[vtable ]” ซึ่งช่วยให้ทำงานกับตารางตัวชี้บนฟังก์ชันต่างๆ ได้ง่ายขึ้น การเพิ่มการเชื่อมโยง Rust ระดับสูงบนระบบย่อยเคอร์เนล ซึ่งจะช่วยให้สามารถสร้างไดรเวอร์ที่มีคุณสมบัติครบถ้วนใน Rust ได้นั้นคาดว่าจะเปิดตัวในอนาคต
    • ขณะนี้ประเภท "char" ที่ใช้ในเคอร์เนลได้รับการประกาศเป็น unsigned ตามค่าเริ่มต้นสำหรับสถาปัตยกรรมทั้งหมด
    • กลไกการจัดสรรหน่วยความจำแบบสแลบ - SLOB (ตัวจัดสรรสแลบ) ซึ่งออกแบบมาสำหรับระบบที่มีหน่วยความจำจำนวนน้อยได้รับการประกาศว่าล้าสมัยแล้ว แทนที่จะใช้ SLOB ภายใต้สภาวะปกติ ขอแนะนำให้ใช้ SLUB หรือ SLAB สำหรับระบบที่มีหน่วยความจำน้อย ขอแนะนำให้ใช้ SLUB ในโหมด SLUB_TINY
  • ระบบย่อยของดิสก์ I/O และระบบไฟล์
    • มีการปรับปรุง Btrfs ที่มุ่งแก้ไขปัญหา "ช่องโหว่การเขียน" ในการใช้งาน RAID 5/6 (ความพยายามในการกู้คืน RAID หากเกิดข้อขัดข้องเกิดขึ้นระหว่างการเขียน และเป็นไปไม่ได้ที่จะเข้าใจว่าบล็อกใดที่อุปกรณ์ RAID ถูกเขียนอย่างถูกต้อง ซึ่งสามารถนำไปสู่การทำลายบล็อก ซึ่งสอดคล้องกับบล็อกที่รับประกัน) นอกจากนี้ SSD ยังเปิดใช้งานการดำเนินการทิ้งแบบอะซิงโครนัสโดยอัตโนมัติตามค่าเริ่มต้นเมื่อเป็นไปได้ ทำให้ได้รับประสิทธิภาพที่ดีขึ้นเนื่องจากการจัดกลุ่มการดำเนินการทิ้งลงในคิวอย่างมีประสิทธิภาพและการประมวลผลคิวโดยโปรเซสเซอร์เบื้องหลัง ปรับปรุงประสิทธิภาพของการดำเนินการ send และ lseek รวมถึง FIEMAP ioctl
    • ความสามารถในการจัดการการเขียนแบบเลื่อนเวลา (การเขียนกลับ การบันทึกพื้นหลังของข้อมูลที่เปลี่ยนแปลง) สำหรับอุปกรณ์บล็อกได้รับการขยาย ในบางสถานการณ์ เช่น เมื่อใช้อุปกรณ์บล็อกเครือข่ายหรือไดรฟ์ USB การเขียนแบบ Lazy Lazy อาจส่งผลให้มีการใช้ RAM จำนวนมาก เพื่อที่จะควบคุมลักษณะการทำงานของการเขียนแบบขี้เกียจและรักษาขนาดแคชของเพจให้อยู่ภายในขีดจำกัดที่กำหนด พารามิเตอร์ใหม่ strict_limit, min_bytes, max_bytes, min_ratio_fine และ max_ratio_fine ได้ถูกนำมาใช้ใน sysfs (/sys/class/bdi/)
    • ระบบไฟล์ F2FS ใช้การดำเนินการ ioctl การแทนที่แบบอะตอมมิก ซึ่งช่วยให้คุณเขียนข้อมูลลงในไฟล์ภายในการดำเนินการแบบอะตอมมิกเดียวได้ F2FS ยังเพิ่มแคชขอบเขตบล็อกเพื่อช่วยระบุข้อมูลที่ใช้งานอยู่หรือข้อมูลที่ไม่ได้เข้าถึงมาเป็นเวลานาน
    • ใน ext4 FS จะมีการบันทึกเฉพาะการแก้ไขข้อผิดพลาดเท่านั้น
    • ระบบไฟล์ ntfs3 มีตัวเลือกการเมานต์ใหม่ๆ มากมาย: “nocase” เพื่อควบคุมความละเอียดอ่อนของตัวพิมพ์ในชื่อไฟล์และไดเร็กทอรี; windows_name เพื่อห้ามการสร้างชื่อไฟล์ที่มีอักขระที่ไม่ถูกต้องสำหรับ Windows Hide_dot_files เพื่อควบคุมการกำหนดป้ายกำกับไฟล์ที่ซ่อนอยู่สำหรับไฟล์ที่ขึ้นต้นด้วยจุด
    • ระบบไฟล์ Squashfs ใช้ตัวเลือกการเมานต์ “threads=” ซึ่งช่วยให้คุณสามารถกำหนดจำนวนเธรดเพื่อทำการบีบอัดการดำเนินการแบบขนาน Squashfs ยังแนะนำความสามารถในการแมป ID ผู้ใช้ของระบบไฟล์ที่เมาท์ ซึ่งใช้เพื่อจับคู่ไฟล์ของผู้ใช้เฉพาะบนพาร์ติชั่นต่างประเทศที่เมาท์กับผู้ใช้รายอื่นในระบบปัจจุบัน
    • การใช้งานรายการควบคุมการเข้าถึง POSIX (POSIX ACL) ได้รับการแก้ไขใหม่ การใช้งานใหม่นี้ช่วยขจัดปัญหาทางสถาปัตยกรรม ลดความซับซ้อนในการบำรุงรักษาโค้ดเบส และแนะนำประเภทข้อมูลที่ปลอดภัยยิ่งขึ้น
    • ระบบย่อย fscrypt ซึ่งใช้สำหรับการเข้ารหัสไฟล์และไดเร็กทอรีแบบโปร่งใส ได้เพิ่มการรองรับอัลกอริธึมการเข้ารหัส SM4 (มาตรฐานจีน GB/T 32907-2016)
    • มีการจัดหาความสามารถในการสร้างเคอร์เนลโดยไม่รองรับ NFSv2 (ในอนาคตพวกเขาวางแผนที่จะหยุดรองรับ NFSv2 โดยสิ้นเชิง)
    • มีการเปลี่ยนแปลงองค์กรในการตรวจสอบสิทธิ์การเข้าถึงอุปกรณ์ NVMe ให้ความสามารถในการอ่านและเขียนไปยังอุปกรณ์ NVMe หากกระบวนการเขียนมีสิทธิ์เข้าถึงไฟล์เฉพาะของอุปกรณ์ (ก่อนหน้านี้กระบวนการต้องมีสิทธิ์ CAP_SYS_ADMIN)
    • ลบไดรเวอร์แพ็คเกจ CD/DVD ซึ่งเลิกใช้งานในปี 2016
  • การจำลองเสมือนและความปลอดภัย
    • วิธีการใหม่ในการป้องกันช่องโหว่ Retbleed ได้ถูกนำมาใช้ใน CPU ของ Intel และ AMD โดยใช้การติดตามเชิงลึกของการโทร ซึ่งไม่ได้ทำให้การทำงานช้าลงมากเท่ากับการป้องกัน Retbleed ในปัจจุบันก่อนหน้านี้ เพื่อเปิดใช้งานโหมดใหม่ ได้มีการเสนอพารามิเตอร์บรรทัดคำสั่งเคอร์เนล “retbleed=stuff”
    • เพิ่มกลไกการป้องกันโฟลว์คำสั่ง FineIBT แบบไฮบริด ผสมผสานการใช้ฮาร์ดแวร์ Intel IBT (Indirect Branch Tracking) และซอฟต์แวร์ป้องกัน kCFI (kernel Control Flow Integrity) เพื่อป้องกันการละเมิดลำดับการดำเนินการปกติ (โฟลว์การควบคุม) อันเป็นผลมาจากการใช้งาน ของช่องโหว่ที่ปรับเปลี่ยนพอยน์เตอร์ที่จัดเก็บไว้ในหน่วยความจำในฟังก์ชัน FineIBT อนุญาตให้ดำเนินการโดยการข้ามทางอ้อมเฉพาะในกรณีที่เป็นการข้ามไปยังคำสั่ง ENDBR ซึ่งวางไว้ที่จุดเริ่มต้นของฟังก์ชัน นอกจากนี้ โดยการเปรียบเทียบกับกลไก kCFI แฮชจะถูกตรวจสอบเพื่อรับประกันความไม่เปลี่ยนรูปของพอยน์เตอร์
    • เพิ่มข้อจำกัดเพื่อป้องกันการโจมตีที่จัดการการสร้างสถานะ "อุ๊ปส์" หลังจากนั้นงานที่มีปัญหาจะเสร็จสิ้นและสถานะจะถูกกู้คืนโดยไม่ต้องหยุดระบบ ด้วยการเรียกสถานะ "อุ๊ปส์" เป็นจำนวนมาก ตัวนับการอ้างอิงล้นเกิดขึ้น (การนับซ้ำ) ซึ่งช่วยให้สามารถใช้ประโยชน์จากช่องโหว่ที่เกิดจากการยกเลิกการอ้างอิงตัวชี้ NULL เพื่อป้องกันการโจมตีดังกล่าว เราได้เพิ่มขีดจำกัดให้กับเคอร์เนลสำหรับจำนวนทริกเกอร์ "อุ๊ปส์" สูงสุด หลังจากนั้นเคอร์เนลจะเริ่มการเปลี่ยนไปสู่สถานะ "ตื่นตระหนก" ตามด้วยการรีบูต ซึ่งจะไม่อนุญาตให้บรรลุผล จำนวนการวนซ้ำที่จำเป็นเพื่อให้การนับซ้ำมากเกินไป ตามค่าเริ่มต้น ขีดจำกัดจะถูกตั้งไว้ที่ 10 “อ๊ะ” แต่หากต้องการ ก็สามารถเปลี่ยนแปลงได้ผ่านพารามิเตอร์ oops_limit
    • เพิ่มพารามิเตอร์การกำหนดค่า LEGACY_TIOCSTI และ sysctl Legacy_tiocsti เพื่อปิดใช้งานความสามารถในการใส่ข้อมูลลงในเทอร์มินัลโดยใช้ ioctl TIOCSTI เนื่องจากฟังก์ชันนี้สามารถใช้เพื่อแทนที่อักขระที่กำหนดเองในบัฟเฟอร์อินพุตเทอร์มินัลและจำลองอินพุตของผู้ใช้
    • มีการเสนอโครงสร้างภายในประเภทใหม่ encoded_page ซึ่งใช้บิตด้านล่างของตัวชี้เพื่อจัดเก็บข้อมูลเพิ่มเติมที่ใช้เพื่อป้องกันการอ้างอิงตัวชี้โดยไม่ตั้งใจ (หากจำเป็นต้องมีการอ้างอิงจริง บิตเพิ่มเติมเหล่านี้จะต้องถูกล้างก่อน) .
    • บนแพลตฟอร์ม ARM64 ในขั้นตอนการบูต คุณสามารถเปิดหรือปิดใช้งานการใช้งานซอฟต์แวร์ของกลไก Shadow Stack ซึ่งใช้เพื่อป้องกันการเขียนทับที่อยู่ผู้ส่งจากฟังก์ชันในกรณีที่บัฟเฟอร์ล้นบนสแต็ก ( สาระสำคัญของการป้องกันคือการบันทึกที่อยู่ผู้ส่งในสแต็ก "เงา" แยกต่างหากหลังจากถ่ายโอนการควบคุมไปยังฟังก์ชันและดึงข้อมูลที่อยู่ที่กำหนดก่อนออกจากฟังก์ชัน) การสนับสนุนการใช้งานฮาร์ดแวร์และซอฟต์แวร์ของ Shadow Stack ในแอสเซมบลีเคอร์เนลเดียวทำให้คุณสามารถใช้เคอร์เนลเดียวบนระบบ ARM ที่แตกต่างกัน โดยไม่คำนึงถึงการรองรับคำแนะนำในการตรวจสอบความถูกต้องของตัวชี้ การรวมการใช้งานซอฟต์แวร์นั้นดำเนินการโดยการแทนที่คำแนะนำที่จำเป็นในโค้ดระหว่างการโหลด
    • เพิ่มการรองรับการใช้กลไกการแจ้งเตือนการออกแบบอะซิงโครนัสบนโปรเซสเซอร์ Intel ซึ่งช่วยให้ตรวจจับการโจมตีขั้นตอนเดียวในโค้ดที่ดำเนินการในวงล้อม SGX
    • มีการเสนอชุดการดำเนินการที่ช่วยให้ไฮเปอร์ไวเซอร์รองรับคำขอจากระบบแขกของ Intel TDX (Trusted Domain Extensions)
    • การตั้งค่าเคอร์เนลบิลด์ RANDOM_TRUST_BOOTLOADER และ RANDOM_TRUST_CPU ได้ถูกลบออกแล้ว เพื่อสนับสนุนตัวเลือกบรรทัดคำสั่งที่เกี่ยวข้อง Random.trust_bootloader และ Random.trust_cpu
    • กลไก Landlock ซึ่งช่วยให้คุณสามารถจำกัดการโต้ตอบของกลุ่มกระบวนการกับสภาพแวดล้อมภายนอกได้เพิ่มการสนับสนุนสำหรับการตั้งค่าสถานะ LANDLOCK_ACCESS_FS_TRUNCATE ซึ่งทำให้สามารถควบคุมการดำเนินการของการดำเนินการตัดไฟล์ได้
  • ระบบย่อยของเครือข่าย
    • สำหรับ IPv6 มีการเพิ่มการรองรับ PLB (Protective Load Balancing) ซึ่งเป็นกลไกการปรับสมดุลโหลดระหว่างลิงก์เครือข่ายที่มีจุดมุ่งหมายเพื่อลดจุดโอเวอร์โหลดบนสวิตช์ศูนย์ข้อมูล ด้วยการเปลี่ยน IPv6 Flow Label PLB จะสุ่มเปลี่ยนเส้นทางแพ็กเก็ตเพื่อให้โหลดบนพอร์ตสวิตช์สมดุล เพื่อลดการเรียงลำดับแพ็กเก็ตใหม่ การดำเนินการนี้จะดำเนินการหลังจากไม่ได้ใช้งานเป็นระยะเวลาหนึ่งทุกครั้งที่เป็นไปได้ การใช้ PLB ในศูนย์ข้อมูลของ Google ได้ลดความไม่สมดุลของโหลดบนพอร์ตสวิตช์ลงโดยเฉลี่ย 60% ลดการสูญเสียแพ็กเก็ตลง 33% และลดเวลาในการตอบสนองลง 20%
    • เพิ่มไดรเวอร์สำหรับอุปกรณ์ MediaTek ที่รองรับ Wi-Fi 7 (802.11be)
    • เพิ่มการรองรับลิงก์ 800 กิกะบิต
    • เพิ่มความสามารถในการเปลี่ยนชื่ออินเทอร์เฟซเครือข่ายได้ทันทีโดยไม่ต้องหยุดทำงาน
    • การกล่าวถึงที่อยู่ IP ที่แพ็กเก็ตมาถึงได้ถูกเพิ่มลงในข้อความบันทึกเกี่ยวกับการฟลัด SYN
    • สำหรับ UDP มีการใช้ความสามารถในการใช้ตารางแฮชแยกกันสำหรับเนมสเปซเครือข่ายที่แตกต่างกัน
    • สำหรับบริดจ์เครือข่าย มีการใช้วิธีการรับรองความถูกต้อง MAB (MAC Authentication Bypass)
    • สำหรับโปรโตคอล CAN (CAN_RAW) การสนับสนุนสำหรับโหมดซ็อกเก็ต SO_MARK ได้ถูกนำมาใช้เพื่อแนบตัวกรองการรับส่งข้อมูลที่ใช้ fwmark
    • ipset ใช้พารามิเตอร์ bitmask ใหม่ที่ช่วยให้คุณสามารถตั้งค่ามาส์กตามบิตที่กำหนดเองในที่อยู่ IP (เช่น "ipset create set1 hash:ip bitmask 255.128.255.0")
    • เพิ่มการสนับสนุนสำหรับการประมวลผลส่วนหัวภายในภายในแพ็กเก็ตทันเนลไปยัง nf_tables
  • Оборудование
    • ระบบย่อย "accel" ได้รับการเพิ่มด้วยการใช้เฟรมเวิร์กสำหรับการเร่งความเร็วในการคำนวณ ซึ่งสามารถจัดหาได้ทั้งในรูปแบบของ ASIC แต่ละตัวหรือในรูปแบบของบล็อก IP ภายใน SoC และ GPU ตัวเร่งความเร็วเหล่านี้มีจุดมุ่งหมายเพื่อเร่งการแก้ปัญหาการเรียนรู้ของเครื่องเป็นหลัก
    • ไดรเวอร์ amdgpu รองรับส่วนประกอบ GC, PSP, SMU และ NBIO IP สำหรับระบบ ARM64 จะมีการรองรับ DCN (Display Core Next) การใช้งานเอาท์พุตหน้าจอที่ได้รับการป้องกันได้ถูกย้ายจากการใช้ DCN10 ไปเป็น DCN21 และขณะนี้สามารถใช้งานได้เมื่อเชื่อมต่อหลายหน้าจอ
    • ไดรเวอร์ i915 (Intel) มีความเสถียรในการรองรับการ์ดแสดงผล Intel Arc (DG2/Alchemist) แบบแยก
    • ไดรเวอร์ Nouveau รองรับ GPU NVIDIA GA102 (RTX 30) ที่ใช้สถาปัตยกรรม Ampere สำหรับการ์ด nva3 (GT215) มีการเพิ่มความสามารถในการควบคุมแบ็คไลท์แล้ว
    • เพิ่มการรองรับอะแดปเตอร์ไร้สายที่ใช้ชิป Realtek 8852BE, Realtek 8821CU, 8822BU, 8822CU, 8723DU (USB) และ MediaTek MT7996, อินเทอร์เฟซ Bluetooth ของ Broadcom BCM4377/4378/4387 รวมถึงตัวควบคุม Motorcomm yt8521 และ NVIDIA Tegra GE Ethernet
    • เพิ่มการรองรับ ASoC (ระบบ ALSA บนชิป) สำหรับชิปเสียงในตัว HP Stream 8, Advantech MICA-071, Dell SKU 0C11, Intel ALC5682I-VD, Xiaomi Redmi Book Pro 14 2022, i.MX93, Armada 38x, RK3588 เพิ่มการรองรับอินเทอร์เฟซเสียง Focusrite Saffire Pro 40 เพิ่มตัวแปลงสัญญาณเสียง Realtek RT1318
    • เพิ่มการรองรับสมาร์ทโฟนและแท็บเล็ต Sony (Xperia 10 IV, 5 IV, X และ X Compact, OnePlus One, 3, 3T และ Nord N100, Xiaomi Poco F1 และ Mi6, Huawei Watch, Google Pixel 3a, Samsung Galaxy Tab 4 10.1.
    • เพิ่มการรองรับ ARM SoC และ Apple T6000 (M1 Pro), T6001 (M1 Max), T6002 (M1 Ultra), Qualcomm MSM8996 Pro (Snapdragon 821), SM6115 (Snapdragon 662), SM4250 (Snapdragon 460), SM6375 (Snapdragon 695) บอร์ด , SDM670 (Snapdragon 670), MSM8976 (Snapdragon 652), MSM8956 (Snapdragon 650), RK3326 Odroid-Go/rg351, Zyxel NSA310S, InnoComm i.MX8MM, Odroid Go Ultra

ในเวลาเดียวกันมูลนิธิซอฟต์แวร์เสรีลาตินอเมริกาได้ก่อตั้งเวอร์ชันของเคอร์เนลฟรี 6.2 - Linux-libre 6.2-gnu ซึ่งล้างองค์ประกอบของเฟิร์มแวร์และไดรเวอร์ที่มีส่วนประกอบที่เป็นกรรมสิทธิ์หรือส่วนของโค้ดซึ่งขอบเขตถูกจำกัดโดย ผู้ผลิต รีลีสใหม่ล้าง blobs ใหม่ในไดรเวอร์นูโว การโหลด Blob ถูกปิดใช้งานในไดรเวอร์บลูทู ธ mt7622, ​​​​mt7996 wifi และ bcm4377 ทำความสะอาดชื่อ blob ในไฟล์ dts สำหรับสถาปัตยกรรม Aarch64 อัปเดตโค้ดการทำความสะอาด Blob ในไดรเวอร์และระบบย่อยต่างๆ หยุดการทำความสะอาดไดรเวอร์ s5k4ecgx เนื่องจากถูกลบออกจากเคอร์เนล

ที่มา: opennet.ru

เพิ่มความคิดเห็น