Quantcast
Channel: 容器云计算,Devops,DBA,网络安全。
Viewing all articles
Browse latest Browse all 780

CentOS 7 利用qemu模拟ARM vexpress A9开发板

$
0
0

CentOS 7 利用qemu模拟ARM vexpress A9开发板

本文仅仅记录Qemu装载Linux kernel和busybox根文件系统的过程。后续将会深入了解仿真的其他内容。

先上成果图:

1. 安装QEMU

QEMU是一套由Fabrice Bellard所编写的以GPL许可证分发源码的模拟处理器,在GNU/Linux平台上使用广泛。
Bochs,PearPC等与其类似,但不具备其许多特性,比如高速度及跨平台的特性,通过KQMEU这个开源的加速器,QEMU能模拟至接近真实电脑的速度。
之前已有记录CentOS 7编译安装qemu的方法:

http://www.92cto.com/blog/2000.html

我的版本是2.10.0

2. 编译内核

解压下载的kernel文件,进入解压后的文件夹,运行下面的指令编译。

生成vexpress开发板子的config文件:
make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm vexpress_defconfig

编译:

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

执行启动脚本

复制代码
   #! /bin/bash                                                                                                                
    
   qemu-system-arm \
           -M vexpress-a9 \
           -m 512M \
           -kernel /home/walt740/kernel/linux-4.13.5/arch/arm/boot/zImage \
           -dtb /home/walt740/kernel/linux-4.13.5/arch/arm/boot/dts/vexpress-v2p-ca9.dtb \
           -nographic \
           -append "console=ttyAMA0"
复制代码

3. 制作根文件系统

到这里是否大功告成了呢? 其实在上面的测试中,你会发现内核报panic,因为内核找不到根文件系统,无法启init进程。 

根文件系统要考虑两个方面:

1. 根文件系统的内容

在嵌入式领域,几乎所有的东西,都是mini版本,根文件系统也不例外。

本文制本的根文件系统 = busybox(包含基础的Linux命令)  + 运行库 + 几个字符设备

2. 根文件系统放在哪里

其实依赖于每个开发板支持的存储设备,可以放到Nor Flash上,也可以放到SD卡,甚至外部磁盘上。最关键的一点是你要清楚知道开发板有什么存储设备。

    本文直接使用SD卡做为存储空间,文件格式为ext3格式

下载、编译和安装busybox

复制代码
wget http://www.busybox.net/downloads/busybox-1.27.2.tar.bz2

make defconfig

make menuconfig

make CROSS_COMPILE=arm-none-linux-gnueabi- #重要

make install 
复制代码

安装完成后,会在busybox目录下生成_install目录,该目录下的程序就是单板运行所需要的命令。

 

形成根目录结构

先在CentOS主机环境下,形成目录结构,里面存放的文件和目录与单板上运行所需要的目录结构完全一样,然后再打包成镜像(在开发板看来就是SD卡),这个临时的目录结构称为根目录。
复制代码
#!/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
复制代码

其中,etc下是启动配置文件,可以的到这里下载:

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

4. 系统启动运行

完成上述所有步骤之后,就可以启动qemu来模拟vexpress开发板了,命令参数如下:
qemu-system-arm -M vexpress-a9 -m 512M \
-kernel linux-kernel/linux-4.13/arch/arm/boot/zImage \
-dtb linux-kernel/linux-4.13/arch/arm/boot/dts/vexpress-v2p-ca9.dtb \
-nographic -append "root=/dev/mmcblk0  console=ttyAMA0" \
-sd a9rootfs.ext3

 

 

从内核启动打印。到命令行提示符出现,激动人心的时刻出现了……

如果内核报错:

复制代码
[    1.965000] Failed to execute /linuxrc (error -8).  Attempting defaults...
[    1.990000] request_module: runaway loop modprobe binfmt-464c
[    2.000000] Starting init: /sbin/init exists but couldn't execute it (error -8)
[    2.020000] request_module: runaway loop modprobe binfmt-464c
[    2.030000] Starting init: /bin/sh exists but couldn't execute it (error -8)
[    2.040000] Kernel panic - not syncing: No working init found.  Try passing init= option to kernel. See Linux Documentation/init.txt for guidance.
复制代码
[    1.955000] request_module: runaway loop modprobe binfmt-464c
//该错误是由于没有配置交叉编译工具  
配置busybox时,在配置中发现busybox setting->build options->
在cross compile prefix中写入arm-none-linux-gnueabi-

 

这个错误可在编译阶段排除  make CROSS_COMPILE=arm-none-linux-gnueabi- #重要

 

5. qemu 退出方法

此时先按CTRL+A组合键并且放手后再按X键退出QEMU。

----------------------------------------------------------------------------

搭建的过程看似简单,可也遇到了不少麻烦,很多都是通过百度/bing解决的。


Viewing all articles
Browse latest Browse all 780

Trending Articles


Vimeo 10.7.1 by Vimeo.com, Inc.


UPDATE SC IDOL: TWO BECOME ONE


KASAMBAHAY BILL IN THE HOUSE


Girasoles para colorear


Presence Quotes – Positive Quotes


EASY COME, EASY GO


Love with Heart Breaking Quotes


Re:Mutton Pies (lleechef)


Ka longiing longsem kaba skhem bad kaba khlain ka pynlong kein ia ka...


Vimeo 10.7.0 by Vimeo.com, Inc.


FORECLOSURE OF REAL ESTATE MORTGAGE


FORTUITOUS EVENT


Pokemon para colorear


Sapos para colorear


Smile Quotes


Letting Go Quotes


Love Song lyrics that marks your Heart


RE: Mutton Pies (frankie241)


Hato lada ym dei namar ka jingpyrshah jong U JJM Nichols Roy (Bah Joy) ngin...


Long Distance Relationship Tagalog Love Quotes