热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

KVM虚拟机和QEMU的安装使用

KVM安装RHEL/Fedora/CentOSyuminstallbridge-utilskvmbridge-utils是网卡桥接工具,示例1:Redhat系统KVM创建磁盘#qemu-imgcreate-fqcow2turbo-10.5.5-rc2.img20GFormattingturbo-10.5.5-rc2.i
KVM 安装 RHEL/Fedora/CentOS
yum install bridge-utils kvm

bridge-utils是网卡桥接工具,

示例1:Redhat系统KVM 创建磁盘
# qemu-img create -f qcow2 turbo-10.5.5-rc2.img 20G
Formatting 'turbo-10.5.5-rc2.img', fmt=qcow2, size=20971520 kB
# file turbo-10.5.5-rc2.img
turbo-10.5.5-rc2.img: QEMU Copy-On-Write disk image version 2, size 5 + 0
配置桥接

配置 /etc/sysconfig/network-scripts 下面的网络脚本

# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
OnBOOT=yes
BOOTPROTO=static
IPADDR=172.16.70.30
NETMASK=255.255.252.0
GATEWAY=172.16.68.1
TYPE=Bridge
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# 3Com Corporation 3c905B 100BaseTX [Cyclone]
DEVICE=eth0
#BOOTPROTO=dhcp
#HWADDR=00:01:02:8C:50:09
OnBOOT=yes
BRIDGE=br0

增加一个桥接网络接口,并把刚才配置的eth0添加到桥接口

brctl addbr br0      # 创建一个桥接口
brctl addif br0 eth0 # 添加eth0到br0,重要

使用一个下面的脚本:

# cat /etc/init.d/qemu-ifup
#!/bin/bash
switch=br0
if [ -n "$1"
 ];then
        /sbin/ip link set $1 up
        sleep 0.5s
        /usr/sbin/brctl addif $switch $1
        exit 0
else
        echo "Error: no interface specified"
        exit 1
fi
使用桥接网卡

可以使用桥接网卡启动qemu-kvm,并使用GTES10.5.5的两个文件通过 NFS安装系统:

# qemu-kvm -m 512 -hda turbo-10.5.5-rc2.img -kernel vmlinuz /
-initrd initrd.img -net nic -net tap,script=/etc/init.d/qemu-ifup --daemonize

也可以使用iso安装,这样对于多张iso发行版的linux需要在qemu的控制 台换盘:

# qemu-kvm -m 512 -hda turbo-10.5.5-rc2.img -cdrom 你的iso路径 /
-net nic -net tap,script=/etc/init.d/qemu-ifup -boot d --daemonize

进入qemu的控制台,在鼠标聚焦到qemu界面时候,按住 Ctrl+Alt+2 进 入控制台:

(qemu) change cdrom 你的另外一张iso

上面命令如果提示:"device not found"。可能是设备映射出错,可以这样:

(qemu) info block
...
(qemu) change ide1-cd0 iso文件
QEMU常见使用 使用vnc
# qemu-kvm -m 512 -hda xp.img -net nic,macaddr=00:00:11:33:02:02 /
         -net tap,ifname=tap2,script=/etc/init.d/qemu-ifup /
         -localtime -vnc 172.16.70.30:2 --daemonize

上面让kvm虚拟机在后台运行,并启动vnc服务器,这样我们可以用vnc客 户端链接172.16.70.30:5092这个地址。

QEMU选项: 一般选项
-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主机不需要使用这个 选项.默认的为en-us,可用的布局如下:
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
-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使用同一 个总线. 在这里我们要注意以下几点:

几个QEMU可以运行在不同的主机上但却使用同一个总线(在这里假设 为这些主机设置了正确的多址通信)

mcast支持是与用户模式Linux相兼容的.

