(KVM连载)3.3.4 安装KVM

3.3.4 安装KVM

编译完KVM之后,下面介绍如何安装KVM。

KVM的安装包括两个步骤:module的安装、kernel与initramfs的安装。

通过“make modules_install”命令可以将编译好的module安装到相应的目录之中,默认情况下module被安装到/lib/modules/$kernel_version/kernel目录之中。

[root@jay-linux kvm.git]# make modules_install

INSTALL arch/x86/crypto/aes-x86_64.ko

INSTALL arch/x86/kernel/microcode.ko

INSTALL arch/x86/kvm/kvm-intel.ko

INSTALL arch/x86/kvm/kvm.ko

INSTALL arch/x86/oprofile/oprofile.ko

<!- 此处省略千余行安装时的输出信息 ->

INSTALL /lib/firmware/edgeport/down3.bin

INSTALL /lib/firmware/whiteheat_loader.fw

INSTALL /lib/firmware/whiteheat.fw

INSTALL /lib/firmware/keyspan_pda/keyspan_pda.fw

INSTALL /lib/firmware/keyspan_pda/xircom_pgs.fw

DEPMOD  3.5.0-rc2+

安装好module之后,可以查看一下相应的安装路径,可看到kvm模块也已经安装,如下所示:

[root@jay-linux kvm.git]# ls -l /lib/modules/3.5.0-rc2+/kernel/

total 28

drwxr-xr-x  3 root root 4096 Jun 13 08:58 arch

drwxr-xr-x  3 root root 4096 Jun 13 08:58 crypto

drwxr-xr-x 36 root root 4096 Jun 13 08:58 drivers

drwxr-xr-x 25 root root 4096 Jun 13 08:58 fs

drwxr-xr-x  5 root root 4096 Jun 13 08:58 lib

drwxr-xr-x 22 root root 4096 Jun 13 08:58 net

drwxr-xr-x  9 root root 4096 Jun 13 08:58 sound

[root@jay-linux kvm.git]# ls -l /lib/modules/3.5.0-rc2+/kernel/arch/x86/kvm/

total 528

-rw-r--r-- 1 root root 176861 Jun 13 08:58 kvm-intel.ko

-rw-r--r-- 1 root root 357867 Jun 13 08:58 kvm.ko

通过“make install”命令可以安装kernel和initramfs,操作和演示如下:

[root@jay-linux kvm.git]# make install

sh /root/kvm_demo/kvm.git/arch/x86/boot/install.sh 3.5.0-rc2 + arch/x86/boot/bzImage \

System.map "/boot"

[root@jay-linux kvm.git]# ls -l /boot/

-rw-r--r--  1 root root  2775664 Jun 13 08:45 vmlinuz-3.5.0-rc2+

-rw-r--r--  1 root root  1825462 Jun 13 08:45 System.map-3.5.0-rc2+

lrwxrwxrwx  1 root root       24 Jun 13 08:45 vmlinuz -> /boot/vmlinuz-3.5.0-rc2+

lrwxrwxrwx  1 root root       27 Jun 13 08:45 System.map -> /boot/System.map-3.5.0-rc2+

dr-xr-xr-x  4 root root     4096 Jun 13 08:45 ./

-rw-r--r--  1 root root  4672632 Jun 13 08:45 initramfs-3.5.0-rc2+.img

drwxr-xr-x  2 root root     4096 Jun 13 08:45 grub/

可见,在/boot目录下生成了内核(vmlinuz)和initramfs等内核启动所需的文件。

在运行make install之后,grub配置文件(如:/boot/grub/grub.conf)中,也自动添加了一个grub选项,如下所示:

title Red Hat Enterprise Linux Server (3.5.0-rc2+)

root (hd0,0)

kernel /boot/vmlinuz-3.5.0-r2+ ro root=UUID=1a65b4bb-cd9b-4bbf-97ff-7e1f7698d3db r

initrd /boot/initramfs-3.5.0-r2+.img

检查了grub之后,重新启动系统,选择刚才为了KVM而编译、安装的内核启动。

系统启动后,登录进入系统,通常情况下,系统启动时默认已经加载了kvm和kvm_intel这两个模块;如果没有加载,请手动用modprobe命令依次加载kvm和kvm_intel模块。

[root@jay-linux ~]# modprobe kvm

[root@jay-linux ~]# modprobe kvm_intel

[root@jay-linux ~]# lsmod | grep kvm

kvm_intel             112487  0

kvm                   206544  1 kvm_intel

确认KVM相关的模块加载成功后,检查/dev/kvm这个文件,它是kvm内核模块提供给用户空间的qemu-kvm程序使用的一个控制接口,它提供了客户机(Guest)操作系统运行所需要的模拟和实际的硬件设备环境。

[root@jay-linux ~]# ls -l /dev/kvm

crw-rw---- 1 root root 10, 232 Jun  6 15:45 /dev/kvm

master

Stay hungry, stay foolish.

