[ARMedslack] QEMU support - does anybody care about it?

Cédric VINCENT cedric.vincent at gmail.com
Thu Sep 6 08:25:52 UTC 2012


Hello,

For information, QEMU user-mode doesn't require any "guest" kernel
since all privileged operations are redirected to the "host" one.
Moreover the user-mode is a lot faster than the system-mode since
there's no device emulation at all [0].

Let me demonstrate how you can use your favorite distro with QEMU
user-mode and PRoot (its companion, http://proot.me) without any setup
or privilege.  In the following example I assume the Slackware/ARM
rootfs [1] was extracted in the "./rootfs/" directory:

    proot -Q qemu-arm -r ./rootfs/

At this point, you are running a shell "confined" in the Slackware/ARM
rootfs and all ARM programs are "translated" by QEMU user-mode:

    guest$ file /bin/echo
    /bin/echo: ELF 32-bit LSB executable, ARM, version 1 (SYSV),
dynamically linked (uses shared libs), stripped

    guest$ /bin/echo "hello, world."
    hello, world.

That way, you can do whatever you would do with a "real" Slackware/ARM
installation, for instance download and install new packages:

    guest$ wget
ftp://ftp.slackware.org.uk/slackwarearm/slackwarearm-current/slackware/ap/slackpkg-2.82.0-arm-3.tgz
    guest$ wget
ftp://ftp.slackware.org.uk/slackwarearm/slackwarearm-current/slackware/l/ncurses-5.9-arm-2.tgz
    guest$ installpkg slackpkg-2.82.0-arm-3.tgz
    guest$ installpkg ncurses-5.9-arm-2.tgz

For programs that require privileges, you can use the "-0" option to
fake the "root" id:

    guest$ slackpkg update
    Only root can install, upgrade, or remove packages.
    Please log in as root or contact your system administrator.

    host$ proot -Q qemu-arm -r ./rootfs/ -0

    guest# slackpkg update
    guest# slackpkg upgrade-all
    guest# slackpkg install-new

Feel free to ask me for support,
Cédric.

[0] https://github.com/cedric-vincent/PRoot/blob/master/doc/articles/extending_qemu.txt
[1] ftp://ftp.slackware.org.uk/slackwarearm/slackwarearm-devtools/minirootfs/roots/slack-current-miniroot_27Aug12.tar.xz

PS: A couple of words about the use of PRoot and QEMU user-mode in the
    industry: my team uses it to develop and optimize (GCC profile
    base optimizations) embedded applications on x86_64 farms.


More information about the ARMedslack mailing list