NVMe
Загрузка barebox с SD/eMMC и rootfs на NVMe
Целевая схема
SD/eMMC: barebox NVMe: rootfs /boot/Image.gz /boot/rk3568-diasom-som-evb.dtb
1. Собрать barebox
Использовать коммит c92c769736 и новее в котором добавлена поддержка загрузки rootfs с nvme
git clone https://github.com/MacroGroup/barebox.git cd barebox git checkout devel git pull export CROSS_COMPILE=aarch64-linux-gnumake ARCH=arm64 diasom_rk35xx_defconfig make ARCH=arm64
После сборки должен появиться новый образ barebox, например:
images/barebox-rk3568-diasom-som-evb.img
2. Подготовить NVMe в Linux
Для записи rootfs нужно загрузиться в Linux-систему, где доступен /dev/nvme0n1. Это может быть временная загрузка с SD, eMMC или сервисного rootfs. Проверить наличие NVMe:
lsblk # ожидается nvme0n1
Очистить старые сигнатуры файловых систем и таблицы разделов:
wipefs -a /dev/nvme0n1
Создать GPT-таблицу разделов и один раздел под rootfs через fdisk:
fdisk /dev/nvme0n1
Внутри fdisk выполнить команды:
g # создать новую GPT-таблицу разделов n # создать новый раздел 1 # номер раздела Enter # первый сектор по умолчанию Enter # последний сектор по умолчанию, то есть до конца NVMe w # записать изменения
Проверить результат:
lsblk /dev/nvme0n1 # ожидается nvme0n1 └─nvme0n1p1
3. Записать rootfs на NVMe
Запись rootfs с host
В данном варианте вам необходимо:
Свободный слот или переходник для подкелчения NVMe к ПК Артефакты сборки образа diasom(инструкция get_started_rk3568.pdf)
Как указано в инструкции по сборке образа diasom, после сборки в каталоге images будет представлен rootfs.ext4 его и необходимо записывать раздел NVMe:
sudo dd if=images/rootfs.ext4 of=/dev/nvme0n1p1 bs=4M conv=fsync sync
3.2 Запись rootfs с временной загрузки с SD, eMMC или сервисного rootfs
Загрузиться в Linux-систему
Если необходимо, выполнить пункт 2, для подготовки nvme
dd if=/dev/mmcblkXp3 of=/dev/nvme0n1p1 bs=4M conv=fsync # Где X номер устройства, соответсвующий выбранному варианту загрузки(eMMC или SD)
4. Проверить загрузку в barebox
Перезагрузиться в barebox с SD или eMMC.
Проверить NVMe:
ls /mnt ls /mnt/nvme0n1.0/boot #ожидается Image.gz rk3568-diasom-som-evb-lvds.dtbo rk3568-diasom-som-smarc-evb-pciex2.dtbo
5. Запись barebox на носитель
Важно - все действия по записи выполнены из каталога barebox и на HOST.
Очистить eMMC или SD
Запись barebox на SD:
sudo dd if=images/barebox-diasom-rk3568-som-evb.img of=/dev/sdX bs=1024 seek=32 && sync sync
/dev/sdX — устройство SD-карты целиком /dev/sdX1 — раздел, его указывать нельзя
Запись barebox на eMMC:
# С использованием rkdevtool(Для установки воспользуйтесь инструкцией # load_image_to_emmc.pdf) sudo rkdeveloptool db rk356x_spl_loader_ddr1056_v1.10.111.bin sudo rkdeveloptool wl 0x40 images/barebox-diasom-rk3568-som-evb.img sync
6. Проверить загрузку
Запустить плату
Ожидаемый лог:
Booting entry 'default' Booting from NVMe Loading ARM aarch64 Linux image '/mnt/nvme0n1.0/boot/Image.gz'
Важно - выбор rootfs в barebox, построена следующим образом: eMMC → SD → NVME Это значит, что при наличии rootfs на eMMC и SD, rootfs будет использоваться именно с этих носителей.