Debian Linux 编译 Realtek (RTL8111/RTL8168) 网卡驱动

有一台电脑上用了 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