상황은 이렇습니다. 내 Debian 컴퓨터에는 두 개의 이더넷 인터페이스 보고 ifconfig
(eth0 및 eth1)가 있는 작동 중인 네트워크 설정이 있습니다. eth0은 온보드 Realtek 네트워크 카드이고 eth1은 D-Link PCI 네트워크 카드입니다. 그러나 시스템에서는 소리가 작동하지 않습니다.
다음 제안을 따르세요이 페이지, 나는 갔다리얼텍 홈페이지"커널 3.x, 2.6.x 및 2.4.x용 LINUX 드라이버"를 다운로드했습니다. 압축을 풀고 필요한 빌드와 Linux 헤더 패키지를 설치한 후 r8168-8.037.00/autorun.sh
루트로 실행했습니다. 검토해 보니 여기서 큰 실수를 했습니다. "HD 오디오 코덱 드라이버" 대신 "Realtek PCIe GBE 제품군 컨트롤러 시리즈 드라이버"를 클릭하여 오디오 드라이버 대신 해당 네트워크 드라이버를 설치했습니다. 이런. 어쨌든, 나는 지금 이 혼란을 되돌릴 방법을 찾고 있습니다.
오류 메시지가 출력되지 않는 것 같았으나 여전히 소리가 나지 않아 기기를 다시 시작했습니다. 다시 나타나면 ifconfig -a
이제 eth0
디스플레이가 아닌 인터페이스만 표시됩니다 eth1
. 또한 어떤 기기도 반환 되지 않고 find /sys/devices/ -type d | grep eth
기기만 반환됩니다 . 또한 출력도 제공 하지 않습니다 . 어떻게든 새로운 Realtek 드라이버가 감지되지 못하게 했습니다! 그런데 소리가 여전히 작동하지 않습니다.eth0
eth1
dmesg | grep eth1
eth1
어떻게 이런 일이 발생하며 어떻게 해결할 수 있나요? 소리 없이 살아야 할 것 같은데, 작업 eth0
과 구성을 다시 되찾고 싶습니다 eth1
. Linux가 다시 감지하도록 하는 방법은 무엇입니까 eth1
?
도움이 된다면 뭔가 설치되어 있는 것 같습니다 /lib/modules/3.2.0-4-amd64/kernel/drivers/net/ethernet/realtek
. 예를 들어, 파일은 압축을 푼 드라이버의 디렉터리 r8168.ko
내부와 외부 모두에 있습니다 .src
/lib...
답변1
어떻게든 새로운 Realtek 드라이버는 eth1이 감지되는 것을 방지합니다!
분명히 트리 내 커널 드라이버가 먼저 작동하고 있기 때문에 약간 부끄러운 일입니다. 왜 새로 설치하나요?
인터페이스가 표시되면 ifconfig
,그런 다음 커널은 네트워크 카드용 드라이버를 로드합니다. 이는 운전자가 계획한 모든 작업을 완벽하게 수행한다는 의미는 아니지만 99% 이상의 경우에는 수행됩니다. Realtek 이더넷 칩은 일반적이며 커널은 이에 대한 적절한 지원을 제공합니다.
그럴 수도 있다~인 것 같다"최고의" 드라이버는 제조업체에서 제공하는 드라이버인 것처럼, 하지만 실제로는 일반적으로 그런 것 같습니다.잘못된. 문제는 제조업체가 Linux 드라이버에 대한 투자가 거의 또는 전혀 없다는 것입니다. 이는 Linux 드라이버가 얼마나 중요한지(Linux의 시장 점유율이 무시할 수 있기 때문에 거의 없음), 그리고 얼마나 많은 리소스를 투자하는지에 대한 측면에서 그렇습니다. 더 멀리:
공식 커널 트리의 일부가 아니기 때문에 실제 커널 개발에 직접적으로 관여하지 않습니다. 이것은 거의 모든 광대가 이것을 할 수 있다는 것을 의미합니다. 이는 일반 심사, Peer Review 등의 범위를 벗어납니다.
비공개 소스이기 때문에 누구도 코드를 보고 "이건 틀렸어"라고 말할 수 없습니다. 따라서 존재하는 모든 오류는 숨겨집니다. 문제가 발생하여 제조업체가 드라이브를 적절하게 유지 관리하기 위해 누군가에게 비용을 지불할 수 없는 경우 플레이트가 범위를 벗어났기 때문에 다른 사람이 플레이트에 올라갈 수 없습니다.
간단히 말해서, 제품에 대한 감독도 없고 제품을 제공하는 사람들의 약속도 없습니다. Linux 개발자는 이에 대해 매우 명확하게 설명합니다.사용하기에 가장 좋은 드라이버는 독점 드라이버가 아닌 공식 트리 내 드라이버입니다. 커널 자체 드라이버가 작동하지 않는 경우에만 다른 곳을 살펴보아야 합니다.
답변2
글쎄, 나는 그것을 고칠 수 있었지만 그것은 실제 PITA입니다(Linux에는 내장 롤백 기능을 갖춘 보다 성숙한 드라이버 설치 시스템이 절실히 필요합니다). 그게 다야 :
cd /lib/modules/3.2.0-4-amd64/kernel/drivers/net/ethernet/realtek/
디렉토리에는 r8169.bak
및 가 있습니다 r8168.ko
. Realtek의 설치 프로그램이 r8169를 백업하는 대신 삭제했다면 저는 망할 것입니다.
/sbin/rmmod r8168
ifconfig -a
둘 다 지금은 eth0
사라졌습니다 eth1
.
mv r8168.ko r8168.bak
mv r8169.bak r8169.ko
/sbin/depmod `uname -r`
/sbin/modprobe r8169
ifconfig -a
eth0
eth1
돌아와서 일하십시오.
요약하자면, Linux에서의 드라이버 설치 및 업그레이드는 끔찍합니다. Linux는 기본적으로 "새 드라이버를 설치하기 위해 원하는 모든 작업을 수행하십시오"라고 말하므로 설치 프로그램이 이전 드라이버를 백업할 수 있을 만큼 충분하기를 바랍니다. 드라이버를 설치하려면 일부 서비스를 호출해야 하며, Linux는 이러한 서비스를 통해 이전 버전을 추적하여 롤백할 수 있습니다.