Trong systemd, những gì bắt đầu các đơn vị được tạo ra bởi máy phát điện?


10

Trên máy của tôi (Arch linux), systemd-tạo ra một số tệp đơn vị /run/systemd/generator/và dường như chúng được khởi động bằng cách nào đó khi khởi động. Điều gì đang bắt đầu chúng?

Ví dụ, boot.mountđược tạo bởi systemd. systemctl list-dependencies --allcho thấy rằng nó được liên kết đến local-fs.target(không được tạo ra). Làm thế nào chúng được liên kết với nhau? Không có gì trong hai đơn vị dường như kích hoạt sự khởi đầu boot.mount. Vâng, trong boot.mount, có Before=local-fs.target, nhưng điều đó không bắt đầu một dịch vụ, phải không?

Câu trả lời:


9

Các tập tin đơn vị được tạo không được tự động kích hoạt bởi systemd. Không có gì đặc biệt về họ khi có liên quan đến systemd. Mỗi trình tạo riêng lẻ phải tạo một cách rõ ràng các liên kết tượng trưng kết nối một đơn vị được tạo với một mục tiêu, để kích hoạt mục tiêu kích hoạt đơn vị được tạo thông qua một phụ thuộc theo cách thông thường.

Điều này lợi dụng thực tế là không phải tất cả các kết nối giữa các đơn vị được thể hiện bên trong các tệp đơn vị. Muốn và Yêu cầu phụ thuộc có thể được thể hiện với các trang trại liên kết tượng trưng trong *.wants/và các *.requires/thư mục con. Và những trang trại liên kết tượng trưng này bao gồm các thư mục con trong /run/systemd/số những thứ khác.

Nói cách khác: Thay vì viết ra một đơn vị với WantedBy=local-fs.targetvà sau đó phải gọi một cách rõ ràng sytemctl enableđể tạo liên kết tượng trưng (đó là những gì cho phép), trình tạo sẽ làm ngắn mạch quá trình và tự tạo liên kết tượng trưng. Và nó làm cho nó ở một nơi phù du, systemctl enablethông thường sẽ không, do đó ngăn liên kết tượng trưng tiếp tục tồn tại sau khi tắt máy tiếp theo và gây nhầm lẫn cho lần khởi động tiếp theo.

Cụ thể, bạn sẽ tìm thấy trên hệ thống của mình /run/systemd/generator/boot.mountđược liên kết tượng trưng từ /run/systemd/generator/local-fs.target.wants/boot.mount. systemd-fstab-generatorđã tạo liên kết tượng trưng này , và nó làm cho boot.mountmuốn local-fs.target. Trình tạo được chạy sớm trong bootstrap trước khi hệ thống bắt đầu kích hoạt local-fs.target, điều đó có nghĩa là khi nó bắt đầu kích hoạt local-fs.targetsự phụ thuộc được tạo ra thì sẽ phải tuân theo.

đọc thêm


Ok, tôi đoán tôi đã không hiểu nó như tôi nghĩ. Tôi đang xóa câu trả lời của tôi vì sự không chính xác.
Paul H.

Cảm ơn bạn. Điều này trả lời câu hỏi của tôi. Tôi phải bỏ qua /run/systemd/generator/local-fs.target.requiresthư mục. Điều gì làm cho thư mục này ( /run/systemd/generator) trở thành một thư mục nơi chúng ta có thể đặt các tệp đơn vị? Tôi đã không tìm thấy nó trong bất kỳ trang người đàn ông.
Gradient

Đọc systemd.generator(7), có vẻ như nó là trình tạo ra thư mục này được biết đến systemd.
Gradient

Vì vậy, về cơ bản, trình tạo đặt chúng để tự khởi động (hoặc không, ví dụ, trong trường hợp các tập lệnh init.d không được liên kết qua chkconfig, nó chỉ tạo các tệp đơn vị systemd cho chúng và không đặt chúng thành tự động khởi động).
rogerdpack
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.