qemu图形界面linux,QEMU 简单几步搭建一个虚拟的ARM开发板
1.安裝QEMU
先在Ubuntu中安裝QEMU
sudo apt-get install qemu
1
安裝幾個(gè)QEMU需要的軟件包:
sudo apt-get install zlib1g-dev
sudo apt-get install libglib2.0-0
sudo apt-get install libglib2.0-dev
1
2
3
安裝完后在shell輸入 qemu 按tab鍵如果出現(xiàn)自動(dòng)補(bǔ)齊就證明成功安裝
2.安裝交叉編譯鏈環(huán)境
1).先下載交叉編譯鏈
http://www.veryarm.com/arm-none-linux-gnueabi-gcc
https://launchpad.net/gcc-arm-embedded/+download
1
2
然后把對應(yīng)的tar包解壓到自己PC的指定目錄下
2).在Ubuntu的家目錄中打開 .bashrc 在最后一行添加
export PATH=$PATH:/home/linux/tools/arm-2014.05/bin //上邊解壓的目錄
安裝完后在shell輸入 arm- 按tab鍵如果出現(xiàn)自動(dòng)補(bǔ)齊就證明成功安裝
輸入 arm-none-linux-guneabi-gcc -v 可以查看安裝的版本,表明安裝成功
3.編譯內(nèi)核
1).下載Linux內(nèi)核
https://www.kernel.org/
下載tarball包 如:linux-3.16.51.tar.xz
1
2
2).解壓內(nèi)核源碼
tar xvf linux-3.16.51.tar.xz
make vexpress_defconfig
得到.config文件
1
2
3
3).修改交叉編譯鏈
vi Makefile
修改 ARCH ? ? ? ? ? ? ?= arm
修改 CROSS_COMPILE ? ? ? ??= arm-none-linux-gnueabi-
1
2
3
或者可以在每次使用make時(shí)直接指定編譯鏈,如:
make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm vexpress_defconfig
得到.config文件并指定編譯鏈
1
2
修改完Makefile后編譯
make menuconfig //配置內(nèi)核編譯
make zImage ? ? //編譯生成zImage鏡像文件
make dtbs ? ? ? //編譯生成設(shè)備樹鏡像文件
1
2
3
4.制作文件系統(tǒng)
1).下載busybox
https://busybox.net/downloads/
1
2).執(zhí)行make menuconfig
Busybox Settings --> Build Optiions --> Cross Compiler prefix
輸入arm-none-linux-gnueabi-
也可以在Makefile文件中修改編譯鏈
1
2
3
3).指定install路徑
Busybox Settings --> Installation Options --> BusyBox installation prefix
輸入自己指定的路徑,否則使用目前默認(rèn)設(shè)置 _install
1
2
4).編譯
編譯 make
安裝 make install
其實(shí)以上的步驟可以更簡單點(diǎn),直接指定交叉編譯鏈
make defconfig
make CROSS_COMPILE=arm-none-linux-gnueabi-
make install CROSS_COMPILE=arm-none-linux-gnueabi-
1
2
3
4
5
6
5).添加文件
在_install目錄下有
bin ?linuxrc ?sbin ?usr
創(chuàng)建其他文件夾
mkdir ?dev ?etc ?mnt ?proc ?var ?tmp ?sys ?root
1
2
3
4
6).添加動(dòng)態(tài)鏈接庫文件
cp ~/toolchain/arm-2014.05/arm-none-linux-gnuabi/libc/lib * ~/busybox-1.22.1/_install
1
5.掛載文件系統(tǒng)
1).創(chuàng)建掛載點(diǎn)
mkdir -p rootfs/{dev,etc/init.d,lib}
cp busybox-1.22.1/_install/* -r rootfs/
sudo mknod rootfs/dev/tty1 c 4 1
1
2
3
2).生成鏡像
dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=32
1
格式化成ext3文件系統(tǒng)
mkfs.ext3 a9rootfs.ext3
1
將文件拷貝到鏡像中
sudo mkdir tmpfs
sudo mount -t ext3 a9rootfs.ext3 tmpfs/ -o loop
sudo cp -r rootfs/* ?tmpfs/
sudo umount tmpfs
1
2
3
4
6.運(yùn)行
qemu-system-arm -M vexpress-a9 -m 512M -kernel /home/linux/linux-3.16/arch/arm/boot/zImage -dtb ?/home/linux/linux-3.16/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0 ?console=ttyAMA0" -sd a9rootfs.ext3
1
如果嫌麻煩可以將上邊這行指令寫成一個(gè)腳本,每次打開時(shí)運(yùn)行腳本就行
看到控制臺打印很多類似開發(fā)板啟動(dòng)時(shí)的打印就證明成功了
...
EXT3-fs (mmcblk0): mounted filesystem with writeback data mode
VFS: Mounted root (ext3 filesystem) readonly on device 179:0.
Freeing unused kernel memory: 232K (805a5000 - 805df000)
random: nonblocking pool is initialized
can't run '/etc/init.d/rcS': No such file or directory
Please press Enter to activate this console.
/ #
1
2
3
4
5
6
7
8
9
10
可以看到?jīng)]有init進(jìn)程,這些都已經(jīng)是內(nèi)核啟動(dòng)之后的了,可以再做添加
其中/home/linux/linux-3.16是你編譯內(nèi)核的絕對路徑
如果失敗看看是不是缺少某個(gè)文件
這里簡單介紹下qemu命令的參數(shù):
-M vexpress-a9 模擬vexpress-a9單板,你可以使用-M ?參數(shù)來獲取該qemu版本支持的所有單板
-m 512M 單板運(yùn)行物理內(nèi)存512M
-kernel /home/linux/linux-3.16/arch/arm/boot/zImage ?指定qemu單板運(yùn)行內(nèi)核鏡像路徑
-nographic 不使用圖形化界面,只使用串口
-append "console=ttyAMA0" 內(nèi)核啟動(dòng)參數(shù),這里告訴內(nèi)核vexpress單板運(yùn)行,串口設(shè)備tty
---------------------
作者:leumber
來源:CSDN
原文:https://blog.csdn.net/leumber/article/details/78654768
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的qemu图形界面linux,QEMU 简单几步搭建一个虚拟的ARM开发板的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python版本的Pairs图
- 下一篇: 数据库系统概论---第五章:数据库完整性