arm linux运行qemu,Linux下使用QEMU构建ARM运行环境

以下所有步骤都是在Ubuntu 14.04系统上进行的,全部通过验证。

本文的搭建过程都是基于vexpress A9开发板进行的,这号称是qemu模拟得最好的arm开发板。

1.下载Linux内核

方法一:使用git

git

clonegit://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

方法二:直接下载3.17源代码包

wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.17.tar.xz

2.安装arm的交叉编译工具链

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

3.编译Linux内核

生成vexpress开发板子的config文件:

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

然后编译:

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

生成的内核镱像位于arch/arm/boot/zImage, 后续qemu启动时需要使用该镜像。

4.下载和安装qemu模拟器

sudo apt-get install qemu

默认安装2.0.0的qemu。使用qemu-system-arm --version来确认版本号。

再运行qemu-system-arm -M ?来确认支持vexpress-a9。

4a92304f4f8fbbed2d27eafe17ada009.png

5.交叉编译arm版的busybox

下载最新的busybox:

wget http://www.busybox.net/downloads/busybox-1.26.0.tar.bz2

make defconfig

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

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

在busybox的根目录下会生成一个_install目录。

6.利用busybox制作根文件系统

1)创建rootfs目录(根目录),并拷贝busybox命令到根目录下

sudo mkdir rootfs

sudo cp busybox-1.26.0/_install/* -r rootfs/

2)生成其它必要的目录

sudo mkdir rootfs/{dev,etc,lib,mnt,proc,var,tmp,sys,root,init.d}

3)从工具链中拷贝运行库到lib目录下

sudo cp -Pr /usr/arm-linux-gnueabi/lib/* rootfs/lib/

4)创建4个tty端终设备

sudo mknod rootfs/dev/tty1 c 4 1

sudo mknod rootfs/dev/tty2 c 4 2

sudo mknod rootfs/dev/tty3 c 4 3

sudo mknod rootfs/dev/tty4 c 4 4

5)创建 inittab 文件

进入 rootfs/etc 目录,建立 inittab 文件,文件内容:

#this is first except when booting in single-user mode.

::sysinit:/etc/init.d/rcS

#/bin/sh invocations on selected ttys

#Start an "askfirst" shell on the console(whatever that may be)

::askfirst:-/bin/sh

#Stuff to do when restarting the init process

::restart:/sbin/init

#Stuff to do before rebooting

::ctrlaltdel:/sbin/reboot

6)创建 fstab 文件

进入 root/etc 下面,创建 fstab 文件,添加如下内容

#device mount-point type options dump fsck order

proc /proc proc defaults 0 0

sysfs /sys sysfs defaults 0 0

7)创建 init.d/rcS

进入 rootfs/etc 下创建 init.d/rcS文件,添加如下内容

#!/bin/sh

#This is the first script called by init process

/bin/mount -a

别忘了设置rcS的可执行权限:

sudo chmod 755 etc/init.d/rcS

8)创建 profile 文件

进入 rootfs/etc 下创建 profile 文件,添加如下内容:

#!/bin/sh

export HOSTNAME=x200

export USER=root

export HOME=root

cd root

export PS1="[$USER@HOSTNAME \W]\#"

PATH=/bin:/sbin:/usr/bin:/usr/sbin

LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH

export PATH LD_LIBRARY_PATH

7.制作根文件系统镜像

1)生成32M大小的镜像

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

2)格式化成ext3文件系统

mkfs.ext3 a9rootfs.ext3

3)将文件拷贝到镜像中

sudo mkdir tmpfs

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

sudo cp -r rootfs/* tmpfs/

sudo umount tmpfs

8.系统启动运行

完成上述所有步骤之后,就可以启动qemu来模拟vexpress开发板了,命令参数如下:

qemu-system-arm -M vexpress-a9 -m 512M -kernel

/change_to_your_kernel_source_path/zImage -nographic -append "root=/dev/mmcblk0

init=/linuxrc console=ttyAMA0" -sd a9rootfs.ext3

最后的显示界面如下图所示:

a7c8e304c19a8a476febbcbd0883d5e7.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值