2012年6月3日 星期日

使用QEMU模擬器跑POKY之作業系統

1. 下載qemu跟poky之相關程式 

到 http://pokylinux.org/releases/purple-3.2/ 下載poky之
   kernel image : zImage-2.6.26-r11-purple-3.2.qemuarm.bin (不可用,要用哲輝版)
   filesystem : poky-image-sato-qemuarm-purple-3.2.rootfs.tar.bz2
   toolchain : poky-eabi-glibc-i586-arm-toolchain-3.2.tar.bz2

將 deb http://debian.o-hand.com etch/ 加入到下載源/etc/apt/source.list
    (疑似版本過新, 不能執行)

Install patched QEMU and poky-scripts:
$ apt-get update

$ apt-get install qemu qemu-kvm-extras poky-scripts


2.打包rootfs為ext2

$ dd if=/dev/zero of=./poky-image-sato-qemuarm.ext2 count=409600
$ mke2fs poky-image-sato-qemuarm.ext2
$ sudo mount -t ext2 -o loop,rw poky-image-sato-qemuarm.ext2 rootfs/
$ cd rootfs/
$ sudo tar jxvf poky-image-sato-qemuarm.rootfs.tar.bz2
$ cd ..
$ sudo umount rootfs/

3.增加缺少的library
  位置: /usr/local/poky/eabi-glibc/lib
a. $ sudo ln -s /lib/libncurses.so5
b. $ sudo ln -s /lib/libexpat.so.1

4. 執行 poky-qemu zImage-2.6.26-r11-purple-3.2.qemuarm.bin poky-image-sato-qemuarm.ext2

5. ssh authorized key(不使用密碼連線, 選擇性步驟)
a. $ ssh-keygen
b. $ scp /home/UserName/.ssh/id_rsa.pub root@192.168.7.2:/home/root
c. (in poky)
$ mkdir .ssh
$cat id_rsa.pub > .ssh/authorized_key

6. 建置編譯環境

$ sudo mv poky-eabi-glibc-i586-arm-toolchain-3.2.tar.bz2 /
$ cd /
$ tar jxvf poky-eabi-glibc-i586-arm-toolchain-3.2.tar.bz2
$ export PATH=/usr/local/poky/eabi-glibc/bin/:$PATH

7. 編譯程式

以hello.c為例,

$ arm-poky-linux-gnueabi-gcc hello.c -o hello

產生ARM assembly code (hello.S)

$ arm-poky-linux-gnueabi-gcc hello.c -S 

8. 傳送程式到qemu上執行

使用qemu開啟poky之後,

$ scp hello root@192.168.7.2:/home/root

$poky cd /home/root
$poky ./hello

9. gdb and gdb-server

沒有留言: