Sau hai năm kể từ khi phiên bản chính cuối cùng được hình thành, phiên bản mới của trình quản lý dịch vụ GNU Shepherd 0.9 (trước đây gọi là dmd) đã được công bố rộng rãi . Nó được phát triển bởi các nhà phát triển của bản phân phối GNU Guix như một giải pháp thay thế cho quá trình khởi tạo SysV-init dựa trên sự phụ thuộc của hệ thống.
Shepherd cung cấp chức năng không gian người dùng một cách bất đồng bộ dưới dạng các dịch vụ , trong Shepherd, các dịch vụ này là các hàm chung và các kiểu dữ liệu đối tượng được xuất ra để Shepherd sử dụng nhằm mở rộng hệ điều hành cơ bản theo một cách xác định. Không giống như systemd, một tiến trình giám sát không gian người dùng chạy với tư cách người dùng đó.
Về Shepherd
Cốt lõi của mô hình khởi tạo không gian người dùng của Shepherd là khái niệm mở rộng, một hình thức kết hợp trong đó các dịch vụ được thiết kế để chồng chéo với các dịch vụ khác, bổ sung cho chúng các hành vi phức tạp hơn hoặc chuyên biệt hơn khi cần thiết. Điều này thể hiện các mối quan hệ phụ thuộc dựa trên việc khởi tạo được tìm thấy trong nhiều hệ thống khởi tạo hiện đại, làm cho hệ thống trở nên mô-đun, đồng thời cho phép các dịch vụ tương tác với các dịch vụ khác theo nhiều cách khác nhau.
Shepherd cũng cung cấp cái gọi là dịch vụ ảo cho phép phân phối động trên một nhóm các đối tượng dịch vụ liên quan, chẳng hạn như tất cả những đối tượng tạo ra các thể hiện của tác nhân chuyển thư (MTA) cho hệ thống.
Một hệ thống được quản lý bởi Shepherd daemon có thể biểu diễn không gian người dùng của nó dưới dạng biểu đồ xoay chiều có hướng, với "dịch vụ hệ thống" (chịu trách nhiệm cho các giai đoạn khởi động và khởi động sớm) là gốc và tất cả các dịch vụ được khởi tạo tiếp theo là phần mở rộng của chức năng của dịch vụ hệ thống , trực tiếp hoặc chuyển tiếp qua các dịch vụ khác.
Do được viết và cấu hình bằng ngôn ngữ Guile Scheme, GNU Shepherd được thiết kế để người quản trị hệ thống có thể lập trình cao, nhưng nó cũng có thể được sử dụng để quản lý cấu hình người dùng cho các tiến trình và dịch vụ không có đặc quyền.
Các dịch vụ và cấu hình của nó được lưu trữ thống nhất dưới dạng mã Scheme hướng đối tượng, và mặc dù một tập hợp các dịch vụ cốt lõi được cung cấp cùng với hệ thống Guix cơ bản, các dịch vụ mới tùy ý có thể được khai báo một cách linh hoạt, và thông qua hệ thống đối tượng GOOPS của Guile, các dịch vụ hiện có có thể được định nghĩa lại theo ý muốn của người dùng bằng cách yêu cầu Shepherd viết lại các dịch vụ một cách động theo những cách cụ thể khi khởi tạo.
GNU Shepherd ban đầu được thiết kế để hoạt động với GNU Hurd và sau đó được Hệ thống Guix chấp nhận.
Các tính năng mới chính của GNU Shepherd 0.9
Phiên bản mới này nhấn mạnh việc triển khai khái niệm về các dịch vụ tạm thời (thoáng qua), tự động ngắt kết nối sau khi kết thúc do quá trình kết thúc hoặc gọi phương thức "stop", điều này có thể cần thiết đối với các dịch vụ tổng hợp không thể khởi động lại sau khi kết thúc.
Một thay đổi đáng chú ý khác là đối với các dịch vụ không có tham số "#:log-file" , đầu ra được cung cấp cho syslog , còn đối với các dịch vụ có tham số "#:log-file", nhật ký được ghi vào một tệp riêng biệt ghi rõ thời gian ghi nhật ký trong tiến trình Shepherd không có đặc quyền, tệp này được lưu trữ trong thư mục $XDG_DATA_DIR.
Ngoài ra, đáng chú ý là thủ tục "make-inetd-constructor" đã được thêm vào để tạo các dịch vụ tương tự như inetd và thủ tục "make-systemd-constructor" đã được thêm vào để tạo các dịch vụ được kích hoạt trong hoạt động mạng (kiểu socket systemd kích hoạt).
Những thay đổi đáng chú ý khác trong phiên bản mới này bao gồm:
- Đã thêm một thủ tục để bắt đầu dịch vụ nền:
- Đã thêm các tham số “: bổ sung-nhóm”, “#: tạo-phiên” và “#: tài nguyên-giới hạn” vào thủ tục “make-forkexec-constructor”.
- Đảm bảo hoạt động không bị khóa trong khi chờ tệp PID.
- Đã xóa hỗ trợ biên dịch với Guile 2.0. Đã khắc phục sự cố khi sử dụng phiên bản Guile 3.0.5-3.0.7.
- Thư viện Fibers 1.1.0 trở lên bây giờ được yêu cầu để hoạt động.
- Tài liệu và ví dụ được cải thiện
- Shepherd không còn có thể được xây dựng bằng Guile 2.0
- Sửa lỗi trình biên dịch Guile 3.0. [5-7]
- Bản dịch cập nhật
Cuối cùng, nếu bạn muốn tìm hiểu thêm hoặc muốn có phiên bản mới này, bạn có thể tham khảo chi tiết, tài liệu và tải xuống từ liên kết sau.