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

Sau hai tháng phát triển, Linus Torvalds đã giới thiệu bản phát hành nhân Linux 5.11. Trong số những thay đổi đáng chú ý nhất: hỗ trợ các vùng Intel SGX, cơ chế mới để chặn các cuộc gọi hệ thống, bus phụ ảo, lệnh cấm lắp ráp các mô-đun mà không có MODULE_LICENSE(), chế độ lọc nhanh các cuộc gọi hệ thống trong seccomp, chấm dứt hỗ trợ cho kiến trúc ia64, chuyển giao công nghệ WiMAX sang nhánh “dàn dựng”, khả năng đóng gói SCTP trong UDP.

Phiên bản mới bao gồm 15480 bản sửa lỗi từ 1991 nhà phát triển, kích thước bản vá là 72 MB (các thay đổi ảnh hưởng đến 12090 tệp, 868025 dòng mã đã được thêm vào, 261456 dòng đã bị xóa). Khoảng 46% tất cả các thay đổi được giới thiệu trong phiên bản 5.11 có liên quan đến trình điều khiển thiết bị, khoảng 16% 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, 13% liên quan đến ngăn xếp mạng, 3% 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
    • Một số tùy chọn gắn đã được thêm vào Btrfs để sử dụng khi khôi phục dữ liệu từ hệ thống tệp bị hỏng: “rescue=ignorebadroots” để gắn, mặc dù một số cây gốc bị hư hỏng (phạm vi, uuid, di chuyển dữ liệu, thiết bị, csum, dung lượng trống), “ Rescue=ignoredatacsums” để vô hiệu hóa việc kiểm tra tổng kiểm tra dữ liệu và "rescue=all" để kích hoạt đồng thời các chế độ 'ignorebadroots', 'ignoredatacsums' và 'nologreplay'. Tùy chọn gắn kết "inode_cache", trước đây không được dùng nữa, đã bị ngừng sử dụng. Mã đã được chuẩn bị để triển khai hỗ trợ cho các khối có siêu dữ liệu và dữ liệu nhỏ hơn kích thước trang (PAGE_SIZE), cũng như hỗ trợ chế độ phân bổ không gian được khoanh vùng. Các yêu cầu không có bộ đệm (Direct IO) đã được chuyển sang cơ sở hạ tầng iomap. Hiệu suất của một số thao tác đã được tối ưu hóa, trong một số trường hợp, khả năng tăng tốc có thể đạt tới hàng chục phần trăm.
    • XFS triển khai cờ "cần sửa chữa", báo hiệu nhu cầu sửa chữa. Khi cờ này được đặt, hệ thống tệp không thể được gắn kết cho đến khi cờ được đặt lại bởi tiện ích xfs_repair.
    • Ext4 chỉ cung cấp các bản sửa lỗi và tối ưu hóa cũng như dọn dẹp mã.
    • Cho phép xuất lại các hệ thống tệp được gắn qua NFS (tức là một phân vùng được gắn qua NFS hiện có thể được xuất qua NFS và được sử dụng làm bộ đệm trung gian).
    • Lệnh gọi hệ thống close_range(), cho phép một quá trình đóng toàn bộ phạm vi bộ mô tả tệp đang mở cùng một lúc, đã thêm tùy chọn CLOSE_RANGE_CLOEXEC để đóng bộ mô tả ở chế độ close-on-exec.
    • Hệ thống tệp F2FS bổ sung các lệnh gọi ioctl() mới để cho phép kiểm soát không gian người dùng đối với những tệp nào được lưu trữ ở dạng nén. Đã thêm tùy chọn gắn kết "compress_mode=" để chọn đặt trình xử lý nén ở phía kernel hay trong không gian người dùng.
    • Cung cấp khả năng gắn Overlayfs bằng các quy trình không có đặc quyền bằng cách sử dụng không gian tên người dùng riêng. Để xác minh việc tuân thủ việc triển khai mô hình bảo mật, việc kiểm tra mã đầy đủ đã được thực hiện. Overlayfs cũng bổ sung thêm khả năng chạy bằng cách sử dụng các bản sao của hình ảnh hệ thống tệp bằng cách tùy chọn tắt tính năng kiểm tra UUID.
    • Hệ thống tệp Ceph đã thêm hỗ trợ cho giao thức msgr2.1, cho phép sử dụng thuật toán AES-GCM khi truyền dữ liệu ở dạng được mã hóa.
    • Mô-đun dm-multipath triển khai khả năng tính đến mối quan hệ của CPU (“Mối quan hệ IO”) khi chọn tuyến cho các yêu cầu I/O.
  • Dịch vụ bộ nhớ và hệ thống
    • Một cơ chế chặn cuộc gọi hệ thống mới đã được thêm vào, dựa trên prctl(), cho phép bạn tạo các ngoại lệ từ không gian người dùng khi truy cập một cuộc gọi hệ thống cụ thể và mô phỏng việc thực thi nó. Chức năng này được yêu cầu trong Wine và Proton để mô phỏng các lệnh gọi hệ thống Windows, điều này cần thiết để đảm bảo khả năng tương thích với các trò chơi và chương trình thực hiện trực tiếp các lệnh gọi hệ thống bỏ qua API Windows (ví dụ: để bảo vệ khỏi việc sử dụng trái phép).
    • Lệnh gọi hệ thống userfaultfd(), được thiết kế để xử lý lỗi trang (truy cập vào các trang bộ nhớ chưa được phân bổ) trong không gian người dùng, giờ đây có khả năng vô hiệu hóa việc xử lý ngoại lệ xảy ra ở cấp kernel để khiến việc khai thác một số lỗ hổng nhất định trở nên khó khăn hơn.
    • Hệ thống con BPF đã bổ sung hỗ trợ cho việc lưu trữ cục bộ tác vụ, cung cấp liên kết dữ liệu với một trình xử lý BPF cụ thể.
    • Việc tính toán mức tiêu thụ bộ nhớ của các chương trình BPF đã được thiết kế lại hoàn toàn - bộ điều khiển cgroup đã được đề xuất thay vì memlock rlimit để quản lý việc sử dụng bộ nhớ trong các đối tượng BPF.
    • Cơ chế BTF (Định dạng loại BPF), cung cấp thông tin kiểm tra loại trong mã giả BPF, cung cấp hỗ trợ cho các mô-đun hạt nhân.
    • Đã thêm hỗ trợ cho lệnh gọi hệ thống tắt máy(), đổi tên2() và hủy liên kết() vào giao diện I/O không đồng bộ io_uring. Khi gọi io_uring_enter(), khả năng chỉ định thời gian chờ đã được thêm vào (bạn có thể kiểm tra hỗ trợ cho đối số để chỉ định thời gian chờ bằng cờ IORING_FEAT_EXT_ARG).
    • Kiến trúc ia64 được sử dụng trong bộ xử lý Intel Itanium đã được chuyển sang danh mục mồ côi, điều đó có nghĩa là quá trình thử nghiệm đã chấm dứt. Hewlett Packard Enterprise đã ngừng nhận đơn đặt hàng thiết bị Itanium mới và Intel cũng đã làm như vậy vào năm ngoái.
    • Hỗ trợ cho các hệ thống dựa trên kiến ​​trúc MicroBlaze không bao gồm đơn vị quản lý bộ nhớ (MMU) đã bị ngừng. Những hệ thống như vậy đã lâu không được nhìn thấy trong cuộc sống hàng ngày.
    • Đối với kiến ​​trúc MIPS, hỗ trợ kiểm tra phạm vi mã đã được thêm bằng tiện ích gcov.
    • Đã thêm hỗ trợ cho bus phụ ảo để giao tiếp với các thiết bị đa chức năng kết hợp chức năng yêu cầu các trình điều khiển khác nhau (ví dụ: card mạng có hỗ trợ Ethernet và RDMA). Bus có thể được sử dụng để gán trình điều khiển chính và phụ cho thiết bị, trong trường hợp việc sử dụng hệ thống con MFD (Thiết bị đa chức năng) có vấn đề.
    • Đối với kiến ​​trúc RISC-V, hỗ trợ đã được thêm vào cho hệ thống phân bổ bộ nhớ CMA (Bộ cấp phát bộ nhớ liền kề), được tối ưu hóa để phân bổ các vùng bộ nhớ liền kề lớn bằng cách sử dụng kỹ thuật di chuyển trang bộ nhớ. Đối với RISC-V, các công cụ cũng được triển khai để hạn chế quyền truy cập vào /dev/mem và tính đến thời gian xử lý gián đoạn.
    • Đối với hệ thống ARM 32-bit, công cụ gỡ lỗi KASan (Kernel address Khử trùng) đã được thêm vào, giúp xác định lỗi khi làm việc với bộ nhớ. Đối với ARM 64-bit, việc triển khai KASan đã được chuyển đổi để sử dụng thẻ MTE (MemTag).
    • Đã thêm lệnh gọi hệ thống epoll_pwait2() để cho phép hết thời gian chờ với độ chính xác nano giây (cuộc gọi epoll_wait xử lý mili giây).
    • Hệ thống xây dựng hiện hiển thị lỗi khi cố gắng xây dựng các mô-đun hạt nhân có thể tải trong đó giấy phép mã không được xác định bằng macro MODULE_LICENSE(). Từ giờ trở đi, việc sử dụng macro EXPORT_SYMBOL() cho các hàm tĩnh cũng sẽ gây ra lỗi xây dựng.
    • Đã thêm hỗ trợ để ánh xạ các đối tượng GEM từ bộ nhớ được sử dụng cho I/O, giúp tăng tốc độ làm việc với bộ đệm khung trên một số kiến ​​trúc.
    • Kconfig đã bỏ hỗ trợ cho Qt4 (trong khi vẫn duy trì hỗ trợ cho Qt5, GTK và Ncurses).
  • Ảo hóa và bảo mật
    • Hỗ trợ cho chế độ phản hồi nhanh đã được thêm vào lệnh gọi hệ thống seccomp(), cho phép bạn xác định rất nhanh liệu một lệnh gọi hệ thống nhất định được cho phép hay bị cấm dựa trên bitmap hành động liên tục được đính kèm với quy trình, không yêu cầu chạy một trình xử lý BPF.
    • Các thành phần hạt nhân tích hợp để tạo và quản lý các vùng dựa trên công nghệ Intel SGX (Software Guard eXtensions), cho phép các ứng dụng thực thi mã trong các vùng bộ nhớ được mã hóa riêng biệt mà phần còn lại của hệ thống có quyền truy cập hạn chế.
    • Là một phần của sáng kiến ​​nhằm hạn chế quyền truy cập từ không gian người dùng vào MSR (thanh ghi dành riêng cho kiểu máy), ghi vào thanh ghi MSR_IA32_ENERGY_PERF_BIAS, cho phép bạn thay đổi chế độ tiết kiệm năng lượng của bộ xử lý (“bình thường”, “hiệu suất”, “tiết kiệm năng lượng”) , bị cấm.
    • Khả năng vô hiệu hóa việc di chuyển các tác vụ có mức độ ưu tiên cao giữa các CPU đã được chuyển từ nhánh kernel-rt cho các hệ thống thời gian thực.
    • Đối với hệ thống ARM64, khả năng sử dụng thẻ MTE (MemTag, Tiện ích mở rộng gắn thẻ bộ nhớ) cho các địa chỉ bộ nhớ xử lý tín hiệu đã được thêm vào. Việc sử dụng MTE được kích hoạt bằng cách chỉ định tùy chọn SA_EXPOSE_TAGBITS trong sigaction() và cho phép bạn kiểm tra việc sử dụng đúng con trỏ để chặn việc khai thác các lỗ hổng do truy cập vào các khối bộ nhớ đã được giải phóng, tràn bộ đệm, truy cập trước khi khởi tạo và sử dụng bên ngoài Ngữ cảnh hiện tại.
    • Đã thêm tham số "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING", cho phép hệ thống con dm-verity kiểm tra chữ ký băm của chứng chỉ được đặt trong khóa phụ. Trong thực tế, thiết lập cho phép bạn xác minh không chỉ các chứng chỉ được tích hợp trong kernel mà còn cả các chứng chỉ được tải trong quá trình hoạt động, điều này giúp bạn có thể cập nhật chứng chỉ mà không cần cập nhật toàn bộ kernel.
    • Chế độ người dùng Linux đã bổ sung hỗ trợ cho chế độ tạm dừng ở chế độ không hoạt động, cho phép bạn đóng băng môi trường và sử dụng tín hiệu SIGUSR1 để đánh thức khỏi chế độ ngủ.
    • Cơ chế virtio-mem, cho phép bạn cắm nóng và ngắt kết nối bộ nhớ với máy ảo, đã bổ sung hỗ trợ cho Chế độ khối lớn (BBM), cho phép truyền hoặc lấy bộ nhớ theo khối lớn hơn kích thước của bộ nhớ kernel khối, cần thiết để tối ưu hóa VFIO trong QEMU.
    • Hỗ trợ cho mật mã CHACHA20-POLY1305 đã được thêm vào quá trình triển khai kernel của TLS.
  • Hệ thống con mạng
    • Đối với 802.1Q (VLAN), cơ chế quản lý lỗi kết nối (CFM, Connectivity Fault Management) đã được triển khai, cho phép bạn xác định, xác minh và cách ly các lỗi trong mạng có cầu nối ảo (Mạng cầu nối ảo). Ví dụ: CFM có thể được sử dụng để cô lập các sự cố trong mạng trải rộng trên nhiều tổ chức độc lập mà nhân viên của họ chỉ có quyền truy cập vào thiết bị của riêng họ.
    • Đã thêm hỗ trợ đóng gói các gói giao thức SCTP trong các gói UDP (RFC 6951), cho phép bạn sử dụng SCTP trên các mạng có trình dịch địa chỉ cũ không hỗ trợ trực tiếp SCTP, cũng như triển khai SCTP trên các hệ thống không cung cấp quyền truy cập trực tiếp vào IP lớp.
    • Việc triển khai công nghệ WiMAX đã được chuyển sang giai đoạn thử nghiệm và dự kiến ​​sẽ bị loại bỏ trong tương lai nếu không có người dùng nào yêu cầu WiMAX. WiMAX không còn được sử dụng trong các mạng công cộng và trong nhân trình điều khiển duy nhất có thể sử dụng WiMAX là trình điều khiển Intel 2400m đã lỗi thời. Hỗ trợ WiMAX đã ngừng hỗ trợ trong bộ cấu hình mạng NetworkManager vào năm 2015. Hiện nay, WiMax gần như bị thay thế hoàn toàn bởi các công nghệ như LTE, HSPA+ và Wi-Fi 802.11n.
    • Công việc đã được thực hiện để tối ưu hóa hiệu suất xử lý lưu lượng TCP đến ở chế độ zerocopy, tức là. mà không cần sao chép bổ sung vào bộ đệm mới. Đối với lưu lượng truy cập cỡ trung bình, bao gồm hàng chục hoặc vài trăm kilobyte dữ liệu, sử dụng zerocopy thay vì recvmsg() hiệu quả hơn rõ rệt. Ví dụ: những thay đổi được triển khai giúp tăng hiệu quả xử lý lưu lượng kiểu RPC với các tin nhắn 32 KB khi sử dụng zerocopy lên 60-70%.
    • Đã thêm các lệnh gọi ioctl() mới để tạo cầu nối mạng trải rộng trên nhiều liên kết PPP. Khả năng được đề xuất cho phép các khung di chuyển từ kênh này sang kênh khác, ví dụ từ phiên PPPoE sang phiên PPPoL2TP.
    • 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 giới thiệu hỗ trợ cho tùy chọn ADD_ADDR để quảng cáo các địa chỉ IP có sẵn có thể được kết nối khi thêm luồng mới vào kết nối MPTCP hiện có.
    • Đã thêm khả năng định cấu hình hành động khi vượt quá ngân sách kiểm tra kết nối (bỏ phiếu bận). Chế độ SO_BUSY_POLL có sẵn trước đó có nghĩa là chuyển sang softirq khi hết ngân sách. Đối với các ứng dụng cần tiếp tục sử dụng tính năng bỏ phiếu, một tùy chọn mới SO_PREFER_BUSY_POLL được đề xuất.
    • IPv6 triển khai hỗ trợ cho các chế độ SRv6 End.DT4 và End.DT6, được sử dụng để tạo các thiết bị VPN IPv4 L3 và VRF (Định tuyến và chuyển tiếp ảo) nhiều người dùng.
    • Netfilter đã hợp nhất việc triển khai các biểu thức tập hợp, giúp có thể chỉ định nhiều biểu thức cho từng thành phần của danh sách tập hợp.
    • Các API đã được thêm vào ngăn xếp không dây 802.11 để định cấu hình giới hạn nguồn SAR, cũng như các thông số AE PWE và HE MCS. Trình điều khiển iwlwifi Intel đã bổ sung hỗ trợ cho dải tần 6GHz (Băng tần cực cao). Trình điều khiển Qualcomm Ath11k đã bổ sung hỗ trợ cho công nghệ FILS (Thiết lập liên kết ban đầu nhanh, được tiêu chuẩn hóa theo IEEE 802.11ai), cho phép bạn loại bỏ tình trạng chậm trễ khi chuyển vùng trong quá trình di chuyển từ điểm truy cập này sang điểm truy cập khác.
  • Оборудование
    • Trình điều khiển amdgpu cung cấp hỗ trợ cho APU AMD "Green Sardine" (Ryzen 5000) và GPU "Dimgrey Cavefish" (Navi 2), cũng như hỗ trợ ban đầu cho APU AMD Van Gogh với lõi Zen 2 và GPU RDNA 2 (Navi 2). Đã thêm hỗ trợ cho số nhận dạng APU Renoir mới (dựa trên CPU Zen 2 và GPU Vega).
    • Trình điều khiển i915 cho thẻ video Intel hỗ trợ công nghệ IS (Chia tỷ lệ số nguyên) với việc triển khai bộ lọc để tăng tỷ lệ có tính đến trạng thái của các pixel lân cận (Nội suy lân cận gần nhất) để xác định màu của các pixel bị thiếu. Hỗ trợ cho thẻ Intel DG1 rời đã được mở rộng. Hỗ trợ cho công nghệ “Big Joiner” đã được triển khai, công nghệ này đã có từ chip Ice Lake / Gen11 và cho phép sử dụng một bộ chuyển mã để xử lý hai luồng, chẳng hạn như để xuất ra màn hình 8K thông qua một DisplayPort. Đã thêm chế độ chuyển đổi không đồng bộ giữa hai bộ đệm trong bộ nhớ video (lật không đồng bộ).
    • Trình điều khiển mới đã bổ sung hỗ trợ ban đầu cho GPU NVIDIA dựa trên vi kiến ​​trúc Ampere (GA100, GeForce RTX 30xx), cho đến nay chỉ giới hạn ở các công cụ điều khiển chế độ video.
    • Đã thêm hỗ trợ cho giao thức 3WIRE được sử dụng trong màn hình LCD. Đã thêm hỗ trợ cho các tấm novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 và ABT Y030XX067A 3.0. Riêng biệt, chúng ta có thể lưu ý đến sự hỗ trợ cho bảng điều khiển của điện thoại thông minh OnePlus 6 và 6T, giúp tổ chức tải hạt nhân chưa sửa đổi trên thiết bị.
    • Đã thêm hỗ trợ cho bộ điều khiển máy chủ USB4 rời rạc đầu tiên của Intel, Maple Ridge.
    • Đã thêm hỗ trợ cho Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI và XCVR, codec âm thanh Realtek RT715 và Qualcomm SM8250.
    • Đã thêm hỗ trợ cho bo mạch, thiết bị và nền tảng ARM: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2M, Nuvoton NPCM730, Marvell Armada 382, ​​​​Mikrotik dựa trên Marvell Prestera 98DX3236, máy chủ có Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, “Trogdor” Chromebook, Kobol Helios64, Engicam PX30.Core.
    • Hỗ trợ tích hợp cho máy chơi game Ouya dựa trên NVIDIA Tegra 3.

Đồng thời, Tổ chức Phần mềm Tự do Châu Mỹ Latinh đã hình thành một phiên bản hạt nhân 5.11 hoàn toàn miễn phí - Linux-libre 5.11-gnu, loại bỏ các thành phần của chương trình cơ sở và trình điều khiển chứa các thành phần hoặc đoạn mã không tự do, phạm vi của chúng bị giới hạn bởi nhà sản xuất. Bản phát hành mới dọn sạch trình điều khiển cho qat_4xxx (crypto), lt9611uxcm (cầu dsi/hdmi), ccs/smia++ (cảm biến), ath11k_pci, bộ thu phát âm thanh nxp và bộ điều khiển mhi pci. Đã cập nhật mã dọn dẹp blob trong trình điều khiển và hệ thống con amdgpu, btqca, btrtl, btusb, i915 csr. Đã tắt các đốm màu mới trong m3 rproc, đồng hồ ptp idt82p33 và Qualcomm arm64.

Nguồn: opennet.ru

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