qemu的启动参数用法

1.安装

查看支持的qemu指令

compgen -c | grep '^qemu-'

我的如下:

iot@research:~/Desktop/qemu/qemu-8.0.0$ compgen -c | grep '^qemu-'
qemu-armeb
qemu-system-s390x
qemu-microblazeel
qemu-hppa
qemu-nbd
qemu-xtensaeb
qemu-sparc
qemu-system-aarch64
qemu-edid
qemu-mips64
qemu-system-m68k
qemu-mips64el
qemu-ppc64le
qemu-microblaze
qemu-system-xtensa
qemu-xtensa
qemu-system-xtensaeb
qemu-mips
qemu-system-mips64el
qemu-system-sparc
qemu-mipsel
qemu-sparc32plus
qemu-system-alpha
qemu-sh4
qemu-system-arm
qemu-system-ppc64
qemu-io
qemu-arm
qemu-or1k
qemu-i386
qemu-system-i386
qemu-pr-helper
qemu-sh4eb
qemu-system-sh4
qemu-system-sh4eb
qemu-aarch64
qemu-riscv64
qemu-system-mips
qemu-system-sparc64
qemu-mipsn32el
qemu-system-mips64
qemu-s390x
qemu-x86_64
qemu-system-loongarch64
qemu-system-microblazeel
qemu-system-cris
qemu-alpha
qemu-ppc
qemu-mipsn32
qemu-system-nios2
qemu-system-ppc
qemu-nios2
qemu-hexagon
qemu-ga
qemu-system-mipsel
qemu-system-tricore
qemu-keymap
qemu-aarch64_be
qemu-system-or1k
qemu-system-rx
qemu-system-microblaze
qemu-system-avr
qemu-system-riscv64
qemu-system-hppa
qemu-ppc64
qemu-riscv32
qemu-storage-daemon
qemu-loongarch64
qemu-cris
qemu-img
qemu-sparc64
qemu-system-x86_64
qemu-m68k
qemu-system-riscv32
qemu-make-debian-root
qemu-debootstrap
qemu-sh4eb-static
qemu-armeb
qemu-s390x-static
qemu-i386-static
qemu-system-moxie
qemu-ppc64abi32
qemu-system-s390x
qemu-microblazeel
qemu-hppa
qemu-system-unicore32
qemu-nbd
qemu-system-ppcemb
qemu-mips64-static
qemu-sparc
qemu-system-aarch64
qemu-mips64
qemu-sparc32plus-static
qemu-system-m68k
qemu-mips-static
qemu-mips64el
qemu-ppc64le
qemu-microblaze
qemu-mipsn32-static
qemu-hppa-static
qemu-system-xtensa
qemu-system-xtensaeb
qemu-mips
qemu-system-mips64el
qemu-x86_64-static
qemu-system-sparc
qemu-mipsel
qemu-arm-static
qemu-microblazeel-static
qemu-sparc32plus
qemu-system-alpha
qemu-armeb-static
qemu-sh4
qemu-ppc64-static
qemu-microblaze-static
qemu-cris-static
qemu-sh4-static
qemu-system-arm
qemu-system-ppc64
qemu-io
qemu-arm
qemu-or1k
qemu-i386
qemu-or1k-static
qemu-system-i386
qemu-sh4eb
qemu-system-sh4
qemu-system-sh4eb
qemu-aarch64
qemu-system-mips
qemu-system-sparc64
qemu-mipsn32el
qemu-sparc-static
qemu-system-mips64
qemu-s390x
qemu-system-ppc64le
qemu-x86_64
qemu-system-microblazeel
qemu-system-cris
qemu-sparc64-static
qemu-alpha
qemu-system-lm32
qemu-ppc
qemu-mipsn32el-static
qemu-alpha-static
qemu-ppc-static
qemu-m68k-static
qemu-mipsn32
qemu-system-nios2
qemu-system-ppc
qemu-aarch64-static
qemu-mips64el-static
qemu-nios2
qemu-system-mipsel
qemu-system-tricore
qemu-nios2-static
qemu-system-or1k
qemu-ppc64abi32-static
qemu-system-microblaze
qemu-ppc64le-static
qemu-ppc64
qemu-tilegx
qemu-mipsel-static
qemu-cris
qemu-img
qemu-sparc64
qemu-system-x86_64
qemu-m68k
qemu-tilegx-static

