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

Sau hai tháng phát triển, Linus Torvalds giới thiệu phát hành hạt nhân Linux 5.2. Trong số những thay đổi đáng chú ý nhất: Chế độ vận hành Ext4 không phân biệt chữ hoa chữ thường, các lệnh gọi hệ thống riêng biệt để gắn hệ thống tệp, trình điều khiển cho GPU Mali 4xx/ 6xx/7xx, khả năng xử lý các thay đổi về giá trị sysctl trong chương trình BPF, trình ánh xạ thiết bị mô-đun dm-dust, bảo vệ chống lại các cuộc tấn công MDS, hỗ trợ Sound Open Firmware cho DSP, tối ưu hóa hiệu suất BFQ, đưa hệ thống con PSI (Thông tin về trạng thái dừng áp suất) đến khả năng sử dụng trong Android.

Phiên bản mới bao gồm 15100 bản sửa lỗi từ 1882 nhà phát triển,
kích thước bản vá - 62 MB (các thay đổi ảnh hưởng đến 30889 tệp, 625094 dòng mã đã được thêm vào, 531864 dòng đã bị xóa). Khoảng 45% được trình bày trong phần 5.2
những thay đổi liên quan đến trình điều khiển thiết bị, khoảng 21% 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%
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. 12.4% của tất cả các thay đổi được chuẩn bị bởi Intel, 6.3% bởi Red Hat, 5.4% bởi Google, 4.0% bởi AMD, 3.1% bởi SUSE, 3% bởi IBM, 2.7% bởi Huawei, 2.7% bởi Linaro, 2.2% bởi ARM , 1.6 % - Oracle.

