Mặt nạ systemd-networkd-wait-online.service
, như được đề xuất trong các câu trả lời khác, có thể giúp ích trong các thiết lập đơn giản nhưng nó không khắc phục được vấn đề. Nếu bạn che dấu dịch vụ thì tất cả các dịch vụ khác tùy thuộc vào nó cũng sẽ thất bại. Điều đó có nghĩa là, tất cả các dịch vụ cần thiết để đợi cho đến khi mạng trực tuyến sẽ thất bại.
Tôi gặp phải vấn đề này vì tôi sử dụng thiết lập chuyển đổi dự phòng động cho máy tính xách tay của mình với liên kết giao diện có dây (enp9s0) và không dây (wlp12s0) được sử dụng làm nô lệ cho liên kết giao diện chính0 . Chính xác là tình huống tương tự bạn có nếu bạn sử dụng một cây cầu ( br0 với giao diện nô lệ). Chỉ các giao diện chính bond0 hoặc br0 sẽ trực tuyến nhưng không phải là nô lệ nên systemd-networkd-wait-online.service
sẽ thất bại trên các nô lệ.
Giải pháp cho vấn đề này là sửa đổi dịch vụ và chỉ kiểm tra các giao diện nên truy cập trực tuyến. Bạn sẽ tìm thấy với:
~$ sudo systemctl cat systemd-networkd-wait-online.service | grep --after-context=3 '\[Service\]'
[Service]
Type=oneshot
ExecStart=/lib/systemd/systemd-networkd-wait-online
RemainAfterExit=yes
Chương trình systemd-networkd-Wait-online có một tham số để kiểm tra các giao diện cụ thể. Kiểm tra với /lib/systemd/systemd-networkd-wait-online --help
. Vì vậy, tôi thực hiện thả tập tin để sửa đổi dịch vụ:
~$ sudo systemctl edit systemd-networkd-wait-online.service
Trong trình soạn thảo trống, chèn các câu lệnh này, tất nhiên với giao diện của bạn, hãy lưu chúng vào trình soạn thảo:
[Service]
ExecStart=
ExecStart=/lib/systemd/systemd-networkd-wait-online --interface=bond0 --quiet
Khoảng trống ExecStart=
rất quan trọng vì nó vô hiệu hóa lệnh "cũ". Bạn có thể kiểm tra nhiều hơn trên giao diện (xem trợ giúp).