Сделай Backup - не получишь факап: История одного падения Raspberry Pi 5 и чудесного воскрешения

riobot
19.05.2026 18:37
19 просмотров

Приветствую! С вами riopass.ru, и сегодня мы поговорим о боли, слезах и единственной вещи, которая отделяет системного администратора от нервного срыва - о резервном копировании.

Предыстория: ничто не предвещало беды. Изначально я задумал развернуть локальную нейросеть на базе Ollama на своей Raspberry Pi 5 под управлением Raspberry Pi OS. Через скрипты Pi-Apps установка не завелась. Я, как положено, всё вычистил и решил ставить с официального сайта, чтобы скрипт сам подтянул нужную архитектуру и всё настроил.

Туда же "до кучи" была установлена пачка других утилит и запущен процесс обновления компонентов. А потом я просто решил выключить "Малинку" для плановой замены домашнего роутера. И оставил так спустя день.

И она больше не включилась...

При подаче питания вентилятор начинал выть на все 120%, а графическая оболочка и система в целом отказывались стартовать. Умные ИИ-ассистенты, к которым я пошел за советом, дружно начали хоронить железо: "у вас умер адаптер - просадка V5", "сгорела SD-карта", "повредилась файловая система". Максимум, что показала диагностика - это пресловутый dirty bit на загрузочном разделе (признак внезапного отключения питания), который утилита fsck успешно сняла, но систему это не оживило.

Основная проблема крылась в самой Ollama и криво вставших обновлениях - они просто намертво вешали инициализацию ядра.

И тут я вспомнил про raspiBackup. Это гениальный скрипт от немецких разработчиков, который я когда-то давно настроил на еженедельный сброс дампов на свой мини-сервер через SMB-шару. Помню, тогда ещё думал: "Блин, ну это же минус 30-40 ГБ места на диске! Бэкапы, которые никогда не пригодятся мне не пригодяться".

В итоге именно эти "лишние" гигабайты меня и спасли. Потому что реанимировать систему удалось только накатив бэкап. Ниже - подробная инструкция, как восстановить Raspberry Pi из архива raspiBackup, используя сторонний ПК (в моем случае - рабочий ноутбук на Debian 13).

Инструкция: Восстановление raspiBackup на другом Linux-ПК

Если ваша Малинка "мертва", вы не сможете запустить скрипт восстановления на ней самой. Нам понадобится любой компьютер с Linux (например, Ubuntu, Debian или Mint) и кардридер/переходник.

Шаг 1. Готовим накопитель и бэкап

  1. Подключаем флешку или NVMe-накопитель от мертвой Raspberry к нашему Linux-ПК.
  2. Проверяем, под каким именем накопитель определился в системе:

    lsblk

    Внимательно ищем свой диск по размеру (например, /dev/sdb). Это критически важно, чтобы случайно не отформатировать системный диск ноутбука!

  3. Убеждаемся, что папка с вашим бэкапом (вида Имя@debian-tar-backup-Дата) доступна на этом ПК - локально или примонтирована по сети. Я перекинул заранее через команду scp.

Шаг 2. Скачиваем утилиту

Если скрипта raspiBackup нет на вашем ПК, скачиваем его одной командой:

curl -sSLO https://raw.githubusercontent.com/framps/raspiBackup/master/raspiBackup.sh
chmod +x raspiBackup.sh

Шаг 3. Запускаем магию (Осторожно, пофиг!)

Если вы просто запустите скрипт на ПК (архитектура x86_64), он выдаст ошибку RBK0268E: Only Raspberries running Raspberry PI OS are supported. Он "видит", что вы не на ARM, и отказывается работать.

Чтобы заставить скрипт развернуть бэкап на "чужеродной" системе, нужно использовать специальный флаг --unsupportedEnvironment.

Выполняем команду (не забудьте подставить свои данные!):

sudo ./raspiBackup.sh --unsupportedEnvironment -d /dev/sdb /путь/к/папке/с/бэкапом

Где /dev/sdb - это ваш накопитель от Малинки.

На скриншоте выделил красным IPv6 Link-Local, то что подключился по RDP с PC на ноутбук. (на самом роутере у меня IPv6 выключен)

Что произойдет дальше:
Скрипт прочитает структуру старого диска, сам переразметит разделы, зальет boot-сектор и распакует ваш тяжелый tar.zst архив прямо в корень. Прогресс-бара распаковки архива не будет - терминал просто "задумается" на 10–20 минут. Не прерывайте процесс! Дождитесь сообщения об успехе, извлеките диск и вставляйте его в Raspberry. Она загрузится так, будто ничего и не ломалось. (У меня в обще ноутбук заснул, я думал всё сломалось, но нет, успех!)

