2012年5月17日 星期四

install armel debian in qemu

the 1st edition: 20120517 (4)
the 2nd edition: 20180709 (1), 加入 cortex-a9

原本的文章是 arm 的舊架構 (ARM926EJ-S), 新增 arm cortex a9, 如何安裝 debian for arm cortex a9, 進而取得 debian arm cortex a9 檔案系統。

參考文章有些 url 有錯誤, 已經更正, 安裝畫面可以參考底下的文章。

arm cortex a9 平台

ref:

下載 debian 安裝 initrd:
http://ftp.de.debian.org/debian/dists/stable/main/installer-armel/current/images/kirkwood/netboot/initrd.gz

建立 raw image
qemu-img create -f raw hda.img 2G 

vexpress-v2p-ca9.dtb 和 zImage 請參考 QEMU模拟vexpress-a9 搭建Linux kernel运行环境 編譯方式。

qemu-system-arm -M vexpress-a9 -kernel zImage -dtb vexpress-v2p-ca9.dtb -initrd initrd.gz -hda hda.img -append "root=/dev/ram"
這個指令無法將 hda.img 掛成硬碟, 需使用以下指令, 將 hda.img 當成 emmc (sd)
qemu-system-arm -M vexpress-a9 -kernel zImage -dtb vexpress-v2p-ca9.dtb -initrd initrd.gz -drive file=hda.img,if=sd -append "root=/dev/ram"

這樣就會啟動 debian 安裝畫面, 在分割磁區時, 選用 ext2, 不要用 ext4, 會有奇怪的問題, 無法 mount。

使用以下指令來用裝好的檔案系統開機 (from /dev/mmcblk0p1 boot)

qemu-system-arm -M vexpress-a9 -kernel zImage -dtb vexpress-v2p-ca9.dtb  -drive file=hda.img,if=sd -append "root=/dev/mmcblk0p1" 

# console 版本
qemu-system-arm -M vexpress-a9 -kernel zImage -dtb vexpress-v2p-ca9.dtb  -drive file=hda-sid.img,if=sd -append "root=/dev/mmcblk0p1 console=ttyAMA0,115200"  --nographic

預設的系統安裝的是 ip, 不是 ipconfig, ping 不到任何合法 ip, 但網路是通的, 可以用 apt-get update 安裝 net-tools, 就有 ipconfig 了。



安裝 arm debian (ARM926EJ-S)

debian arm kernel and initrd files:
http://ftp.de.debian.org/debian/dists/stable/main/installer-armel/current/images/versatile/netboot/

download: initrd.gz, vmlinuz-2.6.32-5-versatile

versatile 開發版是 arm ARM926EJ-S。

我建議用 raw 來建立硬碟影像檔
qemu-img create -f qcow hda.img 2G
qemu-img create -f qcow2 hda.img 2G 
qemu-img create -f raw hda.img 2G 

raw format 用 -drive format=raw 才不會有警告訊息。
qemu-system-i386 -drive file=deb32.img,format=raw -hda deb32.img -cdrom /media/vbox_share/apps/debian-8.0.0-i386-netinst.iso

開始安裝:
qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.32-5-versatile -initrd initrd.gz -hda hda.img -append "root=/dev/ram"

在分割硬碟和建立檔案系統時會花比較多的時間, 請耐心等候 (大概 30 分鐘)。
install base system 也很久 (要 3 個小時以上)。

重新開機

http://people.debian.org/~aurel32/qemu/armel/

download: initrd.img-2.6.32-5-versatile

執行安裝好的 debian
<了pre style="border: 1px inset; margin: 0px; overflow: auto; padding: 6px; text-align: left; width: 600px;">qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.32-5-versatile -initrd initrd.img-2.6.32-5-versatile -hda hda.img -append "root=/dev/sda1"
把整個 root file system copy 出來 (選擇紅色藥丸回到真實世界):
copy hda.img hdb.img

執行 arm debian in qemu:
qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.32-5-versatile -initrd initrd.img-2.6.32-5-versatile -hda hda.img -append "root=/dev/sda1" -hdb hdb.img

in qemu:
mount /dev/sdb1 /mnt
cd /
tar zcvf mnt.tar.gz mnt
scp mnt.tar.gz host_1p:/tmp

in host:
得到 mnt.tar.gz, copy to usb storage
put to your arm machine, chroot it

不過在我的平台出現:
chroot: cannot run command `/bin/sh': Permission denied
搞了半天原來是指定 mount directory 沒有執行權限。

ref:

沒有留言:

張貼留言

使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。

我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。