Linux培训
达内IT学院

400-111-8989

Linux下使用QEMU构建ARM运行环境


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

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

1.下载Linux内核

方法一:使用git

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

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

wget #/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。

5.交叉编译arm版的busybox

下载最新的busybox:

wget #/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

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

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:对Linux爱更深:微软现成OSI高级赞助商
下一篇:不要浪费时间写完美的代码?

学物联网工程好就业吗?

图像算法工程师发展前景

大数据运维工资一般多少?

运维工程师经常加班吗?

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省