Бонус: IPv6 Link-Local - как найти сервер, если роутер умер

В моей истории всё началось с замены роутера. Часто при смене сетевого оборудования, изменении подсетей (например, с 192.168.1.x на 192.168.0.x) или выходе из строя DHCP-сервера, ваш headless-сервер (без монитора) становится недоступным по сети. Вы не знаете его новый IP-адрес.

Здесь на сцену выходит IPv6 Link-Local (Локальный адрес канала).

Даже если в вашей сети нет интернета, нет роутера и нет DHCP-сервера, любое современное устройство с поддержкой IPv6 автоматически генерирует себе адрес в диапазоне fe80::/10. Этот адрес создается на основе MAC-адреса сетевой карты и существует только в пределах физического сегмента сети (от кабеля до кабеля).

Как это использовать для спасения?

Если Raspberry Pi потерялась в сети:

  1. Берем обычный патч-корд и соединяем порт Ethernet на вашем ноутбуке напрямую с портом Raspberry Pi.
  2. Включаем устройства. Они автоматически договорятся и создадут себе Link-Local адреса.
  3.  На вашем ноутбуке (Windows/Linux) открываем терминал и сканируем соседей по IPv6 с помощью мультикаст-пинга:
  •        На Linux/macOS: ping6 -I eth0 ff02::1 (где eth0 — ваше сетевое подключение).
  •        На Windows: ping -6 ff02::1

Вам ответят адреса, начинающиеся на fe80::.... Один из них - это ваш ноутбук, второй - ваша потерянная Raspberry Pi!

Берем этот адрес и спокойно подключаемся по SSH:

ssh user@fe80::xxxx:xxxx:xxxx:xxxx%eth0

(Знак процента и имя интерфейса в конце обязательны, чтобы система поняла, через какой именно кабель стучаться).

Подключились напрямую - поправили настройки netplan или dhcpcd.conf под новый роутер, и сервер снова в строю.

Мораль: Изучайте сетевые технологии и делайте бэкапы. Это экономит не только время, но и не будете как Ганвест разговаривать потом.

Глоссарий к статье

Для тех, кто только погружается в мир Linux и домашних серверов, вот расшифровка ключевых терминов из статьи:

  •  Ollama - инструмент (фреймворк), позволяющий разворачивать и запускать большие языковые нейросети (LLM) прямо у себя на домашнем железе, без интернета и цензуры.
  •  Headless-сервер (безголовый сервер) - компьютер или микрокомпьютер (как наша Raspberry Pi), который работает без подключенного монитора, клавиатуры и мыши. Управляется исключительно по сети.
  •  fsck (File System Consistency Check) - стандартная системная утилита в Linux. Врач-травматолог для жестких дисков и флешек: проверяет файловую систему на ошибки и пытается их исправить.
  • Dirty bit (Грязный бит) - специальный флаг (метка) в файловой системе. Ставится автоматически, если выдернуть питание устройства до того, как система успела безопасно завершить работу с диском. Сигнализирует о том, что при следующей загрузке нужно запустить fsck.
  • raspiBackup - мощный opensource-скрипт для Raspberry Pi. Умеет делать резервные копии работающей системы по расписанию и сохранять их на сетевые диски.
  • SMB-шара (SMB Share) - общая сетевая папка, доступная другим устройствам в локальной сети. Названа в честь протокола Server Message Block, который исторически используется в Windows, но отлично понимается и Linux-системами.
  • tar.zst - формат сжатого архива. Утилита tar собирает всю файловую систему в один большой файл-контейнер, а алгоритм zstd (Zstandard) сжимает его. Работает гораздо быстрее и эффективнее старых форматов вроде .gz или .zip.
  • NVMe (Non-Volatile Memory Express) - современный протокол и формат быстрых твердотельных накопителей (SSD). Raspberry Pi 5 поддерживает их подключение через специальный шлейф (PCIe), что дает колоссальный прирост скорости по сравнению с обычными MicroSD-картами.
  • DHCP-сервер (Dynamic Host Configuration Protocol) - служба, которая автоматически выдает IP-адреса всем устройствам в вашей домашней сети. Чаще всего эта функция встроена в ваш домашний Wi-Fi роутер.
  • IPv6 Link-Local (Локальный адрес канала) - автоматический сетевой адрес (всегда начинается с fe80::), который любое современное устройство назначает себе само. Работает только в пределах одного физического провода или Wi-Fi сегмента. Позволяет устройствам общаться напрямую, даже если роутер сгорел, а DHCP-сервер мертв.
  • SSH (Secure Shell) - защищенный сетевой протокол для удаленного управления компьютером через командную строку. Тот самый черный экран с белыми буквами, через который админы творят магию.