ubuntu虚拟机下QEMU仿真arm板(openwrt系统)

2022-11-02  本文已影响0人  下里巴人也

1. 安装virtualbox、ubuntu虚拟机、交叉编译环境

1.1 virtualbox

官网下载7.0版本安装即可
链接:https://pan.baidu.com/s/1SV1JTYmnaWU6quUNLXuw1Q
提取码:igx2

1.2 ubuntu虚拟机

下载最新ubuntu最新镜像:
Thank you for downloading Ubuntu Desktop | Ubuntu

2. 安装qemu、交叉编译工具

2.1 交叉编译器

因为我们是在x86平台上进行编译,而运行的平台是ARM系统,这2个平台的指令集不一样,所以需要交叉编译得到ARM系统上可以执行的程序。
进入ubuntu虚拟机

sudo apt-get install gcc-arm-linux-gnueabi
dpkg -l gcc-arm-linux-gnueabi
示例.png

注意: 通过apt-get安装,可能安装的版本过低(u-boot编译依赖可能6以上的版本)

2.2 安装qemu (ubuntu环境)

sudo apt-get install qemu qemu-system-arm
qemu-system-aarch64 -M help
image.png

2.3 安装qemu(windows环境)

官网下载最新qemu安装包
安装好后,命令行进入到安装目录。

./qemu-system-aarch64.exe -M help
image.png

3. 编译openwrt

sudo apt update
sudo apt install build-essential clang flex g++ gawk gcc-multilib gettext \
git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev
git clone https://github.com/openwrt/openwrt.git 
cd openwrt

# Select a specific code revision
git branch -a
git tag
git checkout v22.03.2
  
# Update the feeds
./scripts/feeds update -a
./scripts/feeds install -a

make menuconfig
make -j 12 download V=99
make -j 12 V=99

#编译好的镜像在
openwrt/bin/targets/armvirt/64/ 目录

备注:make menuconfig的几个配置:
target->system->qemu-arm-virtual
->subsystem->a53
kernel-modules->wireless-driver->kmod-mac802.11-hwsim
luci->collections->Luci

4. 运行

sudo qemu-system-aarch64 -m 1024 -smp 4 -cpu cortex-a53 -M virt -nographic \
-kernel openwrt/bin/targets/armvirt/64/openwrt-armvirt-64-Image-initramfs

结果:


image.png

5. qemu虚拟机与host通信网络配置

clourney@ubuntu22:~/work$ sudo ip tuntap add mode tap tap0
clourney@ubuntu22:~/work$ sudo ip link set dev tap0 up
clourney@ubuntu22:~/work$ sudo ip addr add 192.168.1.101/24 dev tap0

配置结果:


image.png
sudo qemu-system-aarch64 \
-m 256 \
-smp 4 \
-cpu cortex-a53 \
-M virt -nographic \
-kernel openwrt/bin/targets/armvirt/64/openwrt-armvirt-64-Image-initramfs \
-device virtio-net-pci,netdev=lan \
-netdev tap,id=lan,ifname=tap0,script=no,downscript=no \
-device virtio-net-pci,netdev=wan \
-netdev user,id=wan,hostfwd=tcp::2222-:22

备注:wan口设置待定

clourney@ubuntu22:~/work$ ssh root@192.168.1.1
image.png
# 再添加个tap1 interface
clourney@ubuntu22:~/work$ sudo ip tuntap add mode tap tap1
clourney@ubuntu22:~/work$ sudo ip link set dev tap1 up
clourney@ubuntu22:~/work$ sudo ip addr add 192.168.2.101/24 dev tap1

sudo qemu-system-aarch64 \
-m 256 \
-smp 4 \
-cpu cortex-a53 \
-M virt -nographic \
-kernel openwrt/bin/targets/armvirt/64/openwrt-armvirt-64-Image-initramfs \
-device virtio-net-pci,netdev=lan \
-netdev tap,id=lan,ifname=tap0,script=no,downscript=no \
-device virtio-net-pci,netdev=wan \
-netdev tap,id=wan,ifname=tap1,script=no,downscript=no

# 启动后手动给eth1配上tap1同网段地址即可
ip a add 192.168.2.1/24 dev eth1

参考来源:
[OpenWrt Wiki] OpenWrt in QEMU
Quick Start — QEMU 7.1.50 documentation

上一篇下一篇

猜你喜欢

热点阅读