QEMU 模擬Arm A9開發板

一、在Deepin 中編譯Qemu4,

1、下載Qemu4源碼

wget https://download.qemu.org/qemu-4.0.0.tar.xz

2、解壓縮

tar xvJf qemu-4.0.0.tar.xz

3、安裝依賴庫

sudo apt-get install libpixman-1-dev

4、配置編譯選項

./configure --enable-kvm --target-list=arm-softmmu,aarch64-softmmu,i386-softmmu,x86_64-softmmu

註釋:target-list指定需要編譯的target(guest),arm-softmmu表示要編譯system mode的QEMU,arm-linux-user表示要編譯user mode的QEMU,--enable-vnc 表示支持VNC顯示,具體target可以使用./configure --help查看

5、編譯

make -j8

6、安裝

sudo make install

7、文件路徑

安裝完成後可執行命令在/usr/local/bin下面,配置文件在/usr/local/share/qemu下

通過apt-get命令安裝的舊版本目錄在/usr/bin下。

8、相關資料

https://www.cnblogs.com/BinBinStory/p/7618303.html

https://blog.csdn.net/weixin_33851429/article/details/85959566

二、創建磁盤並啓動(x86_64)

1、創建磁盤

qemu-img create -f qcow2 deepin.img 10G

2、啓動虛擬機

qemu-system-x86_64 -m 2048 -enable-kvm deepin.img -cdrom ./deepin-live-system-2.0-amd64.iso

三、圖形方式管理

命令行啓動虛擬機比較繁瑣,適合開發者,但對於普通用戶來說,採用圖形界面管理虛擬機則更爲方便。採用圖形界面管理QEMU虛擬機需要安裝virt-manager:

$sudo apt-get install virt-manager -y

安裝完成後用root用戶啓動virt-manager:(可以使用sudo passwd root設置root密碼)

$su -

#virt-manager

四、常見的處理器架構

架構   實體     虛擬硬件      OS

X86    PC       virtualbox     Deepin/Windows

Arm    imx6ul  Qemu          Uboot/Kernel

RiscV 

五、模擬Arm架構

常見的Arm開發

mcimx6ul-evk(A7)、sabrelite(A9)、vexpress-a9

 

下面以vexpress A9爲例進行開發

1、下載並安裝arm平臺交叉編譯工具

sudo apt-get install gcc-arm-linux-gnueabi

完成後在/usr/bin下就會有arm-linux-gnueabi-gcc等工具了

2、下載編譯 u-boot

①方法一

wget ftp://ftp.denx.de/pub/u-boot/u-boot-2016.09.tar.bz2

tar jxvf u-boot-2016.09.tar.bz2

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- vexpress_ca9x4_defconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-

qemu-system-arm -M vexpress-a9 -kernel u-boot -nographic -m 512M

②方法二

從uboot的git倉庫下載uboot

git clone git://git.denx.de/u-boot.git

執行編譯

export ARCH=arm

export CROSS_COMPILE=arm-linux-gnueabi-

make clean

make vexpress_ca9x4_defconfig

提示bison: not found

sudo apt-get install bison

提示flex: not found

sudo apt-get install flex

make vexpress_ca9x4_defconfig

make -j8

執行仿真u-boot

qemu-system-arm -M vexpress-a9 -m 256 -kernel u-boot -nographic

3、linux內核

從kernel的git倉庫下載kernel

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git kernel

也可以送清華服務器下載

wget https://mirrors.tuna.tsinghua.edu.cn/kernel/v5.x/linux-5.2.tar.xz

執行編譯

export ARCH=arm

export CROSS_COMPILE=arm-linux-gnueabi-

make clean

make vexpress_defconfig

make menuconfig

去掉System Type 把 Enable the L2x0 outer cache controller 取消,否則qemu起不來

make -j8

執行仿真kernel,這裏必須加入dtb不然仿真失敗

qemu-system-arm -M vexpress-a9 -m 512M -kernel arch/arm/boot/zImage -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "console=ttyAMA0"

4、文件系統

從busybox的git倉庫下載busybox

git clone git://busybox.net/busybox.git

git clone https://github.com/mirror/busybox.git

執行編譯

make defconfig

sudo apt-get install libncurses5-dev

make menuconfig

make CROSS_COMPILE=arm-linux-gnueabi- -j8

make install

獲取etc配置文件

wget http://files.cnblogs.com/files/pengdonglin137/etc.tar.gz

製作rootfs

#!/bin/bash

sudo rm -rf rootfs

sudo rm -rf tmpfs

sudo rm -f a9rootfs.ext3

sudo mkdir rootfs

sudo cp _install/* rootfs/ -raf

mkdir -p rootfs/{lib,proc,sys,tmp,root,var,mnt}

sudo cp -arf /usr/local/gcc-arm-none-eabi/arm-none-linux-gnueabi/lib rootfs/

sudo cp etc rootfs/ -arf

sudo rm rootfs/lib/*.a

sudo mkdir -p rootfs/dev/

sudo mknod rootfs/dev/tty1 c 4 1

sudo mknod rootfs/dev/tty2 c 4 2pro

sudo mknod rootfs/dev/tty3 c 4 3

sudo mknod rootfs/dev/tty4 c 4 4

sudo mknod rootfs/dev/console c 5 1

sudo mknod rootfs/dev/null c 1 3

sudo dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=32

sudo mkfs.ext3 a9rootfs.ext3

sudo mkdir -p tmpfs

sudo mount -t ext3 a9rootfs.ext3 tmpfs/ -o loop

sudo cp -r rootfs/* tmpfs/

sudo umount tmpfs

執行仿真,這裏必須加入dtb不然仿真失敗

qemu-system-arm -M vexpress-a9 -m 512M -kernel arch/arm/boot/zImage -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0 rw console=ttyAMA0" -sd a9rootfs.ext3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章