Unrecognized NIC

From LinuxMCE
Revision as of 08:46, 28 July 2009 by Colinjones (Talk | contribs) (Modify the media director initial ramdisk)

Jump to: navigation, search


Note If you have a r8168 NIC, see the r8168 page first.

Every now and then, people come along with NICs that are not directly supported by LinuxMCE. Typically when this happens you will see a 'Kernel Panic' during the initial PXE boot process. The following information should help to get even those NICs to work. As an example, the ASUS P5K is used, which is using the Attansic L1 NIC. You may have another chipset used in your NIC which will mean that you need to find out what the chipset is and importantly what kernel module is used to add support for it. Googling the chipset name and the words 'kernel module' will normally throw up some links to help you get the module name. Once you have that information you are ready to follow the simple steps outlined below;

Modify modules on core

To get a NIC to work, you have to modify a file;

sudo <editor-of-choice> /etc/initramfs-tools-interactor/modules

and add a single line for your NICs kernel module. In the above case the name of the module is

atl1

Or for the Marvell Yukon 88E8055 chip for example add;

sky2

After adding the above line (and saving the change of course ;-) ), you have to recreate the initial ramdisk. For 0704 do;

/usr/pluto/bin/Diskless_BuildDefaultImage.sh

or maybe

mkinitramfs -d /etc/initramfs-tools-interactor/ -o /tftpboot/default/initrd

is enough.

This will create a new initial ramdisk for the first boot of new MDs containing the atl1 module (or in your case for whichever module you have added). Now, the first boot of the diskless MD will succeed and a new diskless media director will be created.

Modify the media director initial ramdisk

Note: If your MD is 64 bit capable, but your core is running 32 bit mode LMCE, when the initial MD diskless image is built, it will automatically build a 64 bit image. A 64 bit MD image and 32 bit core is incompatible with running the "chroot" command below. If this your situation, you will need to go to the Wizard->Devices->Media Directors in web admin, before continuing, and edit the Architecture field in the applicable Media Director to say i386 instead of AMD64, hit Update and then Rebuild Image. This will delete the 64 bit image and rebuild the MD's image as 32 bit. This takes a good few minutes to complete

Note: If you had to follow the R8168 NIC driver article before this article (or had to build/make any other NIC driver before coming here to assign it to your MD), note that the diskless images are created from a compressed archive, not from your core's files. Thus any changes you made, like adding a new <nicdriver>.ko to your /lib/modules/2.6.22-14-generic/kernel/drivers/net will not be present in your new MD image. So you will need to copy these files/changes from your live core image to your new MD image in the same locations, eg...

sudo cp /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8168.ko /usr/pluto/diskless/<MD#>/lib/modules/2.6.22-14-generic/kernel/drivers/net/r8168.ko and

sudo cp /lib/modules/2.6.22-14-generic/kernel/drivers/net/r8169.ko /usr/pluto/diskless/<MD#>/lib/modules/2.6.22-14-generic/kernel/drivers/net/r8169.ko

To boot this diskless MD later on, the configuration for this new device has to be modified to include the above line as well. Look in the directory structure under /usr/pluto/diskless. Each media director has a directory named with the ID of the director in here. Go into the /usr/pluto/diskless/<mediadirector-id>/etc and edit the file modules to also contain

atl1

Also, go into /usr/pluto/diskless/<mediadirector-id>/etc/initramfs-tools and put the line into a file called modules. After this, chroot into the directory of the media directory, and re-create the initial ramdisk.

To create a new initial ram disk the command is

cd /usr/pluto/diskless/
chroot <mediadirector-id>
depmod
cd /boot
mkinitramfs -o initrd.img-`uname -r` `uname -r`
exit

Now reboot your media director. Everything should come up, the way it is meant to.

Caveat

Whenever you click Regenerate this media director, you have to redo the step for the initial ramdisk of the media director. The above steps do not work, if the media director and the core utilize two different CPU architectures,ie. one is using AMD64 the other i386 (chroot won't work).