优化模块处理逻辑,支持从不同目录加载和安装模块

This commit is contained in:
Ing 2025-11-02 01:18:31 +08:00
parent c59f446006
commit e748c366f2

View File

@ -61,15 +61,16 @@ function getAllModules() {
UNPATH="${TMP_PATH}/modules"
unpackModules "${PLATFORM}" "${PKVER}" "${UNPATH}"
for F in ${UNPATH}/*.ko; do
for D in "" "update"; do
for F in ${UNPATH}/${D:+${D}/}*.ko; do
[ ! -e "${F}" ] && continue
local N DESC
N="$(basename "${F}" .ko)"
DESC="$(modinfo -F description "${F}" 2>/dev/null)"
DESC="$(echo "${DESC}" | tr -d '\n\r\t\\' | sed "s/\"/'/g")"
echo "${N} \"${DESC:-${N}}\""
echo "${D:+${D}/}${N} \"${DESC:-${D:+${D}/}${N}}\""
done
done
rm -rf "${UNPATH}"
}
@ -122,16 +123,19 @@ function installModules() {
unpackModules "${PLATFORM}" "${PKVER}" "${UNPATH}"
ODP="$(readConfigKey "odp" "${USER_CONFIG_FILE}")"
for F in ${UNPATH}/*.ko; do
for D in "" "update"; do
for F in ${UNPATH}/${D:+${D}/}*.ko; do
[ ! -e "${F}" ] && continue
M=$(basename "${F}")
[ "${ODP}" = "true" ] && [ -f "${RAMDISK_PATH}/usr/lib/modules/${M}" ] && continue
if echo "${MLIST}" | grep -wq "$(basename "${M}" .ko)"; then
cp -f "${F}" "${RAMDISK_PATH}/usr/lib/modules/${M}" 2>"${LOG_FILE}"
[ "${ODP}" = "true" ] && [ -f "${RAMDISK_PATH}/usr/lib/modules/${D:+${D}/}${M}" ] && continue # TODO: check if module is already loaded
if echo "${MLIST}" | grep -wq "${D:+${D}/}$(basename "${M}" .ko)"; then
mkdir -p "${RAMDISK_PATH}/usr/lib/modules/${D:+${D}/}"
cp -f "${F}" "${RAMDISK_PATH}/usr/lib/modules/${D:+${D}/}${M}" 2>"${LOG_FILE}"
else
rm -f "${RAMDISK_PATH}/usr/lib/modules/${M}" 2>"${LOG_FILE}"
rm -f "${RAMDISK_PATH}/usr/lib/modules/${D:+${D}/}${M}" 2>"${LOG_FILE}"
fi
done
done
rm -rf "${UNPATH}"
mkdir -p "${RAMDISK_PATH}/usr/lib/firmware"