Самостоятельная подготовка образа для конкретного ARM устройства, для наглядности примера будем использовать Orange PI Zero.
Описанные здесь действия в большинстве своем будут дублировать действия из статьи «Особенности сборки пакетов для платформы ARM под chroot (вручную)».
Первым делом создаем пустой образа диска, нужного размера (в данном случае размер 4G):
dd of=archlinuxarm.img bs=1 seek=4G count=0
Создаем файловую систему ext4 для всего образа диска:
mkfs.ext4 -F archlinuxarm-orangepi-zero.img
Создаем директорию и монтируем образа диска:
# mkdir orangepi-zero
# mount archlinuxarm-orangepi-zero.img orangepi-zero
Далее загружает интересующий нас архив root-fs с сайта archlinuxarm.org и разархивируем. Пример для sun7i (armv7h):
$ wget http://archlinuxarm.org/os/ArchLinuxARM-sun7i-latest.tar.gz
# tar -xvf ArchLinuxArm-sun7i-latest.tar.gz -C orangepi-zero
Для работы ARM в chroot в основную систему нужно установить (если не установлены) несколько пакетов arch-install-scripts, binfmt-qemu-static-sl (последний имеет зависимость qemu-user-static):
# pacman -S arch-install-scripts binfmt-qemu-static-sl
После установки пакетов скопируем в папку с chroot бинарный файл qemu-arm-static (после подготовки образа не забываем его удалить):
# cp /usr/bin/qemu-arm-static orangepi-zero/usr/bin
Что бы в chroot заработал DNS, нужно удалить ссылку resolv.conf и скопировать образез resolv.conf.
# sudo rm orangepi-zero/etc/resolv.conf
# sudo cp -a orangepi-zero/etc/resolvconf.conf orangepi-zero/etc/resolv.conf
Что бы в chroot pacman не выдавал ошибок, инициализируем связки ключей и сделаем первоначальную настройку:
# arch-chroot orangepi-zero pacman-key —init
# arch-chroot orangepi-zero pacman-key —populate archlinuxarm
Обновляем систему и устанавливаем все интересующие нас пакеты.
# arch-chroot orangepi-zero pacman -Syu
Теперь что бы наш образ смог загрузиться на устройстве нужно установить пакет с загрузчиком uboot под вашу систему (В примере uboot для Orange PI Zero)
# arch-chroot orangepi-zero pacman -S uboot-orangepi-zero
Дальше запишем u-boot в наш образ из основной системы:
dd if=orangepi-zero/boot/u-boot-sunxi-with-spl.bin of=archlinuxarm-orangepi-zero.img bs=1024 seek=8 Очищаем образ от лишнего, отмонтируем и наконец записываем на носитель для использования в нашем ARM устройстве. # rm orangepi-zero/usr/bin/qemu-arm-static # arch-chroot orangepi-zero pacman -Sc # umount orangepi-zero # dd if=archlinuxarm-orangepi-zero.img of=/dev/sdX status=progress
Для автоматизации процесса установки можно воспользоваться скриптом из пакета install-snuglinux:
# install-snuglinux -a