一:安装QEMU虚拟机
QEMU 官网下载安装包 https://www.qemu.org/ 本文安装qemu-4.1.1 安装步骤如下: 1):安装库 sudo apt-get install zlib1g-dev sudo apt-get install libglib2.0-0 sudo apt-get install libglib2.0-dev sudo apt-get install libtool sudo apt-get install libsdl1.2-dev sudo apt-get install autoconf sudo apt-get install libpixman-1-0 sudo apt-get install libpixman-1-dev 2):config 配置 ./configure --target-list=aarch64-softmmu --audio-drv-list= 3):make 编译源码 4):sudo make install (安装到系统默认路径,自定义路径须在config 步骤中指定) 安装生成得可执行文件到系统默认路径如下图安装成功
二:准备Linux内核镜像
1):配置交叉编译器不再啰嗦 2):Linux内核官网下载linux内核源码,https://www.kernel.org/ 本文所用版本为 linux-4.9.37.tar.gz
3):解压内核并编译内核,进入内核源码目录linux-4.9.37,编辑编译脚本 build.sh如下:
4):执行./build.sh 编译生成zImage与dtb文件,我们以arm官方vexpress 开发板为例
5):在output 目录下我们创建run.sh 脚本如下:
#!/bin/bash qemu-system-arm -M vexpress-a9 -m 512M -kernel ./zImage -dtb ./vexpress-v2p-ca9.dtb -nographic -append "console=ttyAMA0" 我们在output目录下执行run.sh启动zImage 启动到最后内核挂在跟文件系统失败报painc错误而崩掉
我们下载busybox制作rootfs,选用版本为busybox-1.26.2.tgz,解压,进入到busybox-1.26.2目录创建编译脚本build.sh如下:
#/bin/sh make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- install
执行build.sh 编译生成_install 目录
我们创建个rootfs目录然后将_install目录下所有文件拷贝到rootfs目录,然后
mkdir dev
mkdir app
mkdir proc
mkdir sys
mkdir -p etc/init.d
在dev目录下创建console 设备文件 sudo mknod console c 5 1
在etc/init.d 目录下创建rcS文件内容如下:
#!/bin/sh mount -t proc none /proc mount -t sysfs none /sys /sbin/mdev -s 至此rootfs文件系统制作完成
我们重新编译内核,在linux-4.9.37 目录下vim .config 添加rootfs路径到.config文件
或者重新make ARCH=arm menuconfig 配置
重新编译内核生成zImage 和dtb文件,这次生成的zImage已经包含了rootfs
编译完成后进入到output目录下,修改run.sh如下: #!/bin/bash qemu-system-arm -M vexpress-a9 -m 512M -kernel ./zImage -dtb ./vexpress-v2p-ca9.dtb -nographic -append "rdinit=/linuxrc console=ttyAMA0"
执行run.sh 成功启动