Рабочий двоичный файл Debian i386 на Debian armel через qemu

"Вид версии", кажется, хорошо работает с этим.

for i in /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq; 
   do echo -n "$i: "; cat $i; done | sort -V
9
13.11.2013, 18:40
2 ответа

Да, можно выполнить x86 двоичные файлы в QEmu с работой QEmu процессора ARM. Это будет очень медленно, потому что QEmu делает эмуляцию программного обеспечения x86 процессора, и можно оказаться за исключением RAM, но это может работать.

qemu-user пакет содержит саму виртуальную машину, т.е. эмулятор x86 процессора и некоторых устройств и ядра Linux, работающего на этом harwdare. ( qemu-system пакет содержит эмулятор просто аппаратных средств, на которых можно установить операционную систему по Вашему выбору.) Все еще необходимо заполнить виртуальную машину со средой выполнения, включая /lib/ld-linux.so.2 (динамический загрузчик, необходимый для выполнения любого динамично связанного исполняемого файла) и набор библиотек. Это что qemu-libc-i386 пакет на Optware обеспечивает. Это несколько подобно ia32-libs в amd64 системах, но это намного более просто, потому что amd64 процессор может выполнить i386 двоичные файлы исходно; здесь у Вас должны быть библиотеки в x86 VM.

Можно попытаться захватить qemu-libc-i386 пакет от Optware. Формат пакета Optware очень близко к Debian, таким образом, можно преобразовать ipk в deb вручную:

mkdir tmp
wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/qemu-libc-i386_2.3.6-1_arm.ipk
tar xzf qemu-libc-i386_2.3.6-1_arm.ipk
ar rc qemu-libc-i386_2.3.6-1_arm.deb debian-binary control.tar.gz data.tar.gz 

Я не гарантирую, что это будет работать. Вы будете, возможно, должен гарантировать, чтобы версии QEmu соответствовали.

Если установка измененного ipk не работает, пытается воспроизвести свое содержание в Вашей системе. Распаковать data.tar.gz где-нибудь (или получают те же файлы от некоторой другой x86 системы), посмотрите что postinst сценарий в control.tar.gz делает и предоставляют надлежащие пути к qemu-i386.

3
27.01.2020, 20:08

Я решил проблему на своем устройстве ARM, скопировав свой компьютер i386ld -linux.so.2 , как показано ниже:

scp /lib/ld-linux.so.2 root@192.168.109.X:/lib

, а затем скопировав все необходимые общие библиотеки. В моем случае я упорядочил их все в новой папке внутри своего устройства, прежде чем копировать :

.
mkdir /lib/i386-linux-gnu
scp /usr/lib/i386-linux-gnu/libstdc++.so.6 [device]:/lib/i386-linux-gnu
scp /usr/lib/i386-linux-gnu/libgcc_s.so.1 [device]:/lib/i386-linux-gnu
scp /usr/lib/i386-linux-gnu/libc.so.6 [device]:/lib/i386-linux-gnu
scp /usr/lib/i386-linux-gnu/libm.so.6 [device]:/lib/i386-linux-gnu
2
03.09.2020, 16:54

Теги

Похожие вопросы