• 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

  • 相关阅读:
    python 协程
    python 进程池的使用
    python 多进程数据交互及共享
    python 多进程
    技术博客与技术日记
    理解闭包
    jWriter一个基于jQuery的阅读写作网站的效果库
    ubuntu下phpmyadmin配置问题解决
    避免明文保存用户密码
    如何用css实现类似简书的纵向导航/竖排导航
  • 原文地址:https://www.cnblogs.com/yangmzh3/p/11411676.html
Copyright © 2020-2023  润新知