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

Sau hai tháng phát triển, Linus Torvalds giới thiệu phát hành hạt nhân Linux 5.6. Trong số những thay đổi đáng chú ý nhất: tích hợp giao diện WireGuard VPN, hỗ trợ USB4, không gian tên cho thời gian, khả năng tạo trình xử lý tắc nghẽn TCP bằng BPF, hỗ trợ ban đầu cho MultiPath TCP, loại bỏ kernel của vấn đề 2038, cơ chế “bootconfig” , KhuFS.

Phiên bản mới bao gồm 13702 bản sửa lỗi từ 1810 nhà phát triển,
kích thước bản vá - 40 MB (các thay đổi ảnh hưởng đến 11577 tệp, 610012 dòng mã đã được thêm vào,
294828 hàng đã bị xóa). Khoảng 45% được trình bày trong phần 5.6
những thay đổi liên quan đến trình điều khiển thiết bị, khoảng 15% thay đổi là
thái độ đối với việc cập nhật mã cụ thể cho kiến ​​trúc phần cứng, 12%
được liên kết với ngăn xếp mạng, 4% với hệ thống tệp và 3% với nội bộ
các hệ thống con hạt nhân.

Chính đổi mới:

  • Hệ thống con mạng
    • Thêm triển khai giao diện VPN Dây bảo vệ, được triển khai dựa trên các phương thức mã hóa hiện đại (ChaCha20, Poly1305, Curve25519, BLAKE2s), dễ sử dụng, không phức tạp, đã chứng minh được bản thân trong một số triển khai lớn và cung cấp hiệu suất rất cao (nhanh hơn 3,9 lần so với OpenVPN về mặt thông lượng). WireGuard sử dụng khái niệm định tuyến khóa mã hóa, bao gồm việc gắn khóa riêng vào từng giao diện mạng và sử dụng khóa đó để liên kết các khóa chung. Khóa công khai được trao đổi để thiết lập kết nối theo cách tương tự như SSH. Cần có các nguyên tắc mã hóa để WireGuard hoạt động đem qua từ thư viện Zinc như một phần của API tiền điện tử tiêu chuẩn và bao gồm vào cốt lõi 5.5.
    • Bắt đầu tích hợp các thành phần cần thiết để hỗ trợ 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. Đối với các ứng dụng mạng, kết nối tổng hợp như vậy trông giống như kết nối TCP thông thường và tất cả logic phân tách luồng được thực hiện bởi MPTCP. Multipath TCP có thể được sử dụng để tăng thông lượng và tăng độ tin cậy. Ví dụ: MPTCP có thể được sử dụng để tổ chức truyền dữ liệu trên điện thoại thông minh bằng cách sử dụng đồng thời liên kết WiFi và 4G hoặc để giảm chi phí bằng cách kết nối máy chủ bằng một số liên kết giá rẻ thay vì một liên kết đắt tiền.
    • Thêm hỗ trợ cho các sch_ets kỷ luật xử lý hàng đợi mạng (Lựa chọn truyền nâng cao, IEEE 802.1Qaz), cung cấp khả năng phân phối băng thông giữa các loại lưu lượng khác nhau. Nếu tải trên một lớp lưu lượng cụ thể thấp hơn băng thông được phân bổ thì ETS sẽ cho phép các lớp lưu lượng khác sử dụng băng thông sẵn có (chưa sử dụng). Qdisc sch_ets được định cấu hình theo nguyên tắc PRIO và sử dụng các lớp lưu lượng để xác định giới hạn băng thông được chia sẻ và nghiêm ngặt. ETS hoạt động như một sự kết hợp của nhiều nguyên tắc TRƯỚC и DRR — khi có các lớp lưu lượng bị hạn chế nghiêm ngặt, PRIO được sử dụng, nhưng nếu không có lưu lượng nào trong hàng đợi thì nó hoạt động như DRR.
    • Đã thêm một loại chương trình BPF mới BPF_PROG_TYPE_STRUCT_OPS, cho phép bạn triển khai các trình xử lý hàm kernel thông qua BPF. Hiện tại, tính năng này có thể được sử dụng để triển khai các thuật toán kiểm soát tắc nghẽn TCP dưới dạng chương trình BPF. Như một ví dụ gợi ý Chương trình BPF với việc triển khai thuật toán DCTCP.
    • Được chấp nhận vào cốt lõi thay đổi, công cụ dịch thuật công cụ đạo đức với ioctl() để sử dụng giao diện liên kết mạng. Giao diện mới giúp thêm tiện ích mở rộng dễ dàng hơn, cải thiện việc xử lý lỗi, cho phép gửi thông báo khi trạng thái thay đổi, đơn giản hóa sự tương tác giữa kernel và không gian người dùng, đồng thời giảm số lượng danh sách được đặt tên cần được đồng bộ hóa.
    • Đã bổ sung triển khai thuật toán quản lý hàng đợi mạng FQ-PIE (Flow Queue PIE), nhằm mục đích giảm tác động tiêu cực của việc đệm gói trung gian trên thiết bị mạng biên (bufferbloat). FQ-PIE thể hiện hiệu quả cao khi sử dụng trong các hệ thống có modem cáp.
  • Hệ thống con đĩa, I/O và hệ thống tệp
    • Đối với hệ thống tập tin Btrfs thêm triển khai không đồng bộ thao tác DISCARD (đánh dấu các khối được giải phóng không còn cần được lưu trữ vật lý nữa). Ban đầu, các thao tác DISCARD được thực hiện đồng bộ, điều này có thể dẫn đến giảm hiệu suất do các ổ đĩa đang chờ các lệnh tương ứng hoàn thành. Việc triển khai không đồng bộ cho phép bạn không phải đợi ổ đĩa hoàn tất DISCARD và thực hiện thao tác này ở chế độ nền.
    • Trong XFS đã tiến hành Dọn dẹp mã sử dụng bộ đếm thời gian 32 bit cũ (loại time_t đã được thay thế bằng time64_t), dẫn đến sự cố 2038. Đã sửa lỗi và hỏng bộ nhớ xảy ra trên nền tảng 32 bit. Mã đã được làm lại để hoạt động với các thuộc tính mở rộng.
    • Đến hệ thống tập tin ext4 giới thiệu Tối ưu hóa hiệu suất liên quan đến việc xử lý khóa inode trong quá trình đọc và ghi. Cải thiện hiệu suất ghi lại ở chế độ I/O trực tiếp. Để đơn giản hóa việc chẩn đoán sự cố, mã lỗi đầu tiên và cuối cùng được lưu trữ trong siêu khối.
    • Trên hệ thống tập tin F2FS thực hiện khả năng lưu trữ dữ liệu ở dạng nén. Đối với một tệp hoặc thư mục riêng lẻ, có thể bật tính năng nén bằng lệnh "chattr +c file" hoặc "chattr +c dir; chạm vào thư mục/tập tin". Để nén toàn bộ phân vùng, bạn có thể sử dụng tùy chọn “-o Compressor_extension=ext” trong tiện ích mount.
    • Hạt nhân bao gồm một hệ thống tập tin KhuFS, giúp đơn giản hóa công việc ở mức độ thấp với các thiết bị lưu trữ được khoanh vùng. Ổ đĩa được khoanh vùng có nghĩa là các 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, trong đó chỉ cho phép thêm dữ liệu tuần tự, cập nhật toàn bộ nhóm khối. FS ZoneFS được Western Digital phát triển và liên kết từng vùng trong ổ đĩa với một tệp riêng biệt có thể được sử dụng để lưu trữ dữ liệu ở chế độ thô mà không cần thao tác ở cấp khu vực và khối, tức là. Cho phép ứng dụng sử dụng API tệp thay vì truy cập trực tiếp vào thiết bị khối bằng ioctl.
    • Trong NFS, việc gắn phân vùng qua UDP bị tắt theo mặc định. Đã thêm hỗ trợ cho khả năng sao chép trực tiếp các tệp giữa các máy chủ, được xác định trong đặc tả NFS 4.2. Đã thêm tùy chọn gắn kết mới "softreval", cho phép sử dụng các giá trị thuộc tính được lưu trong bộ nhớ cache trong trường hợp máy chủ bị lỗi. Ví dụ: khi chỉ định tùy chọn này, sau khi máy chủ không khả dụng, bạn vẫn có thể di chuyển dọc theo các đường dẫn trong phân vùng NFS và truy cập thông tin đã được lưu trong bộ đệm.
    • Đã tiến hành tối ưu hóa hiệu suất của cơ chế fs-verity, được sử dụng để giám sát tính toàn vẹn và xác thực của từng tệp riêng lẻ. Tăng tốc độ đọc tuần tự nhờ sử dụng cây băm Merkle. Hiệu suất của FS_IOC_ENABLE_VERITY đã được tối ưu hóa khi không có dữ liệu trong bộ đệm (việc đọc trước các trang có dữ liệu đã được áp dụng).
  • Ảo hóa và bảo mật
    • Khả năng vô hiệu hóa mô-đun SELinux trong khi đang chạy không được dùng nữa và việc dỡ tải SELinux đã được kích hoạt sẽ bị cấm trong tương lai. Để tắt SELinux, bạn cần truyền tham số "selinux=0" trên dòng lệnh kernel.
    • Thêm hỗ trợ các không gian tên theo thời gian (không gian tên thời gian), cho phép bạn liên kết trạng thái của đồng hồ hệ thống với vùng chứa (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME), sử dụng thời gian của riêng bạn trong vùng chứa và khi di chuyển vùng chứa sang máy chủ khác, hãy đảm bảo rằng các chỉ số CLOCK_MONOTONIC và CLOCK_BOOTTIME không thay đổi (có tính đến thời gian sau khi tải, có hoặc không tính đến việc ở chế độ ngủ ).

    • Nhóm chặn/dev/ngẫu nhiên đã bị xóa. Hành vi của /dev/random tương tự như /dev/urandom về mặt ngăn chặn chặn entropy sau khi khởi tạo nhóm.
    • Nhân lõi bao gồm một trình điều khiển cho phép các hệ thống khách chạy VirtualBox gắn các thư mục được xuất bởi môi trường máy chủ (Thư mục chia sẻ VirtualBox).
    • Một tập hợp các bản vá đã được thêm vào hệ thống con BPF (Người điều phối BPF), khi sử dụng cơ chế Retpoline để bảo vệ chống lại các cuộc tấn công của lớp Spectre V2, nó cho phép bạn tăng hiệu quả gọi các chương trình BPF khi các sự kiện liên quan đến chúng xảy ra (ví dụ: nó có thể tăng tốc độ gọi các trình xử lý XDP khi một gói mạng đến).
    • Đã thêm trình điều khiển để hỗ trợ TEE (Môi trường thực thi đáng tin cậy) được tích hợp trong APU AMD.
  • Dịch vụ bộ nhớ và hệ thống
    • BPF đã thêm hỗ trợ cho các chức năng toàn cầu. Việc phát triển đang được thực hiện như một phần của sáng kiến ​​nhằm bổ sung hỗ trợ cho các thư viện chức năng có thể được đưa vào các chương trình BPF. Bước tiếp theo sẽ là hỗ trợ các tiện ích mở rộng động cho phép tải các hàm toàn cục, bao gồm cả việc thay thế các hàm toàn cục hiện có khi chúng đang được sử dụng. Hệ thống con BPF cũng bổ sung hỗ trợ cho một biến thể của hoạt động bản đồ (được sử dụng để lưu trữ dữ liệu liên tục), hỗ trợ thực thi ở chế độ hàng loạt.
    • Thêm bởi Thiết bị “cpu_cooling” cho phép bạn làm mát CPU quá nóng bằng cách đặt nó ở trạng thái không hoạt động trong khoảng thời gian ngắn.
    • Đã thêm cuộc gọi hệ thống openat2(), cung cấp một bộ cờ bổ sung để hạn chế độ phân giải đường dẫn tệp (cấm vượt qua các điểm gắn kết, liên kết tượng trưng, ​​liên kết ma thuật (/proc/PID/fd), các thành phần “../”).
    • Đối với các hệ thống không đồng nhất dựa trên kiến ​​trúc big.LITTLE, kết hợp các lõi CPU tiết kiệm năng lượng mạnh mẽ và kém hiệu quả hơn trong một chip, tham số uclamp_min được đặt khi thực thi các tác vụ thời gian thực (nổi lên trong kernel 5.3 có cơ chế đảm bảo tải). Tham số này đảm bảo rằng tác vụ sẽ được bộ lập lịch đặt trên lõi CPU có đủ hiệu năng.
    • Hạt nhân được giải phóng khỏi vấn đề của năm 2038. Đã thay thế các trình xử lý cuối cùng còn lại, sử dụng loại 32-bit (signed int) time_t cho bộ đếm thời gian kỷ nguyên, có tính đến báo cáo từ năm 1970, sẽ tràn vào năm 2038.
    • Tiếp tục cải tiến giao diện I/O không đồng bộ io_uring, trong đó bảo đảm hỗ trợ cho các hoạt động mới: IORING_OP_FALLOCATE (đặt chỗ trống), IORING_OP_OPENAT,
      IORING_OP_OPENAT2,
      IORING_OP_CLOSE (mở và đóng tệp),
      IORING_OP_FILES_UPDATE (thêm và xóa file khỏi danh sách truy cập nhanh),
      IORING_OP_STATX (yêu cầu thông tin tệp),
      IORING_OP_READ,
      IORING_OP_WRITE (tương tự đơn giản của IORING_OP_READV và IORING_OP_WRITEV),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (các biến thể không đồng bộ của cuộc gọi posix_fadvise và madvise), IORING_OP_SEND,
      IORING_OP_RECV (gửi và nhận dữ liệu mạng),
      IORING_OP_EPOLL_CTL (thực hiện các thao tác trên bộ mô tả tệp epoll).

    • Đã thêm cuộc gọi hệ thống pidfd_getfd(), cho phép một tiến trình truy xuất bộ mô tả tệp cho một tệp đang mở từ một tiến trình khác.
    • thực hiện cơ chế “bootconfig”, cho phép, ngoài các tùy chọn dòng lệnh, xác định các tham số của kernel thông qua tệp cài đặt. Để thêm các tệp như vậy vào hình ảnh initramfs, tiện ích bootconfig được đề xuất. Ví dụ: tính năng này có thể được sử dụng để định cấu hình kprobe khi khởi động.
    • Làm lại một cơ chế chờ ghi và đọc dữ liệu trong các đường ống không tên. Sự thay đổi giúp tăng tốc các nhiệm vụ như lắp ráp song song các dự án lớn. Tuy nhiên, việc tối ưu hóa có thể dẫn đến tình trạng chạy đua trong GNU do lỗi trong bản phát hành 4.2.1, lỗi này đã được sửa trong phiên bản 4.3.
    • Đã thêm cờ PR_SET_IO_FLUSHER vào prctl(), cờ này có thể được sử dụng để đánh dấu các quy trình không có bộ nhớ và không bị giới hạn khi hệ thống sắp hết bộ nhớ.
    • Dựa trên hệ thống phân phối bộ nhớ ION được sử dụng trong Android, một hệ thống con đã được triển khai đống dma-buf, cho phép bạn kiểm soát việc phân bổ bộ đệm DMA để chia sẻ vùng bộ nhớ giữa các trình điều khiển, ứng dụng và các hệ thống con khác nhau.
  • Kiến trúc phần cứng
    • Đã thêm hỗ trợ cho tiện ích mở rộng E0PD, xuất hiện trong ARMv8.5 và cho phép bảo vệ chống lại các cuộc tấn công liên quan đến việc thực thi các lệnh suy đoán trên CPU. Bảo vệ dựa trên E0PD mang lại chi phí thấp hơn so với bảo vệ KPTI (Cách ly bảng trang hạt nhân).
    • Đối với các hệ thống dựa trên kiến ​​trúc ARMv8.5, hỗ trợ cho lệnh RNG đã được thêm vào, cung cấp quyền truy cập vào trình tạo số giả ngẫu nhiên phần cứng. Trong kernel, lệnh RNG được sử dụng để tạo entropy khi khởi tạo trình tạo số giả ngẫu nhiên do kernel cung cấp.
    • Đã xóa hỗ trợ cho MPX (Tiện ích mở rộng bảo vệ bộ nhớ) được thêm vào kernel 3.19 và cho phép bạn tổ chức kiểm tra các con trỏ để đảm bảo rằng ranh giới của các vùng bộ nhớ được tôn trọng. Công nghệ này không được sử dụng rộng rãi trong các trình biên dịch và đã bị xóa khỏi GCC.
    • Đối với kiến ​​trúc RISC-V, đã triển khai hỗ trợ cho công cụ gỡ lỗi KASan (khử trùng địa chỉ hạt nhân), giúp xác định lỗi khi làm việc với bộ nhớ.
  • Оборудование
    • Đã triển khai hỗ trợ đặc điểm kỹ thuật USB 4.0, dựa trên giao thức Thunderbolt 3 và cung cấp thông lượng lên tới 40 Gbps, đồng thời duy trì khả năng tương thích ngược với USB 2.0 và USB 3.2. Bằng cách tương tự với Lươi tầm sét Giao diện USB 4.0 cho phép bạn kết nối các giao thức khác nhau qua một cáp duy nhất có đầu nối Loại C, bao gồm PCIe, Display Port và USB 3.x, cũng như việc triển khai phần mềm các giao thức, chẳng hạn như để tổ chức các liên kết mạng giữa các máy chủ. Việc triển khai được xây dựng trên trình điều khiển Thunderbolt đã có trong nhân Linux và điều chỉnh nó để hoạt động với các máy chủ và thiết bị tương thích với USB4. Những thay đổi này cũng bổ sung hỗ trợ cho các thiết bị Thunderbolt 3 khi triển khai phần mềm Trình quản lý kết nối, chịu trách nhiệm tạo đường hầm để kết nối nhiều thiết bị thông qua một đầu nối duy nhất.
    • Trong trình điều khiển amdgpu thêm hỗ trợ ban đầu cho công nghệ bảo vệ bản sao HDCP 2.x (Bảo vệ nội dung số băng thông cao). Đã thêm hỗ trợ cho chip AMD Pollock ASIC dựa trên Raven 2. Đã triển khai khả năng thiết lập lại GPU cho dòng Renoir và Navi.
    • Trình điều khiển DRM cho card màn hình Intel thêm Hỗ trợ DSI VDSC cho các chip dựa trên vi kiến ​​trúc Ice Lake và Tiger Lake, LMEM mmap (bộ nhớ cục bộ của thiết bị) đã được triển khai, khả năng phân tích cú pháp VBT (Bảng BIOS Video) đã được cải thiện, hỗ trợ HDCP 2.2 đã được triển khai cho các chip Coffee Lake.
    • Công việc tiếp tục thống nhất mã trình điều khiển amdkfd (dành cho các GPU rời, chẳng hạn như Fiji, Tonga, Polaris) với trình điều khiển amdgpu.
    • Trình điều khiển k10temp đã được làm lại, bổ sung hỗ trợ hiển thị thông số điện áp và dòng điện cho CPU AMD Zen, cũng như mở rộng thông tin từ cảm biến nhiệt độ được sử dụng trong CPU Zen và Zen 2.
    • Trong trình điều khiển mới thêm hỗ trợ chế độ tải chương trình cơ sở đã được xác minh cho GPU NVIDIA dựa trên vi kiến ​​trúc Turing (GeForce RTX 2000), cho phép hỗ trợ tăng tốc 3D cho các thẻ này (cần tải xuống chương trình cơ sở chính thức có chữ ký số NVIDIA). Đã thêm hỗ trợ cho công cụ đồ họa TU10x. Các vấn đề với HD Audio đã được giải quyết.
    • Đã thêm hỗ trợ nén dữ liệu khi truyền qua DisplayPort MST (Truyền tải đa luồng).
    • Đã thêm trình điều khiển mới "Ath11k» cho chip không dây Qualcomm hỗ trợ 802.11ax.
      Trình điều khiển dựa trên ngăn xếp mac80211 và hỗ trợ các chế độ điểm truy cập, máy trạm và nút mạng lưới.

    • Thông qua sysfs, quyền truy cập vào các chỉ số cảm biến nhiệt độ có thể đọc được được sử dụng trên các ổ cứng và SSD hiện đại được cung cấp.
    • đóng góp những thay đổi đáng kể đối với hệ thống âm thanh ALSA, nhằm mục đích loại bỏ mã của vấn đề của năm 2038 (tránh sử dụng loại time_t 32-bit trong giao diện snd_pcm_mmap_status và snd_pcm_mmap_control). Đã thêm hỗ trợ cho codec âm thanh mới
      Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.

    • Thêm trình điều khiển cho màn hình LCD Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0,
      BOE NV140FHM-N49,
      Satoz SAT050AT40H12R2,
      Sắc nét LS020B1DD01D.

    • Thêm hỗ trợ cho bo mạch ARM và nền tảng Gen1 Amazon Echo (dựa trên OMAP3630), Samsung Galaxy S III mini (GT-I8190), Allwinner Emlid Neutis, Libre Computer ALL-H3-IT, PineH64 Model B, Aibretech Amlogic GX PC,
      Armada SolidRun Clearfog GTR, NXPGateworks GW59xx,
      Trình đọc sách điện tử Tolino Shine 3,
      Nghệ sĩ nhúng COM (i.MX7ULP), SolidRun Clearfog CX/ITX và HoneyComb (LX2160A), Google Coral Edge TPU (i.MX8MQ),
      Rockchip Radxa Dalang Carrier, Radxa Rock Pi N10, VMARC RK3399Pro SOM
      ST Ericsson HREF520, Inforce 6640, SC7180 IDP, Atmel/Microchip AM9X60 (ARM926 SoC, Kizboxmini), ST stm32mp15, AM3703/AM3715/DM3725, ST Ericsson ab8505, Unisoc SC9863A, Qualcomm SC7180. Đã thêm hỗ trợ cho bộ điều khiển PCIe được sử dụng trong Raspberry Pi 4.

Đồng thời, Tổ chức Phần mềm Tự do Mỹ Latinh hình thành
tùy chọn hạt nhân hoàn toàn miễn phí 5.6 - Linux-libre 5.6-gnu, đã xóa các thành phần chương trình cơ sở và trình điều khiển có chứa các thành phần hoặc phầ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 vô hiệu hóa tính năng tải blob trong trình điều khiển dành cho AMD TEE, ATH11K và Mediatek SCP. Đã cập nhật mã dọn dẹp blob trong các trình điều khiển và hệ thống con AMD PSP, amdgpu và nouveau.

Nguồn: opennet.ru

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