Phát hành trình quản lý hệ thống systemd 252 với hỗ trợ UKI (Hình ảnh hạt nhân hợp nhất)

Sau năm tháng phát triển, việc phát hành trình quản lý hệ thống systemd 252 đã được trình làng. Thay đổi quan trọng trong phiên bản mới là việc tích hợp hỗ trợ cho quy trình khởi động hiện đại hóa, cho phép bạn xác minh không chỉ kernel và bootloader mà còn cả các thành phần của môi trường hệ thống cơ bản sử dụng chữ ký số.

Phương pháp được đề xuất liên quan đến việc sử dụng hình ảnh hạt nhân hợp nhất UKI (Hình ảnh hạt nhân hợp nhất) khi tải, kết hợp trình xử lý để tải hạt nhân từ UEFI (sơ khai khởi động UEFI), hình ảnh hạt nhân Linux và môi trường hệ thống initrd được tải vào bộ nhớ, được sử dụng để khởi tạo ban đầu ở giai đoạn trước khi gắn FS gốc. Hình ảnh UKI được đóng gói dưới dạng một tệp thực thi duy nhất ở định dạng PE, có thể được tải bằng bộ tải khởi động truyền thống hoặc được gọi trực tiếp từ chương trình cơ sở UEFI. Khi được gọi từ UEFI, có thể xác minh tính toàn vẹn và độ tin cậy của chữ ký số không chỉ của kernel mà còn cả nội dung của initrd.

Để tính toán các tham số của thanh ghi TPM PCR (Đăng ký cấu hình nền tảng mô-đun nền tảng đáng tin cậy) được sử dụng để giám sát tính toàn vẹn và tạo chữ ký số của hình ảnh UKI, một thước đo hệ thống tiện ích mới được bao gồm. Khóa công khai và thông tin PCR đi kèm được sử dụng trong chữ ký có thể được nhúng trực tiếp vào ảnh khởi động UKI (khóa và chữ ký được lưu trong tệp PE trong các trường '.pcrsig' và '.pcrkey') và được trích xuất từ ​​nó bởi bên ngoài hoặc các tiện ích nội bộ.

Đặc biệt, các tiện ích systemd-cryptsetup, systemd-cryptenroll và systemd-creds đã được điều chỉnh để sử dụng thông tin này, nhờ đó bạn có thể đảm bảo rằng các phân vùng đĩa được mã hóa được liên kết với nhân được ký điện tử (trong trường hợp này là quyền truy cập vào phân vùng được mã hóa). chỉ được cung cấp nếu hình ảnh UKI đã vượt qua quá trình xác minh bằng chữ ký số dựa trên các thông số nằm trong TPM).

Ngoài ra, tiện ích systemd-pcrphase được bao gồm, cho phép bạn kiểm soát việc liên kết các giai đoạn khởi động khác nhau với các tham số nằm trong bộ nhớ của bộ xử lý mật mã hỗ trợ đặc tả TPM 2.0 (ví dụ: bạn có thể cung cấp khóa giải mã phân vùng LUKS2 chỉ trong hình ảnh initrd và chặn quyền truy cập vào nó ở các giai đoạn tải xuống sau).

