从命令行启动KVM guest

从命令行启动KVM guest

一直习惯了用libvirt在图形界面下安装OS,刚才尝试了一下用命令行 创建、安装、运行 ubuntu OS。过程如下:

查看机器配置是否支持硬件虚拟化,以及安装kvm内核模块就不再叙述了。下边说一下启动虚拟机,安装系统的过程。

1、创建磁盘镜像:
kvm-img create test.img 4G
建议使用raw格式,raw格式的性能比qcow2的性能要好
创建一个可以达到20G的disk image。
It will only use the amount of space that it needs though.The -f qcow2 is the standard modern qemu image format.

xiaogw@R715:~/kvm-image$ kvm-img create test.img 4G
Formatting 'test.img', fmt=raw size=4294967296
xiaogw@R715:~/kvm-image$ ls -lth
total 8.1G
-rw-r--r-- 1 xiaogw xiaogw 4.0G 2012-09-20 11:40 test.img
-rw------- 1 root   root   8.0G 2012-09-20 11:35 ubuntu.img

2、启动虚拟机,安装系统
xiaogw@R715:~/kvm-image$ kvm -hda ./test.img -cdrom ../os_install_iso/ubuntu-8.04-desktop-i386.iso -m 512 -smp 2 -boot d

其中:
-smp :分配的cpu内核数
-boot d :-boot [a|c|d|n] boot on floppy (a), hard disk (c), CD-ROM (d), or network (n)
启动windows虚拟机,必须添加-localtime参数,否外使用utc时间。


3、系统安装完成,启动虚拟机:
xiaogw@R715:~/kvm-image$ kvm -hda ./test.img -m 512 -smp 2 -boot c


目前还是在本机上安装 虚拟机、操作系统。可以考虑远程安装,利用vnc。


4、关于网络
4.1、启动好的ubuntu OS可以连接网络,kvm默认使用《NAT网络》,guest获得一个10.0.2.x的地址,可以访问host服务器所在的LAN及subnet。虽然guest的IP为10.0.2.x,仍然可以通过ssh及samba访问host(或在网络上的host),而且可以访问internet。vpn客户端可能不能工作。
4.2、如果你希望guest以另外一个host出现在LAN上,对网络上的其他host可见。你需要是用《桥接网络》。
如果部署桥接的话,另外上网查询吧^^
4.3、关于将虚拟机的显示输出到VNC

注意:如果添加了-nographic,则不会启动vnc。
启动时添加参数: -vnc host-ip:1,password (或2,3….)

网上找的攻略,没有验证启可行性。
以下为启动windows服务器的例子,将host主机的3389端口映射到guest主机的3389端口,用于远程桌面连接。并开启vnc

mac=`printf ‘DE:AD:BE:EF:%02X:%02X\n’ $((RANDOM%256)) $((RANDOM%256))`
/usr/libexec/qemu-kvm \
-hda ./win2003.img \
-m 1024 \
-smp 2 \
-boot c \
-vnc host-ip:1,password \
-daemonize \
-net nic,macaddr=$mac \
-net user \
-redir tcp:3389::3389

5、关于qemu控制窗口切换
进入qemu的控制台,在鼠标聚焦到qemu界面时候,按住 Ctrl+Alt+2 进入控制台(将显示输出到vnc时,操作相同):

(qemu) change cdrom /usr/local/CentOS-5.6-x86_64/CentOS-5.6-x86_64-bin-2of8.iso
关于错误:”device not found”。可能是设备映射出错,解决:
(qemu) info block

(qemu) change ide1-cd0 iso文件、

ctrl+alt+1 返回

关于组合键:
Ctrl-Alt-f 全屏
Ctrl-Alt-n
n=1:目标系统显示
n=2:监视器
n=3:串口
在通常情况下,Qemu使用SDL来显示VGA输出,使用-nographic,禁止所有的图形输出,这样Qemu只是一个简单的命令行程序。模拟的串口将会重定向到命令行,所以我们依然可以在Qemu平台上使用串口命令来调试linux内核。
在启动时,如果我们使用了‘-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

猜你喜欢

转载自javakill.iteye.com/blog/1945041