ACTION=="add", DRIVER=="r8152", ATTR{idVendor}=="2357", ATTR{idProduct}=="0601", ATTR{bConfigurationValue}!="$env{REALTEK_NIC_MODE}", ATTR{bConfigurationValue}="$env{REALTEK_NIC_MODE}"
Ý nghĩa của quy tắc udev này như sau: "Khi một thiết bị có idVendor
giá trị 2357 và idProduct
giá trị 0601 (và được quản lý bởi trình điều khiển" r8152 ") được thêm vào hệ thống, nếu đó bConfigurationValue
không phải là bất kỳ giá trị nào được xác định trong biến môi trường REALTEK_NIC_MODE
, hãy đặt bConfigurationValue
thành giá trị đó. "
Nói cách khác, quy tắc udev này không tải trình điều khiển r8152, nó sẽ chuyển thiết bị sang chế độ chính xác cho trình điều khiển đó nếu cần.
Khi một thiết bị mới được thêm vào, nhân Linux về cơ bản chạy modprobe
với ID phần cứng (và một số thứ khác) của thiết bị được mã hóa trong "tên" của mô-đun mà nó yêu cầu. "Tên" này sau đó được so sánh bằng các modprobe
chuỗi ký tự đại diện được nhúng vào mỗi mô-đun dưới dạng bí danh mô-đun. Các depmod
lệnh tập hợp lên các tên bí danh và lưu trữ chúng vào /lib/modules/<kernel version>/modules.alias[.bin]
để tìm kiếm nhanh chóng. Bạn có thể xem các chuỗi bí danh được nhúng vào các mô-đun hạt nhân bằng modinfo
lệnh.
Đối với bộ điều hợp ethernet USB của bạn, "tên" là một cái gì đó giống như usb:v2357p0601d...
. Thật không may, cdc_ether
mô-đun có một bí danh ký tự đại diện cũng sẽ phù hợp với nó.
Bất kỳ bí danh nào được xác định trong /etc/modprobe.d
sẽ được ưu tiên hơn các bí danh được nhúng vào chính các mô-đun. Vì vậy, bạn có thể chỉ định một bí danh sẽ khớp với bộ điều hợp ethernet của bạn và khiến r8152
mô-đun được tải thay thế.
Hãy thử thêm nó dưới dạng /etc/modprobe.d/usbnic.conf
:
alias usb:v2357p0601d*dc*dsc*dp*ic*isc*ip*in* r8152
Sau đó chạy depmod -a
bằng root, rút bộ điều hợp ethernet USB, rút cả hai r8152
và cdc_ether
các mô-đun, cắm lại bộ điều hợp ethernet và xem điều gì xảy ra. Nếu chỉ có mô-đun r8152 được tải, tốt.
Nếu cdc_ether
vẫn được tải, bí danh có thể cần phải cụ thể hơn (nghĩa là một hoặc nhiều dấu sao trong đó cần phải được thay thế bằng các giá trị thực tế, bất kể chúng có thể là gì) để bí danh này là cụ thể nhất và do đó trận đấu "hay nhất".
Cập nhật: Dưới đây là mô tả về định dạng bí danh mô-đun: http://people.skolelinux.org/pere/blog/Modalias_strings___a_prreal_way_to_map__ ware__to_hardware.html