← База знаний

Banana Pi M2 Berry: переносим систему на SSD через SATA

Главное преимущество Banana Pi M2 Berry перед Raspberry Pi — родной SATA-порт прямо с чипа Allwinner V40. Реальные 100–160 МБ/с против ~30 МБ/с у диска через USB 2.0, и ресурс SSD вместо ресурса microSD-карты, которая под нагрузкой сервера живёт год-два. Разберём, как перенести систему на SSD правильно.

Важное ограничение платы

Загрузиться напрямую с SATA плата не умеет: загрузчик чипа Allwinner стартует только с microSD. Поэтому рабочая схема выглядит так: загрузчик и ядро остаются на SD-карте, а корневая файловая система (rootfs) переезжает на SSD. Карта нужна всегда, но после старта вся работа идёт с диска — нагрузки на карту почти нет, подойдёт любая надёжная на 8 ГБ.

Что понадобится

- Banana Pi M2 Berry с установленным Armbian (образ для платы называется Banana Pi M2 Ultra — это нормально, у них общий чип)
- microSD-карта с рабочей системой
- 2.5" SATA SSD и два кабеля: SATA-данные и питание диска (питание подключается к отдельному 4-pin разъёму на плате рядом с SATA-портом)

Шаг 1. Настраиваем зеркало репозитория

Штатный редиректор Armbian может направлять на медленные или недоступные зеркала — загрузка пакетов будет обрываться по таймауту. Надёжнее прописать зеркало Яндекса напрямую:

bash
sudo nano /etc/apt/sources.list.d/armbian.sources

Найдите строку URIs и замените её:

code

URIs: https://mirror.yandex.ru/mirrors/armbian/apt

Если система стоит на beta-репозитории (в URI присутствует beta), путь будет https://mirror.yandex.ru/mirrors/armbian/beta. В одной строке URIs можно указать несколько зеркал через пробел — apt переберёт их по порядку, если первое недоступно.

Обновите индекс:

bash
sudo apt update

Шаг 2. Проверяем, что система видит диск

Подключите SSD и загрузите плату. Смотрим, определился ли диск:

bash
dmesg | grep -i ata
lsblk

В выводе dmesg должны быть строки вида:

code

ahci-sunxi 1c18000.sata: AHCI vers 0001.0100, 32 command slots, 3 Gbps
ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata1.00: ATA-10: KINGSTON SA400S37240G, max UDMA/133

SATA link up — контроллер работает, диск на связи. В lsblk диск появится как sda. Если строк про SATA нет вообще — контроллер не активирован в device tree вашей сборки; проверьте, что установлен пакет linux-dtb, соответствующий вашему ядру.

Заодно стоит проверить здоровье диска:

bash
sudo apt install smartmontools -y
sudo smartctl -H /dev/sda

Ответ PASSED — можно продолжать.

Шаг 3. Запускаем перенос через armbian-config

В свежих версиях Armbian перенос системы спрятан в конфигураторе:

bash
sudo apt install armbian-config -y
sudo armbian-config

Путь по меню: System → Storage → пункт STO001 «Copy the running Armbian system to another device». В старых сборках то же самое делает команда nand-sata-install — это один и тот же мастер.

Мастер спросит:

1. Целевое устройство — выбирайте /dev/sda
2. Вариант установки — «Boot from SD, system on SATA/USB» (загрузчик на карте, система на диске)
3. Файловую систему — ext4
4. Подтверждение стирания диска

Дальше идёт копирование rootfs — 10–20 минут в зависимости от объёма установленного. Мастер сам разметит диск, скопирует систему и поправит конфигурацию загрузки. По завершении соглашайтесь на перезагрузку.

Шаг 4. Проверяем результат

После перезагрузки:

bash
lsblk
df -h /

Правильная картина выглядит так:

code

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    0 223,6G  0 disk
└─sda1        8:1    0 223,6G  0 part /
mmcblk0     179:0    0    58G  0 disk
└─mmcblk0p1 179:1    0  57,4G  0 part /boot

Корень / смонтирован с sda1, на карте остался только /boot. Всё, система живёт на SSD.

Если в сборке настроен zram (своп и /var/log в сжатой памяти) — он останется как был. Это правильная конфигурация для одноплатника, трогать её не нужно.

Как это устроено внутри

Магии в переносе нет. Мастер делает три вещи: создаёт раздел ext4 на диске, копирует туда корневую систему через rsync и меняет одну строку в файле /boot/armbianEnv.txt на SD-карте:

code

rootdev=UUID=<uuid-раздела-на-ssd>

Ядро при загрузке читает этот параметр и монтирует корень с указанного устройства. Зная это, перенос можно выполнить и полностью вручную — fdisk, mkfs.ext4, rsync с исключением служебных каталогов, правка rootdev и записи в /etc/fstab.

Откат, если что-то пошло не так

Главная страховка этой схемы: SD-карта остаётся загрузочной. Если после переноса плата не поднялась, вставьте карту в компьютер и в файле /boot/armbianEnv.txt верните старое значение:

code

rootdev=/dev/mmcblk0p1

Система снова загрузится с карты, как до переноса — на карте всё осталось нетронутым.

Финальные штрихи

Прогоните систему под нагрузкой, чтобы убедиться в стабильности связки:

bash
sudo apt install stress-ng -y
stress-ng --cpu 4 --hdd 1 --timeout 300
dmesg | grep -iE 'reset|fail' | tail

Пять минут без ошибок ata в dmesg — конфигурация рабочая.

И обязательно снимите образ SD-карты (dd или Win32DiskImager на компьютере): после переноса она содержит только загрузчик и ядро, образ маленький, а восстановление при выходе карты из строя займёт минуты. Обновления ядра через apt продолжат работать штатно — /boot смонтирован с карты, пакеты обновляются туда сами.

Итог

Перенос системы на SSD — обязательный шаг для любой серьёзной задачи на M2 Berry: сервера, NAS, хостинга. Схема «загрузка с SD, система на SATA» настраивается одним мастером за 20 минут, легко откатывается правкой одной строки и раскрывает главное железное преимущество этой платы над одноклассниками.

Корпус Eruscus Blade 19" 1U Стоечный корпус на 4 платы Raspberry Pi с активным охлаждением.
Смотреть корпус →