123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- #! /bin/bash
- #
- # Called as filter-modules.sh list-of-modules Arch
- # This script filters the modules into the kernel-core and kernel-modules
- # subpackages. We list out subsystems/subdirs to prune from the installed
- # module directory. What is left is put into the kernel-core package. What is
- # pruned is contained in the kernel-modules package.
- #
- # This file contains the default subsys/subdirs to prune from all architectures.
- # If an architecture needs to differ, we source a per-arch filter-<arch>.sh file
- # that contains the set of override lists to be used instead. If a module or
- # subsys should be in kernel-modules on all arches, please change the defaults
- # listed here.
- # Overrides is individual modules which need to remain in kernel-core due to deps.
- overrides="cec isst_if_common isst_tpmi_core isst_tpmi intel_vsec intel_vsec_tpmi"
- # Set the default dirs/modules to filter out
- driverdirs="atm auxdisplay bcma bluetooth firewire fmc iio infiniband isdn leds media memstick mfd mmc mtd nfc ntb pcmcia platform power ssb staging tty uio uwb w1"
- chardrvs="mwave pcmcia"
- netdrvs="appletalk can dsa hamradio ieee802154 irda ppp slip usb wireless"
- ethdrvs="3com adaptec alteon amd aquantia atheros broadcom cadence calxeda chelsio cisco dec dlink emulex icplus marvell neterion nvidia oki-semi packetengines qlogic rdc renesas sfc silan sis smsc stmicro sun tehuti ti wiznet xircom"
- cryptdrvs="bcm caam cavium chelsio hisilicon marvell qat"
- inputdrvs="gameport tablet touchscreen"
- scsidrvs="aacraid aic7xxx aic94xx be2iscsi bfa bnx2i bnx2fc csiostor cxgbi esas2r fcoe fnic hisi_sas isci libsas lpfc megaraid mpt2sas mpt3sas mvsas pm8001 qla2xxx qla4xxx sym53c8xx_2 ufs qedf"
- usbdrvs="atm image misc serial wusbcore"
- fsdrvs="affs befs coda cramfs ecryptfs hfs hfsplus jfs minix ncpfs nilfs2 ocfs2 reiserfs romfs smb squashfs sysv ubifs ufs"
- netprots="6lowpan appletalk atm ax25 batman-adv bluetooth can dccp dsa ieee802154 irda l2tp mac80211 mac802154 mpls netrom nfc rds rfkill rose sctp smc wireless"
- drmdrvs="amd ast gma500 i2c i915 mgag200 nouveau radeon via "
- singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qedi qla1280 9pnet_rdma rpcrdma nvmet-rdma nvme-rdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject hid-sensor-hub target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i chcr chtls parport_serial ism regmap-sdw regmap-sdw-mbq arizona-micsupp hid-asus nct6775 ntc_thermistor video apple_bl kasan_test intel-m10-bmc-hwmon"
- # Grab the arch-specific filter list overrides
- source ./filter-$2.sh
- filter_dir() {
- filelist=$1
- dir=$2
- grep -v -e "${dir}/" ${filelist} > ${filelist}.tmp
- if [ $? -ne 0 ]
- then
- echo "Couldn't remove ${dir}. Skipping."
- else
- grep -e "${dir}/" ${filelist} >> k-d.list
- mv ${filelist}.tmp $filelist
- fi
- return 0
- }
- filter_ko() {
- filelist=$1
- mod=$2
- grep -v -e "${mod}.ko" ${filelist} > ${filelist}.tmp
- if [ $? -ne 0 ]
- then
- echo "Couldn't remove ${mod}.ko Skipping."
- else
- grep -e "${mod}.ko" ${filelist} >> k-d.list
- mv ${filelist}.tmp $filelist
- fi
- return 0
- }
- # Filter the drivers/ subsystems
- for subsys in ${driverdirs}
- do
- filter_dir $1 drivers/${subsys}
- done
- # Filter the networking drivers
- for netdrv in ${netdrvs}
- do
- filter_dir $1 drivers/net/${netdrv}
- done
- # Filter the char drivers
- for char in ${chardrvs}
- do
- filter_dir $1 drivers/char/${char}
- done
- # Filter the ethernet drivers
- for eth in ${ethdrvs}
- do
- filter_dir $1 drivers/net/ethernet/${eth}
- done
- # Filter the crypto drivers
- for crypt in ${cryptdrvs}
- do
- filter_dir $1 drivers/crypto/${crypt}
- done
- # SCSI
- for scsi in ${scsidrvs}
- do
- filter_dir $1 drivers/scsi/${scsi}
- done
- # Input
- for input in ${inputdrvs}
- do
- filter_dir $1 drivers/input/${input}
- done
- # USB
- for usb in ${usbdrvs}
- do
- filter_dir $1 drivers/usb/${usb}
- done
- # Filesystems
- for fs in ${fsdrvs}
- do
- filter_dir $1 fs/${fs}
- done
- # Network protocols
- for prot in ${netprots}
- do
- filter_dir $1 kernel/net/${prot}
- done
- # DRM
- for drm in ${drmdrvs}
- do
- filter_dir $1 drivers/gpu/drm/${drm}
- done
- # Just kill sound.
- filter_dir $1 kernel/sound
- filter_dir $1 kernel/drivers/soundwire
- # Now go through and filter any single .ko files that might have deps on the
- # things we filtered above
- for mod in ${singlemods}
- do
- filter_ko $1 ${mod}
- done
- # Now process the override list to bring those modules back into core
- for mod in ${overrides}
- do
- grep -v -e "/${mod}.ko" k-d.list > k-d.list.tmp
- if [ $? -ne 0 ]
- then
- echo "Couldn't save ${mod}.ko Skipping."
- else
- grep -e "/${mod}.ko" k-d.list >> $filelist
- mv k-d.list.tmp k-d.list
- fi
- done
- # Go through our generated drivers list and remove the .ko files. We'll
- # restore them later.
- for mod in `cat k-d.list`
- do
- rm -rf $mod
- done
|