การปิดบังsystemd-networkd-wait-online.service
ดังที่แนะนำในคำตอบอื่น ๆ อาจช่วยในการตั้งค่าแบบง่าย ๆ แต่ไม่สามารถแก้ไขปัญหา ถ้าคุณปิดบังบริการแล้วบริการอื่น ๆ ทั้งหมดขึ้นอยู่กับว่ามันจะล้มเหลว นั่นหมายความว่าบริการทั้งหมดที่จำเป็นต้องรอจนกว่าเครือข่ายออนไลน์จะล้มเหลว
ฉันทำงานเป็นปัญหานี้เพราะผมใช้แบบไดนามิกไม่เกินการติดตั้งสำหรับแล็ปท็อปของฉันกับพันธะแบบมีสาย (enp9s0) และไร้สายอินเตอร์เฟซ (wlp12s0) ที่ถูกนำมาใช้เป็นทาสสำหรับอินเตอร์เฟซหลักbond0 คุณมีสถานการณ์เดียวกันนี้แน่นอนถ้าคุณใช้บริดจ์ ( br0พร้อมอินเทอร์เฟซสลาฟ ) เฉพาะอินเตอร์เฟสหลักbond0หรือbr0เท่านั้นที่จะออนไลน์ แต่ไม่ใช่ทาสดังนั้นsystemd-networkd-wait-online.service
จะล้มเหลวบนทาส
วิธีแก้ไขปัญหานี้คือแก้ไขบริการและตรวจสอบเฉพาะอินเทอร์เฟซที่ควรใช้งานออนไลน์ คุณจะพบกับ:
~$ 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
โปรแกรมsystemd-networkd-wait-onlineมีพารามิเตอร์เพื่อทดสอบอินเตอร์เฟสเฉพาะ /lib/systemd/systemd-networkd-wait-online --help
ตรวจสอบกับ ดังนั้นฉันจึงทำการดรอปไฟล์เพื่อแก้ไขบริการ:
~$ sudo systemctl edit systemd-networkd-wait-online.service
ในตัวแก้ไขที่ว่างเปล่าแทรกข้อความเหล่านี้ซึ่งแน่นอนว่าด้วยส่วนต่อประสานของคุณบันทึกการออกจากตัวแก้ไข:
[Service]
ExecStart=
ExecStart=/lib/systemd/systemd-networkd-wait-online --interface=bond0 --quiet
ว่างเปล่าExecStart=
มีความสำคัญเนื่องจากจะปิดใช้งานคำสั่ง "เก่า" คุณสามารถตรวจสอบมากกว่าบนอินเทอร์เฟซ (ดูวิธีใช้)