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

Sau hai tháng phát triển, Linus Torvalds giới thiệu phát hành hạt nhân Linux 5.1. Trong số những thay đổi đáng chú ý nhất: giao diện mới cho I/O io_uring không đồng bộ, khả năng sử dụng NVDIMM làm RAM, hỗ trợ bộ nhớ ảo dùng chung trong Nouveau, hỗ trợ giám sát có thể mở rộng các hệ thống tệp rất lớn thông qua fanotify, khả năng định cấu hình nén Zstd các cấp độ trong Btrfs, trình xử lý TEO cpuidle mới, triển khai lệnh gọi hệ thống để giải quyết vấn đề 2038, khả năng khởi động từ các thiết bị ánh xạ thiết bị mà không cần initramfs, mô-đun SafeSetID LSM, hỗ trợ cho các bản vá trực tiếp kết hợp.

Chính đổi mới:

  • Hệ thống con đĩa, I/O và hệ thống tệp
    • Đã triển khai giao diện mới cho I/O không đồng bộ - io_uring, điều đáng chú ý là hỗ trợ bỏ phiếu I/O và khả năng làm việc có hoặc không có bộ đệm. Chúng ta hãy nhớ lại rằng cơ chế I/O không đồng bộ được đề xuất trước đó “aio” không hỗ trợ I/O đệm, chỉ có thể hoạt động ở chế độ O_DIRECT (không đệm và bỏ qua bộ đệm), gặp sự cố với khóa do phải chờ siêu dữ liệu khả dụng và thể hiện chi phí chung lớn do sao chép dữ liệu trong bộ nhớ.

      Trong API
      Các nhà phát triển io_uring đã cố gắng loại bỏ những thiếu sót của giao diện aio cũ. Qua hiệu suất io_uring rất gần với SPDK và vượt trội đáng kể so với libaio khi làm việc với tính năng bỏ phiếu được kích hoạt. Một thư viện đã được chuẩn bị để sử dụng io_uring trong các ứng dụng cuối chạy trong không gian người dùng giải khát, cung cấp một khung công tác cấp cao trên giao diện kernel;

    • Trong cơ chế theo dõi sự kiện trong FS fanotify() thêm hỗ trợ theo dõi các tình huống thay đổi cấu trúc và siêu khối trực tiếp (sự kiện tạo, xóa và di chuyển thư mục). Các tính năng được trình bày giúp giải quyết các vấn đề về khả năng mở rộng phát sinh khi tạo theo dõi thay đổi đệ quy trong các hệ thống tệp rất lớn bằng cơ chế inotify (những thay đổi trực tiếp trước đây chỉ có thể được theo dõi thông qua inotify, nhưng
      hiệu suất trong điều kiện theo dõi đệ quy của các thư mục lồng nhau lớn còn nhiều điều mong muốn). Giờ đây, việc giám sát như vậy có thể được thực hiện một cách hiệu quả thông qua fanotify;

    • Trên hệ thống tập tin Btrfs thêm khả năng tùy chỉnh mức độ nén cho thuật toán zstd, có thể coi là sự dung hòa tối ưu giữa lz4 nhanh nhưng không hiệu quả và xz nén chậm nhưng tốt. Bằng cách tương tự với cách trước đây có thể đặt mức nén khi sử dụng zlib, hỗ trợ cho tùy chọn gắn kết “-o nén=zstd:level” đã được thêm cho zstd. Trong quá trình thử nghiệm, mức tối thiểu đầu tiên cung cấp khả năng nén dữ liệu 2.658 lần với tốc độ nén 438.47 MB/s, tốc độ giải nén 910.51 MB/s và mức tiêu thụ bộ nhớ là 780 MB và mức tối đa 15 cung cấp 3.126 lần, nhưng có nén tốc độ 37.30 MB/s, giải nén 878.84 MB/s và tiêu thụ bộ nhớ 2547 MB;
    • Thêm khả năng khởi động từ hệ thống tệp nằm trên thiết bị ánh xạ thiết bị mà không cần sử dụng initramfs. Bắt đầu với bản phát hành kernel hiện tại, các thiết bị ánh xạ thiết bị có thể được sử dụng trực tiếp trong quá trình khởi động, chẳng hạn như dưới dạng phân vùng với hệ thống tệp gốc. Phân vùng được cấu hình bằng tham số khởi động “dm-mod.create”. Các mô-đun ánh xạ thiết bị được phép tải bao gồm: “mật mã”, “độ trễ”, “tuyến tính”, “snapshot-origin” và “verity”;
    • Cờ F2FS_NOCOW_FL đã được thêm vào hệ thống tệp F2FS hướng tới ổ đĩa Flash, cho phép bạn tắt chế độ sao chép khi ghi cho một tệp nhất định;
    • Hệ thống tập tin bị xóa khỏi kernel Exof, là một biến thể của ext2, được điều chỉnh để làm việc với kho lưu trữ đối tượng OSD (Thiết bị lưu trữ dựa trên đối tượng). Hỗ trợ giao thức SCSI cho các thiết bị lưu trữ đối tượng như vậy cũng đã bị loại bỏ;
  • Ảo hóa và bảo mật
    • Đã thêm tùy chọn PR_SPEC_DISABLE_NOEXEC vào prctl() để kiểm soát việc thực hiện các hướng dẫn suy đoán cho quy trình đã chọn. Một tùy chọn mới cho phép bạn vô hiệu hóa có chọn lọc việc thực thi suy đoán đối với các quy trình có khả năng bị tấn công bởi cuộc tấn công Spectre. Khóa kéo dài cho đến lần gọi đầu tiên tới exec();
    • Đã triển khai mô-đun LSM ID an toàn, cho phép các dịch vụ hệ thống quản lý người dùng một cách an toàn mà không cần tăng đặc quyền (CAP_SETUID) và không có được đặc quyền root. Các đặc quyền được chỉ định bằng cách xác định các quy tắc trong securityfs dựa trên danh sách trắng các ràng buộc hợp lệ (ở dạng “UID1:UID2”);
    • Đã thêm các thay đổi cấp thấp cần thiết để tải các mô-đun bảo mật (LSM) dựa trên ngăn xếp. Giới thiệu tùy chọn khởi động kernel "lsm" để kiểm soát mô-đun nào được tải và theo thứ tự nào;
    • Hỗ trợ cho không gian tên tệp đã được thêm vào hệ thống con kiểm tra;
    • mở rộng khả năng của plugin GCC structleak, cho phép bạn chặn khả năng rò rỉ nội dung bộ nhớ. Cung cấp khả năng khởi tạo bất kỳ biến nào được sử dụng trong mã thông qua quyền truy cập tham chiếu trên ngăn xếp;
  • Hệ thống con mạng
    • Đối với ổ cắm thực hiện tùy chọn mới "SO_BINDTOIFINDEX" tương tự như
      "SO_BINDTODEVICE", nhưng lấy số chỉ mục của giao diện mạng thay vì tên giao diện làm đối số;

    • Ngăn xếp mac80211 đã thêm khả năng gán nhiều BSSID (địa chỉ MAC) cho một thiết bị. Là một phần của dự án tối ưu hóa hiệu suất WiFi, ngăn xếp mac80211 đã bổ sung tính năng tính toán thời gian phát sóng và khả năng phân bổ thời gian phát sóng giữa nhiều trạm (khi hoạt động ở chế độ điểm truy cập, phân bổ ít thời gian truyền hơn cho các trạm không dây chậm, thay vì phân bổ thời gian đồng đều giữa tất cả các trạm. trạm);
    • Đã thêm cơ chế "sức khỏe devlink", cung cấp thông báo khi xảy ra sự cố với giao diện mạng;
  • Dịch vụ bộ nhớ và hệ thống
    • thực hiện phân phối tín hiệu an toàn cho phép tái sử dụng PID. Ví dụ: khi gọi kill trước đó, một tình huống có thể phát sinh trong đó, 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 kết thúc và bị chiếm giữ bởi một quá trình khác, và tín hiệu cuối cùng sẽ được chuyển sang một quá trình khác. Để loại bỏ những tình huống như vậy, một lệnh gọi hệ thống mới pidfd_send_signal đã được thêm vào, lệnh này sử dụng các bộ mô tả tệp từ /proc/pid để đảm bảo liên kết quy trình ổn định. Ngay cả khi PID được sử dụng lại trong quá trình xử lý cuộc gọi hệ thống, bộ mô tả tệp sẽ không thay đổi và có thể được sử dụng một cách an toàn để gửi tín hiệu đến quy trình;
    • Thêm khả năng sử dụng các thiết bị bộ nhớ vĩnh viễn (ví dụ: bộ nhớ liên tục NVDIMM) dưới dạng RAM. Cho đến nay, kernel hỗ trợ các thiết bị như thiết bị lưu trữ, nhưng giờ đây chúng cũng có thể được sử dụng làm RAM bổ sung. Tính năng này được triển khai nhằm đáp ứng mong muốn của những người dùng sẵn sàng chấp nhận độ trễ hiệu suất và muốn sử dụng API quản lý bộ nhớ nhân Linux gốc thay vì sử dụng các hệ thống phân bổ bộ nhớ không gian người dùng hiện có chạy trên mmap cho dax tài liệu;
    • Đã thêm trình xử lý nhàn rỗi CPU mới (cpuidle, quyết định khi nào CPU có thể được đưa vào chế độ tiết kiệm năng lượng sâu; chế độ càng sâu thì mức tiết kiệm càng lớn nhưng cũng mất nhiều thời gian hơn để thoát khỏi chế độ) - TEO (Timer Events Oriented Governor ). Cho đến nay, hai trình xử lý cpuidle đã được đề xuất - “menu” và “ladder”, khác nhau về phương pháp phỏng đoán. Trình xử lý "menu" đã biết các vấn đề trong việc đưa ra các quyết định theo kinh nghiệm, để loại bỏ vấn đề mà nó đã quyết định chuẩn bị một trình xử lý mới. TEO được định vị là một giải pháp thay thế cho trình xử lý "menu", cho phép đạt hiệu suất cao hơn trong khi vẫn duy trì cùng mức tiêu thụ điện năng.
      Bạn có thể kích hoạt trình xử lý mới bằng tham số khởi động “cpuidle.governor=teo”;

    • Là một phần của công việc loại bỏ vấn đề của năm 2038, do tràn loại time_t 32 bit, bao gồm các lệnh gọi hệ thống cung cấp bộ đếm thời gian 32 bit cho kiến ​​trúc 64 bit. Kết quả là cấu trúc time_t 64-bit hiện có thể được sử dụng trên tất cả các kiến ​​trúc. Những thay đổi tương tự cũng đã được triển khai trong hệ thống con mạng cho các tùy chọn dấu thời gian ổ cắm mạng;
    • Vào hệ thống vá nóng cho lõi (vá trực tiếp) thêm Tính năng “Thay thế nguyên tử” để áp dụng nguyên tử một loạt thay đổi cho một chức năng duy nhất. Tính năng này cho phép bạn phân phối các bản vá tóm tắt bao gồm một số thay đổi cùng một lúc, thay vì quá trình áp dụng các bản vá trực tiếp theo từng giai đoạn theo một thứ tự được xác định nghiêm ngặt, khá khó để duy trì. Trong khi trước đây, mỗi thay đổi tiếp theo phải dựa trên trạng thái của hàm sau lần thay đổi cuối cùng, thì giờ đây có thể truyền bá một số thay đổi gắn với một trạng thái ban đầu cùng một lúc (tức là người bảo trì có thể duy trì một bản vá hợp nhất liên quan đến kernel cơ sở thay vì một chuỗi các bản vá phụ thuộc vào nhau);
    • Đã công bố hỗ trợ không được dùng nữa cho định dạng tệp thực thi a.out và
      LOẠI BỎ mã để tạo các tệp lõi ở định dạng a.out, ở trạng thái bị bỏ rơi. Định dạng a.out đã không được sử dụng trên các hệ thống Linux trong một thời gian dài và việc tạo tệp a.out từ lâu đã không được các công cụ hiện đại hỗ trợ trong cấu hình Linux mặc định. Ngoài ra, trình tải tệp a.out có thể được triển khai hoàn toàn trong không gian người dùng;

    • Khả năng xác định và loại bỏ mã không sử dụng đã được thêm vào cơ chế xác minh chương trình BPF. Nhân cũng bao gồm các bản vá có hỗ trợ spinlock cho hệ thống con BPF, cung cấp các khả năng bổ sung để quản lý việc thực thi song song các chương trình BPF;
  • Оборудование
    • Trong trình điều khiển Nouveau thêm hỗ trợ quản lý bộ nhớ không đồng nhất, cho phép CPU và GPU truy cập vào các vùng bộ nhớ được đồng bộ hóa chung. Hệ thống bộ nhớ ảo dùng chung (SVM, bộ nhớ ảo dùng chung) được triển khai trên cơ sở hệ thống con HMM (Quản lý bộ nhớ không đồng nhất), cho phép sử dụng các thiết bị có đơn vị quản lý bộ nhớ riêng (MMU, đơn vị quản lý bộ nhớ), có thể truy cập Bộ nhớ chính. Đặc biệt, sử dụng HMM, bạn có thể tổ chức một không gian địa chỉ dùng chung giữa GPU và CPU, trong đó GPU có thể truy cập vào bộ nhớ chính của tiến trình. Hỗ trợ SVM hiện chỉ được kích hoạt cho GPU dòng Pascal, mặc dù hỗ trợ cũng được cung cấp cho GPU Volta và Turing. Hơn nữa, ở Nouveau thêm ioctl mới để kiểm soát việc di chuyển các vùng bộ nhớ xử lý sang bộ nhớ GPU;
    • Trong trình điều khiển Intel DRM dành cho GPU Skylake trở lên (gen9+) Bật nó lên Theo mặc định, chế độ fastboot loại bỏ những thay đổi chế độ không cần thiết trong quá trình khởi động. Thêm mới số nhận dạng thiết bị dựa trên vi kiến ​​trúc Coffelake và Ice Lake. Đối với Coffelake chip thêm Hỗ trợ GVT (Ảo hóa GPU). Đối với GPU ảo thực hiện Hỗ trợ VFIO EDID. Đối với màn hình LCD MIPI/DSI thêm hỗ trợ các phần tử ACPI/PMIC. Đã thực hiện chế độ TV mới 1080p30/50/60 TV;
    • Đã thêm hỗ trợ GPU Vega10/20 BACO vào trình điều khiển amdgpu. Triển khai quản lý năng lượng Vega 10/20 và bảng điều khiển bộ làm mát Vega 10. Đã thêm số nhận dạng thiết bị PCI mới cho GPU Picasso. Thêm giao diện quản lý các phụ thuộc có thể lập lịch để tránh bế tắc;
    • Thêm Trình điều khiển DRM/KMS cho trình tăng tốc màn hình CÁNH TAY Komeda (Mali D71);
    • Đã thêm hỗ trợ cho các tấm màn hình Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 và Kingdisplay kd097d04;
    • Đã thêm hỗ trợ cho các codec âm thanh Rockchip RK3328, Cirrus Logic CS4341 và CS35L36, MediaTek MT6358, Qualcomm WCD9335 và Ingenic JZ4725B, cũng như nền tảng âm thanh Mediatek MT8183;
    • Đã thêm hỗ trợ cho bộ điều khiển NAND Flash STMicroelectronics FMC2, Amlogic Meson;
    • Đã thêm hỗ trợ tăng tốc cho hệ thống phần cứng Habana AI;
    • Đã thêm hỗ trợ cho bộ điều khiển Ethernet gigabit NXP ENETC và giao diện không dây MediaTek MT7603E (PCIe) và MT76x8.

Đồ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.1 - Linux-libre 5.1-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. 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 mt7603 và goya. Cập nhật mã dọn dẹp blob trong trình điều khiển và hệ thống con wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk và màn hình cảm ứng_dmi. Quá trình dọn dẹp blob trong trình tải chương trình cơ sở lantiq xrx200 đã bị dừng do bị xóa khỏi kernel.

Nguồn: opennet.ru

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