LINUX.ORG.RU

запуск приложения на девайсе с aarch64 архитектурой

 ,


0

2

Пытаюсь запустить Raspberry Pi версию клиента parsec (для геймерского стримминга) на устройстве с aarch64 архитектурой. Пока не запускается, возможно из -за того, что нужно часть зависимостей скопировать в нужные каталоги. Но интересно это возможно в принципе, если на устройстве:

# uname -a
Linux node-2 3.14.29 #1 SMP Wed Nov 27 06:02:54 GMT 2019 aarch64 GNU/Linux

а сам бинарник parsecd 32-bit:

# file parsecd 
parsecd: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 2.6.32, BuildID[sha1]=3c6382b7ee8233fa3eb83d7dad47da7e193d0216, not stripped

?

Ответ на: комментарий от anonymous

да я не про ошибку спрашиваю, а за сам факт может ли запуститься 32-bit бинарник на дивайсе с aarch64 архитектурой?

zorinquen
() автор топика
Ответ на: комментарий от PolarFox

так у меня не debian based дистр, чтобы можно было бы выполнить

# dpkg --add-architecture <arch>

у меня

CoreELEC (official): 9.2.1 (Amlogic.arm)
zorinquen
() автор топика
Ответ на: комментарий от anonymous

попытался его вручную запустить - ничего не происходит, в списке процессов нет, в логах тишина:

# ./parsecd 
zorinquen
() автор топика

Используй chroot. Создай минимальную систему при помощи debootstrap --arch=armhf --foreign buster myarm32, скопируй на устройство myarm32 и parsecd в myarm32/opt, и попробуй запустить программу командой chroot myarm32 /opt/parsecd. Возможно в myarm32/ еще потребуется смонтировать /proc, /sys и т. п.

No ★★
()
Ответ на: комментарий от No

Спасибки огромное, а можно поподробнее? я создаю минимальную систему на другом компе, например на ноуте с помощью

# debootstrap --arch=armhf --foreign buster myarm32

И затем копировать на устройство myarm32 и parsecd в myarm32/opt, т.е. в /myarm32/opt папку, которая в корне будет находиться устройства или эту папку myarm32/opt можно в любом месте на устройстве хранить?

А как правильно в случае необходимости смонитровать /proc/, /sys, /dev в в myarm32/ ?

zorinquen
() автор топика
Последнее исправление: zorinquen (всего исправлений: 1)
Ответ на: комментарий от No

В папке myarm32 нет каталога opt/ :

% ls -FA
bin@  boot/  debootstrap/  dev/  etc/  home/  lib@  proc/  root/  run/  sbin@  sys/  tmp/  usr/  var/

Его нужно создать и скопировать в него только parsecd?

zorinquen
() автор топика
Ответ на: комментарий от zorinquen

выполнил:

# mkdir myarm32/opt/
# cp parsecd myarm32/opt

Затем

# chroot myarm32/opt/parsecd
chroot: cannot change root directory to 'myarm32/opt/parsecd': Not a directory

# chroot myarm32/opt/
chroot: failed to run command ‘/bin/sh’: No such file or directory

Похоже, что /bin/sh не существует в системе, есть /opt/bin/sh

# which sh
/opt/bin/sh
zorinquen
() автор топика
Ответ на: комментарий от zorinquen

попробовал так - крякозябры появились:

# chroot myarm32/
\[\e[1;32m\]\h\[\e[1;32m\]:\[\e[1;34m\]\w \[\e[0m\]$ 
\[\e[1;32m\]\h\[\e[1;32m\]:\[\e[1;34m\]\w \[\e[0m\]$ 
\[\e[1;32m\]\h\[\e[1;32m\]:\[\e[1;34m\]\w \[\e[0m\]$ 

zorinquen
() автор топика
Ответ на: комментарий от zorinquen

mount –bind /proc ./myarm32/opt/proc/

Для монтирования каталогов в chroot я использую скрипт chroot-enter.sh: запуск программы в chroot окружении /mychroot - sudo chroot-enter.sh /mychroot COMMAND, размонтирование файловых систем в /mychroot = sudo chroot-enter.sh /mychroot stop. Каталоги /tmp, /usr/local/bin и ~/ в chroot окружении будут общими с основной системой.

No ★★
()
Ответ на: комментарий от No
# ./chroot-enter.sh myarm32/ 
mount /proc
mount /sys
mount /dev
mount /dev/pts
mount /dev/shm
mount /dev/mqueue
mount /run
mount /tmp
\[\e[1;32m\]\h\[\e[1;32m\]:\[\e[1;34m\]\w \[\e[0m\]$ 

Ctrl^D

затем запускаю parsecd в chroot

# chroot myarm32 /opt/parsecd

В списке процессов parsec отсутствует, в логе только это:

Feb 08 17:33:10 node-2 systemd[1]: storage-myarm32-proc.mount: Succeeded.
Feb 08 17:33:10 node-2 systemd[1]: storage-myarm32-sys.mount: Succeeded.
Feb 08 17:33:10 node-2 systemd[1]: storage-myarm32-run.mount: Succeeded.
Feb 08 17:33:10 node-2 systemd[1]: storage-myarm32-dev-mqueue.mount: Succeeded.
Feb 08 17:33:10 node-2 systemd[1]: storage-myarm32-dev-shm.mount: Succeeded.
Feb 08 17:33:10 node-2 systemd[1]: storage-myarm32-dev-pts.mount: Succeeded.
Feb 08 17:33:10 node-2 systemd[1]: storage-myarm32-dev.mount: Succeeded.
Feb 08 17:33:10 node-2 systemd[1]: storage-myarm32-tmp.mount: Succeeded.

zorinquen
() автор топика
Ответ на: комментарий от zorinquen

CoreELEC

Я не знаю, зачем ты вообще ставишь огрызок, который сразу позиционирует себя, что в нём ничего нельзя сделать, а потом в чрут ставишь ещё дебиан нормальный, что это вообще за извращения?
Скачай нормальный, полную версию с https://kodi.tv/download на основе распбиан, или вообще можно поставить RetroPie для игр, в нём твою приложуху добавить, или поставить стим линк. В ретропай так же ставится Коди, можешь даже загрузку в него выбрать сразу, или запускать коди из меню ретропай.
Либо то же самое можно поставить из оффициальных репов распбиана. В них есть стимлинк, парсек тоже поставится.

steamlink/testing 1.0.7 armhf
  The Steam Link app brings desktop gaming to your Raspberry Pi. Just pair a controller to your device, connect to a computer running Steam on the same local network, and start playing your existing Steam games.

fehhner ★★★★★
()
Ответ на: комментарий от zorinquen

A Raspbian нельзя как-то через debootstrap доставить?

Так а зачем? Перезапиши на ту же флешку Emulation Station и доставь коди (оптимальный вариант, будет красивая менюшка и куча эмуляторов от нинтендо до третей плойки). Либо просто Коди с офф сайта, он будет уже на распбиане. Зачем извращаться - не пойму.

fehhner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.