Язык:
  • Українська
  • Русский
  • English
Свежие записи
Свежие комментарии
    Архивы
    Последние сообщения на форуме
    khvalera
    KDE plasma minimal
    khvalera
    dtc-control
    khvalera
    USB на orangepi r1
    Апрель 2024
    Пн Вт Ср Чт Пт Сб Вс
    1234567
    891011121314
    15161718192021
    22232425262728
    2930  

    Особенности сборки пакетов для платформы ARM  под chroot (вручную)

    Предисловие

    Собирать пакеты на ARM устройстве не очень удобно, так как правило ресурсы такого устройства зачастую очень ограничены и компиляция и сборка занимает продолжительное время (сборка ядра или громоздких программ может выполняться больше чем 12-ть часов). Для этих целей удобнее использовать более мощные компьютера, допустим построенные на архитектуре x86_64. На момент написания данного руководства, существуют несколько вариантов решения данной задачи, одним из вариантов есть Distcc Cross-Compiling, но не всегда удобно развертывать для этих целей громоздкое и непростое в настройке программное обеспечение, проще воспользоваться привычным нам chroot.

    Установка и настройка

    В зависимости от поставленной задачи порядок действий может немного отличаться. Если мы планируем использовать chroot просто для сборки пакетов, то можно просто обойтись созданием произвольного каталога и в дальнейшем просто его использовать, если же планируется подготовить образ для дальнейшего копирования на накопитель устройства ARM, то нужно подготовить raw образ диска, а потом уже примонтировать его.

    Создание пустого образа диска, с размером 4G:

      dd of=archlinuxarm.img bs=1 seek=4G count=0

    Создание файловой системы ext4 для всего образа диска:

      mkfs.ext4 -F archlinuxarm.img
    
    Создание директории и монтирование образа диска: 
      # mkdir arm-chroot  
      # mount archlinuxarm.img arm-chroot
    

    Далее нужно загрузить архив с root-fs с сайта archlinuxarm.org и разархивировать в заранее созданную папку для chroot. Пример для sun7i (armv7h):

      $ wget http://archlinuxarm.org/os/ArchLinuxARM-armv7-latest.tar.gz  
      # tar -xvf ArchLinuxARM-armv7-latest.tar.gz  -C arm-chroot 
    
    Для работы 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 arm-chroot/usr/bin 
    
    Что бы в chroot заработал DNS, нужно удалить ссылку resolv.conf и скопировать образез resolv.conf. 
      # sudo rm arm-chroot/etc/resolv.conf
      # sudo cp -a arm-chroot/etc/resolvconf.conf arm-chroot/etc/resolv.conf 
    
    Что бы в chroot pacman не выдавал ошибок, инициализируем связки ключей и сделаем первоначальную настройку: 
      # arch-chroot  arm-chroot pacman-key --init
      # arch-chroot  arm-chroot pacman-key --populate archlinuxarm
    
    Обновляем систему, устанавливаем base-devel, заходим в chroot и можно пробовать собирать пакеты:
      # arch-chroot arm-chroot pacman -Syu base-devel
    
    Если makepkg выдает ошибки возможно в систему с chroot нужно установить fakeroot-tcp: 
      # arch-chroot arm-chroot pacman -S fakeroot-tcp