istoreos/package/diy/dkml/files/kmods-unload.init
2025-01-20 11:00:12 +08:00

46 lines
784 B
Bash
Executable File

#!/bin/sh /etc/rc.common
START=25
check_driver_bond() {
local kmod="$1"
ls /sys/module/$kmod/drivers/*/ | grep -Fq :
}
rmmod_r() {
local kmod="$1"
local holder
for holder in `ls /sys/module/$kmod/holders/`; do
rmmod $holder
done
rmmod $kmod
}
auto_unload() {
local function support keep kmod
config_get function "$1" function
config_get support "$1" support
keep=0
if [ -n "$function" ]; then
for kmod in $function; do
if check_driver_bond $kmod; then
keep=1
elif [ -d /sys/module/$kmod ] ;then
echo "auto rmmod $kmod" >>/dev/kmsg
rmmod_r $kmod
fi
done
fi
if [ "$keep" = "0" -a -n "$support" ]; then
for kmod in $support; do
rmmod $kmod 2>/dev/null
done
fi
}
boot() {
config_load kmods
config_foreach auto_unload auto_unload
}