table of contents
qemu –從源頭建造
arm工具鏈
linux核心
構建檔案系統
通過nfs使用根檔案系統
配置qemu tap網路
建立執行指令碼
推薦閱讀:《在centos上進行虛擬化:qemu、xen、kvm、libvirt、ovirt》
qemu是一套由法布里斯·貝拉(fabrice bellard)所編寫的以gpl許可證分發原始碼的模擬處理器,在gnu/linux平台上使用廣泛。bochs,pearpc等與其類似,但不具備其許多特性,比如高速度及跨平台的特性,通過kqemu這個閉源的加速器,qemu能模擬至接近真實電腦的速度。
目前,0.9.1及之前版本的qemu可以使用kqemu加速器。在qemu1.0之後的版本,都無法使用kqemu,主要利用qemu-kvm加速模組,並且加速效果以及穩定性明顯好於kqemu。
在我的嵌入式linux課程中,我使用qemu來模擬linux系統。qemu模擬許多電路板,包括硬體,中斷,網路等。
在本教程中,我將介紹構建包括核心,檔案系統和應用程式的完整系統的步驟。
# wget
# tar xvjf qemu-2.11.0.tar.xz
# cd qemu-2.11.0
# ./configure
最後一步檢查您的系統是否滿足所有qemu要求。如果收到錯誤訊息,則需要安裝缺少的軟體包。我正在使用ubuntu,很容易安裝缺少的部件,例如,我收到以下訊息:
error: glib-2.22 gthread-2.0 is required to compile qemu
搜尋google後,安裝所需的軟體包
# sudo apt-get install libglib2.0-dev zlib1g-dev
# sudo apt-get install libpixman-1-dev
# sudo apt-get install libsdl2*
現在再次執行configure並檢查是否報告了sdl支援
執行make
# make
# sudo make install
要檢查qemu是否正確安裝,請執行
# qemu-system-arm -m ?
將位置新增到path環境變數中:
# export path=/home/developer/armsystem/toolchain/gcc-arm-none-eabi-7-2017-q4-major
編輯核心makefile(第253行)
arch ?= arm
cross_compile ?= arm-none-eabi-
設定配置檔案
# make vexpress_defconfig
執行make
# make -j4
現在,我們可以使用以下命令檢查qemu中的核心:
# qemu-system-arm -m vexpress-a15 -m 512 -kernel arch/arm/boot/zimage -dtb arch/arm/boot/dts/vex
系統將啟動但由於我們尚未構建檔案系統而崩潰
我們可以使用許多任務具來構建嵌入式linux檔案系統。一些例子是buildroot,openwrt,yocto
在本教程中,我們將使用buildroot,因為它是最簡單的工具
開啟配置選單:
# make menuconfig
在目標選項上,選擇目標體系結構– arm
我們將使用sourcery工具鏈,因為它具有一些ide外掛程式。
儲存配置並構建它
# make
構建成功完成後,您可以在以下位置找到新的工具鏈:
~/armsystem/fs/buildroot-2017.02.8/output/host/usr/bin
將其新增到path變數,更改核心makefile並再次構建
arch ?= arm
cross_compile ?= arm-none-linux-gnueabi-
生成的檔案系統位於buildroot / output / target中,但我們尚不能使用
使用嵌入式板的最好方法是通過nfs(在主機上)掛載目標檔案系統來實現,我們需要做一些設定:
安裝nfs伺服器
# sudo apt install nfs-kernel-server
/home/developer/armsystem/outfs *(rw,sync,no_root_squash)
重新啟動nfs伺服器
# sudo /etc/init.d/nfs-kernel-server restart
[ ok ] restarting nfs-kernel-server (via systemctl): nfs-kernel-server.service.
qemu可以使用tap / tunnel模式將私有網路與ubuntu結合使用。要進行設定,請建立檔案/ etc / qemu-ifup:
#!/bin/bash
exec /sbin/ifconfig $1 192.168.0.1
向檔案新增執行許可權(chmod a + x / etc / qemu-ifup)
建立根檔案系統資料夾
複製生成的檔案〜/ armsystem / outfs
# cp -r -d [buildroot]/output/target/* ~/armsystem/outfs
現在,使用root使用者新增以下裝置檔案
# sudo mknod ./dev/console c 5 1
# sudo mknod ./dev/zero c 1 5
# sudo mknod ./dev/null c 1 3
# sudo mknod ./dev/tty1 c 4 1
如果要自動生成裝置檔案,請配置udev。使用buildroot非常容易:
從系統配置選單中選擇/ dev管理(使用devtmpfs + eudev動態)
然後從「目標軟體包」>「硬體處理」選單中,選擇「 eudev」
編譯buildroot,您將看到udev在init上執行:
在〜/ armsystem中建立指令碼– run_qemu
qemu-system-arm -m vexpress-a15 -net tap -net nic -m 512 -kernel kernel/linux-4.14.10/arc
新增執行許可權並使用sudo對其進行測試(它將啟動新的網路裝置)
而已!!!
現在我們可以編寫乙個測試應用程式,在qemu中編譯並執行:
Buildroot構建嵌入式系統
2 配置buildroot 將原始碼包複製到 opt目錄下,並解壓 2.1 進入target options 將target architecture配置為arm littlt endian 將target architecture variant配置為cortex a9,將target abi配置...
嵌入式 linux 編譯
第二次換了編譯環境編譯時又提示 make 3 drivers video console vgacon.o 錯誤 1 在網上搜尋結果 根據資訊的大概意思是關於vga的支援問題,在這裡我直接把關於vga的配置選項去掉不選,即 在執行 make menuconfig 配置時 不選vga 驅動。devic...
linux嵌入式開發
我的環境 主機 ubuntu 64位 開發板 mini2440 6 makefile檔案修改 在 opt friendlyarm mini2440 linux 2.6.29下執行 sudo vi.makefile 搜尋arm linux得到乙個結果 cross compile?arm linux 然...