Próbuję uruchomić drukarkę USB SNBC na Raspberry Pi2.
W tym celu muszę skopiować plik binarny filtru drukarki USB SNBC /usr/lib/cups/filter
. Ale plik binarny filtru jest kompilowany przy użyciu procesora x86 (producent nie jest zainteresowany obsługą ramienia) tam, gdzie używam armv7
. Wiem, że to nie zadziała, ale z ciekawości próbowałem i miseczki mówią /usr/lib/cups/filter/rasterorp3150 failed
.
Szukałem rozwiązań w Internecie i ludzie sugerują używanie Qemu. Ale jest to kompletna platforma do uzbrojenia x86. Czy istnieje sposób na konwersję pliku binarnego x86 na plik binarny w łatwy i nieskomplikowany sposób?
Nawiasem mówiąc, czy konwersja pliku binarnego x86 za pomocą hexedit
narzędzia na równoważny armv7
plik binarny to dobry pomysł? ( opcode
konwersja)
Jeśli tak, to czy ktoś może dać pomysł, jak to zrobić?
Odpowiedzi:
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żyjamd64
zamiast tego). Zacznij od dodaniai386
jako architektury obcej:Następnie uruchom
ldd
plik binarny i dodaj wymagane biblioteki; zazwyczaji 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 zbinfmt-support
zaleceniami); następnie możesz użyćqemu-i386-static
do uruchomienia programu:W rzeczywistości dzięki
binfmt-support
temu powinien działać bezpośrednio (jak wskazał Toby Speight ):(
binfmt-support
użyje Qemu, aby to działało transparentnie).Jeśli nie chcesz używać
binfmt-support
,rasterorp3150
odejdź:i zainstaluj skrypt zawierający
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).źródło
apt update
dodawania łuku i386.i386
plików binarnych. Działa to tylko z architekturami obsługiwanymi w używanej dystrybucji.Dziękujemy za szczegółową powtórkę.
Używam systemu operacyjnego Rasbian, a dodawanie architektury i386 kończy się niepowodzeniem w języku raspbian podczas aktualizacji sudo apt-get. Czy mogę pobrać pakiet i386 osobno dla Raspbian i zainstalować ?. Jeśli tak, możesz udostępnić linki do pobrania.
Czy mogę skopiować zależne od filtrów pliki .so z i386 (Linux mint w wersji x86) i wkleić odpowiednie ścieżki w raspbain i użyć Qemu do uruchomienia filtra?
Poniżej znajduje się echo ldd filtra:
Pozdrawiam, Nash
źródło