Сборка образа
Это заготовка страницы. Здесь приведены общие инструкции, тестирование которых не производилось. Окончательная версия страницы войдёт во вторую версию руководства LFA.
Всё готово для сборки img
-образа, который в будущем будет пригоден для записи на SD-карту или eMMC-накопитель.
Создание базовых файлов
Сначала создадим заголовок размером 2 Мб:
dd if=/dev/zero bs=1M count=2 of=bootloader.img
И копируем сохранённый образ U-Boot по смещению 128:
dd if=$LFA/bootloader.bin \
conv=notrunc seek=128 \
of=bootloader.img
Вне зависимости от SoC (Allwinner, Broadcom или Rockchip), для которого вы собирали U-Boot, он был сохранён в файл $LFA/bootloader.bin
. Так что имя файла в аргументе dd if=...
правильное.
Теперь нужно создать образ, в котором будут содержаться файлы собранной системы:
dd if=/dev/zero bs=1M count=512 of=rootfs.img
Здесь я установил размер образа в 512 Мб, но вы можете установить и свой.
Создайте файловую систему на этом разделе:
mkfs.ext4 -L BOOT \
-O ^metadata_csum -F \
-b 4096 \
-E stride=2,stripe-width=1024 \
-L rootfs rootfs.img
Копирование файлов
Смонтируйте полученный образ и скопируйте в неё файлы нашей системы (саму систему, ядро, Devicetree и сценарий загрузки):
mkdir -pv /tmp/lfa_rootfs
sudo mount -v rootfs.img /tmp/lfa_rootfs
sudo cp -rfv $LFA_SYS/* /tmp/lfa_rootfs
sync
Все действия здесь выполняются от имени пользователя lfa
. Поскольку здесь используется программа sudo
, вам нужно добавить пользователя lfa
в группу wheel
.
После копирования файлов размонтируйте образ:
sudo umount /tmp/lfa_rootfs
Создание окончательного образа
Объедините два образа в один:
dd if=rootfs.img conv=notrunc oflag=append bs=1M seek=2 of=bootloader.img
Создание таблицы разделов
Созданный нами образ нерабочий, поскольку ещё не содержит таблицу разделов. Создайте её с помощью fdisk
:
fdisk bootloader.img
o
n
p
1
4096
+512M
w
Значения новых команд:
После начала редактирования мы вводим команду
o
, чтобы создать пустую таблицу разделов MBR. Затем командойn
создаём новый раздел. Выбираем тип, номер и первый сектор. Дело в том, что размер сектора равен 512 байт, т.е. 1 Кб равен двум секторам. Размер заголовка 2 Мб, т.е. 2048 Кб или 4096 секоторов. Размер раздела можно указать в Мб. Сохранение и выход командойw
.
Переименуйте файл bootloader.img
, дав ему более логичное и подходящее имя:
mv -v bootloader.img lfa-1.0.img
Сжатие образа
При необходимости вы можете сжать образ с помощью xz
или любого другого архиватора, который вам больше нравится. Я часто видел img
-образы, сжатые с помощью xz
, поэтому использую его:
xz lfa-1.0.img
Запись образа на SD-карту
Теперь вы можете записать полученный образ на SD-карту. Для этого можете использовать dd
:
sudo dd if=lfa-1.0.img of=/dev/sdX
где X
- буква (a
, b
, c
, etc.) устройства, на которое будет производиться запись образа, например, /dev/sdc
. Обратите внимание на то, что в некоторых случаях вместо sdX
имя устройства может быть и mmcblkX
.
Также для записи можете использовать программу Balena Etcher.
Смотрите также: