-
配置模拟固件运行的依赖环境
wget https://buildroot.org/downloads/buildroot-2025.02.tar.gz
tar -xzvf buildroot-2025.02.tar.gz
cd buildroot-2025.02
主要命令:
make list-defconfigs #查看所有默认配置文件
这里主要关注的就是QEMU相关的这几个
qemu_aarch64_ebbr_defconfig - Build for qemu_aarch64_ebbr
qemu_aarch64_sbsa_defconfig - Build for qemu_aarch64_sbsa
qemu_aarch64_virt_defconfig - Build for qemu_aarch64_virt
qemu_arm_ebbr_defconfig - Build for qemu_arm_ebbr
qemu_arm_versatile_defconfig - Build for qemu_arm_versatile
qemu_arm_vexpress_defconfig - Build for qemu_arm_vexpress
qemu_arm_vexpress_tz_defconfig - Build for qemu_arm_vexpress_tz
qemu_m68k_mcf5208_defconfig - Build for qemu_m68k_mcf5208
qemu_m68k_q800_defconfig - Build for qemu_m68k_q800
qemu_microblazebe_mmu_defconfig - Build for qemu_microblazebe_mmu
qemu_microblazeel_mmu_defconfig - Build for qemu_microblazeel_mmu
qemu_mips32r2el_malta_defconfig - Build for qemu_mips32r2el_malta
qemu_mips32r2_malta_defconfig - Build for qemu_mips32r2_malta
qemu_mips32r6el_malta_defconfig - Build for qemu_mips32r6el_malta
qemu_mips32r6_malta_defconfig - Build for qemu_mips32r6_malta
qemu_mips64el_malta_defconfig - Build for qemu_mips64el_malta
qemu_mips64_malta_defconfig - Build for qemu_mips64_malta
qemu_mips64r6el_malta_defconfig - Build for qemu_mips64r6el_malta
qemu_mips64r6_malta_defconfig - Build for qemu_mips64r6_malta
qemu_or1k_defconfig - Build for qemu_or1k
qemu_ppc64_e5500_defconfig - Build for qemu_ppc64_e5500
qemu_ppc64le_powernv8_defconfig - Build for qemu_ppc64le_powernv8
qemu_ppc64le_pseries_defconfig - Build for qemu_ppc64le_pseries
qemu_ppc64_pseries_defconfig - Build for qemu_ppc64_pseries
qemu_ppc_bamboo_defconfig - Build for qemu_ppc_bamboo
qemu_ppc_e500mc_defconfig - Build for qemu_ppc_e500mc
qemu_ppc_g3beige_defconfig - Build for qemu_ppc_g3beige
qemu_ppc_mac99_defconfig - Build for qemu_ppc_mac99
qemu_ppc_mpc8544ds_defconfig - Build for qemu_ppc_mpc8544ds
qemu_riscv32_nommu_virt_defconfig - Build for qemu_riscv32_nommu_virt
qemu_riscv32_virt_defconfig - Build for qemu_riscv32_virt
qemu_riscv64_nommu_virt_defconfig - Build for qemu_riscv64_nommu_virt
qemu_riscv64_virt_defconfig - Build for qemu_riscv64_virt
qemu_riscv64_virt_efi_defconfig - Build for qemu_riscv64_virt_efi
qemu_s390x_defconfig - Build for qemu_s390x
qemu_sh4eb_r2d_defconfig - Build for qemu_sh4eb_r2d
qemu_sh4_r2d_defconfig - Build for qemu_sh4_r2d
qemu_sparc64_sun4u_defconfig - Build for qemu_sparc64_sun4u
qemu_sparc_ss10_defconfig - Build for qemu_sparc_ss10
qemu_x86_64_defconfig - Build for qemu_x86_64
qemu_x86_defconfig - Build for qemu_x86
qemu_xtensa_lx60_defconfig - Build for qemu_xtensa_lx60
qemu_xtensa_lx60_nommu_defconfig - Build for qemu_xtensa_lx60_nommu
make qemu_mips32r2el_malta_defconfig
make menuconfig #其他一些自定义的东西
BINARIES_DIR="${0%/*}/"
# shellcheck disable=SC2164
cd "${BINARIES_DIR}"
#mode_serial=false
mode_serial=true
mode_sys_qemu=false
tap_interface="tap" # 默认的TAP接口名称
tap_ip_host="192.168.100.1" # 宿主机的IP地址
tap_ip_guest="192.168.100.2" # 虚拟机的IP地址
while [ "$1" ]; do
case "$1" in
--serial-only|serial-only) mode_serial=true; shift;;
--use-system-qemu) mode_sys_qemu=true; shift;;
--tap-interface) tap_interface="$2"; shift 2;;
--use-tap) use_tap=true; shift;;
--) shift; break;;
*) echo "unknown option: $1" >&2; exit 1;;
esac
done
if ${mode_serial}; then
EXTRA_ARGS='-nographic'
else
EXTRA_ARGS='-serial stdio'
fi
if ! ${mode_sys_qemu}; then
export PATH="/home/lubuntu/buildroot/output/host/bin:${PATH}"
fi
if ${use_tap}; then
# 创建并配置TAP接口
sudo ip link delete "${tap_interface}" 2>/dev/null # 如果 TAP 接口已存在,先删除
sudo ip tuntap add dev "${tap_interface}" mode tap # 创建 TAP 接口
sudo ip addr add "${tap_ip_host}/24" dev "${tap_interface}" # 为 TAP 接口分配宿主机IP地址
sudo ip link set "${tap_interface}" up # 启用 TAP 接口
# 配置 QEMU 使用 TAP 网络
NET_CONFIG="-netdev tap,id=net0,ifname=${tap_interface},script=no,downscript=no -device pcnet,netdev=net0"
else
# 使用用户模式网络
NET_CONFIG="-net nic,model=pcnet -net user"
fi
exec qemu-system-mipsel -M malta
-kernel vmlinux
-drive file=rootfs.ext2,format=raw
-append "rootwait root=/dev/sda console=ttyS0 ip=${tap_ip_guest}::${tap_ip_host}:255.255.255.0::eth0:off"
${NET_CONFIG} ${EXTRA_ARGS} "$@"
可以扔给人工智能再优化一下,其实还是有问题不会自动配置IP可以每次启动用命令配临时IP
ip addr add 192.168.100.2/24 dev eth0 #模拟环境ip 192.168.100.2
ip link set eth0 up
也可以直接修改网络配置设置静态IP,修改
# cat /etc/network/interfaces
# interface file auto-generated by buildroot
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
pre-up /etc/network/nfs_check
wait-delay 15
hostname $(hostname)
为
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.100.2
netmask 255.255.255.0
gateway 192.168.100.1
dns-nameservers 8.8.8.8
这样启动就可以虚拟机与宿主机通信了,如果你物理机用Linux这样就可以了,下面是我这种菜鸟折腾Windows的,虚拟机套虚拟机心累啊{:1_909:} 。
-
Windows环境运行QEMU配置
@echo off
cd /d %~dp0
REM QEMU 路径(请根据实际路径修改)
set QEMU_EXE="D:Program Filesqemuqemu-system-mipsel.exe"
REM 镜像文件名
set KERNEL=vmlinux
set ROOTFS=rootfs.ext2
REM 网络参数
set TAP_NAME=TAP
set HOST_IP=192.168.100.1
set VM_IP=192.168.100.2
set NETMASK=255.255.255.0
REM 默认参数
set EXTRA_ARGS=-nographic
set NET_CONFIG=-net nic,model=pcnet -net user
REM 解析命令行参数(仅支持 --use-tap 和 --tap-interface)
:parse_args
if "%1"=="" goto run_qemu
if /i "%1"=="--use-tap" (
set NET_CONFIG=-netdev tap,id=net0,ifname=%TAP_NAME%,script=no,downscript=no -device pcnet,netdev=net0
)
if /i "%1"=="--tap-interface" (
set TAP_NAME=%2
set NET_CONFIG=-netdev tap,id=net0,ifname=%TAP_NAME%,script=no,downscript=no -device pcnet,netdev=net0
shift
)
if /i "%1"=="--serial-only" set EXTRA_ARGS=-nographic
if /i "%1"=="serial-only" set EXTRA_ARGS=-nographic
shift
goto parse_args
:run_qemu
%QEMU_EXE% -cpu 74Kf -M malta -kernel %KERNEL% -drive file=%ROOTFS%,format=raw ^
-append "rootwait root=/dev/sda console=ttyS0 ip=%VM_IP%::%HOST_IP%:%NETMASK%::eth0:off" ^
%NET_CONFIG% %EXTRA_ARGS% %*
注意这个参数-cpu 74Kf有时候要调一下。要让qemu虚拟机能访问互联网还要再改一下联网的物理网卡共享这里
# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 114.114.114.114
原文始发于微信公众号(吾爱破解论坛):IoT漏洞分析之模拟环境搭建
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论