Bạn không thể dễ dàng chuyển đổi nhị phân x86 sang ARM. Nếu bạn không thể lấy mã nguồn hoặc nhị phân ARM từ nhà sản xuất và bạn thực sự muốn sử dụng máy in với Pi2, thì cách tiếp cận Qemu là phương pháp đúng trong trường hợp này, mặc dù có thể sẽ rất chậm . Qemu thực hiện mô phỏng toàn hệ thống nhưng nó cũng hoạt động rất tốt cho mô phỏng quá trình đơn.
Tôi giả sử bạn có một số loại dẫn xuất Debian trên Pi2 của bạn (tôi không chắc chắn điều này sẽ hoạt động với Raspbian) và rằng nhị phân bạn có là i386
(nếu là 64 bit, amd64
thay vào đó hãy sử dụng ). Bắt đầu bằng cách thêm i386
như một kiến trúc nước ngoài:
sudo dpkg --add-architecture i386
sudo apt-get update
Sau đó chạy ldd
trên nhị phân và thêm bất kỳ thư viện cần thiết; thông thường
sudo apt-get install libc6:i386
và bất cứ điều gì khác với :i386
hậu tố được thêm vào. Hãy chắc chắn rằng điều này không loại bỏ bất kỳ gói cài đặt nào; hy vọng tất cả mọi thứ bạn cần là đa kích hoạt. (Nếu không thì phần còn lại sẽ không hoạt động.)
Khi bạn đã thực hiện điều đó, hãy cài đặt qemu-user-static
nếu nó chưa được cài đặt (cùng với binfmt-support
khuyến nghị của nó ); sau đó bạn có thể sử dụng qemu-i386-static
để chạy chương trình của mình:
qemu-i386-static /usr/lib/cups/filter/rasterorp3150
Trong thực tế nhờ binfmt-support
nó nên chạy trực tiếp (như được chỉ ra bởi Toby Speight ):
/usr/lib/cups/filter/rasterorp3150
( binfmt-support
sẽ sử dụng Qemu để thực hiện công việc này một cách minh bạch.)
Nếu bạn không muốn sử dụng binfmt-support
, hãy chuyển rasterorp3150
đi:
sudo mv /usr/lib/cups/filter/rasterorp3150 /usr/lib/cups/filter/rasterorp3150.x86
và cài đặt một tập lệnh chứa
#!/bin/sh
exec qemu-i386-static /usr/lib/cups/filter/rasterorp3150.x86 "$@"
như /usr/lib/cups/filter/rasterorp3150
.
Nếu bạn muốn, bạn có thể thiết lập một chroot cho tất cả điều này; xem debootstrap
và --foreign
tùy chọn của nó (chroot có thể được thiết lập để sử dụng Qemu tự động).