在qemu中模拟MIPS固件

时间:2013-08-06 09:34:19

标签: embedded emulation mips qemu

我正在尝试使用qemu模拟固件,但在尝试执行时遇到错误。

首先,我将固件文件系统解压缩到一个文件夹,并将de qemu-mipsel文件复制到它:

bin  cdrom  dev  etc  home  init  lib  linuxrc  mnt  opt  proc  qemu-mipsel  root  sbin  sys  tango  tmp  udev  usr  var

然后我用chroot执行了模拟器:

  chroot。 ./qemu-mipsel ./bin/ls

我收到以下错误:

chroot: failed to run command `./qemu-mipsel': No such file or directory

谷歌搜索错误我发现这意味着qemu依赖于未包含在chroot环境中的库,所以我搜索了它们:

linux-vdso.so.1 =>  (0x00007fffe79ff000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fcd9da57000)
libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007fcd9d855000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fcd9d55d000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fcd9d2db000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fcd9d0be000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcd9cd34000)
/lib64/ld-linux-x86-64.so.2 (0x00007fcda007a000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fcd9caf7000)

./lib /:

中缺少一些库

Linux的vdso.so.1 libgthread-2.0.so.0 libglib-2.0.so.0 /lib64/ld-linux-x86-64.so.2 libpcre.so.3

我怎么能解决这个问题?我可以创建指向系统库的符号链接,还是应该复制它们?系统上也没有linux-vdso.so.1,我可以在哪里获得它?问候。

1 个答案:

答案 0 :(得分:1)

linux-vdso.so.1实际上是内核。其他文件,您可以从您选择的GNU / Linux发行版中获取它们(例如Debian,来自源包eglibc,pcre3和glib2.0)。你必须将它们复制到chroot中。对于/lib64/ld-linux-x86-64.so.2,路径名必须精确,因为该路径被硬编码到二进制文件中。

似乎你已经从多路径路径运行Debian了,这很好,因为你需要区分主机库和目标库。

或者,您可以静态编译和链接qemu-mipsel。