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

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