[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ next ]

Using qemu syscall emulation with Debian.
Chapter 4 - Going further


4.1 Trouble-shooting

If qemu-arm fails mysteriously, try to run it under strace. It might tell you if it looks for a file in the wrong place.

Note that qemu-arm will not run scripts. This is not really a limitation since script have a hard-coded path to the interpretor which will point to the native version.

Current qemu really does not like symlink to directories in the directory pointed by -L.


4.2 Installing extra packages

If you want to install more packages, you can download them with this variant of debget (that I will call debget-arm).

     #!/bin/bash -e
     
     for pkgspec in $*; do
       version=$(apt-get -q2 -s --reinstall install "$pkgspec" | grep ^Inst | sed -ne '$s/^.*\[\(.*\)\].*$/\1/p')
       echo "($pkgspec -> $version)"
       aptdata=$(apt-get -q2 --print-uris --reinstall install "$pkgspec" | tail -1|sed -e "s/_i386\.deb/_arm\.deb/g")
       url=$(echo "$aptdata" | sed -e "s/^'\([^']*\)'.*$/\1/")
       file=$(echo "$aptdata" | sed -e "s/^'[^']*' \([^ ]*\).*$/\1/")
       curl "$url" > "$file"
     done

This script assumes your first apt source is a Debian archive that includes the arm architecture and the packages are in sync on arm. As an example I will try to get pari-gp running: I run

     mkdir debs; cd debs;
     ../debget-arm libpari1 libx11-6 libxau6 libxdmcp6 libreadline5 pari-gp
     cd ..
     for pkg in debs/*.deb; do \
     echo "Extracting $pkg..."; dpkg-deb -x $pkg ARM; done

Now, you can try

     qemu-arm -L /scratch/qemu/ARM/ ARM/usr/bin/gp
     Reading GPRC: /home/bill/.gprc ...Done.
     
                       GP/PARI CALCULATOR Version 2.1.7 (released)
                   arm running linux (C portable kernel) 32-bit version
                     (readline v5.0 enabled, extended help available)

As a comparaison of performance, debussy.debian.org runs the PARI/GP benchmark in 17246ms. An Athlon 1800+ running qemu-arm run the benchmark in 13186ms. The native binary run in 1070ms.


[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ next ]

Using qemu syscall emulation with Debian.

version 0.2, 20 avril 2006
Bill Allombert ballombe@debian.org