z2k/debug.sh
2026-01-29 10:23:28 +03:00

187 lines
9 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
# debug.sh - Диагностика модулей ядра для z2k на Keenetic
echo "+==================================================+"
echo "| z2k - Диагностика модулей ядра |"
echo "+==================================================+"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "1. ИНФОРМАЦИЯ О СИСТЕМЕ"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Архитектура: $(uname -m)"
echo "Ядро: $(uname -r)"
echo "Версия Keenetic: $(cat /etc/version 2>/dev/null || echo 'не определена')"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "2. ДИРЕКТОРИИ С МОДУЛЯМИ"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Системные модули:"
ls -la /lib/modules/ 2>/dev/null || echo "Директория не существует"
echo ""
echo "Entware модули:"
ls -la /opt/lib/modules/ 2>/dev/null || echo "Директория не существует"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "3. НАЛИЧИЕ ФАЙЛОВ МОДУЛЕЙ"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
for mod in xt_NFQUEUE xt_multiport xt_connbytes nfnetlink_queue; do
echo "Модуль: $mod"
find /lib/modules/ -name "${mod}.ko" 2>/dev/null || echo " Файл не найден"
done
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "4. ЗАГРУЖЕННЫЕ МОДУЛИ (lsmod)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Все netfilter модули:"
lsmod | grep -E 'nf|xt_' | head -20
echo ""
echo "Интересующие нас модули:"
for mod in xt_NFQUEUE xt_multiport xt_connbytes nfnetlink_queue; do
if lsmod | grep -q "^${mod} "; then
echo " [OK] $mod загружен"
else
echo " [FAIL] $mod НЕ загружен"
fi
done
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "5. ВЕРСИИ MODPROBE"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Системный modprobe:"
which /sbin/modprobe && /sbin/modprobe --version 2>&1 | head -3
echo ""
echo "Entware modprobe:"
which /opt/sbin/modprobe && /opt/sbin/modprobe --version 2>&1 | head -3
echo ""
echo "Дефолтный modprobe:"
which modprobe && modprobe --version 2>&1 | head -3
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "6. ПОПЫТКА ЗАГРУЗКИ ЧЕРЕЗ /sbin/modprobe"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
for mod in xt_NFQUEUE xt_multiport xt_connbytes; do
echo "Попытка загрузки: $mod"
/sbin/modprobe "$mod" 2>&1
echo "Exit code: $?"
echo ""
done
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "7. ПОПЫТКА ЗАГРУЗКИ ЧЕРЕЗ insmod"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
kernel_ver=$(uname -r)
mod_path="/lib/modules/${kernel_ver}"
echo "Путь к модулям: $mod_path"
echo ""
for mod in xt_NFQUEUE.ko xt_multiport.ko xt_connbytes.ko; do
mod_file=$(find "$mod_path" -name "$mod" 2>/dev/null | head -1)
if [ -n "$mod_file" ]; then
echo "Попытка загрузки: $mod_file"
/sbin/insmod "$mod_file" 2>&1
echo "Exit code: $?"
else
echo "Файл $mod не найден"
fi
echo ""
done
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "8. DMESG (последние 30 строк)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
dmesg | tail -30
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "9. ПРОВЕРКА ЗАВИСИМОСТЕЙ"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "ip_tables:"
lsmod | grep ip_tables
echo ""
echo "x_tables:"
lsmod | grep x_tables
echo ""
echo "nfnetlink:"
lsmod | grep nfnetlink
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "10. ПОПЫТКА ЗАГРУЗКИ ЧЕРЕЗ /opt/sbin/insmod (с полным путём)"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
kernel_ver=$(uname -r)
for mod in xt_NFQUEUE xt_multiport xt_connbytes; do
mod_file="/lib/modules/${kernel_ver}/${mod}.ko"
echo "Попытка: /opt/sbin/insmod $mod_file"
/opt/sbin/insmod "$mod_file" 2>&1
exitcode=$?
echo "Exit code: $exitcode"
# Проверить загрузился ли
if lsmod | grep -q "^${mod} "; then
echo "[OK] Модуль $mod успешно загружен!"
else
echo "[FAIL] Модуль $mod НЕ загрузился"
# Показать последние строки dmesg
echo "Последние сообщения ядра:"
dmesg | tail -5
fi
echo ""
done
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "11. ПОПЫТКА ЗАГРУЗКИ ЧЕРЕЗ /opt/sbin/modprobe -d"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
kernel_ver=$(uname -r)
mod_dir="/lib/modules/${kernel_ver}"
echo "Директория модулей: $mod_dir"
echo ""
for mod in xt_NFQUEUE xt_multiport xt_connbytes; do
echo "Попытка: /opt/sbin/modprobe -d $mod_dir $mod"
/opt/sbin/modprobe -d "$mod_dir" "$mod" 2>&1
exitcode=$?
echo "Exit code: $exitcode"
# Проверить загрузился ли
if lsmod | grep -q "^${mod} "; then
echo "[OK] Модуль $mod успешно загружен!"
else
echo "[FAIL] Модуль $mod НЕ загрузился"
fi
echo ""
done
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "12. ФИНАЛЬНОЕ СОСТОЯНИЕ МОДУЛЕЙ"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "Загруженные модули:"
lsmod | grep -E 'xt_NFQUEUE|xt_multiport|xt_connbytes|nfnetlink_queue'
echo ""
echo "Проверка каждого модуля:"
for mod in xt_NFQUEUE xt_multiport xt_connbytes nfnetlink_queue; do
if lsmod | grep -q "^${mod} "; then
echo " [OK] $mod загружен"
else
echo " [FAIL] $mod НЕ загружен"
fi
done
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "13. ПОСЛЕДНИЕ СООБЩЕНИЯ DMESG"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
dmesg | tail -20
echo ""
echo "+==================================================+"
echo "| Диагностика завершена |"
echo "+==================================================+"