QEMU简单使用
Qemu使用手册
快速启动 在我们下载并解压linux镜像(linux.img)以后,我们可以输入下面的命令来启动: qemu linux.img 这样Linux就会启动并会展示给我们一个提示. 调用 用法:qemu [option] [disk_image] disk_image是代表IDE的硬盘的硬盘镜像. 一般选项: -M machine 选择模拟的机器(我们可以输入-M?提到一个模拟的机器列表) -fda file -fdb file 使用file作为软盘镜像.我们也可以通过将/dev/fd0作为文件名来使用主机软盘. -hda file -hdb file -hdc file -hdd file 使用file作为硬盘0,1,2,3的镜像. -cdrom file 使用文件作为CD-ROM镜像(但是我们不可以同时使用'-hdc'和'-cdrom').我们可以通过使用'/dev/cdrom'作为文件名来使用主机的CD-ROM. -boot [a|c|d] 由软盘(a),硬盘(c)或是CD-ROM(d).在默认的情况下由硬盘启动. -snapshot 写入临时文件而不是写入磁盘镜像文件.在这样的情况下,并没有写回我们所使用的磁盘镜像文件.然而我们却可以通过按下C-a s来强制写回磁盘镜像文件. -m megs 设置虚拟内存尺寸为megs M字节.在默认的情况下为128M. -smp n 模拟一个有n个CPU的SMP系统.为PC机为目标,最多可以支持255个CPU. -nographic 在通常情况下,Qemu使用SDL来显示VGA输出.使用这个选项,我们可以禁止所有的图形输出,这样Qemu只是一个简单的命令行程序.模拟的串口将会重定向到命令行.所以,我们仍然可以在Qemu平台上使用串口命令来调试Linux内核. -k language 使用键盘布局语言(例如fr为法语).这个选项只有在不易得到PC键盘的情况下使用.我们在PC/Linux或是PC/Windows主机不需要使用这个选项.可用的布局如下: ar de-ch es fo fr-ca hu ja mk no pt-br sv da en-gb et fr fr-ch is lt nl pl ru th de en-us fi fr-be hr it lv nl-be pt sl tr 默认的为en-us -audio-help 这个选项将会显示声音子系统的帮助:驱动列表以及可调用的参数. -soundhw card1,card2 .... or -soundhw all 允许声音并选择声音硬件.使用?可以列出所有可用的声音硬件 qemu -soundhw sb16,adlib hda qemu -soundhw es1370 hda qemu -soundhw all hda qemu -soundhw ? -localtime 设置时钟为本地时间(默认为UTC时间).如果在MS-DOS或是Windows上这个选项则需要正确的日期. -full-screen 以全屏方式启动. -pidfile file 在file文件中存许Qemu的进程PID.如果我们是由脚本启动的,这个选项是相当有用的. -win2k-hack 当安装Windows 2000时可以使用这个选项来避免磁盘错误.在安装上Windows 2000系统,我们就不再需要这个选项(这个选项降低IDE的传输速度). USB选项: -usb 允许USB驱动(很快就将成为默认的选项) -usbdevice devname 添加USB设备名.我们可以查看监视器命令usb_add来得到更为详细的信息. 网络选项: -net nic[,vlan=n][,macaddr=addr] 创建一个新的网卡并与VLAN n(在默认的情况下n=0)进行连接.在PC机上,NIC当前为NE2000.作为可选项的项目,MAC地址可以进行改变.如果没有指定-net选项,则会创建一个单一的NIC. -net user[,vlan=n] 使用用户模式网络堆栈,这样就不需要管理员权限来运行.如果没有指定-net选项,这将是默认的情况. -net tap[,vlan=n][,fd=h][,ifname=name][,script=file] 将TAP网络接口name与VLAN n进行连接,并使用网络配置脚本file进行配置.默认的网络配置脚本为/etc/qemu-ifup.如果没有指定name,OS将会自动指定一个.fd=h可以用来指定一个已经打开的TAP主机接口的句柄.例如: qemu linux.img -net nic -net tap 下面的是一个更为复杂的例子(两个NIC,每一个连接到一个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 socket 将VLAN n与远程的另一个Qemu虚拟机的VLAN进行连接.如果指定了listen,Qemu将在port端口监听连入请求(host是可选的), connect可以用来使用listen选项与另一个Qemu实例进行连接.fd=h指定了一个已经打开的TCP socket.例如: # launch a first QEMU instance qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,listen=:1234 # connect the VLAN 0 of this instance to the VLAN 0 of the first instance qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net socket,connect=127.0.0.1:1234 -net socket[,vlan=n][,fd=h][,mcast=maddr:port] 创建一个VLAN n,并使用UDP 多址通信套掊口与其他的QEMU虚拟机进行共享,尤其是对于每一个使用多址通信地址和端口的QEMU使用同一个总线. 在这里我们要注意以下几点: 1 几个QEMU可以运行在不同的主机上但却使用同一个总线(在这里假设为这些主机设置了正确的多址通信) 2 mcast支持是与用户模式Linux相兼容的. 3 使用fd=h指定一个已经打开的UDP 多址通信套接口. 例如: # launch one QEMU instance qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,mcast=230.0.0.1:1234 # launch another QEMU instance on same "bus" qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net socket,mcast=230.0.0.1:1234 # launch yet another QEMU instance on same "bus" qemu linux.img -net nic,macaddr=52:54:00:12:34:58 -net socket,mcast=230.0.0.1:1234 下面的为用户模式Linux的例子: # launch QEMU instance (note mcast address selected is UML's default) qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,mcast=239.192.168.1:1102 # launch UML /path/to/linux ubd0=/path/to/root_fs eth0=mcast -net none -tftp prefix To redirect telnet connections from host port 5555 to telnet port on the guest, use the following: # on the host |