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

หลังจากสองเดือนของการพัฒนา Linus Torvalds ส่ง การปล่อยเคอร์เนล Linux 5.9. ท่ามกลางการเปลี่ยนแปลงที่โดดเด่นที่สุด: การจำกัดการนำเข้าสัญลักษณ์จากโมดูลที่เป็นกรรมสิทธิ์ไปยังโมดูล GPL, การเร่งความเร็วการดำเนินการสลับบริบทโดยใช้คำสั่งตัวประมวลผล FSGSBASE, รองรับการบีบอัดภาพเคอร์เนลโดยใช้ Zstd, การจัดลำดับความสำคัญของเธรดในเคอร์เนลใหม่, รองรับ PRP (Parallel Redundancy Protocol), การกำหนดเวลาการรับรู้แบนด์วิดท์ในตัวกำหนดตารางเวลา, การบรรจุหน้าหน่วยความจำล่วงหน้า, แฟล็กความสามารถ CAP_CHECKPOINT_RESTOR, การเรียกระบบ close_range(), การปรับปรุงประสิทธิภาพ dm-crypt, การลบโค้ดสำหรับแขก Xen PV 32 บิต, หน่วยความจำ slab ใหม่ กลไกการจัดการ ตัวเลือก “ช่วยเหลือ” ใน Btrfs รองรับการเข้ารหัสแบบอินไลน์ใน ext4 และ F2FS

เวอร์ชันใหม่ประกอบด้วยการแก้ไข 16074 รายการจากนักพัฒนาปี 2011
ขนาดแพตช์ - 62 MB (การเปลี่ยนแปลงได้รับผลกระทบ 14548 ไฟล์, เพิ่มโค้ด 782155 บรรทัด, ลบ 314792 บรรทัด) ประมาณ 45% ของทั้งหมดที่นำเสนอใน 5.9
การเปลี่ยนแปลงเกี่ยวข้องกับไดรเวอร์อุปกรณ์ ประมาณ 15% ของการเปลี่ยนแปลงคือ
ทัศนคติต่อการอัปเดตโค้ดเฉพาะสำหรับสถาปัตยกรรมฮาร์ดแวร์ 13%
เกี่ยวข้องกับสแต็กเครือข่าย 3% เป็นระบบไฟล์ และ 3% เป็นระบบภายใน
ระบบย่อยเคอร์เนล

