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
新手求教2个问题,如果按照您的文章在centos 6.3上配置,编译,安装了kvm。
1、这之后是否还可能回滚到CentOS 6.3系统自带的kvm呢 ?
2、这之后是否还可以用yum去更新与kvm相关以及不相关的rpm软件包呢 ?
默认,按照我提供的方法编译KVM后,你CentOS自带的kernel都仍依然存在的,没有被覆盖,所以只需要在GRUB配置文件中启动你原来的kernel即可用原来CentOS系统。 你编译了KVM是内核,跟你用yum去更新RPM包没关系,不会有影响。
新手求教:
我是在笔记本上的虚拟机里安装了centos6.4之后,再源代码编译安装了kvm,可是用新的内核启动的时候,启动不了啊,报kernel panic 错误啊
可能是你的kernel config文件的问题,你可以试试这里的config文件: https://github.com/smilejay/kvm-book/tree/master/conf
另外,你在什么虚拟机里呢? 在虚拟机里再运行KVM虚拟机,这就嵌套虚拟化了,可能很多虚拟机软件还不支持这个(当然在KVM上运行KVM这样的嵌套虚拟化是可以的)。
我购买了你的书,在安装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/
谢谢,应该可以了。
我输入 modprobe kvm,为什么显示Module kvm not found?
就是你没编译kvm module,或者是 CONFIG_KVM=Y 将kvm编译到内核中了(不需要modprobe了)。
CONFIG_KVM=Y 这一项前面有出现过,那对后面有影响吗?
没影响的;不过你也可考虑配置为m.
杰哥,在运行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 。怎么办?
执行 lsmod | grep kvm 没有任何输出 是怎么回事啊???
如果你已经是root用户查看的,那么应该就是没有加载kvm相关的module。不过也有可能是因为编译内核时,将kvm直接built-in了(也就不需要额外加载了)
請問一下,我按照博主的方法安裝,但是輸入make modules_install是發現找不到.ko文件,目錄裏面只有.o文件.
比如沒有arch/x86/crypto/aes-x86_64.ko,只有 arch/x86/crypto/aes-x86_64.o。什麼原因呢?謝謝博主解答。
我遇见了同样的问题,请问解决了吗
您好,请教,《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/
请问安装kvm的最小系统集合,包含哪些?必须是module、kernel与initramfs。module里面只安装kvm行不?kernel与initramfs必须安装?如何能打包ISO。