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 成功啓動

 

 

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