惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
MyScale Blog
MyScale Blog
The Hacker News
The Hacker News
Google DeepMind News
Google DeepMind News
The Cloudflare Blog
GbyAI
GbyAI
Vercel News
Vercel News
量子位
Apple Machine Learning Research
Apple Machine Learning Research
Recent Announcements
Recent Announcements
美团技术团队
D
DataBreaches.Net
H
Help Net Security
大猫的无限游戏
大猫的无限游戏
人人都是产品经理
人人都是产品经理
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog RSS Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Y
Y Combinator Blog
S
Secure Thoughts
S
SegmentFault 最新的问题
The Last Watchdog
The Last Watchdog
Jina AI
Jina AI
Security Archives - TechRepublic
Security Archives - TechRepublic
F
Fortinet All Blogs
C
Check Point Blog
小众软件
小众软件
阮一峰的网络日志
阮一峰的网络日志
Schneier on Security
Schneier on Security
MongoDB | Blog
MongoDB | Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Stack Overflow Blog
Stack Overflow Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Hacker News: Ask HN
Hacker News: Ask HN
博客园 - 【当耐特】
Simon Willison's Weblog
Simon Willison's Weblog
Scott Helme
Scott Helme
S
Security @ Cisco Blogs
SecWiki News
SecWiki News
Hugging Face - Blog
Hugging Face - Blog
博客园 - 叶小钗
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Google Online Security Blog
Google Online Security Blog
S
Securelist
L
LINUX DO - 最新话题
Forbes - Security
Forbes - Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
I
InfoQ
Engineering at Meta
Engineering at Meta

博客园 - CalvinChu

vyos syslog配置 How to upgrade pip on Debian Wheezy 指数数据解密,懂的都懂 OpenWRT and VPN Passthrough - CalvinChu 如何将 find 命令与 exec 一起使用 CentOS 7 下搭建 OpenVPN - CalvinChu How to get the ip ranges of domain esxi 直通sata控制器 Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_P xRDP – Detected issues with Debian 11 – Oh No ! Something has gone wrong…. ImportError: libSM.so.6: cannot open shared object file: No such file or directory openwrt(lede)中,PPtP Client需要安装的软件包 OpenWrt中的Hotplug脚本 MAC OSX VPN自动添加静态路由 - CalvinChu fbprophet安装和使用 CentOS7安装iptables防火墙 CENTOS7下安装REDIS mysql忘记root密码解决办法 iptables命令(备忘)
qemu-mips环境搭建跳坑指南
CalvinChu · 2022-01-14 · via 博客园 - CalvinChu
  1. qemu安装

    安装有很多方式,对于ubuntu/debian用户,直接apt安装即可

    官网:https://www.qemu.org/download/

    sudo apt-get install zlib1g-dev
    sudo apt-get install libglib2.0-0
    sudo apt-get install libglib2.0-dev
    sudo apt-get install libtool
    sudo apt-get install libsdl1.2-dev
    sudo apt-get install libpixman-1-dev
    sudo apt-get install autoconf
    sudo apt-get install qemu 
    sudo apt-get install qemu-user-static
    sudo apt-get install qemu-system
    

    或者使用源码安装的方式
    https://www.qemu.org/download/
    https://github.com/qemu/qemu

  2. buildroot 交叉编译环境的配置

下载buildroot

   wget http://buildroot.uclibc.org/downloads/snapshots/buildroot-snapshot.tar.bz2
   tar -jxvf buildroot-snapshot.tar.bz2
   cd buildroot

配置buildroot

   sudo apt-get install libncurses-dev patch
   make clean
   make menuconfig

出现的界面当中,”Target Architecture”改为”MIPS”大端小端自行选择,另外在”Toolschain”中要将”Kernel Headers”的版本改为自己系统的版本

可以使用 uname -r 查询

我的内核版本是4.13.0-36-generic

很难受的一点是 在Kernel Headers选项中并没有4.13.x……

这时候要选择”Manually specified Linux version”,并在下方的”Custom kernel headers series”中手动指定为4.13.x

