Как подключить и настроить SSD на платах Raspberry Pi или Orange Pi в Linux-дистрибутивах?

Здравствуйте. У меня Raspberry Pi 5 8GB с расширением PCIe to 2-ch SATA HAT+ и подключённым SSD Samsung EVO 870 500GB, а также Orange Pi 4 Pro 6GB с установленным в плату KingSpec M.2 NVMe 128GB. Для Raspberry Pi я записал образ Rocky Linux 10.2 (скачан с официального сайта Raspberry Pi Images), для Orange Pi — Debian 12 (с сайта Orange Pi); образы накатываются на SD-карту, система загружается и работает. Хочу отказаться от SD-карты и полностью загружать ОС с SSD, но при попытке загрузки возникает ошибка (см. фото ниже). Образы записывал и через dd, и через Raspberry Pi Imager. Для Raspberry Pi я пробовал в файле config.txt на разделе /dev/sdb1 добавить <i>dtparam=pciex1</i> (пытался также <i>dtparam=nvme</i>), но загрузка с SSD не работает. Какие именно изменения нужно внести в загрузчик или в конфигурацию, чтобы Raspberry Pi загружался с SSD без SD-карты?
  • 19 июля 2026 г. 10:01
Ответы на вопрос 3
Коротко — два рабочих пути:

- самый надёжный и простой: оставить маленькую SD‑карту только с загрузочной FAT‑частью (boot/firmware), а корневой раздел перенести на SSD; загрузчик (файлы в FAT) остаётся на SD, ядро и initramfs загружаются с SD, а root= в cmdline указывает на SSD; это срабатывает практически всегда;
- полностью без SD (чистая загрузка с PCIe/SATA/NVMe) — зависит от того, поддерживает ли ROM/EEPROM Raspberry Pi ваш PCIe‑контроллер как устройство для первичной загрузки. Для многих PCIe→SATA контроллеров (и некоторых NVMe) «родной» загрузчик платы не умеет обращаться к ним на ранней стадии, поэтому нативная загрузка с них может быть невозможна или требует перепрошивки/обновления загрузчика/EEPROM/установки UEFI. Это менее универсально и требует проверки совместимости.

Далее — подробные инструкции и команды, что именно нужно сделать (и проверить) в вашем случае (Pi 5 + PCIe→SATA HAT).

1) Сначала — проверить: видит ли ядро контроллер и SSD, когда вы загружаетесь с SD
- загрузитесь с SD, подключите HAT/SSD;
- проверьте PCIe и контроллер:
  - lspci -vvv
  - dmesg | egrep -i 'ahci|ata|nvme|pci'
  - lsblk / blkid
Если контроллер и диск видны и доступны (появился /dev/sda, /dev/nvme0n1 и т.д.), значит Linux умеет с ним работать — это уже 80% успеха для переноса rootfs.

2) Перенос системы на SSD (примерный алгоритм)
- смонтируйте разделы SSD (создайте на SSD разделы boot и root как в текущей системе);
- скопируйте содержимое корня: rsync -aAX --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/ssd_root
- получите UUID корневого раздела: blkid /dev/sdXn
- в файле cmdline.txt (на FAT‑разделе /boot или /boot/firmware — зависит от дистрибутива) замените root=/dev/mmcblk0p2 на root=UUID=ваш‑UUID и добавьте параметры rootwait и (при необходимости) rootdelay=10
  - пример: root=UUID=1111-2222 ro rootwait rootdelay=10
- в /etc/fstab на SSD укажете UUID вместо /dev/… чтобы при загрузке монтировался корректно
- если дистрибутив использует initramfs (Rocky Linux — dracut, Debian — initramfs-tools), нужно убедиться, что в initramfs включены модули для доступа к диску (ahci, nvme и т.д.)
  - Для Rocky (dracut): chroot в SSD и выполнить dracut --regenerate-all --force
  - Для Debian: update-initramfs -u
  - Если модули не включились автоматически — явно добавить их в конфиги dracut/ initramfs

3) Настройки загрузки/firmware (если хотите совсем без SD)
- Убедитесь, что EEPROM/BOOT ROM обновлены до последней версии (используйте официальную инструкцию Raspberry Pi для обновления firmware/bootloader). На Pi4 это делается rpi-eeprom-update; для Pi5 следуйте официальной странице Raspberry Pi 5 firmware. Обновлённый загрузчик может поддерживать больше источников загрузки.
- Проверьте «порядок загрузки» (boot order) в EEPROM: он должен включать USB/PCIe/массовые устройства. На Pi4 это делается через конфигурацию EEPROM (BOOT_ORDER) — для Pi5 возможны отличия, смотрите официальную документацию.
- Но: даже с обновлённым EEPROM контроллер PCIe→SATA должен быть «видим» ROM на ранней стадии и поддерживать протокол mass‑storage; некоторые SATA чипы (особенно старые/бюджетные) не поддерживаются ROM и будут доступны только после загрузки ядра -> тогда нативная загрузка невозможна. В таком случае единственный рабочий путь — маленькая SD с файлом загрузки.

