Ubuntu 16.04下搭建QEMU虚拟机启动linux kernel

一:安装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 成功启动

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章