使用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
表明没有网络设备需要进行配置.如果没有指定-net选项,则会用来覆 盖活跃的默认配置.
-tftp prefix
当使用用户模式网络堆栈,激活一个内置的TFTP服务器.所有的以 prefix开始的文件将会使用一个TFTP客户端从主机下载到本地.在本 地的TFTP客户端必须以二进制模式进行配置(使用Unix的TFTP客户端 的bin命令).在客户机上的主机IP地址如通常的10.0.2.2.
-smb dir
-redir [tcp|udp]:host-port:[guest-host]:guest-port
当使用用户模式网格栈,将连接到主机端口host-port的TCP或是UDP 连接重定向到客户机端口guest-port上。如果没有指定客户机端口, 他的值为10.0.2.15(由内建的DHCP服务器指定默认地址)。例如: 要重定向从screen 1到客户机screen 0的X11连接,我们可以使用下 面的方法:
# on the host
qemu -redir tcp:6001::6000 [...]
# this host xterm should open in the guest X11 server
xterm -display :1
To redirect telnet connections from host port 5555 to telnet port on
the guest, use the following:
# on the host
qemu -redir tcp:5555::23 [...]
telnet localhost 5555

然后当我们在主机telnet localhost 5555上使用时,我们连接到了
客户机的telnet服务器上。

Linux启动选项

当我们使用这些选项时,我们可以使用一个指定的内核,而没有将他
安装在磁盘镜像中。这对于简单的测试各种内核是相当有用的。

`-kernel bzImage'
使用bzImage作为内核映像。
`-append cmdline'
使用cmdline作为内核的命令行。
`-initrd file'
使用file作为初始的ram磁盘。
调试选项
`-serial dev'
重定向虚拟串到主机的设备dev。可用的设备如下:
vc
虚拟终端
pty
(Linux)伪TTY(自动分配一个新的TTY)
null
空设备
/dev/XXX"
(Linux)使用主机的tty。例如,'/dev/ttyS0'。主机的串口参数通过模拟进行设置。
/dev/parportN
(Linux)使用主机的并口N。当前只可以使用SPP的并口特征。
file:filename
将输出写入到文件filename中。没有字符可读。
stdio
(Unix)标准输入/输出
pipe:filename
(Unix)有名管道filename

在图形模式下的默认设备为vc,而在非图形模式下为stdio.这个选项
可以被多次使用,最多可以模拟4个串口。


'-parallel dev'

重定向虚拟并口到主机的设备dev(与串口相同的设备)。在Linux主 机上,`/dev/parportN'可以被用来使用与相应的并口相连的硬件设 备。这个选项可以使用多次,最多可以模拟3个并口。

`-monitor dev'

重定向临视器到主机的设备dev(与串口相同的设备)。在图形模式 下的默认设备为vc,而在非图形模式下为stdio。

'-s'
等待gdb连接到端口1234.
`-p port'
改变gdb连接端口。
`-S'
在启动时并不启动CPU(我们必须在监视器中输入'c')
'-d'
输出日志到/tmp/qemu.log
`-hdachs c,h,s,[,t]'
强制硬盘0的物理参数(1 <= c <= 16383, 1 <= h <= 16, 1 <= s <=63),并且可以选择强制BIOS的转换模式(t=none, lba or auto).通 常QEMU可以检测这些参数.这个选项对于老的MS-DOS磁盘映像是相当 有用的.
`-std-vga'
模拟一个Bochs VBE扩展的标准VGA显卡(默认情况下为Cirrus Logic GD5446 PCI VGA)
`-loadvm file'
从一个保存状态启动.
组合键

在图形模拟时,我们可以使用下面的这些组合键:

Ctrl-Alt-f
全屏
Ctrl-Alt-n
切换虚拟终端'n'.标准的终端映射如下:

n=1 : 目标系统显示

n=2 : 临视器

n=3 : 串口

Ctrl-Alt
抓取鼠标和键盘

在虚拟控制台中,我们可以使用Ctrl-Up, Ctrl-Down, Ctrl-PageUp 和 Ctrl-PageDown在屏幕中进行移动.

在模拟时,如果我们使用`-nographic'选项,我们可以使用Ctrl-a h来得到终端命令:

Ctrl-a h
打印帮助信息
Ctrl-a x
退出模拟
Ctrl-a s
将磁盘信息保存入文件(如果为-snapshot)
Ctrl-a b
发出中断
Ctrl-a c
在控制台与监视器进行切换
Ctrl-a Ctrl-a
发送Ctrl-a
磁盘映像

