搭建QEMU+A9环境
参考:
https://blog.csdn.net/zouyu1746430162/article/details/78150745
https://blog.csdn.net/linyt/article/details/42504975
https://www.jianshu.com/p/0ca97e5b6c08
文件解压
1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和 *.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.tar.X 解压
$xz -d ***.tar.xz
$tar -xvf ***.tar
1.安装git
sudo apt-get install git
2.下载Linux内核
git clonegit://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
3.安装arm的交叉编译工具链
sudo apt-get install gcc-arm-linux-gnueabi
4.编译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启动时需要使用该镜像。
错误1:flex not found
解决:
sudo apt-get install flex
错误2:bison not found
解决:
sudo apt-get install bison
5.下载和安装qemu模拟器
安装依赖文件:
sudo apt-get install zlib1g-dev
sudo apt-get install libglib2.0-0
sudo apt-get install libglib2.0-dev
apt-get install libpixman-1-dev
(用老版本的qemu 可能最后的运行时出现错误:(process:8559): GLib-WARNING…gmem.c:483: custom memory allocation vtable not support)
wget https://download.qemu.org/qemu-3.0.0.tar.xz
解压qemu-3.0.0
cd ~/qemu-3.0.0
./configure --target-list=arm-softmmu --audio-drv-list=
编译安装:
make
sudo make install
(加权限 要不然会遇到install -d -m 0755 “/usr/local/share/qemu” 找不到目录的错误)
错误3:autoreconf: not found
解决:
sudo apt-get install autoconf automake libtool
sudo apt-get install libffi-dev
6.测试qemu和内核能否运行成功
qemu-system-arm \
-M vexpress-a9 \
-m 512M \
-kernel <path>/arch/arm/boot/zImage\
-dtb <path>/arch/arm/boot/dts/vexpress-v2p-ca9.dtb \
-nographic \
-append "console=ttyAMA0"
- -M vexpress-a9 模拟vexpress-a9单板,你可以使用-M ?参数来获取该qemu版本支持的所有单板
- -m 512M 单板运行物理内存512M
- -kernel 告诉qemu单板运行内核镜像路径
- -nographic不使用图形化界面,只使用串口
- -append “console=ttyAMA0”?内核启动参数,这里告诉内核vexpress单板运行,串口设备是那个tty
console=参数 以从生成的.config文件CONFIG_CONSOLE宏找到
7.安装文件系统
下载busybox
wget http://www.busybox.net/downloads/busybox-1.20.2.tar.bz2
编译安装
make defconfig
make CROSS_COMPILE=arm-linux-gnueabi-
make install CROSS_COMPILE=arm-linux-gnueabi-
错误4:
解决:
在include/platform.h中包含sys/resource.h
安装完成后,会在busybox目录下生成_install目录,该目录下的程序就是单板运行所需要的命令
8.形成根目录结构
- 创建rootfs目录(根目录),根文件系统内的文件全部放到这里
mkdir -p rootfs/{dev,etc/init.d,lib}
-
拷贝busybox命令到根目录下
sudo cp busybox-1.20.2/_install/* -r rootfs/
-
从工具链中拷贝运行库到lib目录下. 从工具链中拷贝运行库到lib目录下
sudo cp -P /usr/arm-linux-gnueabi/lib/* rootfs/lib/
-
创建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
9.制作根文件系统镜像
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
//挂载到tmpfs文件上
sudo cp -r rootfs/* tmpfs/
sudo umount tmpfs
10.系统启动运行
完成上述所有步骤之后,就可以启动qemu来模拟vexpress开发板了,命令参数如下:
qemu-system-arm \
-M vexpress-a9 \
-m 512M \
-kernel <path>arch/arm/boot/zImage \
-dtb<path>/arch/arm/boot/dts/vexpress-v2p-ca9.dtb \
-nographic \
-append "root=/dev/mmcblk0 rw console=ttyAMA0" \
-sd a9rootfs.ext3
-sd 后放镜像的绝对路径