有一台电脑上用了 Realtek (RTL8111/RTL8168) 的网卡,lspci 显示:
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)
在这台电脑上装了 Debian wheezy,虽然 Debian 内核里有它的驱动(用了 r8169),也能使用,但网络很不稳定。所以我打算把 r8169 换成官方的 Realtek (r8168) 驱动。
1. 安装编译环境及依赖
这里要安装 build-essential 及相应内核的编译头,如果不是 3.2.0 需要安装相应版本的。
$ sudo apt-get install build-essential linux-headers-3.2.0-4-amd64
2. 下载驱动
到 Realtek 官网下载页面下载源代码:连接
3. 编译安装
我这里下载到的版本是 r8168-8.039.00
你需要把它换成你下载到的版本号。
$ tar -jxvf r8168-8.039.00.tar.bz2 $ cd r8168-8.039.00/ $ make clean modules # make install
4. 禁用 r8169
为了防止内核自动加载 r8169 模块,我们需要把它禁用掉:在 /etc/modprobe.d/blacklist.conf
文件中加入一行:
blacklist r8169
或者在终端中运行:
# echo "blacklist r8169" >> /etc/modprobe.d/blacklist.conf
以上只要做一项即可。
5. 加载新的驱动模块
在终端执行:
# depmod -a
设置自动加载
把 r8168 加入到 /etc/initramfs-tools/modules
文件中
# echo "r8168" >> /etc/initramfs-tools/modules
然后重新生成一次 initrd 文件
mkinitramfs -o /boot/initrd.img-`uname -r` -v -u -k `uname -r`
然后把 r8168
加入 /etc/modules
文件中,以便开机自动加载。
echo "r8168" >> /etc/modules
6. 重启
重启电脑,使用 lspci -v
以查看系统是否已经启用了 r8168。
参考: http://ubuntuforums.org/showthread.php?t=1992200&p=11986434#post11986434