หลัก นวัตกรรม:

  • บริการหน่วยความจำและระบบ
    • กระชับขึ้น การป้องกันการใช้เลเยอร์ GPL สำหรับการเชื่อมโยงไดรเวอร์ที่เป็นกรรมสิทธิ์กับส่วนประกอบเคอร์เนลที่ส่งออกสำหรับโมดูลภายใต้ลิขสิทธิ์ GPL เท่านั้น ตอนนี้ค่าสถานะ TAINT_PROPRIETARY_MODULE ได้รับการสืบทอดในโมดูลทั้งหมดที่นำเข้าสัญลักษณ์จากโมดูลที่มีค่าสถานะนี้ หากโมดูล GPL พยายามนำเข้าสัญลักษณ์จากโมดูลที่ไม่ใช่ GPL โมดูล GPL นั้นจะสืบทอดป้ายกำกับ TAINT_PROPRIETARY_MODULE และจะไม่สามารถเข้าถึงส่วนประกอบเคอร์เนลที่มีเฉพาะในโมดูลที่ได้รับใบอนุญาต GPL เท่านั้น แม้ว่าโมดูลจะนำเข้าสัญลักษณ์จากก่อนหน้านี้แล้วก็ตาม หมวดหมู่ "gplonly" การล็อกย้อนกลับ (ส่งออกเฉพาะ EXPORT_SYMBOL_GPL ในโมดูลที่นำเข้า EXPORT_SYMBOL_GPL) ซึ่งอาจทำลายการทำงานของไดรเวอร์ที่เป็นกรรมสิทธิ์จะไม่ถูกนำมาใช้ (เฉพาะการตั้งค่าสถานะโมดูลที่เป็นกรรมสิทธิ์เท่านั้นที่สืบทอดมา แต่ไม่ใช่การเชื่อมโยง GPL)
    • เพิ่ม รองรับเครื่องยนต์ kcompactd สำหรับ การบรรจุหน้าหน่วยความจำล่วงหน้า ในพื้นหลังเพื่อเพิ่มจำนวนหน้าหน่วยความจำขนาดใหญ่ที่มีให้กับเคอร์เนล ตามการประมาณการเบื้องต้น การบรรจุภัณฑ์พื้นหลังซึ่งมีต้นทุนค่าใช้จ่ายน้อยที่สุด สามารถลดความล่าช้าในการจัดสรรหน้าหน่วยความจำขนาดใหญ่ (หน้าขนาดใหญ่) ได้ 70-80 เท่า เมื่อเทียบกับกลไกการบรรจุภัณฑ์ที่ใช้ก่อนหน้านี้ ซึ่งเปิดใช้งานเมื่อมีความจำเป็นเกิดขึ้น (ตามความต้องการ ). หากต้องการตั้งค่าขอบเขตของการกระจายตัวภายนอกที่ kcompactd จะจัดเตรียม sysctl vm.compact_proactiveness ได้ถูกเพิ่มแล้ว
    • เพิ่ม รองรับการบีบอัดภาพเคอร์เนลโดยใช้อัลกอริธึม มาตรฐาน (zstd).
    • มีการรองรับคำสั่งโปรเซสเซอร์สำหรับระบบ x86 FSGSBASEซึ่งอนุญาตให้คุณอ่านและเปลี่ยนแปลงเนื้อหาของรีจิสเตอร์ FS/GS จากพื้นที่ผู้ใช้ ในเคอร์เนล FSGSBASE ถูกใช้เพื่อเพิ่มความเร็วในการดำเนินการสลับบริบทโดยกำจัดการดำเนินการเขียน MSR ที่ไม่จำเป็นสำหรับ GSBASE และในพื้นที่ผู้ใช้ FSGSBASE จะหลีกเลี่ยงการเรียกของระบบที่ไม่จำเป็นเพื่อเปลี่ยน FS/GS
    • เพิ่ม พารามิเตอร์ "allow_writes" ช่วยให้คุณสามารถห้ามการเปลี่ยนแปลงการลงทะเบียน MSR ของโปรเซสเซอร์จากพื้นที่ผู้ใช้และจำกัดการเข้าถึงเนื้อหาของการลงทะเบียนเหล่านี้เพื่ออ่านการดำเนินการเนื่องจากการเปลี่ยนแปลง MSR อาจทำให้เกิดปัญหาได้ ตามค่าเริ่มต้น การเขียนจะยังไม่ปิดใช้งาน และการเปลี่ยนแปลง MSR จะแสดงในบันทึก แต่ในอนาคตมีการวางแผนที่จะเปลี่ยนการเข้าถึงเริ่มต้นเป็นโหมดอ่านอย่างเดียว
    • ไปยังอินเทอร์เฟซ I/O แบบอะซิงโครนัส io_ing เพิ่มการสนับสนุนเต็มรูปแบบสำหรับการดำเนินการอ่านบัฟเฟอร์แบบอะซิงโครนัสที่ไม่ต้องใช้เธรดเคอร์เนล คาดว่าจะรองรับการบันทึกในรุ่นอนาคต
    • ในกำหนดเวลาของตัวกำหนดเวลา I/O ดำเนินการ การวางแผนตามกำลังการผลิต อนุญาต ตัดสินใจได้อย่างถูกต้องเกี่ยวกับระบบอสมมาตร เช่น ระบบที่ใช้ ARM ไดนามิกไอคิว และ big.LITTLE ซึ่งรวมคอร์ CPU ที่ทรงพลังและประหยัดพลังงานน้อยกว่าไว้ในชิปตัวเดียว โดยเฉพาะอย่างยิ่ง โหมดใหม่ช่วยให้คุณหลีกเลี่ยงการกำหนดเวลาที่ไม่ตรงกันเมื่อคอร์ CPU ที่ช้าไม่มีทรัพยากรที่เหมาะสมในการทำงานให้เสร็จตรงเวลา
    • แบบจำลองการใช้พลังงานในเคอร์เนล (Energy Model framework) อยู่ในขณะนี้ อธิบาย ไม่เพียงแต่พฤติกรรมการใช้พลังงานของ CPU เท่านั้น แต่ยังรวมถึงอุปกรณ์ต่อพ่วงด้วย
    • การเรียกระบบ close_range() ได้ถูกนำมาใช้เพื่อให้กระบวนการปิดช่วงของตัวอธิบายไฟล์ที่เปิดทั้งหมดในคราวเดียว
    • จากการใช้งานคอนโซลข้อความและไดรเวอร์ fbcon รหัสถูกลบออกซึ่งให้ความสามารถในการเลื่อนข้อความกลับโดยทางโปรแกรม (CONFIG_VGACON_SOFT_SCROLLBACK) มากกว่าจำนวนหน่วยความจำวิดีโอในโหมดข้อความ VGA
    • ออกแบบใหม่ อัลกอริธึมสำหรับการกำหนดลำดับความสำคัญให้กับเธรดภายในเคอร์เนล ตัวเลือกใหม่นี้ให้ความสอดคล้องที่ดีขึ้นกับระบบย่อยเคอร์เนลทั้งหมด เมื่อกำหนดลำดับความสำคัญให้กับงานแบบเรียลไทม์
    • เพิ่ม sysctl sched_uclamp_util_min_rt_default เพื่อควบคุมการตั้งค่า CPU Boost สำหรับงานแบบเรียลไทม์ (เช่น คุณสามารถเปลี่ยนพฤติกรรมของงานแบบเรียลไทม์ได้ทันทีเพื่อประหยัดพลังงานหลังจากเปลี่ยนมาใช้พลังงานแบตเตอรี่หรือบนระบบมือถือ)
    • มีการเตรียมการเพื่อใช้การสนับสนุนสำหรับเทคโนโลยี Transparent Huge Pages ในแคชของเพจ
    • เอ็นจิ้น fanotify ใช้แฟล็กใหม่ FAN_REPORT_NAME และ FAN_REPORT_DIR_FID เพื่อรายงานชื่อพาเรนต์และข้อมูล FID ที่ไม่ซ้ำกันเมื่อเหตุการณ์การสร้าง การลบ หรือการเคลื่อนไหวเกิดขึ้นสำหรับรายการไดเร็กทอรีและออบเจ็กต์ที่ไม่ใช่ไดเร็กทอรี
    • สำหรับกลุ่มซี ดำเนินการ ตัวควบคุมหน่วยความจำ Slab ใหม่ ซึ่งมีความโดดเด่นในการย้ายบัญชี Slab จากระดับหน้าหน่วยความจำไปยังระดับอ็อบเจ็กต์เคอร์เนล ซึ่งทำให้สามารถแชร์หน้า Slab ในกลุ่ม cgroup ที่แตกต่างกัน แทนที่จะจัดสรรแคช Slab แยกกันสำหรับแต่ละ Cgroup แนวทางที่นำเสนอทำให้สามารถเพิ่มประสิทธิภาพในการใช้ Slab ได้ ลดขนาดของหน่วยความจำที่ใช้สำหรับ Slab ลง 30-45% ลดการใช้หน่วยความจำโดยรวมของเคอร์เนลลงอย่างมาก และลดการกระจายตัวของหน่วยความจำ
    • ในระบบย่อยเสียง อัลซา и สแต็ค USBตาม เพิ่งนำมาใช้ คำแนะนำเกี่ยวกับการใช้คำศัพท์แบบรวมในเคอร์เนล Linux คำศัพท์ที่ไม่ถูกต้องทางการเมืองได้รับการแก้ไขแล้ว รหัสคำว่า "slave", "master", "blacklist" และ "whitelist" ได้รับการล้างแล้ว
  • การจำลองเสมือนและความปลอดภัย
    • เมื่อสร้างเคอร์เนลโดยใช้คอมไพเลอร์ Clang ปรากฏ ความสามารถในการกำหนดค่า (CONFIG_INIT_STACK_ALL_ZERO) การเริ่มต้นอัตโนมัติให้เป็นศูนย์ของตัวแปรทั้งหมดที่เก็บไว้ในสแต็ก (เมื่อสร้าง ให้ระบุ “-ftrivial-auto-var-init=zero”)
    • ในระบบย่อย seccomp เมื่อใช้โหมดควบคุมกระบวนการในพื้นที่ผู้ใช้ เพิ่ม โอกาส การทดแทนตัวอธิบายไฟล์ในกระบวนการที่ได้รับการตรวจสอบเพื่อจำลองการเรียกของระบบอย่างสมบูรณ์ซึ่งนำไปสู่การสร้างตัวอธิบายไฟล์ ฟังก์ชันการทำงานนี้เป็นที่ต้องการในระบบคอนเทนเนอร์แบบแยกส่วนและการใช้งานแซนด์บ็อกซ์สำหรับ Chrome
    • สำหรับสถาปัตยกรรม xtensa และ csky มีการเพิ่มการสนับสนุนสำหรับการจำกัดการเรียกระบบโดยใช้ระบบย่อย seccomp สำหรับ xtensa จะมีการนำการสนับสนุนกลไกการตรวจสอบมาใช้เพิ่มเติม
    • เพิ่ม สถานะความสามารถใหม่ CAP_CHECKPOINT_RESTORE ซึ่งช่วยให้คุณสามารถให้การเข้าถึงความสามารถที่เกี่ยวข้องกับการแช่แข็งและการกู้คืนสถานะของกระบวนการโดยไม่ต้องโอนสิทธิ์เพิ่มเติม
    • GCC 11 มีคุณสมบัติทั้งหมดที่คุณต้องการ
      เครื่องมือแก้ไขจุดบกพร่อง KCSAN (Kernel Concurrency Sanitizer) ออกแบบมาเพื่อตรวจจับสภาพการแข่งขันภายในเคอร์เนลแบบไดนามิก ดังนั้น KCSAN จึงสามารถใช้กับเคอร์เนลที่สร้างใน GCC ได้แล้ว

    • สำหรับ AMD Zen และ CPU รุ่นใหม่กว่า เพิ่ม รองรับเทคโนโลยี P2PDMA ซึ่งช่วยให้คุณใช้ DMA สำหรับการถ่ายโอนข้อมูลโดยตรงระหว่างหน่วยความจำของอุปกรณ์ทั้งสองที่เชื่อมต่อกับบัส PCI
    • มีการเพิ่มโหมดใน dm-crypt ซึ่งช่วยให้คุณลดเวลาแฝงโดยดำเนินการประมวลผลข้อมูลการเข้ารหัสโดยไม่ต้องใช้คิวงาน โหมดนี้ยังจำเป็นสำหรับการทำงานที่ถูกต้องด้วย แบ่งเขต อุปกรณ์บล็อก (อุปกรณ์ที่มีพื้นที่ที่ต้องเขียนตามลำดับอัปเดตกลุ่มบล็อกทั้งหมด) มีการทำงานเพื่อเพิ่มปริมาณงานและลดเวลาแฝงใน dm-crypt
    • ลบโค้ดเพื่อรองรับเกสต์ 32 บิตที่ทำงานในโหมด paravirtualization ที่รัน Xen hypervisor ผู้ใช้ระบบดังกล่าวควรเปลี่ยนไปใช้เคอร์เนล 64 บิตในสภาพแวดล้อมแบบเกสต์ หรือใช้โหมดการจำลองเสมือนแบบเต็ม (HVM) หรือแบบรวม (PVH) แทนการใช้พาราเวอร์ชวลไลเซชัน (PV) เพื่อรันสภาพแวดล้อม
  • ระบบย่อยของดิสก์ I/O และระบบไฟล์
    • บนระบบไฟล์ Btrfs นำไปใช้ ตัวเลือกการเมานต์ "ช่วยเหลือ" ที่รวมการเข้าถึงตัวเลือกการกู้คืนอื่นๆ ทั้งหมดเข้าด้วยกัน การสนับสนุนตัวเลือก "alloc_start" และ "subvolrootid" ได้ถูกลบออกแล้ว และตัวเลือก "inode_cache" เลิกใช้แล้ว มีการปรับปรุงประสิทธิภาพ โดยเฉพาะอย่างยิ่งเร่งความเร็วการดำเนินการ fsync() อย่างเห็นได้ชัด เพิ่ม ความสามารถในการใช้เช็คซัมประเภทอื่นนอกเหนือจาก CRC32c
    • เพิ่ม ความสามารถในการใช้การเข้ารหัสแบบอินไลน์ (Inline Encryption) ในระบบไฟล์ ext4 และ F2FS เพื่อเปิดใช้งานตัวเลือกการเมานต์ "inlinecrypt" โหมดการเข้ารหัสแบบอินไลน์ช่วยให้คุณใช้กลไกการเข้ารหัสที่สร้างไว้ในตัวควบคุมไดรฟ์ ซึ่งจะเข้ารหัสและถอดรหัสอินพุต/เอาท์พุตอย่างโปร่งใส
    • ในเอ็กซ์เอฟเอส ปลอดภัย การรีเซ็ต inode (ฟลัช) ในโหมดอะซิงโครนัสโดยสมบูรณ์ซึ่งไม่บล็อกกระบวนการเมื่อดำเนินการล้างหน่วยความจำ แก้ไขปัญหาโควต้าที่มีมายาวนานซึ่งทำให้การแจ้งเตือนขีดจำกัดซอฟต์และขีดจำกัดไอโหนดมีการติดตามอย่างไม่ถูกต้อง การใช้งานการสนับสนุน DAX แบบครบวงจรสำหรับ ext4 และ xfs
    • ใน Ext4 นำไปใช้ โหลดบิตแมปการจัดสรรบล็อกล่วงหน้า เมื่อรวมกับการจำกัดการสแกนกลุ่มที่ไม่ได้กำหนดค่าเริ่มต้น การเพิ่มประสิทธิภาพจะช่วยลดเวลาที่ต้องใช้ในการติดตั้งพาร์ติชันที่มีขนาดใหญ่มาก
    • ใน F2FS เพิ่ม ioctl F2FS_IOC_SEC_TRIM_FILE ซึ่งช่วยให้คุณสามารถใช้คำสั่ง TRIM/discard เพื่อรีเซ็ตข้อมูลที่ระบุในไฟล์ได้จริง เช่น เพื่อลบคีย์การเข้าถึงโดยไม่ทิ้งข้อมูลที่เหลืออยู่ในไดรฟ์
      ใน F2FS เช่นกัน เพิ่ม โหมดการรวบรวมขยะใหม่ GC_URGENT_LOW ซึ่งทำงานเชิงรุกมากขึ้นโดยกำจัดการตรวจสอบบางอย่างว่าอยู่ในสถานะไม่ได้ใช้งานก่อนที่จะเริ่มตัวรวบรวมขยะ

    • ใน bcache นั้น bucket_size สำหรับส่วนขยายเพิ่มขึ้นจาก 16 เป็น 32 บิตเพื่อเตรียมพร้อมสำหรับการเปิดใช้งานแคชอุปกรณ์แบบแบ่งโซน
    • เพิ่มความสามารถในการใช้การเข้ารหัสแบบอินไลน์ตามการเข้ารหัสฮาร์ดแวร์ในตัวที่คอนโทรลเลอร์ UFS มอบให้กับระบบย่อย SCSI (ที่เก็บแฟลชสากล).
    • มีการเพิ่มพารามิเตอร์บรรทัดคำสั่งเคอร์เนลใหม่ "debugfs" ซึ่งช่วยให้คุณควบคุมความพร้อมใช้งานของ pseudo-FS ที่มีชื่อเดียวกันได้
    • ไคลเอนต์ NFSv4.2 ให้การสนับสนุนคุณสมบัติไฟล์เพิ่มเติม (xattr)
    • ใน dm-ฝุ่น เพิ่ม อินเทอร์เฟซสำหรับแสดงรายการบล็อกเสียที่ระบุทั้งหมดบนดิสก์พร้อมกัน (“ dmsetup message dust1 0 listbadblocks”)
    • สำหรับ md/raid5 พารามิเตอร์ /sys/block/md1/md/stripe_size ได้ถูกเพิ่มเพื่อกำหนดค่าขนาดบล็อก STRIPE
    • สำหรับอุปกรณ์จัดเก็บข้อมูล NVMe เพิ่ม รองรับคำสั่งการแบ่งเขตไดรฟ์ (ZNS, NVM Express Zoned Namespace) ซึ่งช่วยให้คุณแบ่งพื้นที่จัดเก็บข้อมูลออกเป็นโซนที่ประกอบเป็นกลุ่มของบล็อกเพื่อการควบคุมการวางตำแหน่งข้อมูลบนไดรฟ์ได้สมบูรณ์ยิ่งขึ้น
  • ระบบย่อยของเครือข่าย
    • ในเน็ตฟิลเตอร์ เพิ่ม ความสามารถในการปฏิเสธแพ็กเก็ตในขั้นตอนก่อนการตรวจสอบเส้นทาง (ขณะนี้นิพจน์ REJECT สามารถใช้ได้ไม่เพียงแต่ในห่วงโซ่ INPUT, FORWARD และ OUTPUT เท่านั้น แต่ยังรวมถึงในขั้นตอน PREROUTING สำหรับ icmp และ tcp ด้วย)
    • ใน nftable เพิ่ม ความสามารถในการตรวจสอบเหตุการณ์ที่เกี่ยวข้องกับการเปลี่ยนแปลงการกำหนดค่า
    • ใน nftables ใน netlink API เพิ่ม รองรับเชนที่ไม่ระบุชื่อซึ่งเคอร์เนลกำหนดชื่อแบบไดนามิก เมื่อคุณลบกฎที่เกี่ยวข้องกับห่วงโซ่ที่ไม่ระบุชื่อ ห่วงโซ่นั้นจะถูกลบโดยอัตโนมัติ
    • BPF เพิ่มการสนับสนุนสำหรับตัววนซ้ำเพื่อสำรวจ กรอง และแก้ไของค์ประกอบของอาร์เรย์ที่เชื่อมโยง (แผนที่) โดยไม่ต้องคัดลอกข้อมูลลงในพื้นที่ผู้ใช้ ตัววนซ้ำสามารถใช้กับซ็อกเก็ต TCP และ UDP ได้ ทำให้โปรแกรม BPF สามารถวนซ้ำรายการซ็อกเก็ตที่เปิดอยู่และดึงข้อมูลที่ต้องการออกมาได้
    • เพิ่มโปรแกรม BPF ประเภทใหม่ BPF_PROG_TYPE_SK_LOOKUP ซึ่งเปิดตัวเมื่อเคอร์เนลค้นหาซ็อกเก็ตการฟังที่เหมาะสมสำหรับการเชื่อมต่อขาเข้า การใช้โปรแกรม BPF เช่นนี้ คุณสามารถสร้างตัวจัดการที่ตัดสินใจว่าควรเชื่อมโยงซ็อกเก็ตใดกับการเชื่อมต่อ โดยไม่ถูกจำกัดโดยการเรียกของระบบ bind() ตัวอย่างเช่น คุณสามารถเชื่อมโยงซ็อกเก็ตเดียวกับช่วงที่อยู่หรือพอร์ตต่างๆ ได้ นอกจากนี้ การสนับสนุนสำหรับการตั้งค่าสถานะ SO_KEEPALIVE ได้ถูกเพิ่มให้กับ bpf_setsockopt() และได้มีการนำความสามารถในการติดตั้งตัวจัดการ BPF_CGROUP_INET_SOCK_RELEASE ที่ถูกเรียกเมื่อซ็อกเก็ตออกใช้แล้ว
    • ใช้การสนับสนุนโปรโตคอลแล้ว PRP (Parallel Redundancy Protocol) ซึ่งอนุญาตให้สลับผ่านอีเธอร์เน็ตเป็นช่องทางสำรอง โปร่งใสสำหรับแอปพลิเคชัน ในกรณีที่ส่วนประกอบเครือข่ายใดๆ ล้มเหลว
    • สแต็ค mac80211 เพิ่ม รองรับการเจรจาช่องสัญญาณ WPA/WPA2-PSK สี่ขั้นตอนในโหมดจุดเข้าใช้งาน
    • เพิ่มความสามารถในการสลับตัวกำหนดเวลา qdisc (ระเบียบการเข้าคิว) เพื่อใช้อัลกอริธึมการจัดการคิวเครือข่าย FQ-PIE (Flow Queue PIE) เป็นค่าเริ่มต้น โดยมีวัตถุประสงค์เพื่อลดผลกระทบด้านลบของการบัฟเฟอร์แพ็กเก็ตระดับกลางบนอุปกรณ์เครือข่าย Edge (bufferbloat) ในเครือข่ายที่มี เคเบิลโมเด็ม
    • มีการเพิ่มคุณสมบัติใหม่ให้กับ MPTCP (MultiPath TCP) ซึ่งเป็นส่วนขยายของโปรโตคอล TCP สำหรับการจัดระเบียบการทำงานของการเชื่อมต่อ TCP พร้อมการส่งแพ็กเก็ตพร้อมกันไปตามหลายเส้นทางผ่านอินเทอร์เฟซเครือข่ายที่แตกต่างกันที่เกี่ยวข้องกับที่อยู่ IP ที่แตกต่างกัน เพิ่มการสนับสนุนสำหรับคุกกี้ syn, DATA_FIN, การปรับแต่งบัฟเฟอร์อัตโนมัติ, การวินิจฉัยซ็อกเก็ต และการตั้งค่าสถานะ REUSEADDR, REUSEPORT และ V6ONLY ใน setockopt
    • สำหรับตารางการกำหนดเส้นทางเสมือน VRF (Virtual Routing and Forwarding) ซึ่งช่วยให้สามารถจัดระเบียบการทำงานของโดเมนการกำหนดเส้นทางหลายโดเมนในระบบเดียวได้มีการใช้โหมด "เข้มงวด" ในโหมดนี้ ตารางเสมือนสามารถเชื่อมโยงกับตารางเส้นทางที่ไม่ได้ใช้ในตารางเสมือนอื่นเท่านั้น
    • ไดรเวอร์ไร้สายคือ ath11k เพิ่ม รองรับความถี่ 6GHz และ การสแกนสเปกตรัม.
  • Оборудование
    • ลบโค้ดออกเพื่อรองรับสถาปัตยกรรม UniCore ซึ่งพัฒนาขึ้นที่ Microprocessor Center ของมหาวิทยาลัยปักกิ่ง และรวมอยู่ในเคอร์เนล Linux ในปี 2011 สถาปัตยกรรมนี้ไม่ได้รับการบำรุงรักษามาตั้งแต่ปี 2014 และไม่มีการรองรับใน GCC
    • มีการรองรับสถาปัตยกรรม RISC-V แล้ว กิโลวัตต์ (อินเทอร์เฟซ debugfs สำหรับการวิเคราะห์การครอบคลุมโค้ดเคอร์เนล), kmemleak (ระบบตรวจจับหน่วยความจำรั่ว), การป้องกันสแต็ก, เครื่องหมายข้าม และการดำเนินการแบบไร้จุด (การทำงานหลายอย่างพร้อมกันโดยไม่ขึ้นกับสัญญาณจับเวลา)
    • สำหรับสถาปัตยกรรม PowerPC มีการใช้การรองรับคิว Spinlock ซึ่งได้รับการปรับปรุงประสิทธิภาพอย่างมากในสถานการณ์ความขัดแย้งในการล็อค
    • สำหรับสถาปัตยกรรม ARM และ ARM64 กลไกการควบคุมความถี่ของโปรเซสเซอร์จะถูกเปิดใช้งานตามค่าเริ่มต้น ตาราง (cpufreq Governor) ซึ่งใช้ข้อมูลจาก Task Scheduler โดยตรงในการตัดสินใจเปลี่ยนความถี่และสามารถเข้าถึงไดรเวอร์ cpufreq ได้ทันทีเพื่อเปลี่ยนความถี่ได้อย่างรวดเร็ว ปรับพารามิเตอร์การทำงานของ CPU ให้เข้ากับโหลดปัจจุบันได้ทันที
    • ไดรเวอร์ i915 DRM สำหรับกราฟิกการ์ด Intel มีการรองรับชิปที่ใช้สถาปัตยกรรมไมโคร ทะเลสาบจรวด และเพิ่มการสนับสนุนเบื้องต้นสำหรับการ์ดแยก อินเทล Xe DG1.
    • ไดรเวอร์ Amdgpu เพิ่มการรองรับเบื้องต้นสำหรับ AMD GPU Navi 21 (กองทัพเรือบากบั่น) และ Navi 22 (เซียนนา ปลาหมอสี). เพิ่มการรองรับการเข้ารหัสวิดีโอ UVD/VCE และกลไกเร่งการถอดรหัสสำหรับ GPU ของ Southern Islands (Radeon HD 7000)
      เพิ่มคุณสมบัติในการหมุนจอแสดงผล 90, 180 หรือ 270 องศา

      สิ่งที่น่าสนใจคือไดรเวอร์สำหรับ AMD GPU เป็น ไดรเวอร์ที่ใหญ่ที่สุดในเคอร์เนล - มีโค้ดประมาณ 2.71 ล้านบรรทัด ซึ่งคิดเป็นประมาณ 10% ของขนาดเคอร์เนลทั้งหมด (27.81 ล้านบรรทัด) ในเวลาเดียวกัน 1.79 ล้านบรรทัดคิดเป็นไฟล์ส่วนหัวที่สร้างขึ้นโดยอัตโนมัติพร้อมข้อมูลสำหรับการลงทะเบียน GPU และรหัส C คือ 366 บรรทัด (สำหรับการเปรียบเทียบไดรเวอร์ Intel i915 ประกอบด้วย 209 บรรทัดและ Nouveau - 149 บรรทัด)

    • ในไดรเวอร์นูโว เพิ่ม รองรับการตรวจสอบความสมบูรณ์แบบเฟรมต่อเฟรมโดยใช้ ซีอาร์ซี (การตรวจสอบความซ้ำซ้อนแบบวน) ในเอ็นจิ้นการแสดงผล NVIDIA GPU การใช้งานจะขึ้นอยู่กับเอกสารที่จัดทำโดย NVIDIA
    • เพิ่มไดรเวอร์สำหรับแผง LCD: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 และ Xingbangda XBD599
    • รองรับระบบเสียงย่อย ALSA Intel กระแสเงียบ (โหมดพลังงานต่อเนื่องสำหรับอุปกรณ์ HDMI ภายนอกเพื่อลดความล่าช้าเมื่อเริ่มเล่น) และ อุปกรณ์ใหม่ เพื่อควบคุมการส่องสว่างของปุ่มเปิดใช้งานไมโครโฟนและปุ่มปิดเสียง และยังเพิ่มการรองรับอุปกรณ์ใหม่รวมถึงคอนโทรลเลอร์ด้วย ลุงสน 7A1000.
    • เพิ่มการรองรับบอร์ด อุปกรณ์ และแพลตฟอร์ม ARM: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (ใช้ใน Sony Xperia 10, 10 Plus, XA2, XA2 Plus และ XA2 Ultra), Jetson Xavier NX, Amlogic WeTek Core2, Aspeed EthanolX, บอร์ดใหม่ 6 รุ่นที่ใช้ NXP i.MX3011, MikroTik RouterBoard 950, Xiaomi Libra, Microsoft Lumia 5, Sony Xperia Z5, MStar, Microchip Sparx3, Intel Keem Bay, Amazon Alpine v2, เรเนซาส RZ/GXNUMXH.

ในเวลาเดียวกัน มูลนิธิซอฟต์แวร์เสรีลาตินอเมริกา เกิดขึ้น
การเลือก เคอร์เนลฟรี 5.9 - Linux-libre 5.9-gnuปราศจากองค์ประกอบของเฟิร์มแวร์และไดรเวอร์ที่มีส่วนประกอบหรือส่วนของโค้ดที่ไม่ฟรี ซึ่งขอบเขตดังกล่าวถูกจำกัดโดยผู้ผลิต รุ่นใหม่ปิดใช้งานการโหลด blob ในไดรเวอร์สำหรับ WiFi rtw8821c และ SoC MediaTek mt8183 อัปเดตโค้ดการทำความสะอาดหยดใน Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) และไดรเวอร์หน้าจอสัมผัส x86 และระบบย่อย

ที่มา: opennet.ru

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