一:安裝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 成功啓動