Nie można łatwo przekonwertować pliku binarnego x86 na ARM. Jeśli nie możesz uzyskać kodu źródłowego lub pliku binarnego ARM od producenta i naprawdę chcesz używać drukarki z Pi2, to podejście Qemu jest w tym przypadku prawidłowe, chociaż prawdopodobnie będzie bardzo wolne . Qemu wykonuje pełną emulację systemu, ale działa również bardzo dobrze w przypadku emulacji pojedynczego procesu.
Zakładam, że masz jakąś pochodną Debiana na swoim Pi2 (nie jestem pewien, czy to zadziała z Raspbianem), i że masz do tego plik binarny i386
(jeśli jest 64-bitowy, użyj amd64
zamiast tego). Zacznij od dodania i386
jako architektury obcej:
sudo dpkg --add-architecture i386
sudo apt-get update
Następnie uruchom ldd
plik binarny i dodaj wymagane biblioteki; zazwyczaj
sudo apt-get install libc6:i386
i wszystko inne z :i386
dodanym przyrostkiem. Upewnij się, że nie usunie to żadnego zainstalowanego pakietu; miejmy nadzieję, że wszystko, czego potrzebujesz, obsługuje wiele trybów. (W przeciwnym razie reszta nie będzie działać.)
Gdy to zrobisz, zainstaluj, qemu-user-static
jeśli nie jest jeszcze zainstalowany (wraz z binfmt-support
zaleceniami); następnie możesz użyć qemu-i386-static
do uruchomienia programu:
qemu-i386-static /usr/lib/cups/filter/rasterorp3150
W rzeczywistości dzięki binfmt-support
temu powinien działać bezpośrednio (jak wskazał Toby Speight ):
/usr/lib/cups/filter/rasterorp3150
( binfmt-support
użyje Qemu, aby to działało transparentnie).
Jeśli nie chcesz używać binfmt-support
, rasterorp3150
odejdź:
sudo mv /usr/lib/cups/filter/rasterorp3150 /usr/lib/cups/filter/rasterorp3150.x86
i zainstaluj skrypt zawierający
#!/bin/sh
exec qemu-i386-static /usr/lib/cups/filter/rasterorp3150.x86 "$@"
jak /usr/lib/cups/filter/rasterorp3150
.
Jeśli wolisz, możesz skonfigurować chroot do tego wszystkiego; see debootstrap
i jego --foreign
opcja (chroot można skonfigurować do automatycznego korzystania z Qemu).