qemu-system-arm chroot недопустимая инструкция

Я устанавливаю qemu-system-arm в Ubuntu 16.04 для запуска прошивки dlink DIR868L. Но когда я использую команду chroot ./squashfs-root/ /bin/sh, она просто показывает Illegal instruction. Я получаю squashfs-root/из DIR868LB1_FW203b01.bin с помощью binwalk и уверен, что /bin/sh существует в squashfs-root/.

Я начинаю qemu с sudo qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.32-5-versatile -initrd initrd.img-2.6.32-5-versatile -hda debian_squeeze_armel_standard.qcow2 -append "root=/dev/sda1" -net nic -net tap и использую scp для копирования squashfs-root/ в виртуальную машину. И я столкнулся с той же проблемой при использовании debian_wheezy_armel_standard.qcow2

Что я должен делать ? Это беспокоило меня весь день.

Или кто-нибудь может привести пример запуска прошивки arm в qemu? Я нахожу только множество примеров с использованием прошивки на основе mips.

Большое спасибо !


person Z.Zander    schedule 23.04.2018    source источник


Ответы (1)


Проблема почти наверняка заключается в том, что любой ЦП в DIR868lL новее, чем ЦП ARM926, который есть на «универсальной» плате. Если двоичные файлы из этой прошивки созданы для использования более новых инструкций, то их запуск в эмуляции более старого ЦП приведет к сигналу «недопустимая инструкция», как если бы вы запускали их на реальном старом оборудовании ARM.

Это похоже на то, как вы берете двоичные файлы, созданные для Core2 Duo, и пытаетесь запустить их на своей старой системе Pentium: это не сработает.

person Peter Maydell    schedule 23.04.2018
comment
Большое спасибо ! Я пробовал armhf, используя cortex-a9, который используется DIR868L, он работает отлично! Еще раз спасибо! ЗДЕСЬ ссылка на people.debian.org/~aurel32/qemu/armhf для тех, кто сталкивается с той же проблемой, что и я. - person Z.Zander; 24.04.2018