qemu-system和qemu-user兩種模式動態模擬運行嵌入式固件方法總結


qemu-system和qemu-user兩種模式動態模擬運行嵌入式固件方法總結

前言

搭建嵌入式固件的動態模擬環境的過程中遇到了許多的坑,最終終於搭建了起來,很有必要記錄下遇到的問題,避免今后再踩坑。

工具

1.buildroot

下載地址

以buildroot 2019.02.4版本為例,編譯mips大端架構環境。

tar zxvf buildroot-2019.02.4.tar.gz

apt-get install libncurses5-dev

make menuconfig

Target options中選擇架構為mips big endian:chooseMips

Toolchain中選擇的linux內核要盡量的低:chooseKernel

Save之后開始make,編譯時間很久,可以先去完成一次星際旅行。

2.qemu

apt-get install qemu qemu-user-static

3.binwalk

binwalk項目的github地址,安裝過程可能會出現小問題。例如cramfsprogs這個包在官方的源中找不到,需要手動下載cramfsprogs,使用dpkg -i install package.deb安裝。

4.gdb

gdb -v檢查是否已經安裝。

5.ida pro

“度娘,你有沒有ida pro給我下載啊?”

qemu-system模式運行

下載

內核文件

磁盤文件

啟動

qemu-system-mips -kernel vmlinux-3.2.0-4-4kc-malta -hda debian_wheezy_mips_standard.qcow2 -append "root=/dev/sda1 console=devttys0"

ifconfig測試與宿主機網絡連通性。

橋接網絡

安裝依賴:

apt-get install uml-utilties

apt-get install bridge-utils

修改interfaces文件:

1.備份:cp /etc/network/interfaces /etc/network/interfaces.backup

2.修改:vim /etc/network/interfaces

3.增加以下內容:

auto br0
iface br0 inet static #配置為靜態
address 192.168.*.* #填入宿主機的靜態ip
network 192.168.*.0
netmask *.*.*.*
bridge_ports *** tap0 #***代表之前的網口

4.終端:

tunctl -t tap0 -u username為創建的tap0接口指定自己可以訪問

brctl addif br0 tap0

ifconfig tap0 0.0.0.0 promisc up

5.橋接模式啟動:
sudo qemu-system-mips -kernel vmlinux-3.2.0-4-4kc-malta -hda debian_wheezy_mips_standard.qcow2 -append "root=/dev/sda1 console=ttys0" -net nic -net tap,ifname=tap0

6.ifconfig驗證是否已經橋接。

7.將binwalk解壓后的文件nc傳入虛擬機,講bin/和lib/目錄下的文件拷貝到虛擬機的根目錄下,或是使用chroot改變當前根目錄為嵌入式系統的目錄,測試是否可以運行調試目標。

qemu-user模式運行

這里遇到的坑最多(T-T!)

1.chroot(就是你!免疫自動補全!謊報敵情!)

cp $(which qemu-mips) ./

cp $(which qemu-mips-static) ./

chroot ./ ./qemu-mips ./bin/boa是行不通的,qemu-mips無法找到運行庫。

chroot ./ ./qemu-mips-static ./bin/boa可行。

2.gdb將進程綁定端口,ida pro遠程調試

chroot ./ ./qemu-mips-static -g 1234 ./bin/boa

ida pro填寫遠程參數processOption

3.遠程調試

remotedbg


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM