Bản phát hành nhân Linux 5.12

Sau hai tháng phát triển, Linus Torvalds đã giới thiệu bản phát hành nhân Linux 5.12. Trong số những thay đổi đáng chú ý nhất: hỗ trợ các thiết bị khối được khoanh vùng trong Btrfs, khả năng ánh xạ ID người dùng cho hệ thống tệp, dọn dẹp kiến ​​trúc ARM cũ, chế độ ghi “háo hức” trong NFS, cơ chế LOOKUP_CACHED để xác định đường dẫn tệp từ bộ đệm , hỗ trợ các hướng dẫn nguyên tử trong BPF, hệ thống gỡ lỗi KFENCE để xác định lỗi khi làm việc với bộ nhớ, chế độ thăm dò NAPI chạy trong một luồng nhân riêng biệt trong ngăn xếp mạng, bộ ảo hóa ACRN, khả năng thay đổi mô hình ưu tiên một cách nhanh chóng trong tác vụ lập lịch và hỗ trợ tối ưu hóa LTO khi xây dựng trong Clang.

Phiên bản mới bao gồm 14170 bản sửa lỗi (trong bản phát hành trước 15480) từ các nhà phát triển 1946 (1991), kích thước bản vá là 38 MB (những thay đổi ảnh hưởng đến 12102 (12090) tệp, 538599 (868025) dòng mã đã được thêm vào, 333377 (261456) dòng đã bị xóa). Khoảng 43% tất cả các thay đổi được giới thiệu trong phiên bản 5.12 có liên quan đến trình điều khiển thiết bị, khoảng 17% thay đổi có liên quan đến việc cập nhật mã dành riêng cho kiến ​​trúc phần cứng, 12% liên quan đến ngăn xếp mạng, 5% liên quan đến hệ thống tệp và 4% có liên quan đến các hệ thống con kernel bên trong.

