【问题标题】:Emulate MIPS firmware in qemu在 qemu 中模拟 MIPS 固件
【发布时间】:2013-08-07 05:50:29
【问题描述】:

我正在尝试使用 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 也不存在于系统上,我在哪里可以得到它?问候。

【问题讨论】:

    标签: embedded emulation mips qemu


    【解决方案1】:

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

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

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

    【讨论】:

    • 我复制了 chroot 中的所有库,但现在我收到此错误:./qemu-mipsel: 加载共享库时出错:librt.so.1:错误的 ELF 类:ELFCLASS32跨度>
    • 我认为它选择了错误的 librt.so 文件。您正在运行的 mipsel 图像是否也在使用 Multi-Arch?我怀疑使用 ${chrootbasepath}/lib/librt.so.1 而不是 ${chrootbasepath}/lib/mipsel-linux-gnu/librt.so.1 允许 x86 二进制 qemu 拾取它。您可以尝试像这样运行 qemu 二进制文件: env LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu chroot $chrootbasepath ./qemu-mipsel ...(或者,总是静态编译它)
    猜你喜欢
    • 2021-07-07
    • 2013-04-23
    • 2015-06-06
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    相关资源
    最近更新 更多