http://www.gentoo.org/proj/en/base/embedded/handbook/?part=1&chap=5  5. Compiling with qemu-user chroot

http://wiki.gentoo.org/wiki/Crossdev_qemu-static-user-chroot Crossdev qemu-static-user-chroot

https://projects.honeynet.org/sebek/browser/virtualization/qebek/trunk/scripts/qemu-binfmt-conf.sh


  1. 先到 http://archlinuxarm.org/platforms/armv7/allwinner/cubieboard 下载 rootfs压缩包 http://archlinuxarm.org/os/ArchLinuxARM-sun4i-latest.tar.gz

  2. 下解完后 mkdir sun4i_rootfs,  sudo tar zxpf ArchLinuxARM-sun4i-latest.tar.gz -C sun4i_rootfs

  3. 挂载 binfmt

[ -d /proc/sys/fs/binfmt_misc ] || modprobe binfmt_misc

[ -f /proc/sys/fs/binfmt_misc/register ] || mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc

4. 安装qemu-user-static, 如果是archlinux用户,通过yaourt 安装,同时安装binfmt-support

(Do not register a handler that matches the host machine)

5. 添加模拟器, 目前就添加两个就够了,重要一点,将 qemu-arm-static 拷到 sun4i_rootfs的usr/bin/下

echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-static:' > /proc/sys/fs/binfmt_misc/register


echo ':armeb:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-arm-static:' > /proc/sys/fs/binfmt_misc/register


# echo ':alpha:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x26\x90:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-alpha:' > /proc/sys/fs/binfmt_misc/register# echo ':mips:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-mips:' > /proc/sys/fs/binfmt_misc/register# echo ':mipsel:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-mipsel:' > /proc/sys/fs/binfmt_misc/register# echo ':ppc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x14:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-ppc:' > /proc/sys/fs/binfmt_misc/register# echo ':sh4:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfb\xff\xff\xff:/usr/bin/qemu-sh4:' >/proc/sys/fs/binfmt_misc/register# echo ':sh4eb:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x2a:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-sh4eb:' >/proc/sys/fs/binfmt_misc/register# echo ':sparc:M::\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/usr/bin/qemu-sparc:' > /proc/sys/fs/binfmt_misc/register


6, 挂载proc, dev sys

#!/bin/bash

ROOTFS=./sun4i_rootfs

if [ ! mountpoint -q  ${ROOTFS}/dev ] ; then

   sudo mount --bind /dev/ ${ROOTFS}/dev

fi

if [ !  mountpoint -q ${ROOTFS}/proc ] ; then

   sudo mount --bind /proc/ ${ROOTFS}/proc

fi


if [ ! mountpoint -q  ${ROOTFS}/sys ] ; then

   sudo mount --bind /sys/ ${ROOTFS}/sys

fi


7. sudo chroot $ROOTFS /bin/bash 即可进入archlinuxarm

8. 修改 /etc/resolv.conf   , 配置nameserver 192.168.1.1 设置DNS

9. pacman -Syu 升级,完全就跟PC下的一样


PS:使用qemu-arm-static 操作archlinuxarm的目的在于可以直接在PC上方便的做包,比如自己实现Cubieboard的NAS遇到官方没有的包时,可以自己动手添加

http://archlinuxarm.org/developers/building-packages 构建archlinuxarm包的文档