Những đổi mới chính:

  • Hệ thống con đĩa, I/O và hệ thống tệp
    • Khả năng ánh xạ ID người dùng cho các hệ thống tệp được gắn đã được triển khai (bạn có thể ánh xạ các tệp của một người dùng trên phân vùng nước ngoài được gắn với một người dùng khác trên hệ thống hiện tại). Ánh xạ được hỗ trợ cho các hệ thống tệp FAT, ext4 và XFS. Chức năng được đề xuất giúp đơn giản hóa việc chia sẻ tệp giữa những người dùng khác nhau và trên các máy tính khác nhau, bao gồm cả việc ánh xạ sẽ được sử dụng trong cơ chế thư mục chính di động systemd-homed, cho phép người dùng di chuyển thư mục chính của họ sang phương tiện bên ngoài và sử dụng chúng trên các phương tiện khác nhau. máy tính, ánh xạ ID người dùng không khớp. Một ứng dụng hữu ích khác là tổ chức việc cung cấp quyền truy cập chung vào các tệp từ máy chủ bên ngoài mà không thực sự thay đổi dữ liệu về chủ sở hữu tệp trong hệ thống tệp.
    • Các bản vá LOOKUP_CACHED đã được đưa vào kernel, cho phép các hoạt động xác định đường dẫn tệp từ không gian người dùng mà không bị chặn, chỉ dựa trên dữ liệu có sẵn trong bộ đệm. Chế độ LOOKUP_CACHED được kích hoạt trong lệnh gọi openat2() bằng cách chuyển cờ RESOLVE_CACHED, trong đó dữ liệu chỉ được cung cấp từ bộ đệm và nếu việc xác định đường dẫn yêu cầu quyền truy cập vào ổ đĩa thì lỗi EAGAIN sẽ được trả về.
    • Hệ thống tệp Btrfs đã bổ sung hỗ trợ ban đầu cho các thiết bị khối được khoanh vùng (thiết bị trên đĩa từ cứng hoặc SSD NVMe, không gian lưu trữ được chia thành các vùng tạo thành các nhóm khối hoặc khu vực, chỉ cho phép bổ sung dữ liệu tuần tự, cập nhật toàn bộ nhóm khối). Ở chế độ chỉ đọc, hỗ trợ các khối có siêu dữ liệu và dữ liệu nhỏ hơn một trang (trang con) được triển khai.
    • Trong hệ thống tệp F2FS, khả năng chọn thuật toán và mức nén đã được thêm vào. Đã thêm hỗ trợ nén mức cao cho thuật toán LZ4. Đã triển khai tùy chọn gắn checkpoint_merge.
    • Lệnh ioctl mới FS_IOC_READ_VERITY_METADATA đã được triển khai để đọc siêu dữ liệu từ các tệp được bảo vệ bằng fs-verity.
    • Máy khách NFS thực hiện chế độ ghi “háo hức” (write=eager), khi được bật, các thao tác ghi vào tệp sẽ ngay lập tức được chuyển đến máy chủ, bỏ qua bộ đệm trang. Chế độ này cho phép bạn giảm mức tiêu thụ bộ nhớ, cung cấp khả năng nhận thông tin tức thời về việc hết dung lượng trống trong hệ thống tệp và trong một số trường hợp, có thể đạt được hiệu suất tăng lên.
    • Các tùy chọn gắn kết mới đã được thêm vào CIFS (SMB): acregmax để kiểm soát bộ nhớ đệm tệp và acdirmax để kiểm soát bộ nhớ đệm siêu dữ liệu thư mục.
    • Trong XFS, chế độ kiểm tra hạn ngạch đa luồng đã được bật, quá trình thực thi fsync đã được tăng tốc và mã Growfs đã được chuẩn bị để triển khai chức năng giảm kích thước của hệ thống tệp.
  • Dịch vụ bộ nhớ và hệ thống
    • Hệ thống con DTMP (Quản lý nhiệt năng động) đã được thêm vào, cho phép bạn điều chỉnh linh hoạt mức tiêu thụ điện năng của các thiết bị khác nhau dựa trên giới hạn nhiệt độ chung đã đặt.
    • Khả năng xây dựng kernel bằng trình biên dịch Clang bao gồm các tối ưu hóa ở giai đoạn liên kết (LTO, Tối ưu hóa thời gian liên kết) đã được triển khai. Tối ưu hóa LTO khác nhau ở chỗ tính đến trạng thái của tất cả các tệp liên quan đến quá trình xây dựng, trong khi các chế độ tối ưu hóa truyền thống tối ưu hóa từng tệp riêng biệt và không tính đến các điều kiện để gọi các chức năng được xác định trong các tệp khác. Ví dụ: với LTO, có thể triển khai nội tuyến cho các chức năng từ các tệp khác, mã không sử dụng không được đưa vào tệp thực thi, việc kiểm tra loại và tối ưu hóa chung được thực hiện ở cấp dự án nói chung. Hỗ trợ LTO hiện bị giới hạn ở kiến ​​trúc x86 và ARM64.
    • Có thể chọn chế độ ưu tiên (PREEMPT) trong bộ lập lịch tác vụ ở giai đoạn khởi động (preempt=none/voluntary/full) hoặc trong khi làm việc thông qua debugfs (/debug/sched_debug), nếu cài đặt PREEMPT_DYNAMIC được chỉ định khi xây dựng kernel. Trước đây, chế độ đùn chỉ có thể được đặt ở cấp thông số lắp ráp. Thay đổi này cho phép các bản phân phối vận chuyển hạt nhân có bật chế độ PREEMPT, chế độ này cung cấp độ trễ tối thiểu cho máy tính để bàn với chi phí phạt thông lượng nhỏ và nếu cần, sẽ quay trở lại PREEMPT_VOLUNTARY (chế độ trung gian cho máy tính để bàn) hoặc PREEMPT_NONE (cung cấp thông lượng tối đa cho máy chủ) .
    • Hỗ trợ cho các hoạt động nguyên tử BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG và BPF_CMPXCHG đã được thêm vào hệ thống con BPF.
    • Các chương trình BPF có khả năng truy cập dữ liệu trên ngăn xếp bằng cách sử dụng các con trỏ có độ lệch thay đổi. Ví dụ: nếu trước đây bạn chỉ có thể sử dụng chỉ mục phần tử không đổi để truy cập một mảng trên ngăn xếp thì bây giờ bạn có thể sử dụng chỉ mục phần tử không đổi. Việc kiểm soát truy cập chỉ trong phạm vi ranh giới hiện có được thực hiện bởi trình xác minh BPF. Tính năng này chỉ khả dụng cho các chương trình đặc quyền do lo ngại về việc khai thác các lỗ hổng thực thi mã đầu cơ.
    • Đã thêm khả năng đính kèm các chương trình BPF vào các điểm theo dõi trần không liên quan đến các sự kiện theo dõi hiển thị trong không gian người dùng (việc bảo toàn ABI không được đảm bảo cho các điểm theo dõi đó).
    • Hỗ trợ bus CXL 2.0 (Compute Express Link) đã được triển khai, được sử dụng để tổ chức tương tác tốc độ cao giữa CPU và các thiết bị bộ nhớ (cho phép bạn sử dụng các thiết bị bộ nhớ ngoài như một phần của RAM hoặc bộ nhớ vĩnh viễn, như thể bộ nhớ này được kết nối thông qua bộ điều khiển bộ nhớ tiêu chuẩn trong CPU).
    • Đã thêm trình điều khiển nvmem để truy xuất dữ liệu từ các vùng bộ nhớ dành riêng cho chương trình cơ sở mà Linux không thể truy cập trực tiếp (ví dụ: bộ nhớ EEPROM chỉ có thể truy cập vật lý đối với chương trình cơ sở hoặc dữ liệu chỉ có thể truy cập được trong giai đoạn khởi động sớm).
    • Hỗ trợ cho hệ thống lập hồ sơ “oprofile” đã bị loại bỏ, hệ thống này không được sử dụng rộng rãi và được thay thế bằng cơ chế hoàn thiện hiện đại hơn.
    • Giao diện I/O không đồng bộ io_uring cung cấp khả năng tích hợp với các nhóm kiểm soát việc sử dụng bộ nhớ.
    • Kiến trúc RISC-V hỗ trợ các hệ thống NUMA, cũng như các cơ chế kprobes và uprobes.
    • Đã thêm khả năng sử dụng lệnh gọi hệ thống kcmp() bất kể chức năng của ảnh chụp nhanh trạng thái quy trình (điểm kiểm tra/khôi phục).
    • Các macro EXPORT_UNUSED_SYMBOL() và EXPORT_SYMBOL_GPL_FUTURE() không được sử dụng trong thực tế trong nhiều năm đã bị xóa.
  • Ảo hóa và bảo mật
    • Đã thêm cơ chế bảo vệ KFence (Hàng rào điện hạt nhân), giúp phát hiện lỗi khi làm việc với bộ nhớ, chẳng hạn như tràn bộ đệm và truy cập sau khi giải phóng bộ nhớ. Không giống như cơ chế gỡ lỗi KASAN, hệ thống con KFence được đặc trưng bởi tốc độ hoạt động cao và chi phí hoạt động thấp, cho phép bạn phát hiện các lỗi bộ nhớ chỉ xuất hiện trên hệ thống đang làm việc hoặc trong quá trình hoạt động lâu dài.
    • Đã thêm hỗ trợ cho trình ảo hóa ACRN, được viết nhằm mục đích sẵn sàng thực hiện các tác vụ theo thời gian thực và sự phù hợp để sử dụng trong các hệ thống quan trọng. ACRN cung cấp chi phí tối thiểu, đảm bảo độ trễ thấp và khả năng đáp ứng đầy đủ khi tương tác với thiết bị. Hỗ trợ ảo hóa tài nguyên CPU, I/O, hệ thống con mạng, hoạt động đồ họa và âm thanh. ACRN có thể được sử dụng để chạy nhiều máy ảo biệt lập trong bộ điều khiển điện tử, bảng điều khiển, hệ thống thông tin ô tô, thiết bị IoT tiêu dùng và công nghệ nhúng khác. ACRN hỗ trợ hai loại hệ thống khách - VM dịch vụ đặc quyền, được sử dụng để quản lý tài nguyên hệ thống (CPU, bộ nhớ, I/O, v.v.) và VM người dùng tùy chỉnh, có thể chạy các bản phân phối Linux, Android và Windows.
    • Trong hệ thống con IMA (Kiến trúc đo lường tính toàn vẹn), duy trì cơ sở dữ liệu băm để kiểm tra tính toàn vẹn của tệp và siêu dữ liệu liên quan, giờ đây có thể kiểm tra tính toàn vẹn của dữ liệu của chính hạt nhân, chẳng hạn như để theo dõi các thay đổi trong quy tắc SELinux .
    • Khả năng chặn siêu giám sát Xen và chuyển tiếp chúng đến trình mô phỏng đang chạy trong không gian người dùng đã được thêm vào bộ ảo hóa KVM.
    • Đã thêm khả năng sử dụng Linux làm môi trường gốc cho bộ ảo hóa Hyper-V. Môi trường gốc có quyền truy cập trực tiếp vào phần cứng và được sử dụng để chạy các hệ thống khách (tương tự như Dom0 trong Xen). Cho đến nay, Hyper-V (Microsoft Hypervisor) chỉ hỗ trợ Linux trong môi trường khách, nhưng bản thân hypervisor được điều khiển từ môi trường dựa trên Windows.
    • Đã thêm hỗ trợ mã hóa nội tuyến cho thẻ eMMC, cho phép bạn sử dụng các cơ chế mã hóa được tích hợp trong bộ điều khiển ổ đĩa để mã hóa và giải mã I/O một cách minh bạch.
    • Hỗ trợ cho các hàm băm RIPE-MD 128/256/320 và Tiger 128/160/192, không được sử dụng trong lõi, cũng như mật mã luồng Salsa20, được thay thế bằng thuật toán ChaCha20, đã bị xóa khỏi hệ thống con mật mã. Thuật toán blake2 đã được cập nhật để triển khai blake2.
  • Hệ thống con mạng
    • Đã thêm khả năng di chuyển trình xử lý bỏ phiếu NAPI cho các thiết bị mạng sang một luồng nhân riêng biệt, cho phép cải thiện hiệu suất đối với một số loại khối lượng công việc. Trước đây, việc bỏ phiếu được thực hiện trong bối cảnh softirq và không nằm trong bộ lập lịch tác vụ, điều này gây khó khăn cho việc thực hiện tối ưu hóa chi tiết để đạt được hiệu suất tối đa. Việc thực thi trong một luồng nhân riêng biệt cho phép quan sát trình xử lý thăm dò từ không gian người dùng, được gắn vào các lõi CPU riêng lẻ và được tính đến khi lên lịch chuyển đổi tác vụ. Để kích hoạt chế độ mới trong sysfs, tham số /sys/class/net//threaded được đề xuất.
    • Tích hợp vào lõi của MPTCP (MultiPath TCP), một phần mở rộng của giao thức TCP để tổ chức hoạt động của kết nối TCP với việc phân phối các gói đồng thời dọc theo một số tuyến đường thông qua các giao diện mạng khác nhau được liên kết với các địa chỉ IP khác nhau. Bản phát hành mới bổ sung khả năng chỉ định mức độ ưu tiên cho một số luồng nhất định, chẳng hạn như cho phép tổ chức công việc của các luồng dự phòng chỉ bật nếu có vấn đề với luồng chính.
    • IGMPv3 bổ sung hỗ trợ cho cơ chế EHT (Theo dõi máy chủ rõ ràng).
    • Công cụ lọc gói của Netfilter cung cấp khả năng sở hữu một số bảng nhất định để giành quyền kiểm soát độc quyền (ví dụ: quy trình tường lửa nền có thể chiếm quyền sở hữu một số bảng nhất định, ngăn chặn bất kỳ ai khác can thiệp vào chúng).
  • Оборудование
    • Chúng tôi đã dọn sạch các nền tảng ARM lỗi thời và không được bảo trì. Mã cho các nền tảng efm32, picoxcell, prima2, tango, u300, zx và c6x, cũng như các trình điều khiển liên quan của chúng, đã bị xóa.
    • Trình điều khiển amdgpu cung cấp khả năng ép xung thẻ (OverDrive) dựa trên GPU Sienna Cichlid (Navi 22, Radeon RX 6xxx). Đã thêm hỗ trợ cho định dạng pixel FP16 cho DCE (công cụ điều khiển hiển thị) từ thế hệ thứ 8 đến thế hệ thứ 11. Đối với GPU Navy Flounder (Navi 21) và APU Van Gogh, khả năng reset GPU đã được triển khai.
    • Trình điều khiển i915 dành cho card đồ họa Intel triển khai tham số i915.mitigations để vô hiệu hóa các cơ chế cách ly và bảo vệ nhằm cải thiện hiệu suất. Đối với các chip bắt đầu từ Tiger Lake, bao gồm hỗ trợ cơ chế VRR (Làm mới tốc độ thay đổi), cho phép bạn thay đổi tốc độ làm mới màn hình một cách thích ứng để đảm bảo độ mượt mà và không có khoảng trống khi chơi game. Hỗ trợ công nghệ Intel Clear Color được bao gồm để cải thiện độ chính xác của màu sắc. Đã thêm hỗ trợ cho DP-HDMI 2.1. Khả năng kiểm soát đèn nền của tấm eDP đã được triển khai. Đối với GPU Gen9 có hỗ trợ LSPCON (Bộ chuyển đổi cấp độ và Bộ chuyển đổi giao thức), hỗ trợ HDR được bật.
    • Trình điều khiển mới bổ sung hỗ trợ ban đầu cho GPU NVIDIA dựa trên kiến ​​trúc GA100 (Ampere).
    • Trình điều khiển msm bổ sung hỗ trợ cho GPU Adreno 508, 509 và 512 được sử dụng trong chip SDM (Snapdragon) 630, 636 và 660.
    • Đã thêm hỗ trợ cho card âm thanh Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s và Pioneer DJM-750. Đã thêm hỗ trợ cho hệ thống con âm thanh Intel Alder Lake PCH-P. Hỗ trợ mô phỏng phần mềm kết nối và ngắt kết nối đầu nối âm thanh đã được triển khai để xử lý gỡ lỗi trong không gian người dùng.
    • Đã thêm hỗ trợ cho máy chơi game Nintendo 64 được sản xuất từ ​​​​năm 1996 đến 2003 (những nỗ lực trước đây để chuyển Linux sang Nintendo 64 đã không được hoàn thành và được phân loại là Vaporware). Động lực tạo ra một cổng mới cho một nền tảng lỗi thời đã không được phát hành gần hai mươi năm là mong muốn kích thích sự phát triển của trình giả lập và đơn giản hóa việc chuyển trò chơi.
    • Đã thêm trình điều khiển cho bộ điều khiển trò chơi Sony PlayStation 5 DualSense.
    • Đã thêm hỗ trợ cho bo mạch, thiết bị và nền tảng ARM: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
    • Đã thêm hỗ trợ cho điện thoại thông minh Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS ZenFone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070.
    • Đã thêm trình điều khiển bcm-vk cho bo mạch tăng tốc Broadcom VK (ví dụ: bo mạch Valkyrie và Viper PCIe), có thể được sử dụng để giảm tải các hoạt động xử lý âm thanh, video và hình ảnh cũng như các hoạt động liên quan đến mã hóa sang một thiết bị riêng biệt.
    • Đã thêm hỗ trợ cho nền tảng Lenovo IdeaPad với khả năng kiểm soát sạc liên tục và đèn nền bàn phím. Ngoài ra còn được cung cấp hỗ trợ cho cấu hình ACPI của nền tảng ThinkPad với khả năng kiểm soát các chế độ tiêu thụ điện năng. Đã thêm trình điều khiển cho hệ thống con Lenovo ThinkPad X1 Tablet Gen 2 HID.
    • Đã thêm trình điều khiển ov5647 hỗ trợ mô-đun máy ảnh cho Raspberry Pi.
    • Đã thêm hỗ trợ cho bo mạch RISC-V SoC FU740 và HiFive Unleashed. Trình điều khiển mới cho chip Kendryte K210 cũng đã được thêm vào.

Nguồn: opennet.ru

Thêm một lời nhận xét