generate-module-list 1004 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/bin/bash
  2. # Generate modules.{networking, block, drm, modesetting}
  3. # lists for further usage
  4. # Adapted from Fedora
  5. #
  6. # Ozan Caglayan (C) 2010
  7. collect_modules_list()
  8. {
  9. sed -r -n -e "s/^([^ ]+) \\.?($2)\$/\\1/p" $TMP_MODUNDEF |
  10. LC_ALL=C sort -u > modules.$1
  11. }
  12. MOD_DIR=$1
  13. TMP_MODNAMES=`mktemp`
  14. TMP_MODUNDEF=`mktemp`
  15. find $MOD_DIR -name "*.ko" -type f > $TMP_MODNAMES
  16. cat $TMP_MODNAMES | xargs nm -upA |
  17. sed -n 's,^.*/\([^/]*\.ko\): *U \(.*\)$,\1 \2,p' > $TMP_MODUNDEF
  18. # Start collecting module lists
  19. # based on undefined symbols
  20. cd $MOD_DIR
  21. collect_modules_list networking \
  22. 'register_netdev|ieee80211_register_hw|usbnet_probe|phy_driver_register'
  23. collect_modules_list block \
  24. 'ata_scsi_ioctl|scsi_add_host|scsi_add_host_with_dma|blk_init_queue|register_mtd_blktrans|scsi_esp_register|scsi_register_device_handler'
  25. collect_modules_list drm \
  26. 'drm_open|drm_init'
  27. collect_modules_list modesetting \
  28. 'drm_crtc_init'
  29. # Clean temporary files
  30. rm -f $TMP_MODNAMES $TMP_MODUNDEF