退出后执行下方命令

   sudo apt-get install texinfo
   sudo apt-get install bison
   sudo apt-get install flex
   sudo make

在编译过程中……会比较慢…..耐心等待 = =

其中要注意的一点是,我在编译的时候遇到了一个问题

其中一部分文件在下载时本应是linux-4.13.tar.xz但是Makefile好像有些问题,访问成了linux-.tar.xz

我对这个问题的处理方式是:

 1. 手动下载linux-4.13.tar.xz

 2. 手动保存为

    ```buildroot/output/build/linux-headers/.stmap_download```

    和

    ``buildroot/dl/linux/linux-.tar.xz``

3. 继续编译

编译结束后,使用mipsel-linux-gnu-gcc指令即可编译出mips架构下的elf文件

同时,mips程序执行所需要的依赖库也都保存到了/usr/mipsel-linux-gnu/lib

  1. qemu虚拟机的网络环境配置

    首先安装依赖

    sudo apt-get install bridge-utils uml-utilities

    我这里选择使用网桥的方法使宿主机与虚拟机互联,然后通过NAT的方式使虚拟机与外网链接

    注意一点,如果不进行NAT设置的话,虚拟机是不能访问外网的,这也是许多文章没有提到的问题(我在坑里呆了好久)

    sudo brctl addbr br0
    sudo ifconfig br0 192.168.122.1/24 up
    sudo tunctl -t tap0
    sudo ifconfig tap0 192.168.122.11/24 up
    sudo brctl addif br0 tap0
    

    下载qemu虚拟机的镜像

    https://people.debian.org/~aurel32/qemu/mips/
    

    我选择的内核和镜像是vmlinux-3.2.0-4-4kc-maltadebian_wheezy_mips_standard.qcow2

    默认用户名密码是:root/root

    然后在本机配置dhcp,dns服务

    sudo dnsmasq --strict-order --except-interface=lo --interface=br0 --listen-address=192.168.122.1 --bind-interfaces --dhcp-range=192.168.122.2,192.168.122.254 --conf-file="" --pid-file=/var/run/qemu-dhcp-virbr0.pid --dhcp-leasefile=/var/run/qemu-dhcp-virbr0.leases --dhcp-no-override

    现在使用

    sudo qemu-system-mips64 -M malta -kernel vmlinux-3.2.0-4-4kc-malta -hda debian_wheezy_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -netdev tap,id=tapnet,ifname=tap0,script=no -device rtl8139,netdev=tapnet -nographic

    命令启动虚拟机,就可以做到虚拟机与宿主机互通了

    接下来进行外网连接的配置

    开启端口转发

    sudo sysctl -w net.ipv4.ip_forward=1
    sudo sysctl -p /etc/sysctl.conf
    

    配置iptables

    sudo iptables -t nat -A POSTROUTING -s "192.168.122.0/255.255.255.0" ! -d "192.168.122.0/255.255.255.0" -j MASQUERADE
    sudo iptables -N vm-service
    sudo iptables -A vm-service -j ACCEPT
    sudo iptables -A FORWARD -s 192.168.122.0/24 -j   vm-service
    

    再使用上方的命令启动虚拟机,就可以与外网互通了

  2. qemu-mipsel运行动态编译的程序

    qemu-mipsel平时运行程序,遇到动态编译的程序时,就会提示依赖库缺少

    书上和网上给出的方法都是chroot,但使用这个命令时也有几个坑

    先将buildroot所编译出的lib库复制到程序文件夹下

    然后再执行chroot的命令

       cp $(which qemu-mipsel) .
       sudo chroot . ./qemu-mipsel hello
    

    已经将lib库复制到目录下,但是在执行时还是缺少依赖库

    这时候大概率就是qemu-mipsel缺少依赖库了…….一种解决方式是通过ldd指令查看qemu的依赖库,并复制,另一种方法是我更推荐的,直接使用静态编译的qemu-mipsel-static

       cp $(which qemu-mipsel-static) .
       sudo chroot . ./qemu-mipsel-static hello
    

至此…..我的qemu安装爬坑结束,哪里有问题,还望师傅们多多包涵(告诉我)