qemu详细教程,qemu入门
Qemu用户手册
快速启动
下载并解压缩linux映像(linux.img)后,我们可以通过输入以下命令来启动它:
qemu linux.img
这将启动Linux并向我们显示一个提示。
转移
用法:QEMU[选项][磁盘映像]
Disk_image是IDE硬盘的硬盘映像。
常规选项:
-M机器
选中的机器(我们可以输入-M?提及模拟机器列表)
-fda文件
-fdb文件
使用文件作为软盘映像。我们也可以通过使用/dev/fd0作为文件名来使用主机软盘。
-hda文件
-hdb文件
-hdc文件
-硬盘文件
使用文件作为硬盘0,1,2,3的镜像。
-cdrom文件
使用文件作为光盘镜像(但是我们不能同时使用-hdc 和-cdrom )。我们可以通过使用“/dev/cdrom”作为文件名来使用主机的光盘。
-boot
通过软盘(A)、硬盘(C)或光盘(d)。默认情况下,由硬盘启动。
-快照
写入临时文件,而不是磁盘映像文件。在这种情况下,我们使用的磁盘映像文件不会被写回。但是,我们可以通过按C-A S来强制写回磁盘映像文件.
-米格斯
将虚拟内存大小设置为megs M bytes,默认为128M。
-smp n
模拟一个有N个CPU的SMP系统,最多可以支持255个CPU。
-无图形
正常情况下,Qemu使用SDL来显示VGA输出。使用这个选项,我们可以禁用所有图形输出,所以Qemu只是一个简单的命令行程序。模拟的串行端口将被重定向到命令行。因此,我们仍然可以使用串口命令在Qemu平台上调试Linux内核。
-k语言
使用键盘布局语言(例如,fr是法语)。这个选项只能在很难得到PC键盘的时候使用。我们不需要在PC/Linux或PC/Windows主机上使用这个选项。可用的布局如下:
你从法国回来了吗
从英国到法国是很少的
我们将永远在一起
默认为en-us。
-音频帮助
该选项将显示声音子系统的帮助:驱动程序列表和可调用参数。
-声音硬件卡1、卡2.或-soundhw all
允许声音并选择声音硬件。使用?您可以列出所有可用的声音硬件。
qemu -soundhw sb16,adlib hda
qemu -soundhw es1370 hda
qemu -soundhw all hda
qemu -soundhw?
-当地时间
将时钟设置为本地时间(默认为UTC时间)。此选项需要MS-DOS或Windows上的正确日期。
-全屏
以全屏模式启动。
-pidfile文件
将Qemu的进程PID保存在文件中。如果我们从一个脚本开始,这个选项非常有用。
-win2k-hack
安装Windows 2000时,可以使用该选项来避免磁盘错误。在安装Windows 2000的时候,我们已经不需要这个选项了(这个选项拖慢了IDE的传输速度)。
USB选项:
-usb
允许USB驱动器(将很快成为默认选项)
-USB设备设备名称
添加USB设备名称。我们可以查看监视器命令usb_add以了解更多详细信息。
网络选项:
-net nic[,vlan=n][,macaddr=addr]
创建一个新的网卡,并将其连接到VLAN n(默认情况下,n=0)。在PC上,当前的网卡是NE2000。作为可选项目,可以更改MAC地址。如果未指定-net选项,将创建单个NIC。
-网络用户[,vlan=n]
使用用户模式的网络堆栈,因此不需要管理员权限就可以运行它。如果不指定-net选项,这将是默认选项。
-net tap[,vlan=n][,fd=h][,ifname=name][,script=file]
将TAP网络接口名称连接到VLAN n,并使用网络配置脚本文件进行配置。默认的网络配置脚本是/etc/qemu-ifup。如果未指定名称OS,OS将自动指定一个. fd=h,用于指定开放TAP主机接口的句柄。例如:
qemu linux.img -net nic -net tap
下面是一个更复杂的例子(两个网卡,每个都连接到一个TAP设备):
qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 /
-net nic,vlan=1 -net tap,vlan=1,ifname=tap1
-net socket[,vlan=n][,fd=h][,listen=[host]:port][,connect=host:port]
使用TCP套接字连接VLAN和另一个远程Qemu虚拟机的VLAN。如果指定了listen,QEMU将在端口port monitor (host是可选的)上连接请求,通过使用listen选项,可以使用connect连接另一个Qemu实例。fd=h指定一个开放的TCP套接字。例如:
#启动第一个QEMU实例
qemu linux.img -net nic,MAC addr=52:54:00:12:34:56-net socket,listen=:1234
#将此实例的VLAN 0连接到第一个实例的VLAN 0
qemu linux.img -net nic,MAC addr=52:54:00:12:34:57-net socket,connect=127.0.0.1:1234
-net套接字[,vlan=n][,fd=h][,mcast=maddr:port]
创建一个VLAN n,使用UDP组播socket与其他QEMU虚拟机共享,特别是对于每个使用组播地址和端口使用同一总线的QEMU。
这里我们要注意以下几点:
几个QEMU可以运行在不同的主机上,但是使用相同的总线(这里假设为这些主机设置了正确的多路访问通信)。
2 mcast支持与用户模式Linux兼容。
使用fd=h来指定一个开放的UDP多播windows套接字。
例如:
#启动一个QEMU实例
qemu linux.img -net nic,MAC addr=52:54:00:12:34:56-net socket,mcast=230.0.0.1:1234
#在同一“总线”上启动另一个QEMU实例
qemu linux.img -net nic,MAC addr=52:54:00:12:34:57-net socket,mcast=230.0.0.1:1234
#在同一“总线”上启动另一个QEMU实例
qemu linux.img -net nic,MAC addr=52:54:00:12:34:58-net socket,mcast=230.0.0.1:1234
以下是用户模式Linux的一个示例:
#启动QEMU实例(注意选择的mcast地址是UML的默认地址)
qemu linux.img -net nic,MAC addr=52:54:00:12:34:56-net socket,mcast=239.192.168.1:1102
#启动UML
/path/to/Linux ubd 0=/path/to/root _ fs eth 0=mcast
-净无
表示不需要配置任何网络设备。如果未指定-net选项,它将用于覆盖活动的默认配置。
-tftp前缀
使用用户模式网络堆栈时,激活内置的TFTP服务器。使用TFTP客户端将所有以前缀开头的文件从主机下载到本地。本地TFTP客户端必须以二进制模式配置(使用Unix的TFTP客户端的bin命令)。客户端上的主机IP地址通常是10.0.2.2。
-中小型企业目录
使用用户模式网络堆栈时,激活内置SMB服务器,以便Windows系统可以透明地访问主机的dir目录中的文件。在客户端的Windows系统中,下面一行:
服务器
它必须添加到文件C:/Windows/LMHosts(对于Windows 9X/ME)或C:/win NT/system32/drivers/etc/LMHosts(对于Windows NT/2000)中。然后就可以用//smbserver/qemu的方式访问dir了。这里要注意的是,SAMBA服务器必须安装在主机系统中。
-redir [tcpudp]:主机端口:[来宾主机]:来宾端口
使用用户模式网格堆栈时,将连接到主机端口的TCP或UDP连接重定向到来宾端口。如果未指定客户端端口,则其值为10.0.2.15(默认地址由内置DHCP服务器指定)。例如:要将X11连接从屏幕1重定向到客户端屏幕0,我们可以使用以下方法:
#在主机上
qemu -redir tcp:6001:6000 [.]
#该主机xterm应在来宾X11服务器中打开
xterm-显示:1
要将telnet连接从主机端口5555重定向到guest虚拟机上的telnet端口,请使用以下命令:
#在主机上
qemu -redir tcp:5555:23 [.]
telnet本地主机5555
然后,当我们在主机telnet localhost 5555上使用它时,我们连接到客户机的telnet服务器。
Linux启动相关:
当我们使用这些选项时,我们可以使用一个指定的内核,而无需将其安装在磁盘映像中。这对于简单地测试各种内核非常有用。
`-内核bzImage
使用bzImage作为内核映像。
`-追加命令行
使用cmdline作为内核的命令行。
-initrd文件
使用文件作为初始ram磁盘。
调试选项:
`-串行开发
将虚拟字符串重定向到主机的设备dev。可用设备如下:
风险投资
虚拟终端
巴拿马城(Panama City)
(Linux)伪TTY(自动分配一个新的TTY)
空
空设备
/dev/XXX
(Linux)使用主机的tty。例如,“/dev/ttys0”。主机的串口参数通过仿真设置。
/dev/parportN
(Linux)使用主机的并行端口n。目前,只能使用SPP的并行端口功能。
文件:文件名
将输出写入文件filename。没有可读的字符。
标准输入输出
(Unix)标准输入/输出
管道:文件名
(Unix)已知管道文件名
在图形模式下,默认设备是vc,而在非图形模式下,默认设备是stdio。该选项可多次使用,最多可模拟4个串行端口。
“并行开发”
将虚拟并行端口重定向到主机设备dev(与串行端口相同的设备)。在Linux主机上,`/dev/parportN 可以用来使用连接到相应并行端口的硬件设备。此选项可多次使用,最多可模拟3个并行端口。
`-监控开发
将查看器重定向到主机设备dev(与串行端口相同的设备)。图形模式下的默认设备是vc,而非图形模式下是stdio。
-s
等待gdb连接到1234端口。
`-p端口
更改gdb连接端口。
`-S
CPU在启动时不启动(我们必须在监视器中输入‘C ’)
-迪
将日志输出到/tmp/qemu.log。
`-hdachs c,h,s,[,t]
使硬盘物理参数为0 (1=c=16383,1=h=16,1=s=63),选择强制BIOS转换模式(t=none,lba或auto)。通常QEMU可以检测这些参数。这个选项对于旧的MS-DOS磁盘映像非常有用。
`-标准vga
模拟带有Bochs VBE扩展的标准VGA显卡(默认为Cirrus Logic GD5446 PCI VGA)
`-loadvm文件
从保存的状态开始。
组合键
在图形模拟中,我们可以使用以下组合键:
Ctrl-Alt-f
全屏幕
Ctrl-Alt-n
切换虚拟终端“n”。标准端子映射如下:
1目标系统显示
2视觉设备
3个串行端口
Ctrl-Alt
抓住鼠标和键盘。
在虚拟控制台中,我们可以使用Ctrl-Up、Ctrl-Down、Ctrl-PageUp和Ctrl-PageDown在屏幕上移动。
在模拟过程中,如果我们使用`-nographic 选项,我们可以使用Ctrl-a h来获得终端命令:
Ctrl-a h
打印帮助信息
Ctrl-a x
退出模拟
Ctrl-a s
将磁盘信息保存到文件中(如果是-快照)
Ctrl-a b
发出中断。
Ctrl-a c
在控制台和显示器之间切换。
Ctrl-a Ctrl-a
发送Ctrl-a
磁盘映像
从0.6.1开始,QEMU支持多种磁盘映像格式,包括增长磁盘映像、压缩和加密磁盘映像。
我们可以使用以下命令创建磁盘映像:
QEMU-img create my image . img my size
这里myimage.img是磁盘镜像的文件名,mysize是k表示的大小,我们可以用m前缀来表示大小,或者用g前缀来表示大小。
qemu-img的调用方法:
方法:QEMU-img命令[命令选项]
可以支持以下一些命令:
`创建[-e] [-b基本映像] [-f fmt]文件名[大小]
`提交[-f fmt]文件名
` convert [-c] [-e] [-f fmt]文件名[-O output_fmt]输出文件名
` info [-f fmt]文件名
命令参数
文件名
磁盘映像文件名。
基本图像
只读磁盘映像可以作为拷贝写入映像的基础。写入时拷贝映像仅存储修改过的数据。
滤波多音
磁盘格式。大多数情况下可以自动检测到。可以支持以下格式:
生的
原始磁盘格式(默认)。这种格式简单,易于移植到其他模拟器上。如果我们的文件系统支持漏洞(比如Linux上的ext2或ext3),那么只有写入的部分会保持空白。使用qemu-img info获取映像的实际大小,或者在Unix/Linux上使用ls -ls。
格式
QEMU图像格式。最常见的格式。你可以通过使用它得到一个更小的图像(如果我们的文件系统不支持孔,例如,在Windows上,这是相当有用的)。可以选择基于zlib的AES加密或压缩。
母牛
写映像格式的用户模式的Linux副本。它在QEMU中被用作一种增强的图像格式。此选项只是为了与以前的版本兼容,不能在Win32上使用。
虚拟机磁盘文件
VMware 3或4兼容的图像格式。
砰声
Linux压缩的圆形镜像,直接复用压缩的光盘镜像。
大小
k表示的磁盘镜像的大小,同时可以支持M或G作为前缀。
输出文件名
目标磁盘映像文件名
输出_fmt
目标格式
-丙
表示目标图像必须压缩(仅限qcow格式)
-e
表示目标映像必须加密(仅采用qcow格式)