Làm cách nào để thêm phụ thuộc vào systemd.mount được kích hoạt bởi / bin / mount?


7

Tôi muốn systemd mount /mnt/testtự động gọi một chương trình (trong đời thực cryptsetupđể mở khóa thiết bị bên dưới, để thử nghiệm ở đây echo) trước khi hệ thống tệp được gắn kết và sau khi nó không được kết nối.

Với /etc/systemd/system/stickbak-encryption.service:

[Unit]
Description=stickbak encryption
Before=mnt-test.mount
StopWhenUnneeded=true

[Service]
Type=oneshot
ExecStart=/bin/echo Unlock device.
RemainAfterExit=true
ExecStop=/bin/echo Lock device.

[Install]
RequiredBy=mnt-test.mount

/etc/fstab(một phần):

/dev/$DEVICE /mnt/test auto noauto 0 0

điều này hoạt động (sau khi daemon tải lại và kích hoạt dịch vụ) cho systemctl start mnt-test.mountvà tương ứng systemctl stop mnt-test.mount(với quyền root).

Trên mount /mnt/test, tuy nhiên, systemctl status mnt-test.mount stickbak-encryptioncác chương trình dịch vụ sau hạnh phúc inactive (dead), trong khi trước đây là active (mounted).

Làm thế nào tôi có thể (hoặc tôi có thể không?) Thiết lập một phụ thuộc được vinh danh khi /bin/mountđược gọi là tốt? Trạng thái của đơn vị gắn kết cho thấy mount /mnt/testdường như được dịch sang ExecMount=/bin/mount /dev/$DEVICE /mnt/test -t auto -o noauto, vì vậy rõ ràng systemd được thông báo.


vì fstab được systemd tự động phân tích cú pháp và được cung cấp rằng một tìm kiếm nhanh trên google không dẫn đến việc người ta có thể kiểm soát tệp mount được tạo theo cách nào để chỉ định các phụ thuộc, tôi đoán rằng điều này là không thể vào lúc này, nhưng tôi thực sự hy vọng sai và để thấy ai đó trả lời câu hỏi này một cách tích cực, vì tôi cũng được lợi từ nó
brunocodutra

Câu trả lời:


5

Gần đây tôi đã tự hỏi mình câu hỏi tương tự, nhưng tôi nhanh chóng nhận ra rằng nó không hoạt động theo cách đó.

Khi bạn sử dụng mountchương trình dòng lệnh, systemd không liên quan: mountđọc /etc/fstab(hoặc lấy tùy chọn từ dòng lệnh) và gắn thiết bị. Khi bạn khởi động một đơn vị gắn kết hệ thống, nó được phân tích cú pháp bởi systemd sử dụng các cuộc gọi hệ thống gắn kết để thực hiện việc gắn kết.

Vì vậy, không có cách nào để systemd tham gia khi bạn sử dụng mount.

Bên cạnh đó, có một sự khác biệt thú vị giữa việc sử dụng mountvà systemd trong những gì họ chấp nhận là hợp lệ /etc/fstab. Systemd phân tích tệp và tạo các đơn vị gắn kết mà sau đó nó sử dụng. Khi làm như vậy, nó chấp nhận ít tham số hơn mountyêu cầu.

Nếu bạn sử dụng systemd thì bạn chỉ phải cung cấp thiết bị và điểm gắn kết, tuy nhiên mountyêu cầu các tùy chọn khác như hệ thống tệp và tùy chọn.

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.