หลังจากพัฒนามาสองเดือน Linus Torvalds ได้ปล่อย Linux kernel เวอร์ชัน 7.0 ออกมา การเปลี่ยนแปลงที่โดดเด่นที่สุด ได้แก่ กฎสำหรับการใช้งานผู้ช่วย AI การย้าย Rust เข้าสู่แกนหลักของเคอร์เนล การปรับปรุงประสิทธิภาพการสลับหน่วยความจำ การเปิดใช้งานโหมด PREEMPT_LAZY เป็นค่าเริ่มต้น การสนับสนุนตัวกรองสำหรับการดำเนินการ io_uring ระบบไฟล์ Nullfs ใหม่ เฟรมเวิร์ก fserror เครื่องมือตรวจสอบ XFS การสนับสนุนการแมปใหม่ใน Btrfs การเปิดใช้งาน NFS 4.1 เป็นค่าเริ่มต้น การรวมอัลกอริธึมการเข้ารหัส ML-DSA หลังควอนตัม การเปิดใช้งาน AccECN ในระบบย่อยเครือข่าย และการสนับสนุนเบื้องต้นสำหรับ WiFi 8
หมายเลข 7.0 ถูกกำหนดขึ้นเนื่องจากสาขา 6.x มีการออกเวอร์ชันมามากพอที่จะต้องเปลี่ยนตัวเลขหลักแรกของหมายเลขเวอร์ชัน (เวอร์ชัน 6.0 เดิมทีออกหลังจากเวอร์ชัน 5.19) การเปลี่ยนแปลงหมายเลขนี้ทำขึ้นเพื่อความสวยงามและเป็นขั้นตอนอย่างเป็นทางการเพื่อบรรเทาความไม่สะดวกที่เกิดจากการสะสมเวอร์ชันจำนวนมากในซีรี่ส์นี้
เวอร์ชันใหม่นี้มีการแก้ไข 15624 รายการจากนักพัฒนา 2477 คน โดยมีขนาดไฟล์แพทช์ 56 MB (การเปลี่ยนแปลงส่งผลกระทบต่อไฟล์ 18053 ไฟล์ เพิ่มโค้ด 704060 บรรทัด และลบโค้ด 278132 บรรทัด) เวอร์ชันก่อนหน้านี้มีการแก้ไข 15657 รายการจากนักพัฒนา 2237 คน โดยมีขนาดไฟล์แพทช์ 52 MB ประมาณ 51% ของการเปลี่ยนแปลงทั้งหมดในเวอร์ชัน 7.0 เกี่ยวข้องกับไดรเวอร์อุปกรณ์ ประมาณ 11% เกี่ยวข้องกับการอัปเดตโค้ดเฉพาะสำหรับสถาปัตยกรรมฮาร์ดแวร์ 14% เกี่ยวข้องกับสแต็กเครือข่าย 5% เกี่ยวข้องกับระบบไฟล์ และ 3% เกี่ยวข้องกับระบบย่อยภายในของเคอร์เนล
คุณสมบัติใหม่หลักในเคอร์เนล 7.0 (1, 2, 3):
- ระบบย่อยของดิสก์ I/O และระบบไฟล์
- โครงสร้างพื้นฐาน fserror ได้ถูกนำมาใช้งานแล้ว และได้มีการเพิ่ม API สำหรับเรียกดูข้อมูลเกี่ยวกับข้อผิดพลาด I/O และความเสียหายของเมตาเดต้าเมื่อทำงานกับไฟล์ โครงสร้างพื้นฐานนี้จะรวมการส่งข้อมูลข้อผิดพลาดไปยังพื้นที่ผู้ใช้ในระบบไฟล์ต่างๆ ผ่านกลไก fsnotify
- XFS ได้รับการปรับปรุงด้วยความสามารถใหม่สำหรับการตรวจสอบสถานะของระบบไฟล์จากพื้นที่ผู้ใช้ มีการแนะนำการทำงานของ ioctl ชื่อ XFS_IOC_HEALTH_MONITOR ซึ่งจะส่งคืนตัวระบุไฟล์ที่สามารถใช้เพื่อรับข้อมูลเกี่ยวกับความล้มเหลวที่เกี่ยวข้องกับการเสียหายของเมตาเดตาหรือข้อผิดพลาด I/O รวมถึงการตรวจสอบการเปลี่ยนแปลงสถานะของระบบไฟล์ เช่น การยกเลิกการเมานต์และการปิดระบบ นอกจากนี้ ยังมีการแนะนำกระบวนการพื้นหลังที่จัดการโดย systemd ชื่อ xfs_healer ซึ่งจะประมวลผลเหตุการณ์เกี่ยวกับสถานะของระบบไฟล์จากพื้นที่ผู้ใช้และเริ่มต้นกระบวนการกู้คืนโดยอัตโนมัติหากจำเป็น
- ระบบไฟล์ Btrfs ได้เพิ่มการรองรับโครงสร้าง "remap tree" ในเชิงทดลอง ซึ่งอาจนำมาใช้เป็นเลเยอร์ระดับกลางระหว่างการดำเนินการ I/O ในอนาคต คุณสมบัติใหม่นี้จะจัดเก็บที่อยู่ข้อมูลเก่าและใหม่ไว้ในโครงสร้าง "remap tree" เพิ่มเติมหลังจากย้ายข้อมูลบนไดรฟ์ แทนที่จะอัปเดตโครงสร้างที่เกี่ยวข้องทั้งหมด จากนั้นที่อยู่เหล่านี้จะถูกแทนที่เมื่อเข้าถึงข้อมูล วิธีการใหม่นี้ได้รับการยกย่องว่ามีความน่าเชื่อถือและยืดหยุ่นมากขึ้น และจะช่วยลดความซับซ้อนในการขยายฟังก์ชันการทำงานของ Btrfs ในอนาคตด้วย
- Btrfs รองรับการอ่านเขียนข้อมูลโดยตรง (Direct I/O) ในกรณีที่ขนาดบล็อกเกินขนาดหน้าหน่วยความจำของระบบ
- มีการเพิ่มระบบไฟล์ใหม่ชื่อ "Nullfs" ซึ่งสามารถใช้เป็นโครงสร้างเริ่มต้นสำหรับระบบไฟล์รูทได้ ระบบไฟล์ Nullfs จะว่างเปล่าเสมอ ไม่มีข้อมูล และไม่รองรับการแก้ไขใดๆ จุดประสงค์ของ Nullfs คือการทำหน้าที่เป็นระบบไฟล์เริ่มต้นเพื่อลดความซับซ้อนของกระบวนการบูตระบบ จากนั้นระบบไฟล์อื่นๆ จะถูกติดตั้งทับบน Nullfs และใช้การเรียกใช้ระบบ pivot_root() เพื่อสลับระบบไฟล์รูท แทนที่จะล้างเนื้อหาของ initramfs และใช้ระบบไฟล์รูทที่เกี่ยวข้อง
- ได้มีการปรับปรุงข้อมูลเวลาแก้ไขไฟล์ในโหมดไม่บล็อกแล้ว ก่อนหน้านี้ การเรียกใช้ฟังก์ชัน file_update_time_flags() ด้วยแฟล็ก IOCB_NOWAIT จะส่งคืนข้อผิดพลาด "-EAGAIN" ซึ่งทำให้ไม่สามารถใช้การเขียนโดยตรงในโหมดไม่บล็อกได้
- การรองรับการแจ้งเตือนแบบเช่าได้ถูกย้ายไปยังตัวเลือกแยกต่างหากในระบบไฟล์แล้ว กลไกนี้ไม่ได้เปิดใช้งานโดยค่าเริ่มต้นอีกต่อไปเนื่องจากปัญหาที่เกิดขึ้นกับระบบไฟล์ที่ไม่ได้ออกแบบมาเพื่อรองรับกลไกนี้ตั้งแต่แรก ตัวอย่างเช่น 9p และ cephfs ไม่รองรับกลไกนี้
- EROFS (Extendable Read-Only File System) ซึ่งออกแบบมาสำหรับใช้กับพาร์ติชันแบบอ่านอย่างเดียว ใช้ขั้นตอนวิธีบีบอัดข้อมูล LZMA เป็นค่าเริ่มต้น DEFLATE และ Zstandard ซึ่งไม่ได้ถูกระบุว่าเป็นเวอร์ชันทดลองอีกต่อไป สามารถเลือกใช้งานได้ ขณะนี้รายการแคชเพจจะถูกแชร์ระหว่างไฟล์ที่เหมือนกันในระบบไฟล์ EROFS ที่แยกต่างหาก
- โหมด laptop_mode ซึ่งช่วยประหยัดพลังงานโดยการเลื่อนและรวมการเขียนข้อมูลลงฮาร์ดไดรฟ์เพื่อยืดเวลาการพักเครื่องและลดจำนวนครั้งในการปลุกเครื่อง ได้ถูกลบออกแล้ว โหมดนี้ไม่มีความเกี่ยวข้องอีกต่อไป เนื่องจากฮาร์ดไดรฟ์ได้ถูกแทนที่ด้วยโซลิดสเตทไดรฟ์ในอุปกรณ์พกพารุ่นใหม่แล้ว
- ระบบไฟล์ F2FS ได้ถูกย้ายไปใช้หน่วยความจำแบบ folio ขนาดใหญ่แล้ว
- การพัฒนาไดรเวอร์ NTFS3 โดย Paragon Software ได้กลับมาดำเนินการต่อแล้ว มีการเพิ่มการรองรับการทำงานของไฟล์โดยใช้ iomap มีการใช้งานตัวเลือก llseek SEEK_DATA/SEEK_HOLE และเพิ่มโหมด delalloc สำหรับการจัดสรรบล็อกแบบหน่วงเวลา ขณะเดียวกัน ในเดือนกุมภาพันธ์ รายชื่อผู้รับจดหมายของนักพัฒนาเคอร์เนลได้อนุมัติการรวมการใช้งาน NTFS ใหม่ ntfsplus ซึ่งออกแบบมาเพื่อแทนที่ NTFS3 ในเวอร์ชันเคอร์เนลในอนาคต
- โดยค่าเริ่มต้น โปรโตคอล NFS เวอร์ชัน 4.1 (CONFIG_NFS_V4_1) จะถูกเปิดใช้งานระหว่างการสร้าง การส่งออก NFS ของระบบไฟล์เสมือนเฉพาะทาง เช่น pidfs และ nsfs จะถูกบล็อก NFSD ใช้คุณสมบัติทดลองสำหรับการใช้ POSIX ACLs และเพิ่มการสนับสนุนสำหรับการเปลี่ยนแปลงพูลเธรดแบบไดนามิกตามภาระงาน
- บริการหน่วยความจำและระบบ
- กฎอย่างเป็นทางการสำหรับการใช้งานผู้ช่วย AI และการรวมเนื้อหาที่สร้างขึ้นโดยอัตโนมัติในส่วนหลักได้รับการอนุมัติแล้ว เมื่อส่งโค้ดที่สร้างขึ้น จะต้องทำเครื่องหมายด้วยแท็ก "Assisted-by" เพื่อระบุผู้ช่วย AI ที่ใช้ ห้ามมิให้ผู้ช่วย AI เพิ่มแท็ก "Signed-off-by" – ผู้ที่ส่งแพตช์ถือเป็นผู้เขียน มีความรับผิดชอบต่อการเปลี่ยนแปลงที่ส่งมา และรับรองคุณภาพของแพตช์นั้น นักพัฒนาจะต้องตรวจสอบโค้ดที่สร้างโดย AI ด้วยตนเองและตรวจสอบว่าผลลัพธ์เป็นไปตามข้อกำหนดด้านลิขสิทธิ์
- การรองรับ Rust ได้ถูกย้ายจากฟีเจอร์ทดลองไปเป็นฟีเจอร์หลักของเคอร์เนลแล้ว การรองรับ Rust ไม่ได้เปิดใช้งานโดยค่าเริ่มต้น และไม่ได้รวม Rust ไว้เป็นส่วนประกอบที่จำเป็นในการสร้างเคอร์เนล
- กลไก Swap Table ได้ถูกรวมเข้ากับแกนหลักแล้ว ซึ่งช่วยปรับปรุงประสิทธิภาพการสลับข้อมูล การปรับปรุงนี้เกิดขึ้นได้จากการลดการแย่งใช้แคชสลับข้อมูล การค้นหาแคชที่มีประสิทธิภาพมากขึ้น และการลดการกระจายตัวของข้อมูล มีการใช้แบ็กเอนด์แบบ Swap Table สำหรับการแคชสลับข้อมูลแทนแบ็กเอนด์ XArray ส่งผลให้จำนวนคำขอที่ประมวลผลใน redis-benchmark ด้วย BGSAVE เพิ่มขึ้น 22%
- มีการเพิ่มการสนับสนุนสำหรับส่วนขยาย Thread Safety Analysis ที่เปิดตัวใน Clang 22 ซึ่งช่วยให้สามารถตรวจจับสภาวะการแข่งขันที่อาจเกิดขึ้นและข้อผิดพลาดที่เกิดจากการได้มาซึ่งล็อกที่ไม่เหมาะสมได้ในระหว่างการคอมไพล์ ส่วนขยายนี้มีแอตทริบิวต์หลายอย่าง เช่น GUARDED_BY(…), REQUIRES(…), RELEASE(…) และ ACQUIRE(…) ที่ช่วยให้คุณสามารถทำเครื่องหมายฟังก์ชันที่ครอบคลุมโดยล็อกและขอบเขตล็อกที่แยกต่างหาก (กำหนดบริบท) การตรวจสอบการใช้งานที่ถูกต้องของกลไกการซิงโครไนซ์ เช่น มิวเท็กซ์ ในระหว่างการคอมไพล์จะดำเนินการโดยพิจารณาจากกิจกรรมหรือไม่กิจกรรมของบริบทที่เกี่ยวข้อง
- แฟล็ก OPEN_TREE_NAMESPACE ถูกเพิ่มเข้าไปในระบบเรียกใช้ open_tree เพื่อลดความซับซ้อนในการตั้งค่าคอนเทนเนอร์แบบแยกส่วน และเพิ่มความเร็วในการเริ่มต้นคอนเทนเนอร์บนระบบที่มีจุดเชื่อมต่อจำนวนมาก คล้ายกับ OPEN_TREE_CLONE แฟล็กใหม่นี้จะคัดลอกเฉพาะโครงสร้างการเชื่อมต่อที่ระบุ แต่แทนที่จะส่งคืนตัวระบุไฟล์ในเครื่อง มันจะส่งคืนตัวระบุไฟล์ในเนมสเปซของจุดเชื่อมต่อใหม่ ซึ่งโครงสร้างที่คัดลอกมาจะถูกเชื่อมต่อทับบนสำเนาของระบบไฟล์รูทจริง แฟล็ก OPEN_TREE_NAMESPACE มีประโยชน์ในการหลีกเลี่ยงการเรียกใช้ unshare(CLONE_NEWNS) และ pivot_root() แยกกัน ซึ่งใช้ในระหว่างการสร้างคอนเทนเนอร์
- ได้มีการเพิ่มกลไกการขยายช่วงเวลา (time slice extension) เข้าไปในระบบเรียกใช้งาน rseq เพื่อให้สามารถจัดสรรเวลา CPU เพิ่มเติมสำหรับการทำงานอย่างต่อเนื่องโดยไม่ถูกขัดจังหวะในส่วนที่สำคัญ (critical section) แนวคิดคือการป้องกันไม่ให้ตัวจัดตารางงาน (task scheduler) ขัดจังหวะส่วนที่สำคัญที่มีการล็อกอยู่ ซึ่งจะส่งผลให้การควบคุมถูกถ่ายโอนไปยังเธรดอื่นที่ใช้ทรัพยากรนั้นในขณะที่การล็อกยังคงอยู่ การขยายช่วงเวลาทำได้โดยไม่มีค่าใช้จ่ายเพิ่มเติม แต่ก็ไม่มีการรับประกันที่เข้มงวดเหมือนกับการควบคุมลำดับความสำคัญแบบเต็มรูปแบบ
- สำหรับสถาปัตยกรรม arm64, loongarch, powerpc, riscv, s390 และ x86 โหมดการแย่งชิงงานเริ่มต้นได้ถูกเปลี่ยนจาก PREEMPT_NONE เป็น PREEMPT_LAZY จำนวนโหมดที่เป็นไปได้ลดลงจากสี่เหลือสองโหมด ได้แก่ PREEMPT_FULL และ PREEMPT_LAZY (โหมด PREEMPT_NONE และ PREEMPT_VOLUNTARY ยังคงมีอยู่เฉพาะในสถาปัตยกรรมที่ไม่รองรับ PREEMPT_FULL และ PREEMPT_LAZY เท่านั้น) โหมด PREEMPT_LAZY ใช้โมเดลการแย่งชิงงานแบบเต็ม (PREEMPT_FULL) สำหรับงานแบบเรียลไทม์ (RR/FIFO/DEADLINE) แต่จะหน่วงเวลาการแย่งชิงงานของงานปกติ (SCHED_NORMAL) จนกว่าจะถึงขอบเขตของรอบการประมวลผล การหน่วงเวลาที่เพิ่มเข้ามาช่วยลดจำนวนการขับไล่ผู้ถือล็อก ซึ่งทำให้ประสิทธิภาพเข้าใกล้กับรูปแบบการกำหนดค่าที่ใช้โมเดลการแย่งชิงทรัพยากรโดยสมัครใจ กล่าวคือ PREEMPT_LAZY ช่วยให้สามารถรักษาความสามารถในการแย่งชิงทรัพยากรได้อย่างเต็มที่สำหรับงานแบบเรียลไทม์ แต่ลดผลกระทบต่อประสิทธิภาพสำหรับงานทั่วไปให้น้อยที่สุด
การเปิดใช้งาน PREEMPT_LAZY ส่งผลให้ประสิทธิภาพของ PostgreSQL บนระบบ ARM64 ลดลงอย่างมาก เพื่อแก้ไขปัญหาประสิทธิภาพที่ลดลงนี้ นักพัฒนา PostgreSQL ควรเปิดใช้งานตัวเลือก PR_RSEQ_SLICE_EXTENSION เพื่อลดโอกาสที่ผู้ถือล็อกจะถูกขับไล่ออกจากระบบ
- เราได้ดำเนินการย้ายการเปลี่ยนแปลงจากสาขา Rust-for-Linux ที่เกี่ยวข้องกับการใช้ Rust เป็นภาษาที่สองสำหรับการพัฒนาไดรเวอร์และโมดูลเคอร์เนลต่อไป ด้วยความช่วยเหลือจากไลบรารี "syn" ที่รวมไว้ก่อนหน้านี้ ซึ่งช่วยลดความซับซ้อนในการเขียนมาโครที่ซับซ้อน เราจึงสามารถลดขนาดโค้ด Rust ในเคอร์เนลได้โดยการลดความซับซ้อนของคำจำกัดความของมาโครเชิงกระบวนการที่มีอยู่ ความสามารถของไลบรารีเคอร์เนล มาโคร และ pin-init ได้รับการขยายเพิ่มเติม
- ระบบ I/O แบบอะซิงโครนัส io_uring มีตัวเลือกในการใช้คิวการส่งแบบไม่วนซ้ำ ซึ่งจะถูกแคชอย่างมีประสิทธิภาพมากขึ้นในกรณีที่คำขอเสร็จสมบูรณ์ก่อนที่การเรียกใช้ระบบจะส่งคืนค่า
- ในระบบย่อย eBPF กลไก BTF (BPF Type Format) ซึ่งให้ข้อมูลการตรวจสอบประเภทในรหัสเทียม BPF ใช้การค้นหาแบบไบนารีเพื่อค้นหาข้อมูลการดีบัก ซึ่งช่วยเพิ่มประสิทธิภาพในการโหลดโปรแกรม BPF ปัจจุบัน eBPF รองรับอาร์กิวเมนต์โดยปริยายเมื่อเรียกใช้ kfunc (ฟังก์ชันเคอร์เนลที่พร้อมใช้งานในโปรแกรม BPF) ซึ่งกำหนดด้วยแฟล็ก KF_IMPLICIT_ARGS
- โค้ดที่สนับสนุนดิสก์ RAM เริ่มต้น (initrd) ซึ่งอิงตาม linuxrc และถูกยกเลิกการใช้งานไปนานแล้ว ได้ถูกลบออกไปแล้ว ส่วนการใช้งาน initrd ที่เหลืออยู่จะถูกลบออกในปี 2027 ควรใช้ initramfs แทน initrd (ความแตกต่างคือ initrd จะจัดเก็บสภาพแวดล้อมการบูตเริ่มต้นไว้ในอิมเมจดิสก์ ในขณะที่ initramfs จะจัดเก็บไว้ในระบบไฟล์)
- อุปกรณ์บล็อก zram ซึ่งใช้สำหรับการจัดเก็บข้อมูลแบบบีบอัดในหน่วยความจำ ได้เปลี่ยนตรรกะในการจัดการหน้าหน่วยความจำแบบบีบอัดเมื่อต้องการย้ายข้อมูลไปยังที่จัดเก็บถาวรในกรณีที่ RAM เต็ม ก่อนหน้านี้ หน้าหน่วยความจำจะถูกคลายการบีบอัดก่อนที่จะเขียนลงในที่จัดเก็บทางกายภาพ แต่ตอนนี้จะถูกจัดเก็บในรูปแบบบีบอัดเหมือนเดิม ซึ่งช่วยลดภาระของ CPU และประหยัดพลังงานระหว่างการใช้งานแบตเตอรี่
- ยูทิลิตี้ timerlat ซึ่งออกแบบมาเพื่อวัดความล่าช้าเมื่อเรียกใช้ตัวกำหนดเวลาทำงาน ได้รับการอัปเดตด้วยตัวเลือก "--bpf-action" สำหรับเรียกใช้โปรแกรม BPF เมื่อเกินเกณฑ์ที่กำหนดไว้
- ระบบติดตามการทำงาน ftrace ได้รับการอัปเดตด้วยการตั้งค่า "bitmask-list" สำหรับแสดงบิตมาสก์ในรูปแบบที่อ่านได้ (เป็นรายการของบิต ไม่ใช่ค่าเลขฐานสิบหก) Tracefs รองรับตัวกรองและทริกเกอร์สำหรับการตรวจสอบแล้ว นอกจากนี้ยังเพิ่มคำสั่ง "perf sched stats" สำหรับรวบรวมและแสดงสถิติของตัวกำหนดเวลาการทำงาน
- เพิ่มตัวเลือกการสร้าง LOGO_LINUX_MONO_FILE, LOGO_LINUX_VGA16_FILE และ LOGO_LINUX_CLUT224_FILE เพื่อกำหนดไฟล์ที่มีรูปภาพโลโก้ที่จะแสดงเมื่อเคอร์เนลเริ่มทำงาน แทนที่โลโก้เพนกวิน Tux มาตรฐาน
- การจำลองเสมือนและความปลอดภัย
- ระบบ I/O แบบอะซิงโครนัส io_uring ตอนนี้รองรับการแนบโปรแกรม BPF ที่มีตัวกรองซึ่งควบคุมความสามารถของการดำเนินการ SQE (Submission Queue Entry) เฉพาะ (คล้ายกับ system call ใน io_uring) คุณสมบัติที่เพิ่มเข้ามานี้คล้ายคลึงกับตัวกรอง system call ตัวกรองสามารถแนบกับงานเฉพาะและจะถูกส่งต่อเมื่อทำการ fork กระบวนการอื่นหลังจากเรียกใช้ fork() หากตัวกรองทำงานอยู่ ตัวกรองเพิ่มเติมสามารถแนบข้อจำกัดเพิ่มเติมได้เท่านั้น แต่ไม่สามารถปิดใช้งานข้อจำกัดที่มีอยู่ได้ คุณสมบัตินี้จะช่วยให้วิธีการบล็อกสามารถข้ามการกรอง system call ในสภาพแวดล้อม sandbox ที่อาศัยการดำเนินการที่คล้ายกันซึ่ง io_uring จัดให้แทนการใช้ system call ได้
- ปัจจุบัน SELinux มีความสามารถในการควบคุมการเข้าถึงโทเค็น BPF ซึ่งอนุญาตให้กระบวนการที่ไม่ได้รับสิทธิ์พิเศษสามารถดำเนินการบางอย่างกับ BPF ได้ เช่น การโหลดโปรแกรม BPF เข้าสู่เคอร์เนลและการสร้างโครงสร้างแผนที่
- ได้เพิ่มการรองรับอัลกอริธึมการสร้างลายเซ็นดิจิทัล ML-DSA (CRYSTALS-Dilithium) ซึ่งอิงตามทฤษฎีแลตติสและทนทานต่อการโจมตีแบบเดาสุ่มบนคอมพิวเตอร์ควอนตัม ขณะนี้สามารถใช้ ML-DSA ในการตรวจสอบความถูกต้องของโมดูลเคอร์เนลได้แล้ว
- ความสามารถในการใช้รูปแบบการสร้างลายเซ็นดิจิทัลด้วยอัลกอริธึม SHA-1 เพื่อรับรองโมดูลเคอร์เนลได้ถูกลบออกแล้ว (แต่ยังคงรองรับการโหลดโมดูลที่ลงนามแล้ว)
- เพิ่มฟิลด์ 'sport' และ 'dport' ลงในบันทึกการตรวจสอบ NETFILTER_PKT เพื่อตรวจสอบหมายเลขพอร์ตเครือข่ายแทนที่จะตรวจสอบแค่หมายเลขพอร์ตอย่างเดียว ที่อยู่ IP.
- สำหรับระบบที่มีสถาปัตยกรรม RISC-V ได้มีการนำส่วนเสริม Zicfiss และ Zicfilp มาใช้งาน ซึ่งมีส่วนเสริมด้านฮาร์ดแวร์ที่ช่วยให้สามารถใช้การป้องกัน CFI (Control Flow Integrity) ได้ โดยส่วนเสริมนี้จะบล็อกการละเมิดลำดับการทำงานของคำสั่งตามปกติ (control flow) อันเป็นผลมาจากการโจมตีที่แก้ไขตัวชี้ฟังก์ชันที่เก็บไว้ในหน่วยความจำ
- ในไฮเปอร์ไวเซอร์ KVM ได้มีการเพิ่มความสามารถในการส่งข้อมูลเกี่ยวกับการสนับสนุนของโปรเซสเซอร์ต่อส่วนขยาย Enhanced Return Address Predictor Security (ERAPS) ไปยังระบบเกสต์แล้ว ซึ่งจะช่วยหลีกเลี่ยงการรีเซ็ตสถานะ CPU บางอย่างเมื่อระบบเกสต์ส่งการควบคุมกลับไปยังโฮสต์ นอกจากนี้ ยังได้เพิ่มการสนับสนุนสำหรับการกำหนดหน่วยตรวจสอบประสิทธิภาพ (PMU) ให้กับระบบเกสต์ ซึ่งช่วยปรับปรุงความแม่นยำในการวิเคราะห์ประสิทธิภาพเมื่อเทียบกับการใช้ PMU จำลอง
- ขณะนี้ไดรเวอร์ไฮเปอร์ไวเซอร์ Hyper-V รองรับอินเทอร์เฟซ debugfs สำหรับดูสถิติของไฮเปอร์ไวเซอร์แล้ว
- ระบบย่อยของเครือข่าย
- ส่วนขยาย AccECN (Accurate Explicit Congestion Notification) ถูกเปิดใช้งานโดยค่าเริ่มต้น ส่วนขยายนี้เป็นเวอร์ชันปรับปรุงของส่วนขยาย ECN ซึ่งช่วยให้โฮสต์สามารถทำเครื่องหมายแพ็กเก็ต IP ในกรณีที่เกิดความแออัดแทนที่จะทิ้งแพ็กเก็ตนั้น ทำให้สามารถตรวจจับการเริ่มต้นของความแออัดในช่องทางการสื่อสารได้โดยไม่สูญเสียแพ็กเก็ต ส่วนขยาย ECN ดั้งเดิมมีข้อจำกัดคืออนุญาตให้ส่งสัญญาณความแออัดได้เพียงครั้งเดียวในระหว่างการรับส่งข้อมูล TCP รอบเดียว (RTT, Round-Trip Time, การส่งคำขอและการรับการตอบกลับ) AccECN ขจัดข้อจำกัดนี้และอนุญาตให้ผู้รับส่งสัญญาณความแออัดมากกว่าหนึ่งครั้งไปยังผู้ส่งในส่วนหัวของแพ็กเก็ต TCP อัลกอริทึมควบคุมความแออัดสามารถใช้ข้อมูลนี้เพื่อตอบสนองต่อความแออัดได้อย่างแม่นยำยิ่งขึ้นและหลีกเลี่ยงการลดอัตราการส่งแพ็กเก็ตอย่างกะทันหันเมื่อเกิดความแออัดเล็กน้อย
- การใช้งานอัลกอริธึมการจัดการคิวเครือข่าย Cake ได้รับการปรับปรุงให้สามารถจัดการคิวหลายคิวเพื่อกระจายภาระงานไปยังคอร์ CPU หลายตัว อัลกอริธึม CAKE ใช้เพื่อลดผลกระทบเชิงลบของการบัฟเฟอร์แพ็กเก็ตระดับกลางบนอุปกรณ์เครือข่ายส่วนปลาย และมุ่งเน้นเพื่อให้ได้ปริมาณงานสูงสุดและความหน่วงต่ำสุด แม้ในลิงก์การสื่อสารที่ช้า
- ได้เพิ่มการรองรับเน็ตเวิร์กเนมสเปซให้กับซ็อกเก็ต VSOCK ที่ใช้ในการสื่อสารกับเครื่องเสมือนแล้ว
- เพิ่มการใช้งานเบื้องต้นของมาตรฐาน WiFi 8 ในอนาคต (802.11bn, Ultra High Reliability» WiFi)
- เพิ่มประสิทธิภาพการประมวลผลแพ็กเก็ต UDP ขาเข้าขึ้น 12% เมื่อทำการทดสอบภายใต้สภาวะหนักบนเครือข่าย 100 Gbps
- Оборудование
- ไดรเวอร์ AMDGPU รองรับบล็อก IP ที่ใช้ใน GPU AMD รุ่นใหม่ เช่น SMUIO 15.x, PSP 15.x, IH 6.1.1/7.1, MMHUB 3.4/4.2, GC 11.5.4/12.1, SDMA 6.1.4/7.1/7.11.4 และ JPEG 5.3
- ไดรเวอร์ Nouveau ได้ปรับปรุงการจัดการความถี่บนระบบ Tegra 186+ แล้ว
- ไดรเวอร์ i915 ตอนนี้ได้เพิ่มการรองรับเบื้องต้นสำหรับ IP จอแสดงผล Xe3p_LPD ที่ใช้ในโปรเซสเซอร์ Intel Nova Lake-P แล้ว
- การพัฒนาไดรเวอร์ Xe DRM (Direct Rendering Manager) สำหรับ GPU ที่ใช้สถาปัตยกรรม Intel Xe ซึ่งใช้ในกราฟิกการ์ด Intel Arc ซีรีส์และกราฟิกรวม เริ่มต้นจากโปรเซสเซอร์ Tiger Lake ยังคงดำเนินต่อไป มีการเพิ่มโหมด Multi-Queue เพิ่มส่วนประกอบที่จำเป็นสำหรับการวินิจฉัยปัญหา GPU ค้างใน Mesa และเพิ่มการสนับสนุนกลไก MERT สำหรับการจัดการการเข้าถึงหน่วยความจำ GPU
- เราได้ดำเนินการผสานรวมส่วนประกอบไดรเวอร์ Nova สำหรับ GPU ของ NVIDIA ที่ติดตั้งเฟิร์มแวร์ GSP ซึ่งใช้มาตั้งแต่ซีรี่ส์ NVIDIA GeForce RTX 2000 ที่ใช้สถาปัตยกรรมไมโคร Turing ไดรเวอร์นี้เขียนด้วยภาษา Rust เวอร์ชันใหม่นี้เตรียมพร้อมสำหรับการรองรับ GPU ที่ใช้สถาปัตยกรรมไมโคร Turing และมีการเปลี่ยนแปลงภายในต่างๆ มากมาย
- เพิ่มการรองรับคอนโทรลเลอร์และอุปกรณ์ต่อพ่วงที่มีอินเทอร์เฟซ SPI (Serial Peripheral Interface) แบบหลายช่องสัญญาณ ซึ่งช่วยให้สามารถถ่ายโอนข้อมูลได้หลายสตรีมพร้อมกัน
- เพิ่มไดรเวอร์สำหรับขั้วต่อ Type-C แบบรวมที่ใช้ในอุปกรณ์ที่ใช้ชิป Apple Silicon ซึ่งรวมอินเทอร์เฟซ USB3, DP-AltMode และ Thunderbolt/USB4 เข้าไว้ด้วยกัน
- เพิ่มการรองรับระบบเสียงสำหรับชิป Tegra238, Minisforum V3 SE, iBasso DC04U, Intel Nova Lake, Nova Lake S และ Focusrite Forte
- เพิ่มการรองรับบอร์ด ARM, SoC และอุปกรณ์ต่างๆ ได้แก่ Arduino UnoQ, OrangePi 6 Plus, OrangePi CM5, Anbernic RG-DS, Realtek Kent, Qualcomm Kaanapali, Mediatek Ezurio, Facebook Anacapa, Microchip LAN9668, Khadas VIM1S, QNAP TS133, i.MX952, i.MX93, i.MX94, VHIP4 EvalBoard, TQ-Systems MBLS1028A, Agilex5, Radxa CM3J, Glymur
- เพิ่มการรองรับสำหรับสมาร์ทโฟนและแท็บเล็ต: Fairphone Gen 6 (SoC Qualcomm Milos/Snapdragon 7s Gen 3), Pixel 3/3 xl, Microsoft Surface Pro 11
ในขณะเดียวกัน มูลนิธิซอฟต์แวร์เสรี (FSF) ในละตินอเมริกาได้สร้างเคอร์เนลเวอร์ชันฟรีอย่างสมบูรณ์ 7.0—Linux-libre 7.0-gnu—ซึ่งได้กำจัดส่วนประกอบเฟิร์มแวร์และไดรเวอร์ที่ไม่เป็นซอฟต์แวร์เสรี หรือส่วนของโค้ดที่มีขอบเขตจำกัดโดยผู้ผลิต เวอร์ชัน 7.0 นี้รวมถึงการแก้ไขชื่อไฟล์ Blob สำหรับไดรเวอร์ iwlwifi โค้ดสำหรับการแก้ไขไดรเวอร์ amdgpu, adreno, TI PRUeth, air_en8811h, ath12k, TI VPE, rtw8852b, rt1320, rt5575 SPI, tas2783 และ Intel catpt ได้รับการอัปเดตแล้ว ชื่อไฟล์ Blob ในไฟล์ devicetree (dts) สำหรับชิป ARM ได้รับการแก้ไขแล้ว
ที่มา: opennet.ru
