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

Sau hai tháng phát triển, Linus Torvalds đã giới thiệu bản phát hành nhân Linux 5.19. Trong số những thay đổi đáng chú ý nhất: hỗ trợ kiến ​​trúc bộ xử lý LoongArch, tích hợp các bản vá "BIG TCP", chế độ theo yêu cầu trong fscache, loại bỏ mã để hỗ trợ định dạng a.out, khả năng sử dụng ZSTD để nén chương trình cơ sở, giao diện cho quản lý việc loại bỏ bộ nhớ khỏi không gian người dùng, tăng độ tin cậy và hiệu suất của trình tạo số giả ngẫu nhiên, hỗ trợ Intel IFS (Quét tại hiện trường), AMD SEV-SNP (Phân trang lồng nhau an toàn), Intel TDX (Tiện ích mở rộng tên miền đáng tin cậy) và ARM Tiện ích mở rộng SME (Mở rộng ma trận có thể mở rộng).

Trong thông báo, Linus cho biết rất có thể bản phát hành kernel tiếp theo sẽ được đánh số 6.0, do nhánh 5.x đã tích lũy đủ số bản phát hành để thay đổi số đầu tiên trong số phiên bản. Việc thay đổi cách đánh số được thực hiện vì lý do thẩm mỹ và là một bước chính thức nhằm giảm bớt sự khó chịu do tích tụ một số lượng lớn các vấn đề trong bộ truyện.

Linus cũng đề cập rằng anh đã sử dụng máy tính xách tay Apple dựa trên kiến ​​trúc ARM64 (Apple Silicon) với môi trường Linux dựa trên bản phân phối Asahi Linux để tạo ra bản phát hành. Đây không phải là máy trạm chính của Linus, nhưng anh ấy đã sử dụng nền tảng này để kiểm tra tính phù hợp của nó đối với hoạt động của kernel và để đảm bảo rằng anh ấy có thể tạo ra các bản phát hành kernel khi đang di chuyển với một chiếc máy tính xách tay nhẹ trên tay. Trước đây, nhiều năm trước, Linus đã có kinh nghiệm sử dụng thiết bị của Apple để phát triển - anh từng sử dụng PC dựa trên CPU ppc970 và máy tính xách tay Macbook Air.

Phiên bản mới bao gồm 16401 bản sửa lỗi từ 2190 nhà phát triển (trong bản phát hành trước có 16206 bản sửa lỗi từ 2127 nhà phát triển), kích thước bản vá là 90 MB (các thay đổi ảnh hưởng đến 13847 tệp, 1149456 dòng mã đã được thêm vào, 349177 dòng đã bị xóa). Khoảng 39% tất cả các thay đổi được giới thiệu trong phiên bản 5.19 có liên quan đến trình điều khiển thiết bị, khoảng 21% 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, 11% liên quan đến ngăn xếp mạng, 4% liên quan đến hệ thống tệp và 3% có liên quan đến các hệ thống con kernel bên trong.

Những cải tiến chính trong kernel 5.19:

  • Hệ thống con đĩa, I/O và hệ thống tệp
    • Hệ thống tệp EROFS (Hệ thống tệp chỉ đọc nâng cao), nhằm mục đích sử dụng trên các phân vùng chỉ đọc, đã được chuyển đổi để sử dụng hệ thống con fscache, cung cấp bộ nhớ đệm dữ liệu. Thay đổi này đã cải thiện đáng kể hiệu suất của các hệ thống trong đó một số lượng lớn vùng chứa được khởi chạy từ hình ảnh dựa trên EROFS.
    • Chế độ đọc theo yêu cầu đã được thêm vào hệ thống con fscache, được sử dụng để tối ưu hóa EROFS. Chế độ mới cho phép bạn tổ chức đọc bộ đệm từ hình ảnh FS nằm trong hệ thống cục bộ. Ngược lại với chế độ hoạt động có sẵn ban đầu, tập trung vào bộ nhớ đệm trong hệ thống tệp cục bộ của dữ liệu được truyền qua hệ thống tệp mạng, chế độ “theo yêu cầu” giao các chức năng truy xuất dữ liệu và ghi dữ liệu vào bộ đệm vào một bộ đệm riêng biệt. quá trình nền chạy trong không gian người dùng.
    • XFS cung cấp khả năng lưu trữ hàng tỷ thuộc tính mở rộng trong i-node. Số lượng phạm vi tối đa cho một tệp đã tăng từ 4 tỷ lên 247. Một chế độ đã được triển khai để cập nhật nguyên tử một số thuộc tính tệp mở rộng cùng một lúc.
    • Hệ thống tệp Btrfs đã tối ưu hóa công việc với các khóa, cho phép tăng hiệu suất khoảng 7% khi ghi trực tiếp ở chế độ hiện tại. Hiệu suất hoạt động ở chế độ NOCOW (không có tính năng sao chép khi ghi) tăng khoảng 3%. Tải trên bộ đệm trang khi chạy lệnh “gửi” đã giảm. Kích thước tối thiểu của các trang con đã giảm từ 64K xuống 4K (có thể sử dụng các trang con nhỏ hơn trang kernel). Quá trình chuyển đổi đã được thực hiện từ việc sử dụng cây cơ số sang thuật toán XArrays.
    • Một chế độ đã được thêm vào máy chủ NFS để mở rộng việc duy trì trạng thái khóa do máy khách đã ngừng phản hồi yêu cầu đặt ra. Chế độ mới cho phép bạn trì hoãn việc xóa khóa tối đa một ngày trừ khi khách hàng khác yêu cầu khóa cạnh tranh. Ở chế độ bình thường, việc chặn sẽ bị xóa sau 90 giây sau khi máy khách ngừng phản hồi.
    • Hệ thống con theo dõi sự kiện trong fanotify FS triển khai cờ FAN_MARK_EVICTABLE, nhờ đó bạn có thể vô hiệu hóa việc ghim các nút i mục tiêu trong bộ đệm, chẳng hạn như để bỏ qua các nhánh phụ mà không ghim các phần của chúng vào bộ đệm.
    • Trình điều khiển cho hệ thống tệp FAT32 đã thêm hỗ trợ để lấy thông tin về thời gian tạo tệp thông qua lệnh gọi hệ thống statx với việc triển khai phiên bản stat() hiệu quả và chức năng hơn, phiên bản này trả về thông tin mở rộng về tệp.
    • Các tối ưu hóa đáng kể đã được thực hiện đối với trình điều khiển exFAT để cho phép xóa đồng thời một nhóm các lĩnh vực khi chế độ 'dirsync' đang hoạt động, thay vì xóa tuần tự theo từng lĩnh vực. Bằng cách giảm số lượng yêu cầu chặn sau khi tối ưu hóa, hiệu suất tạo số lượng lớn thư mục trên thẻ SD tăng hơn 73-85%, tùy thuộc vào kích thước cụm.
    • Hạt nhân bao gồm bản cập nhật khắc phục đầu tiên cho trình điều khiển ntfs3. Vì ntfs3 được đưa vào kernel 5.15 vào tháng XNUMX năm ngoái nên trình điều khiển chưa được cập nhật và mất liên lạc với các nhà phát triển, nhưng các nhà phát triển hiện đã tiếp tục xuất bản các thay đổi. Các bản vá được đề xuất đã loại bỏ các lỗi dẫn đến rò rỉ và treo bộ nhớ, giải quyết các vấn đề khi thực thi xfstests, dọn sạch mã không sử dụng và sửa lỗi chính tả.
    • Đối với OverlayFS, khả năng ánh xạ ID người dùng của hệ thống tệp được gắn đã được triển khai, được sử dụng để khớp các tệp của một người dùng cụ thể 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.
  • Dịch vụ bộ nhớ và hệ thống
    • Đã thêm hỗ trợ ban đầu cho kiến ​​trúc tập lệnh LoongArch được sử dụng trong bộ xử lý Loongson 3 5000, triển khai ISA RISC mới, tương tự như MIPS và RISC-V. Kiến trúc LoongArch có sẵn ba loại: 32-bit rút gọn (LA32R), 32-bit thông thường (LA32S) và 64-bit (LA64).
    • Đã xóa mã để hỗ trợ định dạng tệp thực thi a.out, định dạng này không được dùng nữa trong bản phát hành 5.1. Định dạng a.out từ lâu đã không còn được dùng nữa trên các hệ thống Linux và việc tạo tệp a.out không được các công cụ hiện đại hỗ trợ trong cấu hình Linux mặc định. Trình tải cho tệp a.out có thể được triển khai hoàn toàn trong không gian người dùng.
    • Hỗ trợ cho các tùy chọn khởi động dành riêng cho x86 đã bị ngừng: nosp, nosmap, nosmep, noexec và noclflush).
    • Hỗ trợ cho kiến ​​trúc CPU h8300 đã lỗi thời (Renesas H8/300), vốn không còn được hỗ trợ từ lâu, đã bị ngừng hỗ trợ.
    • Các khả năng mở rộng liên quan đến việc phản hồi việc phát hiện các khóa phân chia (“khóa phân chia”) xảy ra khi truy cập dữ liệu chưa được căn chỉnh trong bộ nhớ do thực tế là khi thực hiện một lệnh nguyên tử, dữ liệu sẽ đi qua hai dòng bộ nhớ đệm CPU. Sự tắc nghẽn như vậy dẫn đến hiệu suất giảm đáng kể. Nếu trước đây, theo mặc định, kernel sẽ đưa ra cảnh báo với thông tin về quy trình gây ra tình trạng chặn thì giờ đây, quy trình có vấn đề sẽ bị chậm lại hơn nữa để duy trì hiệu suất của phần còn lại của hệ thống.
    • Đã thêm hỗ trợ cho cơ chế IFS (Quét tại hiện trường) được triển khai trong bộ xử lý Intel, cho phép bạn chạy các bài kiểm tra chẩn đoán CPU cấp thấp có thể xác định các sự cố không được phát hiện bởi các công cụ tiêu chuẩn dựa trên mã sửa lỗi (ECC) hoặc bit chẵn lẻ . Các thử nghiệm được thực hiện ở dạng chương trình cơ sở có thể tải xuống, được thiết kế tương tự như các bản cập nhật vi mã. Kết quả kiểm tra có sẵn thông qua sysfs.
    • Đã thêm khả năng nhúng tệp bootconfig vào kernel, ngoài các tùy chọn dòng lệnh, cho phép xác định các tham số của kernel thông qua tệp cài đặt. Việc nhúng được thực hiện bằng cách sử dụng tùy chọn tập hợp 'CONFIG_BOOT_CONFIG_EMBED_FILE=»/PATH/TO/BOOTCONFIG/FILE»'. Trước đây, bootconfig được xác định bằng cách gắn vào image initrd. Việc tích hợp vào kernel cho phép sử dụng bootconfig trong các cấu hình không cần initrd.
    • Khả năng tải xuống chương trình cơ sở được nén bằng thuật toán Zstandard đã được triển khai. Một tập hợp các tệp điều khiển /sys/class/firmware/* đã được thêm vào sysfs, cho phép bạn bắt đầu tải chương trình cơ sở từ không gian người dùng.
    • Giao diện I/O không đồng bộ io_uring cung cấp một cờ mới, IORING_RECVSEND_POLL_FIRST, mà khi được đặt, trước tiên sẽ gửi một thao tác mạng để được xử lý bằng cách sử dụng bỏ phiếu, cờ này có thể tiết kiệm tài nguyên trong các trường hợp chấp nhận được việc xử lý thao tác với một số độ trễ. io_uring cũng đã thêm hỗ trợ cho lệnh gọi hệ thống socket(), đề xuất các cờ mới để đơn giản hóa việc quản lý bộ mô tả tệp, thêm chế độ “chụp nhiều lần” để chấp nhận nhiều kết nối cùng lúc trong lệnh gọi Accept() và thêm các thao tác để chuyển tiếp NVMe ra lệnh trực tiếp cho thiết bị.
    • Kiến trúc Xtensa cung cấp hỗ trợ cho công cụ gỡ lỗi KCSAN (Kernel Concurrency Sanitizer), được thiết kế để phát hiện động các điều kiện chạy đua trong kernel. Cũng thêm hỗ trợ cho chế độ ngủ và bộ đồng xử lý.
    • Đối với kiến ​​trúc m68k (Motorola 68000), một máy ảo (trình mô phỏng nền tảng) dựa trên trình mô phỏng Android Goldfish đã được triển khai.
    • Đối với kiến ​​trúc AArch64, hỗ trợ cho các tiện ích mở rộng Armv9-A SME (Mở rộng ma trận có thể mở rộng) đã được triển khai.
    • Hệ thống con eBPF cho phép lưu trữ các con trỏ đã gõ trong cấu trúc bản đồ và cũng bổ sung hỗ trợ cho các con trỏ động.
    • Một cơ chế lấy lại bộ nhớ chủ động mới được đề xuất hỗ trợ kiểm soát không gian người dùng bằng cách sử dụng tệp Memory.reclaim. Việc ghi một số vào tệp được chỉ định sẽ cố gắng loại bỏ số byte tương ứng khỏi tập hợp được liên kết với nhóm.
    • Cải thiện độ chính xác của việc sử dụng bộ nhớ khi nén dữ liệu trong phân vùng trao đổi bằng cơ chế zswap.
    • Đối với kiến ​​trúc RISC-V, hỗ trợ chạy các tệp thực thi 32 bit trên hệ thống 64 bit được cung cấp, một chế độ được thêm vào để liên kết các thuộc tính hạn chế với các trang bộ nhớ (ví dụ: để tắt bộ nhớ đệm) và chức năng kexec_file_load() được triển khai .
    • Việc triển khai hỗ trợ cho hệ thống Armv32T và Armv4 5-bit được điều chỉnh để sử dụng trong các bản dựng hạt nhân đa nền tảng phổ quát phù hợp với các hệ thống ARM khác nhau.
  • Ảo hóa và bảo mật
    • Hệ thống con EFI triển khai khả năng truyền thông tin bí mật một cách bí mật đến hệ thống khách mà không tiết lộ thông tin đó cho hệ thống máy chủ. Dữ liệu được cung cấp thông qua thư mục security/coco trong securityfs.
    • Chế độ bảo vệ khóa, hạn chế quyền truy cập của người dùng root vào kernel và chặn các đường dẫn bỏ qua UEFI Secure Boot, đã loại bỏ lỗ hổng cho phép bỏ qua bảo vệ bằng cách thao tác với trình gỡ lỗi kernel.
    • Bao gồm các bản vá nhằm cải thiện độ tin cậy và hiệu suất của trình tạo số giả ngẫu nhiên.
    • Khi xây dựng bằng Clang 15, hỗ trợ cơ chế ngẫu nhiên hóa cấu trúc hạt nhân được triển khai.
    • Cơ chế Landlock, cho phép bạn hạn chế sự tương tác của một nhóm quy trình với môi trường bên ngoài, cung cấp hỗ trợ cho các quy tắc cho phép bạn kiểm soát việc thực hiện các hoạt động đổi tên tệp.
    • Hệ thống con IMA (Kiến trúc đo lường tính toàn vẹn), được thiết kế để xác minh tính toàn vẹn của các thành phần hệ điều hành bằng chữ ký số và hàm băm, đã được chuyển sang sử dụng mô-đun fs-verity để xác minh tệp.
    • Logic của các hành động khi vô hiệu hóa quyền truy cập không có đặc quyền vào hệ thống con eBPF đã được thay đổi - trước đây tất cả các lệnh liên quan đến lệnh gọi hệ thống bpf() đều bị vô hiệu hóa và bắt đầu từ phiên bản 5.19, quyền truy cập vào các lệnh không dẫn đến việc tạo đối tượng vẫn bị bỏ lại . Hành vi này yêu cầu một quy trình đặc quyền để tải chương trình BPF, nhưng sau đó các quy trình không có đặc quyền có thể tương tác với chương trình.
    • Đã thêm hỗ trợ cho tiện ích mở rộng AMD SEV-SNP (Phân trang lồng nhau an toàn), cung cấp công việc an toàn với các bảng trang bộ nhớ lồng nhau và bảo vệ chống lại các cuộc tấn công “undeSErVed” và “SEVerity” trên bộ xử lý AMD EPYC, cho phép bỏ qua AMD SEV (Ảo hóa được mã hóa an toàn) ) cơ chế bảo vệ.
    • Đã thêm hỗ trợ cho cơ chế Intel TDX (Tiện ích mở rộng miền đáng tin cậy), cho phép bạn chặn các nỗ lực của bên thứ ba truy cập vào bộ nhớ được mã hóa của máy ảo.
    • Trình điều khiển virtio-blk, được sử dụng để mô phỏng các thiết bị khối, đã thêm hỗ trợ cho I/O bằng cách sử dụng tính năng bỏ phiếu, theo các thử nghiệm, đã giảm độ trễ khoảng 10%.
  • Hệ thống con mạng
    • Gói này bao gồm một loạt các bản vá BIG TCP cho phép bạn tăng kích thước gói tối đa của gói TCP lên 4GB để tối ưu hóa hoạt động của mạng trung tâm dữ liệu nội bộ tốc độ cao. Kích thước gói tăng tương tự với kích thước trường tiêu đề 16 bit đạt được thông qua việc triển khai các gói “jumbo”, kích thước trong tiêu đề IP được đặt thành 0 và kích thước thực tế được truyền trong một gói 32 bit riêng biệt. trường trong một tiêu đề đính kèm riêng biệt. Trong thử nghiệm hiệu suất, việc đặt kích thước gói thành 185 KB đã tăng thông lượng lên 50% và giảm đáng kể độ trễ truyền dữ liệu.
    • Công việc tiếp tục tích hợp các công cụ vào ngăn xếp mạng để theo dõi lý do rớt gói (mã lý do). Mã lý do được gửi khi bộ nhớ liên kết với gói được giải phóng và cho phép các tình huống như loại bỏ gói do lỗi tiêu đề, phát hiện giả mạo rp_filter, tổng kiểm tra không hợp lệ, hết bộ nhớ, quy tắc IPSec XFRM được kích hoạt, số thứ tự TCP không hợp lệ, v.v.
    • Đã thêm hỗ trợ dự phòng các kết nối MPTCP (MultiPath TCP) để sử dụng TCP thông thường, trong trường hợp không thể sử dụng một số tính năng MPTCP nhất định. MPTCP là 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. Đã thêm API để kiểm soát luồng MPTCP từ không gian người dùng.
  • Оборудование
    • Đã thêm hơn 420k dòng mã liên quan đến trình điều khiển amdgpu, trong đó khoảng 400k dòng là tệp tiêu đề được tạo tự động cho dữ liệu đăng ký ASIC trong trình điều khiển GPU AMD và 22.5k dòng khác cung cấp triển khai hỗ trợ ban đầu cho AMD SoC21. Tổng kích thước trình điều khiển cho GPU AMD vượt quá 4 triệu dòng mã. Ngoài SoC21, trình điều khiển AMD còn hỗ trợ SMU 13.x (Đơn vị quản lý hệ thống), hỗ trợ cập nhật cho USB-C và GPUVM, đồng thời chuẩn bị hỗ trợ các thế hệ nền tảng RDNA3 (RX 7000) và CDNA (AMD Instinct) tiếp theo .
    • Trình điều khiển i915 (Intel) đã mở rộng các khả năng liên quan đến quản lý năng lượng. Đã thêm số nhận dạng cho GPU Intel DG2 (Arc Alchemist) được sử dụng trên máy tính xách tay, cung cấp hỗ trợ ban đầu cho nền tảng Intel Raptor Lake-P (RPL-P), thêm thông tin về card đồ họa Arctic Sound-M), ABI được triển khai cho công cụ điện toán, được thêm cho Thẻ DG2 hỗ trợ định dạng Tile4; đối với các hệ thống dựa trên vi kiến ​​trúc Haswell, hỗ trợ DisplayPort HDR được triển khai.
    • Trình điều khiển Nouveau đã chuyển sang sử dụng trình xử lý drm_gem_plane_helper_prepare_fb; việc cấp phát bộ nhớ tĩnh đã được áp dụng cho một số cấu trúc và biến. Đối với việc sử dụng các mô-đun hạt nhân mã nguồn mở của NVIDIA ở Nouveau, công việc cho đến nay vẫn tập trung vào việc xác định và loại bỏ lỗi. Trong tương lai, phần sụn được xuất bản dự kiến ​​sẽ được sử dụng để cải thiện hiệu suất của trình điều khiển.
    • Đã thêm trình điều khiển cho bộ điều khiển NVMe được sử dụng trong máy tính Apple dựa trên chip M1.

Đồ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 hoàn toàn miễn phí 5.19 - Linux-libre 5.19-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 nó là bị giới hạn bởi nhà sản xuất. Bản phát hành mới dọn sạch các trình điều khiển cho pureLiFi X/XL/XC và TI AMx3 Wkup-M3 IPC. Đã cập nhật mã dọn dẹp blob trong Silicon Labs WFX, AMD amdgpu, Trình tải hình ảnh ngoại vi Qualcomm WCNSS, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, trình điều khiển pu3-imgu và hệ thống con. Việc xử lý các tệp thiết bị Qualcomm AArch64 đã được triển khai. Đã thêm hỗ trợ cho sơ đồ đặt tên thành phần Sound Open Firmware mới. Đã ngừng dọn dẹp trình điều khiển ATM Ambassador, trình điều khiển này đã bị xóa khỏi kernel. Quản lý dọn dẹp blob trong HDCP và Mellanox Core đã được chuyển sang các thẻ kconfig riêng biệt.

Nguồn: opennet.ru

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