从0.6.1起,QEMU支持多种磁盘映像格式,包括增长的磁盘映像,压缩与加 密的磁盘映像.

我们可以用下面的命令来创建一个磁盘映像:

qemu-img create myimage.img mysize

这里myimage.img是磁盘映像的文件名,而mysize是以K表示的尺寸.我们 可以使用M前缀来使用M表示尺寸或是G作为前缀使用G表示尺寸.

qemu-img选项

可以支持下面的一些命令:

`create [-e] [-b base_image] [-f fmt] filename [size]'
`commit [-f fmt] filename'
`convert [-c] [-e] [-f fmt] filename [-O output_fmt] output_filename'
`info [-f fmt] filename

命令参数

filename
磁盘映像文件名.
base_image
只读的磁盘映像,可以作为拷贝到写映像的基础.写映像 上的拷贝只存储修改的数据.
fmt
磁盘映像格式.在大多数情况下可以自动检测.可以支持下面的格式:

raw

raw 磁盘格式(默认).这种格式有简单并且易于移植到其他模拟器的 优点.如果我们的文件系统支持holes(例如在Linux上的ext2或是 ext3),然后只有写入的部分保持空白.使用qemu-img info来得到映 像使用的实际的大小或是在Unix/Linux上使用 ls -ls.

qcow

QEMU映像格式.最通用的格式.使用他可以获得较小的映像(如果我们 的文件系统不支持holes,例如在Windows上,这是相当有用的),可以 选用AES加密或是基于zlib的压缩.

cow

在写映像格式上的用户模式的Linux拷贝.在QEMU中作为增长的映像 格式使用.这个选项只是为了与以前版本的兼容,并不能在Win32上使 用.

vmdk

VMware 3 或是 4 兼容的映像格式.

cloop

Linux压缩的循环映像,重用直接压缩的CD-ROM映像.

size

以K表示的磁盘映像的尺寸.同时可以支持M或是G作为前缀.

output_filename

目的磁盘映像文件名

output_fmt

目标格式

-c

表明目标映像必须是压缩的(只是qcow格式)

-e

表明目标映像必须是加密的(只是qcow格式)


推荐阅读
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • Linux 防火墙与端口管理必备命令
    在使用 Linux 系统进行服务部署和问题排查时,防火墙和端口管理是不可或缺的操作。本文将详细介绍如何查看防火墙状态、端口占用情况,以及如何开放和关闭端口,帮助初学者更好地掌握这些技能。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 如何在Mozilla Firefox中调整GIF动画的循环次数
    本文介绍了如何通过调整Mozilla Firefox的高级设置来控制GIF动画的播放次数,帮助用户根据个人喜好自定义浏览体验。 ... [详细]
  • 尽管Medium是一个优秀的发布平台,但在其之外拥有自己的博客仍然非常重要。这不仅提供了另一个与读者互动的渠道,还能确保您的内容安全。本文将介绍如何使用Bash脚本将Medium文章迁移到个人博客。 ... [详细]
  • Linux bash 命令行下实现可视化文件或文件夹浏览
    Linuxbash命令行下实现可视化文件或文件夹浏览  有时候部署环境,需要配置文件路径或者载入相应的配置文件。这种情况下,如果用传统的手动修改配置的方式配置,会比较容易出意外(比 ... [详细]
  • LDAP服务器配置与管理
    本文介绍如何通过安装和配置SSSD服务来统一管理用户账户信息,并实现其他系统的登录调用。通过图形化交互界面配置LDAP服务器,确保用户账户信息的集中管理和安全访问。 ... [详细]
  • 如何在虚拟机中实现Linux与Windows主机之间的文件夹共享
    为了在虚拟机中实现Linux与Windows主机之间的文件夹共享,首先需要确保Linux系统已安装VMware Tools。如果尚未安装,可以通过虚拟机软件提供的“安装VMware Tools”选项进行安装。安装完成后,通过配置共享文件夹设置,即可实现主机与虚拟机之间的文件互传。此外,建议检查虚拟机网络设置,确保网络连接正常,以提高文件传输的稳定性和速度。 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
author-avatar
手机用户2502870105
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有