ระบบของฉันใช้ 20.04.3 LTS และฉันใช้มันเป็น Plex Media Server (ท่ามกลางบริการอื่นๆ) ฉันกำลังใช้เครือข่ายผูกมัดสำหรับการปรับโหลดบาลานซ์บนระบบ ฉันพบปัญหากับระบบเมื่อได้รับการอัปเดตเคอร์เนลใหม่
มีการ์ดเครือข่าย 2 ใบในระบบ ตัวหนึ่งอยู่ในช่องเสียบ (RTL8169 PCI Gigabit Ethernet Controller) และอีกตัวอยู่ในบอร์ด (RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller) ปัญหาที่ฉันพบคือ RTL8111/8168/8411 ไม่ชอบไดรเวอร์ r8169 (สิ่งที่คาดเดาไม่ได้จะเกิดขึ้นเช่นไม่สามารถสื่อสารกับอินเทอร์เน็ตได้) ดังนั้นฉันจึงต้องเรียกใช้คำสั่งต่อไปนี้เพื่อยกเลิกการผูกไดรเวอร์ r8169 และผูก ไดรเวอร์ r8168:
ที่อยู่=$(lspci | awk '/8168/ {พิมพ์ "0000:"$1}')
echo $ที่อยู่ | sudo ที /sys/bus/pci/drivers/r8169/unbind
echo $ที่อยู่ | sudo ที /sys/bus/pci/drivers/r8168/bind
หลังจากรันคำสั่งเหล่านี้แล้ว โปรแกรมควบคุมจะแสดงอย่างถูกต้องใน lshw
คำสั่งและฉันไม่มีปัญหาใด ๆ เมื่อตั้งค่าไดรเวอร์ที่ถูกต้องสำหรับการ์ดที่ถูกต้อง:
terrance@Intrepid:~$ sudo lshw -C เครือข่าย
*-เครือข่าย
คำอธิบาย: อินเตอร์เฟสอีเธอร์เน็ต
ผลิตภัณฑ์: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
ผู้จัดจำหน่าย: Realtek Semiconductor Co., Ltd.
รหัสทางกายภาพ: 0
ข้อมูลรถบัส: pci@0000:02:00.0
ชื่อตรรกะ: eth0
รุ่น: 03
อนุกรม: c8:3a:35:d6:ec:a0
ขนาด: 1Gbit/s
ความจุ: 1Gbit/s
ความกว้าง: 64 บิต
นาฬิกา: 33MHz
ความสามารถ: pm msi pciexpress msix vpd bus_master cap_list อีเธอร์เน็ตทางกายภาพ tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd การเจรจาอัตโนมัติ
การกำหนดค่า: การเจรจาอัตโนมัติ=เปิดออกอากาศ=ใช่ ไดรเวอร์=r8168 ไดรเวอร์เวอร์ชัน=8.048.00-NAPI ดูเพล็กซ์=เวลาแฝงเต็ม=0 ลิงก์=ใช่ มัลติคาสต์=ใช่ พอร์ต=ทาสคู่บิด=ใช่ ความเร็ว=1Gbit/s
ทรัพยากร: irq:25 ioport:d800(size=256) หน่วยความจำ:fdfff000-fdffffff หน่วยความจำ:fdff8000-fdffbfff
*-เครือข่าย
คำอธิบาย: อินเตอร์เฟสอีเธอร์เน็ต
ผลิตภัณฑ์: RTL8169 PCI Gigabit Ethernet Controller
ผู้จัดจำหน่าย: Realtek Semiconductor Co., Ltd.
รหัสประจำตัว: 5
ข้อมูลรถบัส: pci@0000:03:05.0
ชื่อตรรกะ: eth1
รุ่น: 10
อนุกรม: bc:5f:f4:79:66:fe
ขนาด: 1Gbit/s
ความจุ: 1Gbit/s
ความกว้าง: 32 บิต
นาฬิกา: 66MHz
ความสามารถ: pm bus_master cap_list rom อีเธอร์เน็ต ทางกายภาพ tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd การเจรจาอัตโนมัติ
การกำหนดค่า: การเจรจาอัตโนมัติ=เปิดออกอากาศ=ใช่ ไดรเวอร์=r8169 เวอร์ชันไดรเวอร์=5.13.0-30-เพล็กซ์ทั่วไป=เวลาแฝงเต็ม=64 ลิงก์=ใช่ ความหน่วงสูงสุด=64 mingnt=32 มัลติคาสต์=ใช่ พอร์ต=คู่บิด ทาส=ใช่ ความเร็ว=1Gbit/s
ทรัพยากร: irq:20 ioport:e800(ขนาด=256) หน่วยความจำ:febffc00-febffcff หน่วยความจำ:febc0000-febdffff
*-เครือข่าย
คำอธิบาย: อินเตอร์เฟสอีเธอร์เน็ต
รหัสประจำตัว: 1
ชื่อตรรกะ: bond0
อนุกรม: bc:5f:f4:79:66:fe
ความสามารถ: ทางกายภาพของอีเธอร์เน็ต
การกำหนดค่า: การเจรจาอัตโนมัติ = ปิดการออกอากาศ = ใช่ ไดรเวอร์ = เวอร์ชันไดรเวอร์ที่เชื่อมโยง = 5.13.0-30-duplex ทั่วไป = เฟิร์มแวร์แบบเต็ม = 2 ip = 10.0.0.220 ลิงก์ = ใช่ มาสเตอร์ = ใช่ มัลติคาสต์ = ใช่
สิ่งนี้คงอยู่ผ่านการรีบูตได้จนกว่าจะมีการอัปเดตเคอร์เนลครั้งต่อไป แต่ถ้าฉันรันคำสั่งเดียวกันในสคริปต์ มันจะบอกฉันว่า "ไม่มีอุปกรณ์ดังกล่าว"
terrance@Intrepid:~/bin$ sudo ./driver_fix.bsh
0000:02:00.0
tee: /sys/bus/pci/drivers/r8169/unbind: ไม่มีอุปกรณ์ดังกล่าว
0000:02:00.0
tee: /sys/bus/pci/drivers/r8168/bind: ไม่มีอุปกรณ์ดังกล่าว
อะไรจะเป็นวิธีที่ดีที่สุดที่ฉันจะทำสิ่งนี้อย่างถาวร ดังนั้นมันจึงทำการเปลี่ยนแปลงนี้ระหว่างการเริ่มต้นหรือเปลี่ยนแปลงเฉพาะเมื่อมีการอัปเดตเคอร์เนลเท่านั้น
ขอบคุณ!