Một số thay đổi khác:

  • Đảm bảo rằng ngôn ngữ mặc định là C.UTF-8 trừ khi một ngôn ngữ khác được chỉ định trong cài đặt.
  • Giờ đây, bạn có thể thực hiện thao tác đặt trước dịch vụ hoàn chỉnh (“đặt trước systemctl”) trong lần khởi động đầu tiên. Việc bật các cài đặt trước khi khởi động yêu cầu xây dựng tùy chọn "-Dfirst-boot-full-preset", nhưng dự kiến ​​sẽ bật theo mặc định trong các bản phát hành trong tương lai.
  • Các đơn vị quản lý người dùng bao gồm bộ điều khiển tài nguyên CPU, giúp đảm bảo rằng cài đặt CPUWeight được áp dụng cho tất cả các đơn vị lát cắt được sử dụng để chia hệ thống thành các phần (app.slice, Background.slice, session.slice) để tách biệt các tài nguyên giữa dịch vụ người dùng khác nhau, cạnh tranh tài nguyên CPU. CPUWeight cũng hỗ trợ giá trị “nhàn rỗi” để kích hoạt chế độ cung cấp tài nguyên phù hợp.
  • Trong các đơn vị tạm thời (“tạm thời”) và trong tiện ích systemd-repart, việc ghi đè cài đặt được cho phép bằng cách tạo các tệp thả vào trong thư mục /etc/systemd/system/name.d/.
  • Đối với hình ảnh hệ thống, cờ hỗ trợ đã kết thúc được đặt, xác định thực tế này dựa trên giá trị của tham số mới “SUPPORT_END=” trong tệp /etc/os-release.
  • Đã thêm cài đặt “ConditionCredential=” và “AssertCredential=”, có thể được sử dụng để bỏ qua hoặc làm hỏng thiết bị nếu một số thông tin xác thực nhất định không có trong hệ thống.
  • Đã thêm cài đặt “DefaultSmackProcessLabel=” và “DefaultDeviceTimeoutSec=” vào system.conf và user.conf để xác định mức bảo mật SMACK mặc định và thời gian chờ kích hoạt đơn vị.
  • Trong cài đặt “ConditionFirmware=” và “AssertFirmware=”, khả năng chỉ định các trường SMBIOS riêng lẻ đã được thêm vào, ví dụ: để chỉ khởi chạy một thiết bị nếu trường /sys/class/dmi/id/board_name chứa giá trị “Tùy chỉnh Board”, bạn có thể chỉ định “ConditionFirmware=smbios” -field(board_name = "Custom Board")".
  • Trong quá trình khởi tạo (PID 1), khả năng nhập thông tin xác thực từ các trường SMBIOS (Loại 11, “Chuỗi nhà cung cấp OEM”) đã được thêm vào ngoài định nghĩa của chúng thông qua qemu_fwcfg, giúp đơn giản hóa việc cung cấp thông tin xác thực cho máy ảo và loại bỏ cần các công cụ của bên thứ ba như đám mây -init và đánh lửa.
  • Trong quá trình tắt máy, logic để ngắt kết nối hệ thống tệp ảo (Proc, sys) đã được thay đổi và thông tin về các quy trình chặn việc ngắt kết nối hệ thống tệp sẽ được lưu trong nhật ký.
  • Bộ lọc cuộc gọi hệ thống (SystemCallFilter) cho phép truy cập vào cuộc gọi hệ thống riscv_flush_icache theo mặc định.
  • Bộ tải khởi động sd-boot bổ sung thêm khả năng khởi động ở chế độ hỗn hợp, trong đó nhân Linux 64 bit chạy từ chương trình cơ sở UEFI 32 bit. Đã thêm khả năng thử nghiệm để tự động áp dụng các khóa SecureBoot từ các tệp được tìm thấy trong ESP (phân vùng hệ thống EFI).
  • Các tùy chọn mới đã được thêm vào tiện ích bootctl: “—all-architectures” để cài đặt các tệp nhị phân cho tất cả các kiến ​​trúc EFI được hỗ trợ, “—root=” và “—image=” để làm việc với thư mục hoặc ảnh đĩa, “—install-source =” để xác định nguồn cài đặt, "-efi-boot-option-description=" để kiểm soát tên mục khởi động.
  • Lệnh 'list-automounts' đã được thêm vào tiện ích systemctl để hiển thị danh sách các thư mục được gắn tự động và tùy chọn "--image=" để thực thi các lệnh liên quan đến ảnh đĩa được chỉ định. Đã thêm tùy chọn "--state=" và "--type=" vào lệnh 'show' và 'status'.
  • systemd-networkd đã thêm tùy chọn “TCPCongestionControlAlgorithm=” để chọn thuật toán kiểm soát tắc nghẽn TCP, “KeepFileDescriptor=” để lưu bộ mô tả tệp của giao diện TUN/TAP, “NetLabel=” để đặt NetLabels, “RapidCommit=” để tăng tốc cấu hình qua DHCPv6 (RFC 3315). Tham số “RouteTable=” cho phép chỉ định tên của các bảng định tuyến.
  • systemd-nspawn cho phép sử dụng đường dẫn tệp tương đối trong tùy chọn "--bind=" và "--overlay=". Đã thêm hỗ trợ cho tham số 'rootidmap' vào tùy chọn "--bind=" để liên kết ID người dùng gốc trong vùng chứa với chủ sở hữu của thư mục được gắn ở phía máy chủ.
  • systemd-resolved sử dụng OpenSSL làm chương trình phụ trợ mã hóa theo mặc định (hỗ trợ gnutls được giữ lại dưới dạng tùy chọn). Các thuật toán DNSSEC không được hỗ trợ hiện được coi là không an toàn thay vì trả về lỗi (SERVFAIL).
  • systemd-sysusers, systemd-tmpfiles và systemd-sysctl triển khai khả năng chuyển cài đặt thông qua cơ chế lưu trữ thông tin xác thực.
  • Đã thêm lệnh 'so sánh các phiên bản' vào systemd-analyze để so sánh các chuỗi với số phiên bản (tương tự như 'rpmdev-vercmp' và 'dpkg --compare-versions'). Đã thêm khả năng lọc các đơn vị theo mặt nạ vào lệnh 'kết xuất phân tích hệ thống'.
  • Khi chọn chế độ ngủ nhiều giai đoạn (tạm dừng rồi ngủ đông), thời gian ở chế độ chờ hiện được chọn dựa trên dự báo về thời lượng pin còn lại. Quá trình chuyển đổi ngay lập tức sang chế độ ngủ xảy ra khi lượng pin còn lại dưới 5%.
  • Chế độ đầu ra mới "-o short-delta" đã được thêm vào 'journalctl', hiển thị chênh lệch thời gian giữa các thông báo khác nhau trong nhật ký.
  • systemd-repart bổ sung hỗ trợ tạo phân vùng bằng hệ thống tệp Squashfs và phân vùng cho dm-verity, bao gồm cả chữ ký số.
  • Đã thêm cài đặt "StopIdleSessionSec=" vào systemd-logind để kết thúc phiên không hoạt động sau một khoảng thời gian chờ được chỉ định.
  • Systemd-cryptenroll đã thêm tùy chọn "--unlock-key-file=" để trích xuất khóa giải mã từ một tệp thay vì nhắc người dùng.
  • Hiện tại có thể chạy tiện ích systemd-growfs trong môi trường không có udev.
  • systemd-backlight đã cải thiện khả năng hỗ trợ cho các hệ thống có nhiều card đồ họa.
  • Giấy phép cho các ví dụ mã được cung cấp trong tài liệu đã được thay đổi từ CC0 thành MIT-0.