20 Comments

  1. 新手求教2个问题,如果按照您的文章在centos 6.3上配置,编译,安装了kvm。

    1、这之后是否还可能回滚到CentOS 6.3系统自带的kvm呢 ?

    2、这之后是否还可以用yum去更新与kvm相关以及不相关的rpm软件包呢 ?

    • 默认,按照我提供的方法编译KVM后,你CentOS自带的kernel都仍依然存在的,没有被覆盖,所以只需要在GRUB配置文件中启动你原来的kernel即可用原来CentOS系统。 你编译了KVM是内核,跟你用yum去更新RPM包没关系,不会有影响。

  2. 新手求教:
    我是在笔记本上的虚拟机里安装了centos6.4之后,再源代码编译安装了kvm,可是用新的内核启动的时候,启动不了啊,报kernel panic 错误啊

  3. 可能是你的kernel config文件的问题,你可以试试这里的config文件: https://github.com/smilejay/kvm-book/tree/master/conf
    另外,你在什么虚拟机里呢? 在虚拟机里再运行KVM虚拟机,这就嵌套虚拟化了,可能很多虚拟机软件还不支持这个(当然在KVM上运行KVM这样的嵌套虚拟化是可以的)。

  4. 我购买了你的书,在安装KVM时,执行make install,提示:ERROR: modinfo: could not find module power_meter。
    我的环境:
    1、centos6.4,32位系统
    2、在make menuconfig时,power meter 我确定已经开启了acpi 4.0 power meter (m), .config 里也确实有 CONFIG_SENSORS_ACPI_POWER=m
    3、我有尝试用你github上的config文件,但你的版本是3.10.0,我的是3.12.0-rc5+,提示很多没有配置,最后执行还是提示ERROR: modinfo: could not find module power_meter。
    能否给予指点,谢谢。

    • 新的kernel中,这个好像变成“acpi_power_meter”这个名字了;你可以忽略这个错误~ 关于类似的东西,我写了篇博客,你可以参考:http://smilejay.cn/2013/11/kernel-install-error-could-not-find-module/

  5. 我输入 modprobe kvm,为什么显示Module kvm not found?

    • 就是你没编译kvm module,或者是 CONFIG_KVM=Y 将kvm编译到内核中了(不需要modprobe了)。

  6. 杰哥,在运行modprobe kvm_intel时,出错了,显示Error inserting kvm_intel ( /lib/modules/2.6.32_431.el6.x86_64/kernel/arch/x86/kvm/kvm/kvm-intel.ko ):Operation not supported 。怎么办?

  7. 执行 lsmod | grep kvm 没有任何输出 是怎么回事啊???

    • 如果你已经是root用户查看的,那么应该就是没有加载kvm相关的module。不过也有可能是因为编译内核时,将kvm直接built-in了(也就不需要额外加载了)

  8. 請問一下,我按照博主的方法安裝,但是輸入make modules_install是發現找不到.ko文件,目錄裏面只有.o文件.
    比如沒有arch/x86/crypto/aes-x86_64.ko,只有 arch/x86/crypto/aes-x86_64.o。什麼原因呢?謝謝博主解答。

  9. 您好,请教,《KVM虚拟化技术实战与原理解析》3.3.4节安装KVM,执行make install,报错 sh ./arch/x86/boot/install.sh 3.18.0-rc2+ arch/x86/boot/bzImage \
    System.map "/boot"
    ERROR: modinfo: could not find module scsi_tgt
    ERROR: modinfo: could not find module vmhgfs
    ERROR: modinfo: could not find module vsock
    ERROR: modinfo: could not find module snd_page_alloc
    ERROR: modinfo: could not find module vmware_balloon
    ERROR: modinfo: could not find module vmci
    ERROR: modinfo: could not find module crc_t10dif
    ERROR: modinfo: could not find module vmxnet
    我查询后这几个模块是有的并重新进行了加载
    [root@zabbix_agent_188 kvm.git]# lsmod |grep vmhgfs
    vmhgfs 49691 0
    vmci 74263 2 vmhgfs,vsock
    [root@zabbix_agent_188 kvm.git]# lsmod |grep vsock
    vsock 46726 0
    vmci 74263 2 vmhgfs,vsock
    [root@zabbix_agent_188 kvm.git]# lsmod |grep snd_page_alloc
    snd_page_alloc 8628 1 snd_pcm
    [root@zabbix_agent_188 kvm.git]# lsmod |grep vmware_balloon
    vmware_balloon 7165 0
    [root@zabbix_agent_188 kvm.git]# lsmod |grep vmci
    vmci 74263 2 vmhgfs,vsock
    [root@zabbix_agent_188 kvm.git]# lsmod |grep crc_t10dif
    crc_t10dif 1507 1 sd_mod
    [root@zabbix_agent_188 kvm.git]# lsmod |grep vmxnet
    vmxnet 17120 0

    [root@zabbix_agent_188 kvm.git]# modprobe scsi_tgt
    [root@zabbix_agent_188 kvm.git]# modprobe vmhgfs
    [root@zabbix_agent_188 kvm.git]# modprobe vsock
    [root@zabbix_agent_188 kvm.git]# modprobe snd_page_alloc
    [root@zabbix_agent_188 kvm.git]# modprobe vmware_balloon
    [root@zabbix_agent_188 kvm.git]# modprobe vmci
    [root@zabbix_agent_188 kvm.git]# modprobe crc_t10dif
    [root@zabbix_agent_188 kvm.git]# modprobe vmxnet
    还是报上面的错,望指点,系统是 CentOS 6.0

    • 关于这个问题,我的这篇文章中有详细描述:http://smilejay.cn/2013/11/kernel-install-error-could-not-find-module/

  10. 请问安装kvm的最小系统集合,包含哪些?必须是module、kernel与initramfs。module里面只安装kvm行不?kernel与initramfs必须安装?如何能打包ISO。

发表评论

邮箱地址不会被公开。 必填项已用*标注

*