2014年10月14日 星期二

用 QEMU 來開機 arm.img


1. 查看 .img 

查看一下我們做好的 image 檔案:
file arm.img
hexdump arm.img

再做一個空的 arm_test.img 測試 & 比較:
dd if=/dev/zero of=arm_test.img bs=1G count=2
file arm_test.img
hexdump arm_test.img

然後會發現, arm.img 裡頭有很多東西,但 arm_test.img 就是一個空的data。

2. 練習運算指令:expr

加法: expr 5 + 2
減法: expr 5 - 2
乘法: expr 5 \* 2
除法: expr 5 / 2

只有乘法比較特別,因為 * 是萬用特殊字元。

3. 對 image 檔案做連接,指令:losetup

到 ~/qemu_image 目錄下,需要 superUser
cd ~/qemu_image
su

查看連接狀況:
losetup -a

將 /dev/loop0 連接 arm.img:
losetup /dev/loop0 arm.img


4. 做磁區偏移(一樣 ROOT 下)

fdisk -lu /dev/loop0
所用裝置 開機      開始         結束      區塊   識別號  系統
/dev/loop0p1            2048     3913727     1955840   83  Linux
/dev/loop0p2         3915774     4192255      138241    5  延伸
/dev/loop0p5         3915776     4192255      138240   82  Linux 交換區/ Solaris

其中 /dev/loop0p1 的開始(0ffset)為 2048,我們需要修正 512 * 2048 個 sector:
losetup -o `expr 512 \* 2048` /dev/loop1 /dev/loop0


5. 核心檔案擷取

掛載:
sudo mount /dev/loop1 /mnt

複製核心檔案(這邊要一般 User)
cd /mnt/boot
cp vmlinuz-3.2.0-4-versatile ~/qemu_image
cp initrd.img-3.2.0-4-versatile ~/qemu_image

6. 用 QEMU 來做 arm.img 開機

我們先做一個 Shell Script:
vi runarm.sh

# !/bin/bash
#
# Run arm.img

qemu-system-arm -M versatilepb -m 512 \
-kernel ~qemu_image/vmlinuz-3.2.0-4-versatile \
-initrd ~qemu_image/initrd.img-3.2.0-4-versatile \
-hda ~qemu_image/arm.img \
-append "root=/dev/sda1" &

執行 runarm.sh
sh runarm.sh

7. 進入 QEMU - arm.img

開機以後,在QEMU中查看一下核心,證明我們是用 ARM 核心開機
cat /proc/cpuinfo

接下來套件更新
sudo apt-get update && apt-get upgrade -y

安裝 X-Window 套件
sudo apt-get install icewm xorg

清除套件,省空間
apt-get clean

進入圖形介面
startx

裝瀏灠器及 http 伺服器測試
sudo apt-get install iceweasel apache2
iceweasel &
網址列: localhost
可以看到 網頁 work 中...

關機
sudo halt





Reference:
http://pominglee.blogspot.tw/2013/11/qemu-arm.html



沒有留言:

張貼留言