Những thay đổi phá vỡ tính tương thích:

  • Khi kiểm tra số phiên bản kernel bằng lệnh ConditionKernelVersion, một phép so sánh chuỗi đơn giản hiện được sử dụng trong các toán tử '=' và '!=' và nếu toán tử so sánh hoàn toàn không được chỉ định, thì có thể sử dụng tính năng so khớp mặt nạ toàn cầu bằng cách sử dụng nhân vật '*', '?' Và '[', ']'. Để so sánh các phiên bản kiểu stverscmp(), hãy sử dụng các toán tử '<', '>', '<=' và '>='.
  • Thẻ SELinux được sử dụng để kiểm tra quyền truy cập từ một tệp đơn vị hiện được đọc tại thời điểm tệp được tải, thay vì tại thời điểm kiểm tra quyền truy cập.
  • Điều kiện "ConditionFirstBoot" hiện chỉ được kích hoạt trong lần khởi động đầu tiên của hệ thống ngay ở giai đoạn khởi động và trả về "false" khi gọi các đơn vị sau khi quá trình khởi động hoàn tất.
  • Vào năm 2024, systemd có kế hoạch ngừng hỗ trợ cơ chế giới hạn tài nguyên cgroup v1, cơ chế này không còn được dùng trong bản phát hành systemd 248. Quản trị viên nên cẩn thận trước khi di chuyển các dịch vụ dựa trên cgroup v2 sang cgroup v1. Sự khác biệt chính giữa cgroups v2 và v1 là việc sử dụng hệ thống phân cấp cgroups chung cho tất cả các loại tài nguyên, thay vì các hệ thống phân cấp riêng biệt để phân bổ tài nguyên CPU, để điều chỉnh mức tiêu thụ bộ nhớ và cho I/O. Các hệ thống phân cấp riêng biệt dẫn đến khó khăn trong việc tổ chức tương tác giữa các trình xử lý và tốn thêm chi phí tài nguyên hạt nhân khi áp dụng các quy tắc cho một quy trình được tham chiếu trong các hệ thống phân cấp khác nhau.
  • Vào nửa cuối năm 2023, chúng tôi dự định sẽ ngừng hỗ trợ hệ thống phân cấp thư mục phân chia, trong đó /usr được gắn riêng biệt với thư mục gốc hoặc /bin và /usr/bin, /lib và /usr/lib được tách riêng.

Nguồn: opennet.ru

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