Debian Lenny netinst on a new system with igb network adapter
Information extraxted from from CBlue (original arcticle http://www.cblue.be/blog/debian-lenny-netinst-new-igb).
On our new proliant servers we have igb network cards. These network cards are not (yet) supported in the default debian initrd netinstall. We need to create an own initrd with compiled igb drivers in it. This is quite a hassle.
Compile drivers for debian netinstall image. Make sure you do this on a system with desired cpu architecture.
1 2 3 4 5 6 7 8 | apt-get install linux-headers-(uname -r) cd /usr/src/ # get the stable igb drivers: wget http://sourceforge.net/projects/e1000/files/igb%20stable/... tar zfvx igb-version.tar.gz cd igb-version make make install |
Then the compiled version of the igb module is in /lib/modules/(uname -r)/kernel/drivers/net/igb/igb.ko, and dca.ko (also required) is in /lib/modules/(uname -r)/kernel/drivers/dca/dca.ko.
Then extract the current initrd:
1 2 3 | mkdir /usr/src/temp cd /usr/src/temp zcat initrd.gz | cpio -i |
Create needed directory and copy your modules:
1 2 3 4 | mkdir lib/modules/2.6.26-2-486/kernel/drivers/net/igb mkdir lib/modules/2.6.26-486/kernel/drivers/dca cp (...)/igb.ko lib/modules/2.6.26-2-486/kernel/drivers/net/igb cp (...)/dca.ko lib/modules/2.6.26-2-486/kernel/drivers/dca |
Then re-compress the initrd.gz:
1 | find . -print | cpio -o -H newc | gzip > ../initrd.gz |
Then replace the official initrd.gz by the new one in the netinstall iso. Still in linux:
mount -o loop -t iso9660 debian-505-amd64-netinst.iso ./iso cp -r iso iso2 cp initrd.gz ./iso2/install.amd/ cd iso2 md5sum `find -follow -type f` > md5sum.txt mkisofs -o debian-505-amd64-netinst-with-igb.iso -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat ./iso2
Burn the iso and boot your server. At the end of the netinstall installation, before rebooting, you need to install the driver for the kernel you just installed.
First, in the console, chroot the new installation:
1 2 3 4 5 6 7 8 9 | chroot /target echo "http://backports.debian.skynet.be/ debian-lenny main non-free contrib" >> /etc/apt/sources.list gpg -a --keyserver pgpkeys.mit.edu --recv-key EA8E8B2116BA136C gpg -a --export EA8E8B2116BA136C | apt-key add - apt-get update cd /root wget http://blog.waja.info/downloads/igb-dkms_2.0.6_all.deb dpkg -i igb-dkms_2.0.6_all.deb apt-get install -f |
The last command will fail. Dkms tries to discover the running kernel but does not find it on the current system. This is correct since we boot on Debian netinst. However, now we downloaded everything we needed while the network was working.
Now, finish the installation, reboot the server.
Once your new system is up, just log in and:
1 2 3 | apt-get install -f modprobe igb /etc/init.d/networking restart |