ath9k
결국 SW IOMMU 오류가 발생하므로 Atheros 장치에 버그가 있는 네트워크 드라이버가 있는 것 같습니다 . 때때로 이런 일이 발생하면 간단하게 다시 되돌릴 수 rmmod
있으며 modprobe
작동이 시작됩니다. 어떤 경우에는 실제로 장치의 연결을 끊어서 장치를 제거해야 합니다. 그리고 너무 오래 기다리면 rmmod
장치를 뽑을 수 없거나 플러그를 뽑을 수 없을 정도로 너무 많은 문제가 발생하는 것 같습니다 . 그렇게 하면 시스템이 무기한 정지됩니다.
저는 드라이버를 고칠 계획이 없기 때문에(저는 펌웨어 개발자가 아닙니다), 드라이버를 주기적으로 간단히 수정하는 것이 "충분히" 좋은가요, rmmod
아니면 modprobe
작동하지 않을까요?
답변1
저는 커널 개발자이므로 "상황에 따라 다르다"고 말씀드릴 수 있습니다. 의사가 하루에 사과를 먹는 것과 같이 사전에 드라이버를 제거했다가 다시 삽입하면 버그를 막을 수 있는 것이 불가능하지 않습니다. 버그에 따라 다릅니다.
rmmod가 해결 방법이 될 수 있는 문제의 좋은 예는 드라이버의 폭주 메모리 할당입니다(사실상누출) 드라이버가 메모리 추적을 잃지 않고 rmmod 시간에 정리할 수 있도록 합니다.
버그가 손상으로 인해 불안정한 경우 가능하더라도 해결 방법이 될 가능성은 없습니다. 문제가 여러 단계로 진행된다고 가정해 보겠습니다. 먼저 드라이버가 상대적으로 드문 상태 S(아마도 유효하지 않은 상태)에 들어가야 하고 그런 다음 해당 상태에 있는 동안 상대적으로 드문 이벤트 E가 발생해야 합니다. (E가 발생하고 드라이버가 S 상태가 아닌 경우 문제가 재현되지 않습니다.) rmmod 및 재삽입을 통해 드라이버가 S 상태에서 벗어나고 주기적으로 수행되면 문제의 재현성이 낮아집니다.
제거 및 재삽입에는 누수 발생(드라이버가 rmmod의 모든 항목을 정리하지 않음) 또는 매달린 포인터 남겨두기(드라이버가 일부 개체를 할당 해제하지만 모든 개체에서 제대로 등록 취소하지 않음)와 같은 자체적인 문제가 있을 수 있습니다. 협회). 동적 드라이버를 개발할 때 하나의 테스트 케이스는 루프에서 rmmod/insmod를 수행하는 쉘 스크립트여야 합니다. (물론 전체 범위를 제공하지는 않습니다. insmod; various actual use cases of driver; rmmod
루프에도 필요합니다).
답변2
백포트에서 의 최신 버전을 다운로드하여 ath9k
다음과 같은 일부 문제를 해결할 수 있습니다: "Wi-Fi 연결이 계속 끊김", "인터넷 속도가 느림", "할 수 없음 rmmod/modprobe
...
최신 백포트를 다운로드하고 설치합니다.
wget https://www.kernel.org/pub/linux/kernel/projects/backports/stable/v4.4.2/backports-4.4.2-1.tar.gz
make defconfig-ath9k
make -j 16
make install
모든 작업이 성공적으로 완료되면 다음을 얻게 됩니다.
Your backported driver modules should be installed now.
Reboot.
다음 명령을 실행하여 부팅 시 드라이버를 로드한 후 재부팅합니다.
echo "ath9k" | sudo tee -a /etc/modules
reboot
드라이버를 다시 로드합니다.
rmmod ath9k
modprobe ath9k