kvm,我跟你没完——Centos7下编译并安装qemu

由于使用yum安装qemu安装之后好像没有qemu-system-x86_64这个命令,但是我就偏偏不想用virt-install,所以留给我的只有一条路,编译qemu。从此,走上了一条不归路

第一步:获取qemu源码

sudo yum install git

    这一步是安装git,如果没有git这个命令就需要安装,如果之前安装过git可以跳过这一步

sudo git clone git://git.qemu.org/qemu.git

第二步:准备编译环境

sudo yum install gzlib-devel glib2-devel pixman-devel gcc

    由于编译需要zlib-devel.x86_64  glib2-devel.x86_64 pixman-devel.x86_64这三个软件(由于我的系统是64位所以后缀是x86_64,如果不确定系统可以去除.x86_64这部分就可以自动匹配安装),以及cc命令所需要的包gcc

第三步:配置生成编译文件MakeFile

cd /home/feng/qemu

    先进入刚才下载好的源码文件夹中,源码是刚才第一步下载的

sudo ./configure

第四步:编译源码

sudo make

第五步:安装源码

sudo make install

特别注意,从三步进入源码包文件夹后,第三步的第二个命令和第四步,第五步都必须在源码包文件夹里执行

由于各个系统内置的软件不同,可能在第三步的生成编译文件这一步会报错,可能是提示说没有make命令等,这样的话还需要安装autoconf automake libtool这三个软件中的一个或多个,安装命令也很简单

sudo yum install autoconf automake libtool

以上是这三个软件的安装命令,你可以根据提示,需要哪个就安装哪个

第六步:桥接网卡

sudo yum install bridge-utils

    在配置桥接网卡之前先把桥接工具安装上,为什么要安装这个包呢?因为回头启动 qemu时添加tap参数时需要用到/etc/qemu-ifup等脚本,而这个脚本实际调用的是brctl命令,所以需要安装

sudo vi /etc/sysconfig/network-script/ifcfg-ens33

    可能你的网卡配置文件并不是ifcfg-ens33,这个根据具体情况,配置如下

TYPE=Ethernet
BOOTPROTO=none
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0
NM_CONTROLLED=no

    这些配置项目是必要的,另外像UUID,HWADDR等可以保留

sudo vi /etc/sysconfig/network-script/ifcfg-br0
    ifcfg-br0这个文件是自己建的,也可以拷贝ens33,但是要UUID,HWADDR这块删掉
TYPE=Bridge
BOOTPROTO=dhcp
NAME=br0
DEVICE=br0
ONBOOT=yes
NM_CONTROLLED=no

    进行到了这里,我们需要重启一下网卡,顺带重启一下NetworkManager(如果想关掉它也行)

sudo systemctl restart NetworkManager

    这条命令是重启NetworkManager

sudo systemctl restart network

    这条命令是重启network

    !!注意:重启之后使用ip -a就会发现此时多了一个br0,且br0的ip和ens33一样,如果重启之后没有成功,可能是需要系统重新读取一下网络配置文件,可以选择关机或者使用以下命令,如果一切正常则不需要执行这步

sudo source /etc/sysconfig/network-script/ifcfg-ens33
sudo source /etc/sysconfig/network-script/ifcfg-br0

    执行完这个之后还需要在重启一下网卡和NetworkManager,命令同上

第七步:安装vnc

sudo yum install tigervnc-server

    使用此命令可以安装vnc,安装之后首次使用vncserver命令时会提示设置密码

第八步:编辑qemu-ifup和qemu-ifdown

sudo vi /etc/qemu-ifup
    这个文件应该是没有的,自己创建,内容如下
#!/bin/bash
switch=br0
if [ -n "$1" ];then
    ip link set $1 up
    sleep 1
    brctl addif ${switch} $1
    exit 0
else
    echo "Error:no interface specified"
    exit 1
fi

    这个是qemu-ifup脚本,最好自己手打上去,复制的话可能因为字体编码等问题会导致脚本执行失败

sudo vi /etc/qemu-ifup

    这个文件应该也是没有的,自己创建,内容如下

#!/bin/bash
switch=br0
if [ -n "$1" ];then
    ip link set $1 down
    sleep 1
    brctl delif ${switch} $1
    exit 0
else
    echo "Error:no interface specified"
    exit 1
fi

    这个是qemu-ifdown脚本,建议手打

第九步:创建虚拟机

qemu-img create -f qcow2 ubuntu.qcow2 10G

    创建一个虚拟机镜像文件(目前这个文件很小,安装虚拟机后虚拟机的所有文件都会在这个镜像中,类似于vmware的vmx)

qemu-system-x86_64 -m 1024 --enable-kvm -cdrom /home/ubuntu-16.04.iso -net nic -net tap -vnc 192.168.1.110:2 ubuntu.qcow2

    由于我的ip是192.168.1.110所以vnc后跟的是192.168.1.110:2,如果使用vnc客户端(如vncviwer)连接时候地址应该是192.168.1.110:5902,(为什么端口是5902而不是2,因为vnc的服务是5900开始的,冒号(:n)后面的数字可以理解为+n

    -m:这个参数设定内存

    --enable-kvm:这个参数设定kvm加速

     -cdrom:这个参数设定系统镜像

    -net:这个参数是指定网卡模式

    -vnc:指定使用哪个ip及端口的

第十步:启动虚拟机

qemu-system-x86_64 -m 1024 --enable-kvm -net nic -net tap -vnc 192.168.1.110:2 ubuntu.qcow2

    在第九步使用vnc安装完系统之后,如果想启动系统可以使用如上命令,由于和第九步命令只差一个cdrom参数,在此不在解释参数意义

    !!注意:如果第九步和第十步出现权限拒绝问题,可以在命令前加sudo或者切换到root用户执行




    

你可能感兴趣的:(linux_kvm)