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

Sau hai tháng phát triển, Linus Torvalds giới thiệu phát hành hạt nhân Linux 5.3. Trong số những thay đổi đáng chú ý nhất: hỗ trợ GPU AMD Navi, bộ xử lý Zhaoxi và công nghệ quản lý năng lượng Intel Speed ​​Select, khả năng sử dụng hướng dẫn umwait để chờ mà không cần sử dụng chu kỳ,
Chế độ 'kẹp sử dụng' giúp tăng khả năng tương tác cho CPU không đối xứng, lệnh gọi hệ thống pidfd_open, khả năng sử dụng địa chỉ IPv4 từ mạng con 0.0.0.0/8, khả năng tăng tốc phần cứng nftables, hỗ trợ HDR trong hệ thống con DRM, tích hợp ACRN siêu giám sát.

В thông báo phát hành mới, Linus đã nhắc nhở tất cả các nhà phát triển về quy tắc chính của việc phát triển kernel - duy trì hành vi tương tự đối với các thành phần không gian người dùng. Các thay đổi đối với kernel không được làm hỏng các ứng dụng đang chạy hoặc dẫn đến sự hồi quy ở cấp độ người dùng theo bất kỳ cách nào. Trong trường hợp này, việc vi phạm hành vi không chỉ có thể gây ra thay đổi trong ABI, xóa mã lỗi thời hoặc xuất hiện lỗi mà còn tác động gián tiếp đến các cải tiến hữu ích hoạt động chính xác. Như một ví dụ minh họa đã có bỏ đi hữu ích tối ưu hóa trong mã Ext4, giúp giảm số lượng truy cập ổ đĩa bằng cách vô hiệu hóa việc đọc trước bảng inode đối với các yêu cầu I/O nhỏ.

Việc tối ưu hóa dẫn đến thực tế là, do hoạt động của đĩa giảm, entropy cho trình tạo số ngẫu nhiên getrandom() bắt đầu tích lũy chậm hơn và trong một số cấu hình, trong một số trường hợp nhất định, có thể quan sát thấy tình trạng đóng băng trong quá trình tải cho đến khi nhóm entropy được hoàn thành. điền. Vì việc tối ưu hóa thực sự hữu ích nên đã nảy sinh một cuộc thảo luận giữa các nhà phát triển trong đó đề xuất khắc phục sự cố bằng cách tắt chế độ chặn mặc định của lệnh gọi getrandom() và thêm cờ tùy chọn để chờ entropy, nhưng thay đổi như vậy sẽ ảnh hưởng đến chất lượng của các số ngẫu nhiên ở giai đoạn tải đầu tiên.

Phiên bản mới bao gồm 15794 bản sửa lỗi từ 1974 nhà phát triển,
kích thước bản vá - 92 MB (các thay đổi ảnh hưởng đến 13986 tệp, 258419 dòng mã đã được thêm vào,
599137 hàng đã bị xóa). Khoảng 39% được trình bày trong phần 5.3
những thay đổi liên quan đến trình điều khiển thiết bị, khoảng 12% 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, 11%
liên quan đến ngăn xếp mạng, 3% cho hệ thống tệp và 3% cho nội bộ
các hệ thống con hạt nhân.

