
状況はこんな感じです。私のDebianコンピュータには、2つのイーサネットインターフェイスレポートifconfig
(eth0とeth1)を持つ動作中のネットワーク設定があります。 eth0はオンボードRealtekネットワークカード、eth1はD-Link PCIネットワークカードです。ただし、システムでは音が機能しません。
次の提案に従ってくださいこのページ、私は行きましたRealtekのホームページ「カーネル3.x、2.6.x、および2.4.x用のLINUXドライバ」をダウンロードしました。解凍し、必要なビルドとLinuxヘッダーパッケージをインストールした後、r8168-8.037.00/autorun.sh
rootとして実行しました。 検討してみるとここで大きな間違いをしました。 「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の市場シェアが無視できるためほとんどありません)、そしてどのくらいのリソースを投資するかという点でそうです。もっと遠く:
公式カーネルツリーの一部ではないので、実際のカーネル開発に直接関与しません。これは、ほぼすべての道化師がこれを行うことができることを意味します。これは一般審査、ピアレビューなどの範囲外です。
プライベートソースなので、誰もコードを見て「これは間違っている」と言うことはできません。したがって、存在するすべてのエラーは隠されます。問題が発生し、製造元がドライブを適切に保守するために誰かに支払うことができない場合、プレートが範囲外のため、他の人がプレートに登ることができません。
簡単に言えば、製品の監督もなく、製品を提供する人々の約束もありません。 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はこれらのサービスを介して以前のバージョンを追跡してロールバックできます。