因爲最近的一個項目,須要用到qemu模擬arm系統跑程序,因此作了一次搭建,在網上找到了兩篇文章,寫得都很詳細,其中一篇文章是對另一篇文章進行的修改和添加,可是基於本身系統去作,仍是發現了最新修改的文章過程當中的一些錯漏,加之想記錄下這次本身的搭建,因此寫下這篇博客。html
參考博客文章(1):https://blog.csdn.net/linyt/article/details/42504975linux
參考博客文章(2):https://blog.csdn.net/sxw1002/article/details/52841671express
本次PC系統:Ubuntu16.04app
目標系統:以Versatile Express-A9開發板爲例搭建環境工具
1.Qemu源碼下載:wget http://wiki.qemu-project.org/download/qemu-2.7.0.tar.bz2oop
2.安裝所須要的軟件包(參考兩文章):post
sudo apt-get install zlib1g-dev學習
sudo apt-get install libglib2.0-0flex
sudo apt-get install libglib2.0-devspa
sudo apt-get install autoconf
sudo apt-get install flex bison
sudo apt-get install libtool
3.解壓Qemu安裝包
sudo tar -jxvf qemu-2.7.0.tar.bz2
4.進入Qemu包
cd qemu-2.7.0
5.編譯安裝
./configure --target-list=arm-softmmu --audio-drv-list=
make
make install
1.安裝交叉編譯工具
sudo apt-get install gcc-arm-linux-gnueabi
2.內核下載
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.8.tar.xz
解壓: tar -xvf linux-4.8.tar.xz
如有朋友有興趣想要編譯3.16版本的內核,能夠下降交叉編譯器的版本,使用4.7版本的交叉編譯器,因爲下降版本的話後面的環境變量的設置都要改動,有點麻煩,因此這裏我就不展現出來。
3.配置編譯
export CROSS_COMPILE=arm-linux-gnueabi-
export ARCH=arm
make vexpress_defconfig
make -j2
徹底以後便在arch/arm/boot/目錄中生成了zImage:
wget http://www.busybox.net/downloads/busybox-1.25.0.tar.bz2 --no-check-certificate
解壓:tar -jxvf busybox-1.20.2.tar.bz2
make defconfig
make CROSS_COMPILE=arm-linux-gnueabi-
make CROSS_COMPILE=arm-linux-gnueabi- install
1.建立必要的目錄
mkdir rootfs
cd rootfs
mkdir rootfs /lib
mkdir rootfs /dev
2.拷貝busybox編譯生產的目錄和文件,編譯器自帶的lib
sudo cp busybox-1.25.0/_install/* -r rootfs/
sudo cp -P /usr/arm-linux-gnueabi/lib/* rootfs/lib/
3.建立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
4.生成32M大小的鏡像,並拷文件系統樹到鏡像文件中
dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=32
mkfs.ext3 a9rootfs.ext3
mkdir tmpfs
mount -t ext3 a9rootfs.ext3 tmpfs/ -o loop
cp -r rootfs/* tmpfs/
sudo umount tmpfs
在終端輸入指令:qemu-system-arm -M vexpress-a9 -m 512M -kernel /home/chris/Desktop/linux-4.8/arch/arm/boot/zImage -dtb /home/chris/Desktop/linux-4.8/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0 console=ttyAMA0" -sd a9rootfs.ext3
由於我是安裝在桌面因此是那樣的目標路徑,若安裝在不一樣地方就改一改就好了。(此圖取自參考文章)
本着通過記錄自身搭建過程,並以此爲經驗供有須要的朋友參考學習,絕無其餘意思,原文不少步驟與參考文章相同,但絕無抄襲之意,在此再次感謝上方連接的兩位做者。但願此文章對學習嵌入式的朋友有幫助。