projects:linux:manual_backup_scripts:pi_compatibility
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| projects:linux:manual_backup_scripts:pi_compatibility [2025/04/08 00:37] – | projects:linux:manual_backup_scripts:pi_compatibility [2025/04/11 17:43] (текущий) – | ||
|---|---|---|---|
| Строка 2: | Строка 2: | ||
| // | // | ||
| + | |||
| + | <code bash pi_compatibility.sh> | ||
| + | #!/bin/bash | ||
| + | export LANG=en_US.UTF-8 | ||
| + | export LC_ALL=en_US.UTF-8 | ||
| + | # ==DIS/ | ||
| + | # === 🧪 Pi Compatibility === | ||
| + | # 10_pi_compatibility.sh — Проверка совместимости с Raspberry Pi 3/4/5 | ||
| + | # | ||
| + | |||
| + | set -euo pipefail | ||
| + | |||
| + | # Все функции | ||
| + | |||
| + | do_check() { | ||
| + | local root_dev=" | ||
| + | local boot_dir=" | ||
| + | local live=" | ||
| + | |||
| + | echo | ||
| + | echo "📁 Анализ загрузочного каталога: | ||
| + | echo " | ||
| + | |||
| + | declare -A MODELS | ||
| + | MODELS[" | ||
| + | MODELS[" | ||
| + | MODELS[" | ||
| + | |||
| + | declare -A MISSING | ||
| + | |||
| + | for MODEL in " | ||
| + | echo "🧩 Проверка файлов для $MODEL:" | ||
| + | MISSING[$MODEL]="" | ||
| + | for file in ${MODELS[$MODEL]}; | ||
| + | if [[ -f " | ||
| + | echo " | ||
| + | else | ||
| + | if [[ " | ||
| + | echo " | ||
| + | MISSING[$MODEL]+=" | ||
| + | fi | ||
| + | fi | ||
| + | done | ||
| + | done | ||
| + | |||
| + | echo " | ||
| + | if [[ " | ||
| + | MODEL_RAW=$(tr -d ' | ||
| + | else | ||
| + | MODEL_RAW=" | ||
| + | fi | ||
| + | echo " | ||
| + | |||
| + | ARCH=$(uname -m) | ||
| + | echo "🧠 Архитектура: | ||
| + | [[ " | ||
| + | |||
| + | KERNEL=$(uname -r) | ||
| + | echo | ||
| + | echo "🧬 Ядро: $KERNEL" | ||
| + | if dpkg --compare-versions " | ||
| + | echo " | ||
| + | else | ||
| + | echo " | ||
| + | fi | ||
| + | |||
| + | echo | ||
| + | echo "📦 Прошивка GPU:" | ||
| + | if [[ " | ||
| + | vcgencmd version | sed ' | ||
| + | else | ||
| + | FW_FILE=" | ||
| + | [[ -f " | ||
| + | FW_DATE=$(strings " | ||
| + | echo " | ||
| + | fi | ||
| + | |||
| + | if [[ " | ||
| + | echo | ||
| + | echo "🧰 EEPROM bootloader:" | ||
| + | sudo rpi-eeprom-update | sed ' | ||
| + | fi | ||
| + | |||
| + | echo | ||
| + | echo "🧾 config.txt:" | ||
| + | CONFIG=" | ||
| + | if [[ -f " | ||
| + | grep -E ' | ||
| + | echo " | ||
| + | [[ " | ||
| + | [[ " | ||
| + | done | ||
| + | else | ||
| + | echo " | ||
| + | fi | ||
| + | |||
| + | echo | ||
| + | echo "📋 Совместимость:" | ||
| + | for MODEL in Pi3 Pi4 Pi5; do | ||
| + | if [[ -z " | ||
| + | echo "✅ $MODEL: потенциально совместим" | ||
| + | else | ||
| + | echo -e "❌ $MODEL: отсутствуют файлы → ${MISSING[$MODEL]}" | ||
| + | fi | ||
| + | done | ||
| + | } | ||
| + | |||
| + | check_img() { | ||
| + | local img_path=" | ||
| + | if [[ ! -f " | ||
| + | echo "❌ Файл не найден: | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | LOOPDEV=$(sudo losetup --show -Pf " | ||
| + | BOOT_PART=" | ||
| + | TMPDIR=$(mktemp -d) | ||
| + | sudo mount " | ||
| + | |||
| + | echo | ||
| + | echo "🔍 Проверка образа: | ||
| + | do_check " | ||
| + | |||
| + | sudo umount " | ||
| + | sudo losetup -d " | ||
| + | rmdir " | ||
| + | } | ||
| + | |||
| + | select_img_and_check() { | ||
| + | NAS_PATH="/ | ||
| + | if mountpoint -q " | ||
| + | mapfile -t DEVICES < <(lsblk -nrpo NAME, | ||
| + | DEVICES+=(" | ||
| + | else | ||
| + | mapfile -t DEVICES < <(lsblk -nrpo NAME, | ||
| + | fi | ||
| + | |||
| + | if [[ ${# | ||
| + | echo "❌ Нет доступных устройств." | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | echo "💾 Выберите диск с .img-файлами:" | ||
| + | i=1 | ||
| + | for dev in " | ||
| + | IFS=":" | ||
| + | label="" | ||
| + | [[ " | ||
| + | [[ -z " | ||
| + | echo "$i - $name $size $mnt $label" | ||
| + | ((i++)) | ||
| + | done | ||
| + | |||
| + | echo "0 - Отмена" | ||
| + | read -rp "👉 Ваш выбор: " choice | ||
| + | [[ " | ||
| + | (( choice < 1 || choice > ${# | ||
| + | |||
| + | SEL_DEV=" | ||
| + | IFS=":" | ||
| + | |||
| + | TEMP_MOUNTED=false | ||
| + | if [[ " | ||
| + | TARGET_DIR=" | ||
| + | echo "📁 Используем NAS каталог: | ||
| + | else | ||
| + | MOUNTED_PATH=$(lsblk -nrpo NAME, | ||
| + | if [[ -n " | ||
| + | echo "✅ Используем: | ||
| + | TARGET_DIR=" | ||
| + | else | ||
| + | i=0 | ||
| + | while true; do | ||
| + | MNT_PATH="/ | ||
| + | if ! mountpoint -q " | ||
| + | break | ||
| + | fi | ||
| + | ((i++)) | ||
| + | done | ||
| + | sudo mkdir -p " | ||
| + | if sudo mount " | ||
| + | echo "✅ Устройство примонтировано: | ||
| + | TARGET_DIR=" | ||
| + | TEMP_MOUNTED=true | ||
| + | else | ||
| + | echo "❌ Не удалось примонтировать." | ||
| + | exit 1 | ||
| + | fi | ||
| + | fi | ||
| + | fi | ||
| + | |||
| + | mapfile -t IMG_LIST < <(find " | ||
| + | if [[ ${# | ||
| + | echo "❌ Не найдено .img файлов в $TARGET_DIR" | ||
| + | $TEMP_MOUNTED && sudo umount " | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | echo " | ||
| + | i=1 | ||
| + | for img in " | ||
| + | echo "$i - $img" | ||
| + | ((i++)) | ||
| + | done | ||
| + | |||
| + | echo "0 - Отмена" | ||
| + | read -rp "👉 Выберите образ для проверки: | ||
| + | [[ " | ||
| + | (( img_choice < 1 || img_choice > ${# | ||
| + | |||
| + | IMGFILE=" | ||
| + | echo "📦 Выбран образ: $IMGFILE" | ||
| + | check_img " | ||
| + | $TEMP_MOUNTED && sudo umount " | ||
| + | } | ||
| + | |||
| + | check_live_system() { | ||
| + | echo | ||
| + | echo "🔍 Проверка текущей системы..." | ||
| + | BOOT_DIR="/ | ||
| + | [[ -d "/ | ||
| + | do_check "/" | ||
| + | } | ||
| + | |||
| + | print_menu() { | ||
| + | echo "🧪 Проверка совместимости Raspberry Pi" | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | echo " | ||
| + | read -rp "👉 Ваш выбор: " choice | ||
| + | case " | ||
| + | 1) check_live_system ;; | ||
| + | 2) select_img_and_check ;; | ||
| + | 0) echo "🚪 Выход."; | ||
| + | *) echo "❌ Неверный выбор."; | ||
| + | esac | ||
| + | } | ||
| + | |||
| + | print_menu | ||
| + | |||
| + | </ | ||
| + | ===== ******* ===== | ||
| + | [[https:// | ||
projects/linux/manual_backup_scripts/pi_compatibility.1744061854.txt.gz · Последнее изменение: —
