/lib/modules/$(uname -r)/modules.* [was Re: Who decides what drivers go on the install disk?]

Bill Nottingham notting at redhat.com
Fri Jul 27 21:24:42 UTC 2007


Bill Nottingham (notting at redhat.com) said: 
> > I mean, I guess I can just do manual twiddling to rule out things that
> > aren't under drivers/ata with the livecd.  I'm not _that_ tied to having
> > the two separated out if that's the real kicker here
> 
> OK. I'll tweak the stuff in the spec and send it here for comments.

Here you go; sorts them into two piles (networking and block), and expands
the symbol list to catch some of the missing modules such as ahci and
some of the wireless drivers.

Bill
-------------- next part --------------
Index: kernel.spec
===================================================================
RCS file: /cvs/extras/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.34
diff -u -r1.34 kernel.spec
--- kernel.spec	27 Jul 2007 17:58:01 -0000	1.34
+++ kernel.spec	27 Jul 2007 21:23:41 -0000
@@ -1425,40 +1425,28 @@
     cat modnames | xargs chmod u+x
 
     # Generate a list of modules for SCSI, sata/pata, and networking.
-    touch $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.scsi
-    touch $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.libata
+    touch $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.block
     touch $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.networking
-    for i in `cat modnames | grep drivers | grep -v drivers\/ata`
-    do
-      if [ $(nm $i |grep --count scsi_add_host) -ne 0 ];
-      then
-        basename `echo $i` >> $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.scsi
-      fi
-    done
-    for i in `cat modnames | grep drivers | grep -v drivers\/scsi`
-    do
-      if [ $(nm $i |grep --count blk_init_queue) -ne 0 ];
-      then
-        basename `echo $i` >> $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.scsi
-      fi
-    done
 
-    for i in `cat modnames | grep drivers\/ata`
-    do
-      if [ $(nm $i |grep --count ata_device_add) -ne 0 -o $(nm $i |grep --count ata_pci_init_one) -ne 0 ];
-      then
-        basename `echo $i` >> $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.libata
-      fi
-    done
+    drivers=$(grep drivers modnames)
 
-    for i in `cat modnames |grep drivers`
-    do
-      if [ $(nm $i |grep --count register_netdev) -ne 0 ];
-      then
-        basename `echo $i` >> $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.networking
-      fi
-    done
+    # networking
+    netsyms="register_netdev ieee80211_register_hw usbnet_probe"
 
+    for i in $drivers ; do
+      for symbol in $netsyms ; do
+      	  nm -u $i | grep -q $symbol && echo ${i##*/}
+      done
+    done | sort -u > $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.networking
+    
+    # block
+    blocksyms="ata_scsi_ioctl scsi_add_host blk_init_queue"
+    for i in $drivers ; do
+      for symbol in $blocksyms ; do
+      	  nm -u $i | grep -q $symbol && echo ${i##*/}
+      done
+    done | sort -u > $RPM_BUILD_ROOT/lib/modules/$KernelVer/modules.block
+    
     # detect missing or incorrect license tags
     for i in `cat modnames`
     do


More information about the Fedora-kernel-list mailing list