Chính đổi mới:

  • Dịch vụ bộ nhớ và hệ thống
    • Tiếp tục phát triển chức năng 'pidfd' để giúp xử lý các tình huống sử dụng lại PID (pidfd được liên kết với một quy trình cụ thể và không thay đổi, trong khi PID có thể được liên kết với một quy trình khác sau khi quy trình hiện tại được liên kết với PID đó chấm dứt). Trước đây nó đã được thêm vào kernel
      lệnh gọi hệ thống pidfd_send_signal() và cờ CLONE_PIDFD trong lệnh gọi clone() để lấy pidfd để sử dụng trong idfd_send_signal(). Việc sử dụng clone() với cờ CLONE_PIDFD có thể gây ra sự cố với trình quản lý dịch vụ hoặc hệ thống chấm dứt buộc hết bộ nhớ của nền tảng Android. Trong trường hợp này, lệnh gọi fork() hoặc clone() không có CLONE_PIDFD được sử dụng để bắt đầu.

      Kernel 5.3 đã giới thiệu lệnh gọi hệ thống pidfd_open(), cho phép bạn lấy pidfd có thể kiểm tra cho một quy trình hiện có tùy ý không được tạo bằng cách gọi clone() bằng cờ CLONE_PIDFD. Đồng thời bổ sung hỗ trợ cho việc bỏ phiếu pidfd bằng cách sử dụng poll() và epoll(), cho phép người quản lý quy trình theo dõi việc chấm dứt các quy trình tùy ý mà không sợ xảy ra tình trạng tương tranh nếu một PID được gán cho một quy trình mới. Cơ chế thông báo khi một quá trình liên kết với pidfd đã kết thúc cũng tương tự như thông báo khi quá trình con của nó kết thúc;

    • Hỗ trợ cơ chế ghim tải đã được thêm vào bộ lập lịch tác vụ (Kẹp sử dụng), cho phép bạn tuân thủ dải tần số tối thiểu hoặc tối đa, tùy thuộc vào tác vụ đang hoạt động trên CPU. Cơ chế được trình bày sẽ tăng tốc các tác vụ ảnh hưởng trực tiếp đến chất lượng trải nghiệm người dùng bằng cách chạy các tác vụ này ít nhất ở mức thấp hơn của tần suất “được yêu cầu”. Các tác vụ có mức độ ưu tiên thấp không ảnh hưởng đến công việc của người dùng sẽ được khởi chạy bằng giới hạn trên của tần suất “được phép”. Các giới hạn được đặt thông qua các thuộc tính sched_uclamp_util_min và sched_uclamp_util_max trong lệnh gọi hệ thống sched_setattr().
    • Thêm hỗ trợ cho công nghệ quản lý năng lượng Chọn tốc độ Intel, có sẵn trên một số máy chủ chọn lọc có bộ xử lý Intel Xeon. Công nghệ này cho phép bạn thiết lập cài đặt hiệu suất và thông lượng phân vùng cho các lõi CPU khác nhau, cho phép bạn ưu tiên hiệu suất cho các tác vụ được thực hiện trên các lõi nhất định, làm giảm hiệu suất trên các lõi khác;
    • Các tiến trình trong không gian người dùng giả dụ như vậy khả năng chờ trong một thời gian ngắn mà không cần sử dụng vòng lặp bằng lệnh umwait. Lệnh này, cùng với lệnh umonitor và tpause, sẽ được cung cấp trong các chip "Tremont" sắp ra mắt của Intel và sẽ cho phép thực hiện các độ trễ tiết kiệm năng lượng và không ảnh hưởng đến hiệu suất của các luồng khác khi sử dụng Hyper Threading;
    • Đối với kiến ​​trúc RISC-V, hỗ trợ cho các trang bộ nhớ lớn đã được thêm vào;
    • Cơ chế theo dõi kprobes đã bổ sung khả năng hủy tham chiếu các con trỏ hạt nhân tới không gian người dùng, ví dụ: có thể được sử dụng để đánh giá nội dung của các cấu trúc được truyền cho các lệnh gọi hệ thống. Khả năng cài đặt kiểm tra ở giai đoạn khởi động cũng đã được thêm vào.
    • Đã thêm tùy chọn PREEMPT_RT vào tệp cấu hình để hoạt động theo thời gian thực. Bản thân mã hỗ trợ chế độ thời gian thực vẫn chưa được thêm vào kernel, nhưng sự xuất hiện của tùy chọn là một dấu hiệu tốt cho thấy sử thi lâu dài hội nhập Các bản vá thời gian thực sắp hoàn thành;
    • Đã thêm lệnh gọi hệ thống clone3() với việc triển khai phiên bản mở rộng hơn của giao diện clone(), cho phép chỉ định số lượng cờ lớn hơn;
    • Đã thêm trình xử lý bpf_send_signal(), cho phép các chương trình BPF gửi tín hiệu đến các quy trình tùy ý;
    • Đối với các sự kiện hoàn hảo trong môi trường ảo hóa KVM, một cơ chế lọc sự kiện mới đã được thêm vào, cho phép quản trị viên xác định loại sự kiện được phép hoặc không được phép giám sát ở phía hệ thống khách;
    • Khả năng xử lý các chương trình có vòng lặp đã được thêm vào cơ chế xác minh ứng dụng eBPF nếu việc thực thi vòng lặp bị hạn chế và không thể dẫn đến vượt quá giới hạn về số lượng lệnh tối đa;
  • Hệ thống con đĩa, I/O và hệ thống tệp
    • Hệ thống tệp XFS hiện hỗ trợ bỏ qua inode đa luồng (ví dụ: khi kiểm tra hạn ngạch). ioctls BULKSTAT và INUMBERS mới đã được thêm vào, cung cấp quyền truy cập vào các tính năng xuất hiện trong phiên bản thứ năm của định dạng FS, chẳng hạn như thời gian sinh của inode và khả năng đặt tham số BULKSTAT và INUMBERS cho từng nhóm AG (Nhóm phân bổ);
    • Trong Ext4 hỗ trợ thêm khoảng trống trong thư mục (khối không liên kết).
      Xử lý được cung cấp cờ “i” (không thay đổi) đối với các tệp đang mở (việc ghi bị cấm trong trường hợp cờ được đặt vào thời điểm tệp đã được mở);

    • Btrfs cung cấp định nghĩa về việc triển khai nhanh crc32c trên tất cả các kiến ​​trúc;
    • Trong CIFS, mã hỗ trợ smbdirect đã bị xóa dưới dạng phát triển thử nghiệm. SMB3 đã thêm khả năng sử dụng thuật toán mã hóa ở chế độ GCM. Đã thêm tùy chọn gắn kết mới để trích xuất các tham số chế độ từ các mục nhập ACE (Access Control Entry). Tối ưu hóa hiệu suất của lệnh gọi open();
    • Đã thêm tùy chọn vào F2FS để hạn chế trình thu gom rác khi chạy ở chế độ điểm kiểm tra = tắt. Đã thêm ioctl để xóa phạm vi khối khỏi F2FS, cho phép điều chỉnh kích thước phân vùng nhanh chóng. Đã thêm khả năng đặt tệp hoán đổi trong F2FS để cung cấp I/O trực tiếp. Đã thêm hỗ trợ ghim tệp và phân bổ khối cho các tệp tương tự cho tất cả người dùng;
    • Đã thêm hỗ trợ cho các hoạt động không đồng bộ sendmsg() và recvmsg() vào giao diện cho đầu vào/đầu ra không đồng bộ io_uring;
    • Hỗ trợ nén bằng thuật toán zstd và khả năng xác minh hình ảnh FS đã ký đã được thêm vào hệ thống tệp UBIFS;
    • Ceph FS hiện hỗ trợ nhãn bảo mật SELinux cho các tệp;
    • Đối với NFSv4, tùy chọn gắn kết mới “nconnect=” đã được triển khai, tùy chọn này xác định số lượng kết nối được thiết lập với máy chủ. Lưu lượng giữa các kết nối này sẽ được phân phối bằng cách sử dụng cân bằng tải. Ngoài ra, máy chủ NFSv4 hiện tạo một thư mục /proc/fs/nfsd/clients với thông tin về các máy khách hiện tại, bao gồm thông tin về các tệp mà chúng đã mở;
  • Ảo hóa và bảo mật
    • Hạt nhân bao gồm một bộ ảo hóa cho các thiết bị nhúng ACRN, được viết nhằm mục đích sẵn sàng cho các nhiệm 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;
    • Trong chế độ người dùng Linux thêm Chế độ du hành thời gian, cho phép bạn làm chậm hoặc tăng tốc thời gian trong môi trường UML ảo để giúp gỡ lỗi mã liên quan đến thời gian dễ dàng hơn. Ngoài ra, một tham số đã được thêm vào
      time-travel-start, cho phép đồng hồ hệ thống bắt đầu từ một thời điểm cụ thể ở định dạng epoch;

    • Các tùy chọn dòng lệnh kernel mới “init_on_alloc” và “init_on_free” đã được thêm vào, khi được chỉ định, tính năng zeroing của các vùng bộ nhớ được phân bổ và giải phóng sẽ được bật (điền các số XNUMX cho malloc và free), cho phép tăng cường bảo mật do chi phí khởi tạo bổ sung;
    • Đã thêm trình điều khiển mới tài năng với việc triển khai một thiết bị ảo hóa song song cho phép bạn gửi các yêu cầu IOMMU như ATTACH, DETACH, MAP và UNMAP qua truyền tải virtio mà không mô phỏng các bảng trang bộ nhớ;
    • Đã thêm trình điều khiển mới virtio-pmem, thể hiện quyền truy cập vào các thiết bị lưu trữ được ánh xạ tới không gian địa chỉ vật lý, chẳng hạn như NVDIMM;
    • Đã triển khai khả năng đính kèm khóa mật mã vào không gian tên người dùng hoặc mạng (các khóa không thể truy cập được bên ngoài không gian tên đã chọn), cũng như bảo vệ khóa bằng ACL;
    • Đến hệ thống con mật mã thêm hỗ trợ thuật toán băm phi mật mã rất nhanh xxhash, tốc độ phụ thuộc vào hiệu suất bộ nhớ;
  • Hệ thống con mạng
    • Đã bật xử lý các địa chỉ IPv4 trong phạm vi 0.0.0.0/8 mà trước đây không thể sử dụng được. Giới thiệu mạng con này sẽ cho phép phân phối thêm 16 triệu địa chỉ IPv4;
    • Trong Netfilter cho nftables thêm hỗ trợ cơ chế tăng tốc phần cứng để lọc gói thông qua việc sử dụng trình điều khiển bổ sung API chặn luồng. Toàn bộ bảng quy tắc với tất cả các chuỗi có thể được đặt ở bên cạnh bộ điều hợp mạng. Việc kích hoạt được thực hiện bằng cách gắn cờ NFT_TABLE_F_HW vào bảng. Hỗ trợ siêu dữ liệu giao thức Lớp 3 và Lớp 4 đơn giản, hành động chấp nhận/từ chối, ánh xạ theo IP và cổng mạng người gửi/người nhận cũng như loại giao thức;
    • Thêm hỗ trợ theo dõi kết nối tích hợp cho các cầu nối mạng, không yêu cầu sử dụng lớp mô phỏng br_netfilter;
    • Trong nf_tables thêm hỗ trợ mô-đun SYNPROXY, sao chép chức năng tương tự từ iptables và khả năng kiểm tra quy tắc cho các tùy chọn riêng lẻ trong tiêu đề IPv4 cũng được triển khai;
    • Đã thêm khả năng đính kèm các chương trình BPF vào lệnh gọi hệ thống setsockopt() và getsockopt(), ví dụ: cho phép bạn đính kèm trình xử lý truy cập của riêng bạn vào các lệnh gọi này. Ngoài ra, một điểm gọi (hook) mới đã được thêm vào, nhờ đó bạn có thể tổ chức cuộc gọi đến chương trình BPF một lần cho mỗi khoảng thời gian RTT (thời gian khứ hồi, thời gian ping);
    • Đối với IPv4 và IPv6 thêm Cơ chế lưu trữ dữ liệu định tuyến nexthop mới nhằm mục đích tăng khả năng mở rộng của bảng định tuyến. Các thử nghiệm cho thấy khi sử dụng hệ thống mới, một bộ 743 nghìn tuyến đường đã được tải vào kernel chỉ trong 4.3 giây;
    • Dành cho Bluetooth thực hiện chức năng cần thiết để hỗ trợ ping LE;
  • Оборудование
    • Thêm hỗ trợ cho bộ xử lý tương thích x86 của công ty Chiêu Tân, được phát triển là kết quả của dự án chung giữa VIA Technologies và Thành phố Thượng Hải. Dòng CPU ZX được xây dựng trên kiến ​​trúc x86-64 Isaiah, tiếp nối sự phát triển của công nghệ VIA Nhân mã;
    • Hệ thống con DRM (Direct Rendering Manager), cũng như trình điều khiển đồ họa amdgpu và i915, đã bổ sung hỗ trợ phân tích cú pháp, xử lý và gửi siêu dữ liệu HDR (dải động cao) qua cổng HDMI, cho phép sử dụng bảng HDR và ​​màn hình có khả năng hiển thị phạm vi độ sáng bổ sung;
    • Trình điều khiển amdgpu đã bổ sung hỗ trợ ban đầu cho GPU AMD NAVI (RX5700), bao gồm trình điều khiển cơ sở, mã tương tác màn hình (DCN2), GFX và hỗ trợ điện toán (GFX10),
      SDMA 5 (Hệ thống DMA0), quản lý năng lượng và bộ mã hóa/giải mã đa phương tiện (VCN2). amdgpu cũng cải thiện khả năng hỗ trợ cho các thẻ dựa trên GPU Vega12 và Vega20, nhờ đó đã bổ sung thêm khả năng quản lý năng lượng và bộ nhớ;

    • Đã thêm hỗ trợ cho thẻ dựa trên GPU VegaM vào trình điều khiển amdkfd (đối với GPU rời, chẳng hạn như Fiji, Tonga, Polaris);
    • Trong trình điều khiển DRM cho card màn hình Intel cho chip Icelake thực hiện chế độ hiệu chỉnh gamma đa phân đoạn mới. Đã thêm khả năng xuất qua DisplayPort ở định dạng YCbCr4:2:0. Đã thêm chương trình cơ sở mới GuC cho SKL, BXT, KBL, GLK và ICL. Khả năng tắt nguồn màn hình ở chế độ không đồng bộ đã được triển khai. Thêm hỗ trợ lưu và khôi phục bối cảnh kết xuất cho chip Ironlake (gen5) và gen4 (Broadwater - Cantiga), cho phép bạn khôi phục trạng thái GPU từ không gian người dùng khi chuyển từ hoạt động hàng loạt này sang hoạt động hàng loạt khác;
    • Trình điều khiển Nouveau cung cấp khả năng phát hiện chipset NVIDIA Turing TU116;
    • Khả năng của trình điều khiển DRM/KMS dành cho bộ tăng tốc màn hình ARM Komeda (Mali D71) đã được mở rộng, hỗ trợ chia tỷ lệ, chia/hợp nhất các lớp, xoay, ghi chậm, AFBC, SMMU và các định dạng mã hóa màu Y0L2, P010, YUV420_8/10BIT có đã được thêm vào;
    • Trình điều khiển MSM bổ sung hỗ trợ cho dòng Adreno GPU A540 được sử dụng trong bộ xử lý Qualcomm, cũng như hỗ trợ bộ điều khiển MSM8998 DSI cho Snapdragon 835;
    • Đã thêm trình điều khiển cho màn hình LCD Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 và VXT VL050-8048NT-C01;

    • Thêm trình điều khiển để kích hoạt các công cụ tăng tốc giải mã
      video có sẵn trong Amlogic Meson SoC;

    • Trong driver v3d (dành cho GPU Broadcom Video Core V dùng trong Raspberry Pi) đã xuất hiện ủng hộ gửi các shader tính toán;
    • Thêm trình điều khiển cho bàn phím SPI và trackpad được sử dụng trong các mẫu máy tính xách tay Apple MacBook và MacBookPro hiện đại;
    • Thêm bảo vệ bổ sung cho các cuộc gọi ioctl được liên kết với trình điều khiển đĩa mềm và bản thân trình điều khiển được đánh dấu là không được bảo trì
      ("mồ côi"), ngụ ý việc chấm dứt thử nghiệm của nó. Trình điều khiển vẫn được lưu trữ trong kernel nhưng hoạt động chính xác của nó không được đảm bảo. Trình điều khiển được coi là lỗi thời vì rất khó tìm được thiết bị hoạt động để kiểm tra nó - theo quy luật, tất cả các ổ đĩa ngoài hiện tại đều sử dụng giao diện USB.

    • Thêm trình điều khiển cpufreq cho bo mạch Raspberry Pi, cho phép bạn kiểm soát linh hoạt các thay đổi về tần số bộ xử lý;
    • Đã thêm hỗ trợ cho ARM SoC Mediatek mt8183 mới (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP + MMA) và Amlogic G12B (4x Cortex-A73 + 2x Cortex- A53 ), cũng như các bảng:
      • Chủ nghĩa thuần túy Librem5,
      • BMC tốc độ,
      • Microsoft Olympus BMC,
      • Kontron SMARC,
      • Novtech Meerkat96 (i.MX7),
      • ST Micro Avenger96,
      • Google Cheza (Qualcomm SDM845),
      • Qualcomm Dragonboard 845c (Qualcomm SDM845),
      • Tivi Box Hugsun X99 (Rockchip RK3399),
      • Khadas Edge/Edge-V/Captain (Rockchip RK3399),
      • HiHope RZ/G2M,
      • NXP LS1021A-TSN.

Đồ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.3 - Linux-libre 5.3-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. Trong bản phát hành mới, tính năng tải blob bị tắt trong trình điều khiển qcom, hdcp drm, allegro-dvt và meson-vdec.
Cập nhật mã dọn dẹp blob trong trình điều khiển và hệ thống con amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, màn hình cảm ứng_dmi, trình điều khiển âm thanh cho skylake, cũng như trong tài liệu vi mã.

Nguồn: opennet.ru

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