Skip to content

Commit 8e47cd6

Browse files
committed
add SKIP_BTF and uninstall
1 parent d25b4e2 commit 8e47cd6

2 files changed

Lines changed: 110 additions & 1 deletion

File tree

‎APs/mac80211_hwsim/install.sh‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ ${ALT_MODNAME}-objs := mac80211_hwsim.o
5050
EOF
5151

5252
echo "==> Building ${ALT_MODNAME}.ko …"
53-
make -s -C "/lib/modules/${KVER}/build" M="${BUILD_DIR}" modules
53+
SKIP_BTF=1 make -s -C "/lib/modules/${KVER}/build" M="${BUILD_DIR}" modules
5454

5555
# verify version of freshly‑built binary
5656
NEW_VER="$(modver "./${ALT_MODNAME}.ko")"

‎APs/mac80211_hwsim/uninstall.sh‎

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
ALT_MODNAME="mac80211_hwsim_WiFiChallenge"
5+
STOCK_MODNAME="mac80211_hwsim"
6+
TARGET_VERSION="2.4.1-WiFiChallengeLab-version"
7+
8+
RELOAD_STOCK=1
9+
REMOVE_ANY_VERSION=0
10+
11+
usage() {
12+
cat <<'EOF'
13+
Usage:
14+
sudo bash uninstall.sh [--no-reload-stock] [--remove-any-version]
15+
16+
Options:
17+
--no-reload-stock Do not load stock mac80211_hwsim after removal
18+
--remove-any-version Remove the custom module file even if version != 2.4.1
19+
-h, --help Show this help
20+
EOF
21+
}
22+
23+
while [[ $# -gt 0 ]]; do
24+
case "$1" in
25+
--no-reload-stock)
26+
RELOAD_STOCK=0
27+
;;
28+
--remove-any-version)
29+
REMOVE_ANY_VERSION=1
30+
;;
31+
-h|--help)
32+
usage
33+
exit 0
34+
;;
35+
*)
36+
echo "[-] Unknown argument: $1" >&2
37+
usage
38+
exit 1
39+
;;
40+
esac
41+
shift
42+
done
43+
44+
if [[ "${EUID}" -ne 0 ]]; then
45+
echo "[-] Run as root (use sudo)." >&2
46+
exit 1
47+
fi
48+
49+
KVER="$(uname -r)"
50+
DEST_DIR="/lib/modules/${KVER}/kernel/drivers/net/wireless"
51+
ALT_MOD_PATH="${DEST_DIR}/${ALT_MODNAME}.ko"
52+
DKMS_MOD_PATH="/lib/modules/${KVER}/updates/dkms/${ALT_MODNAME}.ko"
53+
54+
echo "[*] Unloading ${ALT_MODNAME} if loaded..."
55+
modprobe -r "${ALT_MODNAME}" 2>/dev/null || true
56+
57+
declare -a CANDIDATE_PATHS=(
58+
"${ALT_MOD_PATH}"
59+
"${DKMS_MOD_PATH}"
60+
)
61+
62+
if RESOLVED_PATH="$(modinfo -n "${ALT_MODNAME}" 2>/dev/null)"; then
63+
if [[ -n "${RESOLVED_PATH}" && "${RESOLVED_PATH}" != "(builtin)" ]]; then
64+
CANDIDATE_PATHS+=("${RESOLVED_PATH}")
65+
fi
66+
fi
67+
68+
declare -A SEEN=()
69+
REMOVED=0
70+
SKIPPED=0
71+
72+
for MOD_PATH in "${CANDIDATE_PATHS[@]}"; do
73+
[[ -n "${MOD_PATH}" ]] || continue
74+
[[ -f "${MOD_PATH}" ]] || continue
75+
76+
if [[ -n "${SEEN[${MOD_PATH}]:-}" ]]; then
77+
continue
78+
fi
79+
SEEN["${MOD_PATH}"]=1
80+
81+
MOD_VER="$(modinfo -F version "${MOD_PATH}" 2>/dev/null || true)"
82+
83+
if [[ "${REMOVE_ANY_VERSION}" -eq 1 || "${MOD_VER}" == "${TARGET_VERSION}" ]]; then
84+
rm -f "${MOD_PATH}"
85+
echo "[+] Removed ${MOD_PATH} (version: ${MOD_VER:-unknown})"
86+
((REMOVED+=1))
87+
else
88+
echo "[=] Keeping ${MOD_PATH} (version: ${MOD_VER:-unknown})"
89+
((SKIPPED+=1))
90+
fi
91+
done
92+
93+
if [[ "${REMOVED}" -gt 0 ]]; then
94+
echo "[*] Running depmod..."
95+
depmod -a
96+
else
97+
echo "[=] No module files removed."
98+
fi
99+
100+
if [[ "${RELOAD_STOCK}" -eq 1 ]]; then
101+
echo "[*] Loading stock ${STOCK_MODNAME}..."
102+
if modprobe "${STOCK_MODNAME}" 2>/dev/null; then
103+
echo "[+] Loaded ${STOCK_MODNAME}"
104+
else
105+
echo "[!] Could not load ${STOCK_MODNAME}. You can load it manually later."
106+
fi
107+
fi
108+
109+
echo "[+] Done. removed=${REMOVED} skipped=${SKIPPED}"

0 commit comments

Comments
 (0)