Difference between revisions of "Unrecognized NIC"
Colinjones (Talk | contribs) (→Modify the media director initial ramdisk: added caveats about if you have 64/32 bit CPUs in MD and core, and to copy over any modified modules from core to MD if you added/created/modified any) |
Colinjones (Talk | contribs) m (→Modify the media director initial ramdisk) |
||
Line 26: | Line 26: | ||
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 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/ | + | 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/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 | 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 | ||
Revision as of 08:46, 28 July 2009
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).