On Thu, Sep 13, 2007 at 10:11:35PM +0100, Karanbir Singh wrote: > > This is one the major issues with the Linux process these days, as you move > from kernel to kernel there is almost zero assurance of driver abi/api > stability - and that in turn creates a situation like this wherein one > kernel works while another does not. Its enough of a situation that on a > lot of platforms sysadmins will not upgrade a kernel unless they really > really need to. On CentOS and the EL codebase, this isnt so much of an > issue because upstream do some work on trying to make sure they dont break > driver compatibility. If they do break this compatibility, its easy to > detect. > > And most of the heavy lifting is getting done by a fairly simple shell > script called weak-modules, based in /sbin/ and comes from > module-init-tools.rpm > > weak-modules will basically take a given driver .ko and check what other > kernels installed at this time will work with it, it will then create the > symlinks for each of those kernels to point at this .ko. It will then check > each initrd in the /boot dir, and update each initrd for kernels it found > compatible with the driver. Rather than overwrite the initrd, it will > create a new one with the same-name but followed by a number. It will then > edit /etc/grub.conf and add a *new* section for this just created initrd. > So when you reboot the machine you have the choice to boot the kernel.rpm > shipped initrd or the newly updated one. > > Ok, so how does this work ? lets say you have drivers ( from install time ) > in /lib/modules/2.6.8-8.el5/updates/ > > 1) sudo to root > > 2) find /lib/modules/2.6.8-8.el5/updates | /sbin/weak-modules --add-modules This didn't work. I did: ls -1 /lib/modules/2.6.8-8.el5/updates | /sbin/weak-modules --add-modules > > 3) watch the blinking lights, depending on how many kernels you have > installed it could be a few seconds > > 4) check /boot/ and make sure you have the new updated initrd's for all > kernels you thought it would work with. > > 5) check /etc/grub.conf for new sections [1] > > 6) reboot with whatever kernel + initrd you want All worked fine for the 2.6.18-8.1.8.el5xen kernel. > > 7) all further kernels brought down by yum from the centos repos will auto > magically get this driver included in the initrd. ( rpm -q --scripts > kernel-version will show you what happens in the post install section, and > how weak-updates does an --add-kernel ) New kernel was released, so I did yum update. The new kernel boots, but does not see the raid devices on the 3ware card. the update also seems to have removed my install kernel (2.6.18-8.el5xen). Did that step on something? If I boot the 2.6.18-8.1.8el5xen kernel, I still see my raid devices, so it worked for the first update... > >I will try this in a few moments. One last observation though, 3Ware has > >a newer driver for the updated kernel. If I wish to use it, is it a simple > >matter of replacing the 3w-9xxx.ko file with the appropriate one? If it > >is more complicated than that, where do I find info about this issue? > > well, in this case, build that .ko agains the oldest kernel-devel you have > on the machine ( ideally, I should say only against the installtime kernel, > but lots of people dont have that hanging around :/ ) and weak-modules > should do its magic. There is a pre-built (by 3ware) .ko file for 2.6.18-8.1.8.el5xen I don't know what to do with it though. > Slight change in plan, I did this braindump and you get to write the wiki > page :) I've never done a wiki page, but I'm okay with writing this all up, once I understand it. I can put what you wrote above (with some minor fixes), but it didn't exactly work out for further kernel updates... Not sure what to say about that. > You might also want to look and see how the > /lib/modules/<kver>/extras/ directory contents are handled and include some > info on that. Since that would basically address non install time .ko The extras dir in the orig install kernel tree is empty. So is the weak-updates dir, since the kernel update removed the install kernel??? The 2.6.18-8.1.8.el5xen tree has a weak updates tree which appears to duplicate the old lib/modules tree. It looks like this: /lib/modules/2.6.18-8.1.8.el5xen/weak-updates/lib/modules/2.6.18-8.el5xen/updates/3w-9xxx.ko So I'm completely confused at this point... -chuck _______________________________________________ CentOS mailing list CentOS@xxxxxxxxxx http://lists.centos.org/mailman/listinfo/centos