В bash-скрипте я создаю 200M-образ, связываю его с loop-устройством, монтирую, создаю файловую систему ext2, делаю сборку из необходимых файлов и в конце собираю бинарник на qt при помощи кросс-компилятора:
# 200 метров должно хватить для любого диска с прогой, скриптов и настроек
dd if=/dev/zero of=./dump.img bs=1M count=200
# освобождаем loop0-устройство
losetup -d /dev/loop0
# сопоставляем образ с loop-устройством
losetup /dev/loop0 ./dump.img
# формируем таблицу разделов на /dev/loop0
sfdisk /dev/loop0 <<-__EOF__
;
__EOF__
# перечитываем
partprobe /dev/loop0
# создаем файловую систему ext2
mkfs.ext2 -F -L "$FIRMWARE_VER1" /dev/loop0p1
# создаем папку, на всякий случай
mkdir ./imgmnt
# монтируем loop-устройство в папку
mount /dev/loop0p1 ./imgmnt
Записываем созданный распакованный образ на microsd-карту через usb-переходник (microsd-карта монтируется как /dev/sdc1):
sudo dd if=./myimage.img of=/dev/sdc bs=1M
На плате BBB делаем авторасширение ext2-раздела (microsd-карта монтируется как /dev/mmcblk0p1) в моем bash-скрипте, запускаемом при инициализации (/etc/init.d/mystart.sh).
Авторасширение делается в два этапа:
1) до монтирования microsd-карты делаем расширение раздела с предварительной проверкой на размер раздела:
Авторасширение делается в два этапа:
1) до монтирования microsd-карты делаем расширение раздела с предварительной проверкой на размер раздела:
# расширение раздела до монтирования
read MSIZE < /sys/class/block/mmcblk0/size
read NR START END TYPE < <( partx -gbro NR,START,END,TYPE /dev/mmcblk0 )
if [ "$END" -lt "$(($MSIZE - 1))" ] && [ "$TYPE" == "0x83" ]; then
dd if=/usr/share/medteco/sdresize.rgb of=/dev/fb0
parted /dev/mmcblk0 resizepart 1 100%
e2fsck -f /dev/mmcblk0p1
fi
Источники:
2) после монтирования microsd-карты делаем расширение файловой системы (этот этап можно было сделать до монтирования, но почему-то на нем в таком случае часто случались косяки):
# расширяем файловую систему после монтирования
resize2fs /dev/mmcblk0p1
resize2fs /dev/mmcblk0p1
3) https://www.tecmint.com/parted-command-to-create-resize-rescue-linux-disk-partitions/
4) https://elinux.org/RPi_Resize_Flash_Partitions
5) https://www.raspberrypi.org/forums/viewtopic.php?t=45265
6) https://unix.stackexchange.com/questions/373063/auto-expand-last-partition-to-use-all-unallocated-space-using-parted-in-batch-m
7) https://github.com/armbian/build/issues/243
4) https://elinux.org/RPi_Resize_Flash_Partitions
5) https://www.raspberrypi.org/forums/viewtopic.php?t=45265
6) https://unix.stackexchange.com/questions/373063/auto-expand-last-partition-to-use-all-unallocated-space-using-parted-in-batch-m
7) https://github.com/armbian/build/issues/243
Комментариев нет:
Отправить комментарий