Bản phát hành nhân hệ điều hành Linux 6.1

Sau hai tháng phát triển, Linus Torvalds đã phát hành nhân hệ điều hành. Linux 6.1. Trong số những thay đổi đáng chú ý nhất: hỗ trợ phát triển trình điều khiển và mô-đun bằng ngôn ngữ Rust, hiện đại hóa cơ chế xác định các trang bộ nhớ đã sử dụng, trình quản lý bộ nhớ đặc biệt cho các chương trình BPF, hệ thống chẩn đoán sự cố bộ nhớ KMSAN, cơ chế bảo vệ KCFI (Kernelk Control-Flow Integrity) và việc giới thiệu cấu trúc cây Maple.

Phiên bản mới bao gồm 15115 bản sửa lỗi từ 2139 nhà phát triển, kích thước bản vá là 51 MB, nhỏ hơn khoảng 2 lần so với kích thước của các bản vá từ kernel 6.0 và 5.19. Những thay đổi đã ảnh hưởng đến 13165 tệp, 716247 dòng mã đã được thêm vào và 304560 dòng đã bị xóa. Khoảng 45% tất cả các thay đổi được giới thiệu trong 6.1 có liên quan đến trình điều khiển thiết bị, khoảng 14% 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, 14% liên quan đến ngăn xếp mạng, 3% 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 6.1:

  • Dịch vụ bộ nhớ và hệ thống
    • Rust đã được thêm vào như một ngôn ngữ thứ hai để phát triển trình điều khiển và mô-đun nhân. Mục đích chính của việc hỗ trợ Rust là đơn giản hóa việc viết các trình điều khiển thiết bị an toàn, chất lượng cao bằng cách giảm thiểu khả năng xảy ra lỗi khi làm việc với bộ nhớ. Hỗ trợ Rust bị tắt theo mặc định và không bao gồm Rust như một phụ thuộc xây dựng bắt buộc cho nhân. Nhân hiện đang sử dụng một phiên bản tối thiểu, được lược bỏ của các bản vá, đã được giảm từ 40 xuống còn 13 dòng mã và chỉ cung cấp những thứ tối thiểu cần thiết để xây dựng một mô-đun nhân đơn giản được viết bằng Rust. Trong tương lai, chúng tôi dự định sẽ dần dần mở rộng chức năng hiện có, chuyển các thay đổi khác từ nhánh Rust-for-.LinuxSong song đó, các dự án đang được tiến hành để sử dụng cơ sở hạ tầng được đề xuất nhằm phát triển trình điều khiển cho ổ đĩa NVMe, giao thức mạng 9p và GPU Apple M1 bằng ngôn ngữ Rust.
    • Đối với các hệ thống dựa trên kiến ​​trúc AArch64, RISC-V và LoongArch có EFI, khả năng tải trực tiếp hình ảnh hạt nhân nén đã được triển khai. Đã thêm trình xử lý để tải, chạy và dỡ tải hình ảnh hạt nhân, được gọi trực tiếp từ EFI zboot. Trình xử lý để cài đặt và xóa giao thức khỏi cơ sở dữ liệu giao thức EFI cũng đã được thêm vào. Trước đây, việc giải nén được thực hiện bởi một bộ tải khởi động riêng biệt, nhưng bây giờ việc này có thể được thực hiện bởi một trình xử lý trong chính kernel - hình ảnh kernel được hình thành dưới dạng một ứng dụng EFI.
    • Thành phần bao gồm một phần của các bản vá với việc triển khai mô hình quản lý bộ nhớ đa cấp, cho phép bạn tách các ngân hàng bộ nhớ với các đặc tính hiệu suất khác nhau. Ví dụ: các trang được sử dụng nhiều nhất có thể được lưu trữ trong bộ nhớ nhanh nhất, trong khi các trang được sử dụng ít nhất có thể được lưu trữ trong bộ nhớ tương đối chậm. Kernel 6.1 giới thiệu một cơ chế xác định vị trí các trang được sử dụng nhiều trong bộ nhớ chậm để chúng có thể được nâng cấp lên bộ nhớ nhanh, đồng thời giới thiệu khái niệm chung về các cấp bộ nhớ và hiệu suất tương đối của chúng.
    • Nó bao gồm cơ chế MGLRU (LRU đa thế hệ), thay thế cho việc triển khai LRU (Ít được sử dụng gần đây nhất) cũ dựa trên hai hàng đợi có cấu trúc nhiều giai đoạn giúp xác định tốt hơn trang bộ nhớ nào thực sự đang được sử dụng và trang nào có thể được đẩy ra ngoài. phân vùng trao đổi.
    • Oracle đã bổ sung hỗ trợ cho cấu trúc dữ liệu "cây phong" do các kỹ sư của họ đề xuất, được xem là giải pháp thay thế hiệu quả hơn cho cấu trúc "cây đỏ đen". Cây phong là một biến thể của cây B hỗ trợ lập chỉ mục theo phạm vi và được thiết kế để sử dụng bộ nhớ cache hiệu quả. bộ xử lý hiện đạiMột số hệ thống con quản lý bộ nhớ đã được chuyển sang sử dụng cây phong, điều này đã tác động tích cực đến hiệu suất của chúng. Trong tương lai, cây phong có thể được sử dụng để triển khai khóa phạm vi.
    • Khả năng tạo các chương trình BPF “phá hoại” được thiết kế đặc biệt để bắt đầu tắt khẩn cấp thông qua lệnh gọi Crash_kexec() đã được thêm vào hệ thống con BPF. Các chương trình BPF như vậy có thể được yêu cầu cho mục đích gỡ lỗi để bắt đầu tạo kết xuất sự cố tại một thời điểm nhất định. Để truy cập các hoạt động phá hoại khi tải chương trình BPF, bạn phải chỉ định cờ BPF_F_DESTRUCTIVE, kích hoạt sysctl kernel.structive_bpf_enabled và có quyền CAP_SYS_BOOT.
    • Đối với các chương trình BPF, có thể liệt kê các phần tử cgroup, cũng như liệt kê các tài nguyên (tệp, vma, quy trình, v.v.) của một luồng hoặc tác vụ cụ thể. Một loại bản đồ mới đã được triển khai để tạo vùng đệm vòng cho người dùng.
    • Đã thêm lệnh gọi đặc biệt để cấp phát bộ nhớ trong các chương trình BPF (bộ cấp phát bộ nhớ), cung cấp cấp phát bộ nhớ an toàn hơn trong ngữ cảnh BPF so với kmalloc() tiêu chuẩn.
    • Phần đầu tiên của những thay đổi đã được tích hợp, cung cấp khả năng tạo trình điều khiển cho các thiết bị đầu vào với giao diện HID (Thiết bị giao diện con người), được triển khai dưới dạng chương trình BPF.
    • Nhân hệ điều hành đã loại bỏ hoàn toàn mã hỗ trợ định dạng tệp thực thi a.out, định dạng này đã bị loại bỏ trong phiên bản 5.1 và bị vô hiệu hóa đối với các kiến ​​trúc chính bắt đầu từ phiên bản 5.18 và 5.19. Định dạng a.out từ lâu đã bị loại bỏ trên các hệ thống có Linuxvà việc tạo các tệp a.out không được hỗ trợ bởi các công cụ hiện đại trong các cấu hình cho Linux Theo mặc định, trình tải cho các tệp a.out có thể được triển khai hoàn toàn trong không gian người dùng.
    • Đối với các hệ thống dựa trên kiến ​​trúc tập lệnh LoongArch được sử dụng trong bộ xử lý Loongson 3 5000 và triển khai ISA RISC mới, tương tự như MIPS và RISC-V, hỗ trợ cho các sự kiện đo lường hiệu suất (sự kiện hoàn hảo), quá trình biên dịch kexec, kdump và BPF JIT được triển khai .
    • Giao diện I/O không đồng bộ io_uring cung cấp một chế độ mới, IORING_SETUP_DEFER_TASKRUN, cho phép tạm thời trì hoãn công việc liên quan đến bộ đệm vòng cho đến khi một yêu cầu ứng dụng được thực hiện, chế độ này có thể được sử dụng để làm việc hàng loạt và tránh các vấn đề về độ trễ do ứng dụng được ưu tiên trước. sai thời điểm.
    • Các quy trình trong không gian người dùng được cung cấp khả năng bắt đầu chuyển đổi một loạt các trang bộ nhớ thông thường thành một tập hợp các trang bộ nhớ lớn (Trang lớn trong suốt).
    • Đã thêm triển khai thiết bị /dev/userfaultfd, cho phép truy cập vào chức năng của lệnh gọi hệ thống userfaultfd() bằng quyền truy cập trong FS. Chức năng userfaultfd cho phép bạn tạo các trình xử lý để truy cập các trang bộ nhớ chưa được phân bổ (lỗi trang) trong không gian người dùng.
    • Các yêu cầu đối với phiên bản của tiện ích GNU Make đã được tăng lên - hiện nay cần ít nhất phiên bản 3.82 để xây dựng kernel.
  • Hệ thống con đĩa, I/O và hệ thống tệp
    • Tối ưu hóa hiệu suất đáng kể đã được thực hiện đối với hệ thống tệp Btrfs; trong số những thứ khác, hiệu suất của lệnh gọi FIEMAP ioctl đã được tăng lên theo cấp độ lớn. Đã thêm hỗ trợ cho việc ghi vào bộ đệm không đồng bộ cho các ứng dụng sử dụng io_uring. Hỗ trợ cho các tệp được bảo vệ bằng fs-verity đã được thêm vào thao tác “gửi”.
    • Hệ thống tệp ext4 đã bổ sung các tính năng tối ưu hóa hiệu suất liên quan đến bảo trì nhật ký và hoạt động chỉ đọc.
    • Hệ thống tệp EROFS (Hệ thống tệp chỉ đọc nâng cao), được thiết kế để sử dụng trên các phân vùng có thể truy cập ở chế độ chỉ đọc, triển khai khả năng chia sẻ dữ liệu trùng lặp trong các hệ thống tệp khác nhau.
    • Lệnh gọi hệ thống statx() đã được thêm vào để hiển thị thông tin về việc liệu I/O trực tiếp có thể được áp dụng cho một tệp hay không.
    • Hỗ trợ tạo các tệp tạm thời với cờ O_TMPFILE đã được thêm vào hệ thống con FUSE (Hệ thống tệp trong không gian người dùng).
  • Ảo hóa và bảo mật
    • Việc triển khai cơ chế bảo vệ CFI (Tính toàn vẹn của luồng điều khiển) đã được thay thế, thêm các kiểm tra trước mỗi lệnh gọi hàm gián tiếp để phát hiện một số dạng hành vi không xác định có khả năng dẫn đến vi phạm thứ tự thực hiện thông thường (luồng điều khiển) như một kết quả của việc sử dụng các khai thác làm thay đổi con trỏ thành các hàm được lưu trong bộ nhớ. Việc triển khai CFI tiêu chuẩn từ dự án LLVM đã được thay thế bằng một tùy chọn cũng dựa trên việc sử dụng Clang, nhưng được điều chỉnh đặc biệt để bảo vệ các hệ thống con và nhân hệ điều hành cấp thấp. Trong LLVM, một triển khai mới sẽ được cung cấp trong bản phát hành Clang 16 và sẽ được bật với tùy chọn "-fsanitize=kcfi". Điểm khác biệt chính với cách triển khai mới là nó không bị ràng buộc với việc tối ưu hóa thời gian liên kết (LTO) và không dẫn đến việc các con trỏ hàm bị thay thế bằng các liên kết trong bảng nhảy.
    • Đối với các mô-đun LSM (Linux (Mô-đun bảo mật) cung cấp khả năng tạo các trình xử lý chặn các thao tác để tạo không gian tên.
    • Các công cụ được cung cấp để xác minh chữ ký số PKCS#7 trong các chương trình BPF.
    • Khả năng mở ở chế độ không chặn (O_NONBLOCK), vốn vô tình bị xóa trong kernel 5.6, đã được trả về /dev/random.
    • Trên các hệ thống có kiến ​​trúc x86, một cảnh báo đã được thêm vào trong trường hợp ánh xạ các trang bộ nhớ bởi các hệ thống con kernel cho phép thực thi và ghi đồng thời. Trong tương lai, khả năng cấm hoàn toàn việc ánh xạ bộ nhớ như vậy đang được xem xét.
    • Đã thêm cơ chế gỡ lỗi KMSAN (Kernel Memory Sanitizer) để phát hiện việc sử dụng bộ nhớ chưa được khởi tạo trong kernel, cũng như rò rỉ bộ nhớ chưa được khởi tạo giữa không gian người dùng và thiết bị.
    • Những cải tiến đã được thực hiện đối với bộ tạo số giả ngẫu nhiên (CRNG) an toàn về mặt mật mã được sử dụng trong lệnh getrandom. Những thay đổi này do Jason A. Donenfeld, tác giả của bộ tạo số, thực hiện. VPN WireGuard và nhằm mục đích cải thiện tính bảo mật của việc trích xuất số nguyên giả ngẫu nhiên.
  • Hệ thống con mạng
    • Ngăn xếp TCP cung cấp khả năng (bị tắt theo mặc định) để sử dụng các bảng băm ổ cắm riêng biệt cho từng không gian tên, giúp cải thiện hiệu suất trên các hệ thống có số lượng lớn không gian tên.
    • Đã xóa mã để hỗ trợ giao thức DECnet cũ. Các nhánh API không gian người dùng được giữ nguyên để cho phép biên dịch các ứng dụng sử dụng DECnet, nhưng các ứng dụng này sẽ không thể kết nối với mạng.
    • Giao thức netlink được ghi lại.
  • Оборудование
    • Trình điều khiển amdgpu đã bổ sung hỗ trợ chuyển tiếp DSC (Nén luồng hiển thị) để nén dữ liệu không mất dữ liệu khi trao đổi thông tin với màn hình hỗ trợ độ phân giải rất cao. Công việc tiếp tục cung cấp hỗ trợ cho nền tảng AMD RDNA3 (RX 7000) và CDNA (Bản năng). Đã thêm hỗ trợ cho các thành phần IP DCN 3.2, SMU 13.x, NBIO 7.7, GC 11.x, PSP 13.x, SDMA 6.x và GMC 11.x. Trình điều khiển amdkfd (dành cho GPU AMD rời như Polaris) cung cấp hỗ trợ cho GFX 11.0.3.
    • Trình điều khiển i915 (Intel) bao gồm hỗ trợ GPU Meteor Lake. Meteor Lake và các GPU mới hơn hỗ trợ giao diện DP 2.0 (DisplayPort). Đã thêm số nhận dạng cho thẻ video dựa trên vi kiến ​​trúc Alder Lake S.
    • Đã thêm hỗ trợ cho các hệ thống con âm thanh được triển khai trong bộ xử lý Apple Silicon, Intel SkyLake và Intel KabyLake. Trình điều khiển âm thanh CS35L41 HDA hỗ trợ chế độ ngủ. Đã thêm hỗ trợ ASoC (ALSA System on Chip) cho chip âm thanh tích hợp Apple Silicon, AMD Rembrant DSP, AMD Pink Sardine ACP 6.2, Everest ES8326, Intel Sky Lake và Kaby Lake, Mediatek MT8186, NXP i.MX8ULP DSP, Qualcomm SC8280XP, SM8250, SM8450 và Texas Instruments SRC4392
    • Đã thêm hỗ trợ cho màn hình LCD Samsung LTL101AL01, B120XAN01.0, R140NWF5 RH, Densitron DMT028VGHMCMI-1A TFT, AUO B133UAN02.1, IVO M133NW4J-R3, Innolux N120ACA-EA1, AUO B116XAK01.6, BOE NT116WHM -N21, IN X N116BCA-EA2 , INX N116BCN-EA1, Công nghệ đa Inno MI0800FT-9.
    • Đã thêm hỗ trợ cho bộ điều khiển AHCI SATA được sử dụng trong SoC Baikal-T1.
    • Đã thêm hỗ trợ cho chip Bluetooth MediaTek MT7921, Intel Magnetor (CNVi, Kết nối tích hợp), Realtek RTL8852C, RTW8852AE và RTL8761BUV (Edimax BT-8500).
    • Trình điều khiển ath11k cho các mô-đun không dây của Qualcomm đã bổ sung hỗ trợ quét quang phổ trong phạm vi 160 MHz, triển khai NAPI đa luồng và cải thiện hỗ trợ cho chip Wi-Fi Qualcomm WCN6750.
    • Đã thêm trình điều khiển cho bàn phím PinePhone, bàn di chuột InterTouch (ThinkPad P1 G3), Bộ điều khiển thích ứng X-Box, Bộ điều khiển chuyến bay PhoenixRC, Bộ điều khiển ô tô VRC-2, Bộ điều khiển DualSense Edge, Bảng điều khiển IBM, điều khiển từ xa XBOX One Elite, máy tính bảng XP-PEN Deco Pro S và Intuos Pro Nhỏ (PTH-460).
    • Đã thêm trình điều khiển cho bộ tăng tốc mật mã Aspeed HACE (Hash và Crypto Engine).
    • Đã thêm hỗ trợ cho bộ điều khiển Intel Meteor Lake Thunderbolt/USB4 tích hợp.
    • Đã thêm hỗ trợ cho điện thoại thông minh Sony Xperia 1 IV, Samsung Galaxy E5, E7 và Grand Max, Pine64 Pinephone Pro.
    • Đã thêm hỗ trợ cho ARM SoC và bo mạch: AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 và RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IPQ8062, IPQ8065, Kontron SL/ BL i.MX8MM OSM-S, MT8195 (Acer Tomato), Radxa ROCK 4C+, NanoPi R4S Enterprise Edition, JetHome JetHub D1p. Trình điều khiển được cập nhật cho SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom và NXP.

Đồng thời, Tổ chức Phần mềm Tự do Mỹ Latinh đã tạo ra một phiên bản nhân hệ điều hành 6.1 hoàn toàn miễn phí - Linux-libre 6.1-gnu, đã được làm sạch các thành phần firmware và trình điều khiển chứa các thành phần không miễn phí hoặc các đoạn mã có phạm vi hạn chế. Bản phát hành này bao gồm việc làm sạch trình điều khiển rtw8852b mới và các tệp DTS cho nhiều SoC Qualcomm và MediaTek với bộ xử lý dựa trên AArch64. Mã làm sạch blob đã được cập nhật cho các trình điều khiển và hệ thống con amdgpu, i915, brcmfmac, r8188eu, rtw8852c và Intel ACPI. Việc làm sạch các trình điều khiển lỗi thời cho card TV tm6000, cpia2 v4l, sp8870 và av7110 đã được điều chỉnh.

Nguồn: opennet.ru

Mua dịch vụ lưu trữ đáng tin cậy cho các trang web có bảo vệ DDoS, máy chủ VPS VDS 🔥 Mua dịch vụ hosting website đáng tin cậy với bảo vệ DDoS, máy chủ VPS VDS | ProHoster