4) Конкретные доработки config.txt/параметров
- Файл config.txt нужен только при загрузке с firmware на SD (в него записываются параметры виде/дров/переключения интерфейсов).
- Для PCIe на Pi5 обычно не нужно писать dtparam=pciex1 — неверные параметры только мешают. Конкретные ключи зависят от образа/прошивки. Если у вас есть готовое описание HAT от производителя — используйте dtoverlay, который даёт производитель. Универсального dtparam, «включающего» PCIe, для всех случаев нет.
- Если ядро не видит контроллер без специальных overlay — проверьте документацию HAT и/или производителя чипа (например, ASMedia, JMicron и т.д.) на предмет dtoverlay или дополнительных параметров.

5) Отладка — что смотреть, если не загружается
- Если при попытке загрузки без SD вы получаете ошибку early boot, скорее всего ROM не может прочитать загрузочные файлы с PCIe‑устройства. Это подтверждается отсутствием активности контроллера в dmesg на ранней стадии.
- Лог при загрузке с SD: dmesg | grep -i pci ; journalctl -k — покажет, какие модули грузятся и видит ли ядро диск.
- Если при загрузке с SD диск виден, а при попытке загрузиться с него напрямую — нет, то причина в загрузчике/ROM, а не в Linux.

6) Коротко про Orange Pi (на будущее)
- На платах Orange Pi аплинч U‑Boot/EEPROM различен. Чтобы загрузать систему с NVMe внутри платы, обычно надо: иметь U‑Boot (в SPI/eMMC) с поддержкой NVMe, и настроить U‑Boot env (bootcmd) на загрузку с nvme. Часто проще оставить маленькую SD или прошить U‑Boot в SPI, но это специфично для модели и требует инструкций от производителя/сообщества Orange Pi.

Резюме и рекомендации для вашего случая
- Самый быстрый путь: оставить маленькую SD (несколько мегабайт/несколько сотен МБ) с /boot (firmware) и cmdline указывать root=UUID вашего SSD. Убедитесь, что initramfs включает драйверы ahci/nvme. Это надёжно и работает без танцев с EEPROM.
- Если хотите полностью без SD — проверьте/обновите EEPROM Raspberry Pi, проверьте boot order, прочитайте документацию по вашему PCIe→SATA контроллеру. Но часто контроллеры не поддерживаются ROM, и тогда без SD никак.

Если хотите — помогу конкретно:
- приведите выводы команд (после загрузки с SD): sudo lspci -nnk ; lsblk ; sudo dmesg | egrep -i 'ahci|ata|nvme|pci' ; sudo blkid
- и содержание /boot/cmdline.txt (или /boot/firmware/cmdline.txt) и /etc/fstab — тогда я подскажу точные правки, необходимые для перехода на SSD (с сохранением SD как загрузочного) или оценю шанс на 100% без‑SD загрузку.
Вот тут подробный мануал для малинки: <a href="https://raspberry.tips/en/raspberrypi-tutorials/raspberry-pi-5-nvme-ssd-boot" rel="nofollow">https://raspberry.tips/en/raspberrypi-tutorials/ra...</a> <br/> А для апельсинки вот тут: <a href="https://gist.github.com/Mohammad-Reihani/7c3d4472eaf4d3d0ec2f12e709c52f2e" rel="nofollow">https://gist.github.com/Mohammad-Reihani/7c3d4472e...</a> <br/> Рекомендую <a href="https://armbian.com/" rel="nofollow">armbian</a> . Из коробки поддерживает загрузку с любого носителя и раздельную от загрузчика установку ОС.
с малинкой тут ограничение прошивки: 870 EVO — SATA, а HAT это мост PCIe в SATA, а штатный EEPROM Pi 5 умеет грузиться с SD, USB и настоящего NVMe, но не с AHCI-моста. <code>dtparam=pciex1</code> и <code>dtparam=nvme</code> тут не помогут: в логе загрузчик честно долбится в NVME (06) и не находит его, потому что протокол не тот. Варианта три: SATA через USB-переходник, реальный NVMe SSD с NVMe HAT, либо загрузка с SD плюс корень на SATA. <br/> <br/> с Orange Pi другое: ядро стартует, но initramfs не видит раздел по UUID. Грузись с SD, глянь <code>lsblk -f</code> и <code>blkid</code> . Если <code>nvme0n1</code> на месте, смонтируй его и зайди через <code>chroot</code> , поправь UUID в <code>extlinux.conf</code> и <code>fstab</code> и там же прогони <code>update-initramfs -u -k all</code> : с обычного SD-сеанса это обновит initramfs самой SD-карты, а не SSD.
Похожие вопросы