VM虚拟机通过Ubuntu系统搭建QEMU ARM架构平台

使用虚拟机环境 ubuntu

1、安装QEMU

Sudo apt-get install qemu

2、安装QEMU依赖包

Sudo apt-get install zliblg-dev

Sudo apt-get install libglib2.0-0

sudo apt-get install libglib2.0-dev

安装完成之后,命令行输入qemu按tab键会自动补齐则说明安装成功

3. 安装arm交叉编译器

安装gcc交叉编译器

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

安装g++交叉编译器

sudo apt-get install g++-arm-linux-gnueabi

4、 下载linux内核源码

https://www.kernel.org/

本次下载的内核源码版本为4.4

 

5、执行make menuconfig时出现错误

 HOSTCC  scripts/kconfig/mconf.o

In file included from scripts/kconfig/mconf.c:23:0:

scripts/kconfig/lxdialog/dialog.h:38:20: fatal error: curses.h: No such file or directory

 #include CURSES_LOC

                    ^

compilation terminated.

 

需要执行

sudo apt-get install libncurses5-dev

sudo apt-get install build-essential

 

 

6、配置编译环境

export ARCH=arm

export CROSS_COMPILE=arm-linux-gnueabi-

make vexpress_defconfig

make zImage

make dtbs

cp arch/arm/boot/zImage ../a9

cp arch/arm/boot/dts/*ca9.dtb ../a9

 

7、制作根文件系统

文件系统下载指令

wget http://www.busybox.net/downloads/busybox-1.25.0.tar.bz2 --no-check-certificate

tar -jxvf busybox-1.25.0.tar.bz2

配置编译环境

make defconfig

make CROSS_COMPILE=arm-linux-gnueabi-

make CROSS_COMPILE=arm-linux-gnueabi- install

制作根目录

make rootfs

make lib

make dev

cp busybox-1.25.0/_install/* -r rootfs/

cp -P /usr/arm-linux-gnueabi/lib* rootfs/lib/

 mknod dev/tty1 c 4 1

mknod dev/tty2 c 4 2

mknod dev/tty3 c 4 3

mknod dev/tty4 c 4 4

生成SD卡镜像

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

mkfs.ext3 rootfs.ext3

mount -t ext3 rootfs.ext3 tmpfs/ -o loop

cp -r rootfs/* tmpfs/

umount tmpfs

 

qemu 启动命令

qemu-system-arm -M vexpress-a9 -m 512M -kernel /home/usrdev/vexpress-a9/a9/zImage -dtb /home/usrdev/vexpress-a9/a9/vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0 console=ttyAMA0 rw init=/linuxrc" -sd rootfs.ext3

 

·      -M          指定开发板

·  ·      -m          指定内存大小

·  ·      -kernel     指定内核文件

·  ·      -dtb        指定dtb文件

·  ·      -nographic  指定不需要图形界面

·  ·      -append     指定扩展显示界面,串口或者LCD

·  

 

 

Image、uImage、zImage这三者的区别

image是内核映像文件,zImage是内核映像文件的压缩文件,可以在make menuconfig中选择压缩格式,uImage是uboot专用映像文件,和zImage文件相比,其在前面多出64个字节,这些字节中会对当前的内核版本,内核加载的其实地址,内核文件生成的时间,大小等一下相关的信息进行说明,地址0x40地址之后,就是zImage文件。

你可能感兴趣的:(linux)