2.user模式

(arm架构为例)

1.直接运行可执行文件

1.静态链接的可执行文

qemu-arm-static hello_arm_static

2.动态链接可执行文件

1.基于设备型号使用(树莓派等)

  1. machine:设备型号virt, raspi2, raspi3
  2. firmware_file:固件的文件路径
qemu-system-arm -M <machine> -bios <firmware_file>

2.与chroot使用

1.准备对应的交叉编译工具链

sudo apt-get install gcc-arm-linux-gnueabi

2.准备根文件系统

例如:使用工具如Debootstrap来创建一个轻量级的根文件系统

sudo debootstrap --arch=armhf buster /path/to/rootfs http://deb.debian.org/debian

3.挂载根文件系统

将根文件系统挂载到一个目录

sudo mount /path/to/rootfs /mnt/rootfs

4.切换根到挂载的根文件系统

使用chroot命令切换根到挂载的根文件系统

sudo chroot /mnt/rootfs

5.运行文件

qemu-arm /path/to/target/executable

3.示例(基于Tenda 路由器栈溢出复现(CVE-2018-18708))

1.切换到当前的固件解压目录

cd _US_AC15V1.0BR_V15.03.05.19_multi_TD01.bin.extracted/
cd squashfs-root/

2.安装虚拟化套件

sudo apt install qemu-user-static

3.将套件复制到当前目录下

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

4.虚拟环境中运行

sudo chroot ./ ./qemu-arm-static ./bin/httpd

3.system模式

1.参数

  1. -cpu <type>:指定模拟的CPU类型。例如,可以使用-cpu help来列出支持的CPU类型
  2. -m <size>:指定虚拟机的内存大小。例如,-m 512M表示分配512MB的内存给虚拟机
  3. -smp <cores>:指定虚拟机的CPU核心数量
  4. -drive <option>[,option[,...]]:定义虚拟机的驱动器。可以用来指定硬盘镜像、光盘镜像等
  5. -cdrom <iso_image>:指定虚拟机的光盘镜像文件
  6. -boot <order>:指定虚拟机启动顺序。例如,-boot c表示从硬盘启动,-boot d表示从光盘启动
  7. -net <nic_type>:指定虚拟网卡类型。常用的类型包括usertapbridge
  8. -snapshot:创建一个快照,允许你在虚拟机关闭后恢复到先前的状态
  9. -usb:启用USB设备支持
  10. -vnc <display>:启用VNC服务器,并指定VNC的显示端口
  11. -nographic:以无图形界面模式启动QEMU,只使用控制台进行操作
  12. -enable-kvm:启用KVM硬件加速(仅对支持的系统有效)

2.直接加载镜像

允许你启动一个虚拟机并直接从一个镜像文件(通常是光盘镜像)中引导操作系统,而无需使用硬盘镜像

  1. -boot <boot_device>
    • 这个参数用于指定虚拟机启动时的设备
    • <boot_device> 可以是以下之一:
      • a:表示从软盘启动
      • c:表示从硬盘启动
      • d:表示从光盘启动
      • n:表示不启动任何设备
      例如,-boot d表示虚拟机将尝试从光盘镜像中引导操作系统
  2. -cdrom <iso_image>
    • 这个参数用于指定光盘镜像文件
    • <iso_image> 是一个ISO格式的镜像文件,包含了操作系统的安装程序或者Live系统
    • 例如,-cdrom ubuntu.iso将会加载 ubuntu.iso 文件作为虚拟机的光盘设备
  3. -hda <disk_image>
    • 这个参数用于指定硬盘镜像文件
    • <disk_image> 是一个硬盘镜像文件,包含了安装有操作系统的虚拟硬盘例如,-hda disk.img将会加载 disk.img 文件作为虚拟机的主硬盘设备
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