Ubuntu源码安装libvirt

说明:已分别在Ubuntu12.04和Ubuntu14.04测试通过

1.相关包的安装

1)官网获取源码(http://www.libvirt.org/sources),当前我们使用的版本是1.2.5

wget http://libvirt.org/sources/libvirt-1.2.5.tar.gz

2)在libvirt配置和编译前先安装部分相关包(说明:在安装之前可能需要更新源(sudo apt-get update),否则可能会无法正常安装软件包)

sudo apt-get install qemu-kvm libvirt-bin bridge-utils

sudo apt-get install ubuntu-vm-builder

sudo apt-get install virt-manager(可选) virtinst

其中,qemu-kvm提供了KVM必需的用户空间管理工具,libvirt-bin就是提供libvirt API和virsh管理工具,bridge-utils提供了管理网桥的brctl工具,Ubuntu-vm-builder提供了一个Ubuntu优化过的构建客户机的强大的命令行工具,virt-manager提供了图形界面下管理KVM的工具,virtinst提供了命令行下安装客户机的工具。

sudo apt-get install libvirt-dev libxml2 libxml2-dev gnutls-bin libneon27-gnutls libcurl4-gnutls-dev libnl-dev python-dev libyajl-dev libdevmapper-dev libpciaccess-dev uuid-dev

  3)将已获取的源码解压,tar -zxvf libvirt-1.2.5.tar.gz

进入源码目录:cd libvirt-1.2.5

配置: ./configure  (在配置过程中,可能会由于缺少编译时需要依赖的软件包而导致配置失败,这时只需要按照提示安装对应的软件包,然后重新运行”./configure”命令配置即可。)

编译:make -j 4

安装:make install (在配置和编译时都不需要root权限,但是在安装libvirt时一般都需要root用户权限。)

检查已安装的libvirt(以下四个命令如果能够正常显示相关目录及版本信息,则说明安装成功):

which libvirtd

libvirtd --version

which virsh

virsh -version

可能问题Q1libvirtd:error while loading shared libraries: libivrt-lxc.so.0: cannot shared object file:No such file or directory

A1:修改系统动态链接库配置文件,方法:

进入目录/etc/ld.so.conf.d

新建命令:touch libvirt.conf
        赋权限:sudo chmod 666 /etc/ld.so.conf.d/libvirt.conf

    添加一个文件libvirt.conf,内容是:

    # libvirt default configuration

    /usr/local/lib

更新动态链接库缓存: sudo ldconfig

2.环境配置

libvirtd.conf是libvirt的守护进程libvirtd的配置文件,被修改后需要让libvirtd重新加载配置文件(或重启libvirtd)才会生效。下面几个配置项表示关闭TLS安全认证的连接(默认值是打开的)、打开TCP连接(默认是关闭TCP连接的),设置TCP监听的端口,TCP连接不使用认证授权方式,设置UNIX Domain socket的保存目录等。

sudo vi /usr/local/etc/libvirt/libvirtd.conf修改(配置)如下选项:

listen_tls = 0

listen_tcp = 1

tcp_port = “16509”

unix_sock_dir = “/var/run/libvirt”

auth_tcp = “none”

3.启动libvirtd

sudo /usr/local/sbin/libvirtd -d –l         (说明:d代表daemon,l代表listen)

查看启动结果:

 

4.实际操作

sudo virsh list, 出现如下结果则说明安装配置成功,后续操作不需执行,否则继续查看相关报错解决方法:

 

可能问题Q2:Failed to connect socket to ‘/var/local/var/run/libivrt/libivrt-sock‘: No such directory

A2:sudo ln -s /var/run/libvirt/libvirt-sock /usr/local/var/run/libvirt/libvirt-sock

Q3: autotest@autotest0019:/etc/ # sudo /usr/local/sbin/libvirtd -d -l

sudo: unable to resolve host autotest0019

2014-07-29 11:22:53.319+0000: 31129: info : libvirt version: 1.2.5

2014-07-29 11:22:53.319+0000: 31129: warning : virGetHostname:654 : getaddrinfo failed for ‘autotest0019‘: Temporary failure in name resolution

/usr/local/sbin/libvirtd: error: Unable to obtain pidfile. Check /var/log/messages or run without --daemon for more info.

A3:sudo vi /etc/hosts

增加一行:IP 主机名

其他可能问题:

Q4:root@autotest0019:/etc/ld.so.conf.d# /usr/local/sbin/libvirtd -d -l

/usr/local/sbin/libvirtd: error: Unable to obtain pidfile. Check /var/log/messages or run without --daemon for more info.

root@autotest0019:/etc/ld.so.conf.d# /usr/local/sbin/libvirtd -l

2014-07-29 11:27:37.644+0000: 31256: info : libvirt version: 1.2.5

2014-07-29 11:27:37.644+0000: 31256: error : virPidFileAcquirePath:414 : Failed to acquire pid file ‘/usr/local/var/run/libvirtd.pid‘: Resource temporarily unavailable

A4:编辑一下/usr/local/var/run/libvirtd.pid,不修改,然后直接退出即可(貌似不太合理哦)。

你可能感兴趣的:(Linux)