Dell n950服务器下安装Debian5时解决Broadcom57系列网卡驱动问题
2009-09-26 17:52:56 Administrator

这篇文章中我介绍了在dell n950下安装debian5时对于缺少网卡驱动程序时提出了一套新的安装方法:加入其驱动程序代码到引导内核中,就可以在安装时认出Broadcom 57系列网卡,不需要在安装系统后在去编译或安装(实际上这样会比较麻烦).

我当时所推荐的方法是下载网络引导程序对其进行相关处理,像这样:

mkdir pxe
cd pxe/
wget ftp://ftp.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/netboot.tar.gz
tar -xzvf netboot.tar.gz
cd debian-installer/amd64/
cp initrd.gz initrd.gz.orig
mkdir temp
wget http://http.us.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-bnx2_0.16_all.deb
dpkg -x firmware-bnx2_0.16_all.deb bnx2
cd temp
zcat ../initrd.gz | cpio -iv
cp -a ../bnx2/lib ./
rm -rf lib/modules/2.6.26-2-amd64/kernel/drivers/usb/storage(这里移除了相关的usb驱动程序,如果用得着,请保留之)
find . -print0 | cpio -0 -H newc -ov | gzip -c > ../initrd.gz

像 这样会有一个问题,在重新做好光盘后,在安装时确实能认出网卡,但要求从网络进行安装,而不是从光盘来进行安装!所以这样还不如让服务器以pxe的方式来 引导,在从网络上进行安装.另外从网络进行安装需要足够的带宽,否则安装起来会比较痛苦,debian跟ubuntu不一样,不能将光盘中的文件提取出来 自建一个内部网络安装源(事实上是能做的,不过需要申请gpg签证的).所以这样做的实际意义不大.

同时发现在后面介绍的两种方法重新做好的光盘居然不能引导!最后通过winiso这个软件对其中的内核文件修改后是可以的,所以在这里需要做好分部的测试(在虚拟机上可以做部分测试).

那好,我们现在就开始来重新的做一张带Broadcom 57系列网卡驱动的debian安装光盘.

在开始之前,我们来分析一下debian的网站下有那些不寻常的安装方法,访问163源网站:http://mirrors.163.com/debian/dists/lenny/main/installer-amd64/current/images/

可以看到其下有不少的安装方式:

cdrom -- 从光盘引导的相关内核文件
hd-media -- 从硬盘上的iso文件来引导的相关内核文件
netboot --用pxe方式来引导并从网络进行安装

我们现在从本地的iso文件中提取出相关的文件进行安装引导(以i386平台为例):# mount -o loop /home/hto/software/debian-500-i386-CD-1.iso /mnt/debian5/

先在一台linux机器上挂载该iso文件,或在windows下直接解压.将相关文件复制出来:

debian5:~/deb5k# cp -Rv /mnt/debian5/install.386/* ./
“/mnt/debian5/install.386/gtk” -> “./gtk”
“/mnt/debian5/install.386/gtk/initrd.gz” -> “./gtk/initrd.gz”
“/mnt/debian5/install.386/initrd.gz” -> “./initrd.gz”
“/mnt/debian5/install.386/vmlinuz” -> “./vmlinuz”

主要对initrd.gz文件做修改,加入相关的硬件驱动程序.

cp initrd.gz initrd.gz.orig
mkdir temp
wget http://http.us.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-bnx2_0.16_all.deb
dpkg -x firmware-bnx2_0.16_all.deb bnx2
cd temp
zcat ../initrd.gz | cpio -iv
cp -av ../bnx2/lib ./
find . -print0 | cpio -0 -H newc -ov | gzip -c > ../initrd.gz

注:可以将目录:"bnx2/lib/firmware"下面的文件复制到一带有fat32文件格式的可移动盘中,在提示插入时插入亦可,当然最好还是像目前这样做到内核里去.

最后笔者推荐使用winiso来对原始光盘中的相关内核文件进行替换.经过测试无误.