Ubuntu 16.04 利用qemu模拟ARM开发板

QEMU目前可以模拟vexpress Cortex A9四核处理器开发板。

环境配置:Ubuntu 16.04,Kernel 4.4.1

内容参考了:

http://blog.csdn.net/linyt/article/details/42504975

http://www.cnblogs.com/pengdonglin137/p/5023342.html

(推荐)https://learningfromyoublog.wordpress.com/2016/04/05/131/

1. 下载kernel

有两种方式:git和wget,这里使用wget下载方式。从kernel.org直接下载很慢(几KB),因此可以借用国内的代理(可以达到1~2M):

从kernel下载:
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.9.tar.xz
使用代理:
https://mirror.tuna.tsinghua.edu.cn/kernel/v4.x/ linux-4.9.9.tar.xz

2. 安装arm交叉编译链

arm交叉编译链有很多种,有的书上装了arm-linux-gnueabi 和 arm-linux-gnueabihf两种,安装方法如下:
sudo apt-get install gcc-arm-linux-gnueabi
3. 编译Linux内核
解压下载的kernel文件,进入解压后的文件夹,运行下面的指令编译。

[plain] view plain copy
  1. exportARCH=arm
  2. exportCROSS_COMPILE=arm-linux-gnueabi-
  3. makevexpress_defconfig
  4. makezImage-j8
  5. makemodules-j8
  6. makedtbs
随后就可以将生成的zImage和dtbs拷贝到单独的文件夹中,拷贝指令:
[plain] view plain copy
  1. mkdirextra_folder
  2. cparch/arm/boot/zImageextra_folder/
  3. cparch/arm/boot/dts/*ca9.dtbextra_folder/
  4. cp.configextra_folder/

4.安装qemu模拟器

sudo apt-get install qemu
5.制作根文件系统
文件系统由基本的运行命令、库和字符设备构成。
基本的运行命令需要使用BusyBox,这个库也需要进行交叉编译,因此可以运行下面的指令进行源代码下载。
[html] copy
    wgethttp://www.busyBox.net/downloads/busyBox-1.27.2.tar.bz2
解压源代码,在源代码目录下运行:
copy
    makedefconfig
  1. makeCROSS_COMPILE=arm-linux-gnueabi-
  2. makeinstallCROSS_COMPILE=arm-linux-gnueabi-
安装完成后,该目录下生成的_install,即是基本的运行指令。
然后就开始一步步建立根文件系统。
5.1 创建rootfs目录:
copy
    sudomkdirrootfs
copy
    sudomkdirrootfs/lib

5.2 拷贝busyBox命令
copy
    sudocp_install/*-rrootfs/
5.3从工具链中拷贝运行库到lib下
copy
    sudocp-P/usr/arm-linux-gnueabi/lib/*rootfs/lib/

5.4 创建4个tty终端设备
c代表字符设备,4是主设备号,1~2~3~4是次设备号
copy
    sudomkdir-prootfs/dev
copy
    sudomknodrootfs/dev/tty1c41
  1. sudomknodrootfs/dev/tty2c42
  2. sudomknodrootfs/dev/tty3c43
  3. sudomknodrootfs/dev/tty4c44


*注意:实际上还可以在这个镜像中插入其他的文件夹,可以参考https://learningfromyoublog.wordpress.com/2016/04/05/131/,写的很详细。

5.5生成镜像
copy
    ddif=/dev/zeroof=a9rootfs.ext3bs=1Mcount=32

5.6 格式化生成ext3文件系统
copy
    mkfs.ext3a9rootfs.ext3

5.7将文件拷贝到镜像中
copy
    sudomkdirtmpfs
  1. sudomount-text3a9rootfs.ext3tmpfs/-oloop
  2. sudocp-rrootfs/*tmpfs/
  3. sudoumounttmpfs


6. 启动qemu模拟系统

使用下面的指令启动,会在当前窗口中显示qemu虚拟出的终端。

copy
    qemu-system-arm-Mvexpress-a9-m512M-dtbextra_folder/vexpress-v2p-ca9.dtb-kernelextra_folder/zImage-nographic-append"root=/dev/mmcblk0rwconsole=ttyAMA0"-sda9rootfs.ext3


使用下面的指令启动,会另开一个窗口显示虚拟终端。

copy

    qemu-system-arm-Mvexpress-a9-m512M-dtbextra_folder/vexpress-v2p-ca9.dtb-kernelextra_folder/zImage-append"root=/dev/mmcblk0rw"-sda9rootfs.ext3

相关文章

目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
参见:https://blog.csdn.net/weixin_38883338/article/deta...
Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...