Chính đổi mới:

  • Hệ thống con đĩa, I/O và hệ thống tệp
    • Đã thêm cho Ext4 ủng hộ hoạt động mà không phân biệt chữ hoa chữ thường trong tên tệp, chỉ được kích hoạt liên quan đến các thư mục trống riêng lẻ bằng cách sử dụng thuộc tính mới “+F” (EXT4_CASEFOLD_FL). Khi đặt thuộc tính này trên một thư mục, mọi thao tác với file và thư mục con bên trong sẽ được thực hiện mà không tính đến kiểu chữ, kể cả kiểu chữ sẽ bị bỏ qua khi tìm kiếm và mở file (ví dụ file Test.txt, test.txt và test.TXT trong các thư mục đó sẽ được coi là giống nhau). Theo mặc định, hệ thống tệp tiếp tục phân biệt chữ hoa chữ thường, ngoại trừ các thư mục có thuộc tính “chattr +F”;
    • Các chức năng xử lý các ký tự UTF-8 trong tên tệp được sử dụng khi thực hiện các thao tác so sánh và chuẩn hóa chuỗi đã được thống nhất;
    • XFS bổ sung cơ sở hạ tầng để theo dõi tình trạng hệ thống tệp và ioctl mới để truy vấn trạng thái tình trạng. Một tính năng thử nghiệm đã được triển khai để kiểm tra bộ đếm siêu khối trực tuyến.
    • Đã thêm trình ánh xạ thiết bị mô-đun mới "dm-bụi“, cho phép bạn mô phỏng sự xuất hiện của các khối xấu trên phương tiện hoặc lỗi khi đọc từ đĩa. Mô-đun này cho phép bạn đơn giản hóa việc gỡ lỗi và kiểm tra các ứng dụng cũng như các hệ thống lưu trữ khác nhau khi gặp các lỗi có thể xảy ra;
    • Đã tiến hành Tối ưu hóa hiệu suất đáng kể cho bộ lập lịch I/O BFQ. Trong điều kiện tải I/O cao, việc tối ưu hóa được thực hiện cho phép Giảm thời gian thực hiện các thao tác như khởi chạy ứng dụng tới 80%.
    • Đã thêm một loạt lệnh gọi hệ thống để gắn hệ thống tệp: fsopen(), open_tree(), fspick(), fsmount(), fsconfig() и move_mount(). Các lệnh gọi hệ thống này cho phép bạn xử lý riêng các giai đoạn gắn kết khác nhau (xử lý siêu khối, lấy thông tin về hệ thống tệp, gắn kết, đính kèm vào điểm gắn kết), vốn được thực hiện trước đó bằng cách sử dụng lệnh gọi hệ thống mount() chung. Các cuộc gọi riêng biệt cung cấp khả năng thực hiện các kịch bản gắn kết phức tạp hơn và thực hiện các hoạt động riêng biệt như cấu hình lại siêu khối, bật tùy chọn, thay đổi điểm gắn kết và di chuyển sang một không gian tên khác. Ngoài ra, quá trình xử lý riêng biệt cho phép bạn xác định chính xác lý do xuất ra mã lỗi và đặt nhiều nguồn cho hệ thống tệp nhiều lớp, chẳng hạn như lớp phủ;
    • Một thao tác mới IORING_OP_SYNC_FILE_RANGE đã được thêm vào giao diện dành cho I/O io_uring không đồng bộ, thực hiện các hành động tương đương với lệnh gọi hệ thống sync_file_range(), đồng thời triển khai khả năng đăng ký eventfd với io_uring và nhận thông báo về việc hoàn thành các hoạt động;
    • Đối với hệ thống tệp CIFS, FIEMAP ioctl đã được thêm vào, cung cấp khả năng ánh xạ phạm vi hiệu quả cũng như hỗ trợ cho các chế độ SEEK_DATA và SEEK_HOLE;
    • Trong hệ thống con FUSE đề xuất API để quản lý bộ nhớ đệm dữ liệu;
    • Btrfs đã tối ưu hóa việc triển khai qgroups và cải thiện tốc độ thực thi fsync cho các tệp có nhiều liên kết cứng. Mã kiểm tra tính toàn vẹn của dữ liệu đã được cải thiện, hiện có tính đến những hư hỏng có thể xảy ra đối với thông tin trong RAM trước khi chuyển dữ liệu vào đĩa;
    • CEPH đã thêm hỗ trợ xuất ảnh chụp nhanh qua NFS;
    • Việc triển khai gắn NFSv4 ở chế độ “mềm” đã được cải thiện (nếu xảy ra lỗi khi truy cập máy chủ ở chế độ “mềm”, lệnh gọi sẽ trả về ngay mã lỗi và điều khiển ở chế độ “cứng” không được đưa ra cho đến khi FS tính khả dụng hoặc thời gian chờ được khôi phục). Bản phát hành mới cung cấp khả năng xử lý thời gian chờ chính xác hơn, khôi phục sự cố nhanh hơn và tùy chọn gắn kết “nhẹ nhàng hơn” mới cho phép bạn thay đổi mã lỗi (ETIMEDOUT) được trả về khi hết thời gian chờ;
    • API nfsdcld, được thiết kế để theo dõi trạng thái của máy khách NFS, cho phép máy chủ NFS theo dõi chính xác trạng thái của máy khách khi khởi động lại. Do đó, trình nền nfsdcld hiện có thể hoạt động như một trình xử lý nfsdcltrack;
    • Đối với AFS thêm mô phỏng khóa phạm vi byte trong tệp (Khóa phạm vi byte);
  • Ảo hóa và bảo mật
    • Công việc đã được thực hiện để loại bỏ các vị trí trong nhân cho phép thực thi mã từ các vùng bộ nhớ phản ánh có thể ghi, cho phép chặn các lỗ hổng tiềm ẩn có thể bị khai thác trong một cuộc tấn công;
    • Tham số dòng lệnh kernel mới "mitigations=" đã được thêm vào, cung cấp một cách đơn giản để kiểm soát việc kích hoạt một số kỹ thuật nhất định nhằm bảo vệ khỏi các lỗ hổng liên quan đến việc thực thi các hướng dẫn suy đoán trên CPU. Việc chuyển "mitigations=off" sẽ vô hiệu hóa tất cả các phương thức hiện có và chế độ mặc định "mitigations=auto" cho phép bảo vệ nhưng không ảnh hưởng đến việc sử dụng Siêu phân luồng. Chế độ “mitigations=auto,nosmt” còn vô hiệu hóa Siêu phân luồng nếu phương pháp bảo vệ yêu cầu.
    • Thêm hỗ trợ chữ ký số điện tử theo GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), được phát triển bởi Vitaly Chikunov từ Basalt SPO. Đã thêm hỗ trợ cho AES128-CCM khi triển khai TLS gốc. Đã thêm hỗ trợ cho thuật toán AEAD vào mô-đun crypto_simd;
    • Trong Kconfig thêm một phần “làm cứng hạt nhân” riêng biệt với các tùy chọn để tăng cường bảo vệ hạt nhân. Hiện tại, phần mới chỉ chứa các cài đặt để bật plugin nâng cao kiểm tra GCC;
    • Mã hạt nhân gần như đã giao hàng từ các câu lệnh case không vi phạm trong switch (không trả về hoặc ngắt sau mỗi khối case). Vẫn còn phải khắc phục 32 trong số 2311 trường hợp sử dụng công tắc như vậy, sau đó có thể sử dụng chế độ “-Wimplicit-fallthrough” khi xây dựng kernel;
    • Đối với kiến ​​trúc PowerPC, việc hỗ trợ các cơ chế phần cứng để hạn chế các đường dẫn truy cập hạt nhân không mong muốn vào dữ liệu trong không gian người dùng đã được triển khai;
    • Đã thêm mã chặn các cuộc tấn công Lớp MDS (Lấy mẫu dữ liệu vi kiến ​​trúc) trong bộ xử lý Intel. Bạn có thể kiểm tra xem hệ thống có dễ bị tổn thương hay không thông qua biến SysFS “/sys/devices/system/cpu/vulnerabilities/mds”. Доступно hai chế độ bảo vệ: đầy đủ, yêu cầu cập nhật vi mã và bỏ qua, không hoàn toàn đảm bảo xóa bộ đệm CPU khi điều khiển được chuyển sang không gian người dùng hoặc hệ thống khách. Để kiểm soát các chế độ bảo vệ, tham số “mds=” đã được thêm vào kernel, tham số này có thể nhận các giá trị “full”, “full,nosmt” (+ tắt Hyper-Threads) và “off”;
    • Trên các hệ thống x86-64, tính năng bảo vệ “trang bảo vệ ngăn xếp” đã được thêm vào cho IRQ, cơ chế gỡ lỗi và trình xử lý ngoại lệ, bản chất của nó là thay thế các trang bộ nhớ ở viền bằng ngăn xếp, việc truy cập sẽ dẫn đến việc tạo ra một ngoại lệ (lỗi trang);
    • Đã thêm cài đặt sysctl vm.unprivileged_userfaultfd, kiểm soát khả năng sử dụng lệnh gọi hệ thống userfaultfd() của các quy trình không có đặc quyền;
  • Hệ thống con mạng
    • Thêm Hỗ trợ cổng IPv6 cho các tuyến IPv4. Ví dụ: bây giờ bạn có thể chỉ định các quy tắc định tuyến như “ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0”;
    • Đối với ICMPv6, các lệnh gọi ioctl icmp_echo_ignore_anycast và icmp_echo_ignore_multicast được triển khai để bỏ qua ICMP ECHO cho Anycast và
      địa chỉ multicast. Thêm khả năng hạn chế cường độ xử lý gói ICMPv6;

    • Đối với giao thức lưới BATMAN (Phương pháp tiếp cận mạng Adhoc di động tốt hơn), cho phép tạo các mạng phi tập trung trong đó mỗi nút được kết nối thông qua các nút lân cận, thêm hỗ trợ phát sóng từ multicast sang unicast, cũng như khả năng điều khiển thông qua sysfs;
    • Trong công cụ đạo đức thêm tham số Fast Link Down mới, cho phép bạn giảm thời gian nhận thông tin về sự kiện liên kết xuống trong 1000BaseT (trong điều kiện bình thường, độ trễ lên tới 750ms);
    • Đã xuất hiện cơ hội liên kết các đường hầm Foo-Over-UDP với một địa chỉ, giao diện mạng hoặc ổ cắm cụ thể (việc liên kết trước đây chỉ được thực hiện bằng một mặt nạ thông thường);
    • Trong ngăn xếp không dây bảo đảm khả năng thực hiện xử lý
      OWE (Mã hóa không dây cơ hội) trong không gian người dùng;

    • Trong Netfilter, hỗ trợ cho họ địa chỉ inet đã được thêm vào chuỗi nat (ví dụ: giờ đây bạn có thể sử dụng một quy tắc dịch để xử lý ipv4 và ipv6 mà không cần tách các quy tắc cho ipv4 và ipv6);
    • Trong liên kết mạng thêm chế độ nghiêm ngặt để xác minh nghiêm ngặt tính chính xác của tất cả các thông báo và thuộc tính, trong đó không được phép vượt quá kích thước dự kiến ​​​​của các thuộc tính và việc thêm dữ liệu bổ sung vào cuối thông báo đều bị cấm;
  • Dịch vụ bộ nhớ và hệ thống
    • Cờ CLONE_PIDFD đã được thêm vào lệnh gọi hệ thống clone(), khi được chỉ định, bộ mô tả tệp “pidfd” được xác định với tiến trình con đã tạo sẽ được trả về tiến trình cha. Ví dụ: bộ mô tả tệp này có thể được sử dụng để gửi tín hiệu mà không sợ gặp phải tình trạng tương tranh (ngay sau khi gửi tín hiệu, PID mục tiêu có thể được giải phóng do quá trình chấm dứt và bị chiếm bởi quá trình khác);
    • Đối với phiên bản thứ hai của cgroups, chức năng điều khiển tủ đông đã được thêm vào, nhờ đó bạn có thể ngừng hoạt động trong cgroup và tạm thời giải phóng một số tài nguyên (CPU, I/O và thậm chí cả bộ nhớ) để thực hiện các tác vụ khác. Việc quản lý được thực hiện thông qua các tệp kiểm soát cgroup.freeze và cgroup.events trong cây cgroup. Mục 1 trong cgroup.freeze đóng băng các tiến trình trong cgroup hiện tại và tất cả các nhóm con. Vì việc đóng băng mất một thời gian nên một tệp cgroup.event bổ sung được cung cấp qua đó bạn có thể tìm hiểu về việc hoàn thành thao tác;
    • Bảo mật xuất các thuộc tính bộ nhớ được gắn vào mỗi nút trong sysfs, cho phép bạn xác định từ không gian người dùng bản chất của việc xử lý các ngân hàng bộ nhớ trong các hệ thống có bộ nhớ không đồng nhất;
    • Hệ thống con PSI (Thông tin về trạng thái dừng áp suất) đã được cải tiến, cho phép bạn phân tích thông tin về thời gian chờ nhận các tài nguyên khác nhau (CPU, bộ nhớ, I/O) cho một số tác vụ hoặc bộ quy trình nhất định trong một nhóm. Bằng cách sử dụng PSI, trình xử lý không gian người dùng có thể ước tính chính xác hơn mức độ tải hệ thống và kiểu làm chậm so với Tải trung bình. Phiên bản mới cung cấp hỗ trợ cài đặt ngưỡng độ nhạy và khả năng sử dụng lệnh gọi poll() để nhận thông báo rằng các ngưỡng đã đặt đã được kích hoạt trong một khoảng thời gian nhất định. Tính năng này cho phép Android theo dõi tình trạng thiếu bộ nhớ ở giai đoạn đầu, xác định nguồn gốc của sự cố và chấm dứt các ứng dụng không quan trọng mà không gây ra sự cố mà người dùng có thể nhận thấy. Khi kiểm tra sức chịu đựng, các công cụ giám sát mức tiêu thụ bộ nhớ dựa trên PSI cho thấy kết quả dương tính giả ít hơn 10 lần so với thống kê vmáp suất;
    • Mã kiểm tra chương trình BPF đã được tối ưu hóa, cho phép kiểm tra nhanh hơn tới 20 lần đối với các chương trình lớn. Việc tối ưu hóa giúp có thể nâng giới hạn về kích thước của chương trình BPF từ 4096 lên một triệu lệnh;
    • Đối với các chương trình BPF giả dụ như vậy khả năng truy cập dữ liệu toàn cầu, cho phép bạn xác định các biến và hằng toàn cục trong chương trình;
    • Thêm API, cho phép bạn kiểm soát các thay đổi trong tham số sysctl từ các chương trình BPF;
    • Đối với kiến ​​trúc MIPS32, trình biên dịch JIT cho máy ảo eBPF đã được triển khai;
    • Đối với kiến ​​trúc PowerPC 32-bit, đã thêm hỗ trợ cho công cụ gỡ lỗi KASan (Kernel address Khử trùng), giúp xác định lỗi khi làm việc với bộ nhớ;
    • Trên các hệ thống x86-64, hạn chế về việc đặt kết xuất trạng thái khi xảy ra sự cố hạt nhân (sự cố-kết xuất) trong vùng bộ nhớ trên 896MB đã bị xóa;
    • Đối với kiến ​​trúc s390, hỗ trợ ngẫu nhiên hóa không gian địa chỉ kernel (KASLR) và khả năng xác minh chữ ký số khi tải kernel qua kexec_file_load() được triển khai;
    • Đối với kiến ​​trúc PA-RISC, đã thêm hỗ trợ cho trình gỡ lỗi kernel (KGDB), dấu nhảy và đầu dò k;
  • Оборудование
    • Đã bao gồm tài xế Lima cho GPU Mali 400/450, được sử dụng trong nhiều chip cũ hơn dựa trên kiến ​​trúc ARM. Đối với các GPU Mali mới hơn, trình điều khiển Pan Frost đã được thêm vào, hỗ trợ các chip dựa trên vi kiến ​​trúc Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) và Biblast (Mali G3x, G5x, G7x);
    • Đã thêm hỗ trợ cho các thiết bị âm thanh sử dụng chương trình cơ sở mở Phần mềm mở rộng âm thanh (OFS). Bất chấp sự sẵn có của trình điều khiển mở, mã chương trình cơ sở cho chip âm thanh vẫn đóng và được cung cấp ở dạng nhị phân. Dự án Sound Open Firmware được Intel phát triển nhằm tạo ra firmware mở cho chip DSP liên quan đến xử lý âm thanh (sau này Google cũng tham gia phát triển). Hiện tại, dự án đã chuẩn bị cho việc khám phá phần sụn cho chip âm thanh của các nền tảng Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake và IceLake;
    • Trình điều khiển Intel DRM (i915) bổ sung hỗ trợ cho chip
      Hồ Elkhart (Gen11). Đã thêm ID PCI cho chip Comet Lake (Gen9). Hỗ trợ cho chip Icelake đã được ổn định, trong đó các mã nhận dạng thiết bị PCI bổ sung cũng đã được thêm vào.
      Đã bao gồm
      chế độ chuyển đổi không đồng bộ giữa hai bộ đệm trong bộ nhớ video (async flip) khi thực hiện thao tác ghi qua mmio, giúp tăng đáng kể hiệu suất của một số ứng dụng 3D (ví dụ: hiệu suất trong thử nghiệm 3DMark Ice Storm tăng 300-400%). Hỗ trợ công nghệ bổ sung HDCP2.2 (Bảo vệ nội dung số băng thông cao) để mã hóa tín hiệu video được truyền qua HDMI;

    • Trình điều khiển amdgpu cho GPU Vega20 thêm hỗ trợ RAS ​​(Độ tin cậy, Tính khả dụng, Khả năng phục vụ) và hỗ trợ thử nghiệm cho hệ thống con SMU 11, thay thế công nghệ Powerplay. Dành cho GPU Vega12 thêm hỗ trợ chế độ BACO (Bus Active, Chip Off). Đã thêm hỗ trợ ban đầu cho XGMI, bus tốc độ cao (PCIe 4.0) để kết nối GPU. Đã thêm số nhận dạng bị thiếu cho thẻ dựa trên GPU Polaris10 vào trình điều khiển amdkfd;
    • Trình điều khiển Nouveau đã bổ sung hỗ trợ cho các bo mạch dựa trên chipset NVIDIA Turing 117 (TU117, được sử dụng trong GeForce GTX 1650). TRONG
      kconfig thêm cài đặt để tắt các chức năng lỗi thời không còn được sử dụng trong các bản phát hành libdrm hiện tại;

    • Hỗ trợ cho các đối tượng đồng bộ hóa “dòng thời gian” đã được thêm vào API DRM và trình điều khiển amdgpu, cho phép bạn thực hiện mà không cần chặn cổ điển.
    • Trình điều khiển vboxvideo cho GPU ảo VirtualBox đã được chuyển từ nhánh dàn dựng sang cấu trúc chính;
    • Đã thêm trình điều khiển tốc độ cho chip GFX SoC ASPEED;
    • Đã thêm hỗ trợ cho ARM SoC và Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi ) bảng RK3399, Nanopi NEO4, Veyron-Mighty Chromebook), Amlogic: SEI Robotics SEI510,
      ST Micro (stm32mp157a, stm32mp157c), NXP (
      Eckelmann ci4x10 (i.MX6DL),

      i.MX8MM EVK (i.MX8MM),

      ZII i.MX7 RPU2 (i.MX7),

      ZII SPB4 (VF610),

      Zii Ultra (i.MX8M),

      TQ TQMa7S (i.MX7Solo),

      TQ TQMa7D (i.MX7Dual),

      Hào quang Kobo (i.MX50),

      Menlosystems M53 (i.MX53)), NVIDIA Jetson Nano (Tegra T210).

Đồ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.2 - Linux-libre 5.2-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 đ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 bao gồm tải lên tập tin
Âm thanh mở Firmware. Tải các đốm màu trong trình điều khiển bị vô hiệu hóa
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp và ucsi_ccg. Mã làm sạch blob trong trình điều khiển và hệ thống con ixp4xx, imx-sdma, amdgpu, nouveau và goya, cũng như trong tài liệu vi mã, đã được cập nhật. Đã ngừng làm sạch các đốm màu trong trình điều khiển r8822be do đã loại bỏ nó.

Nguồn: opennet.ru

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