Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6907730
  • 博文数量: 3857
  • 博客积分: 6409
  • 博客等级: 准将
  • 技术积分: 15948
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 16:48
个人简介

迷彩 潜伏 隐蔽 伪装

文章分类

全部博文(3857)

文章存档

2017年(5)

2016年(63)

2015年(927)

2014年(677)

2013年(807)

2012年(1241)

2011年(67)

2010年(7)

2009年(36)

2008年(28)

分类: 系统运维

2015-05-05 08:00:21

CentOS 6内核升级到Kernel 3.x中出现的两个问题

[日期:2015-05-04] 来源:Linux社区  作者:jython [字体:  ]

问题:

之前制作的openstack 6.5模板镜像,其内核为2.6.xx,现需要制作一个内核为3.x的centos6镜像,使用rpm包kernel-ml-3.18.3-1.el6.elrepo.x86_64.rpm升级内核,重启虚拟机出现错误:

FATAL: Module scsi_wait_scan not found.

如果你再进一步测试,就会发现,在物理机上升级内核,一切ok!

注:以下操作都是在kvm虚拟机内进行,物理机升级内核不存在这个问题

分析:

1.这个错误的出现是因为KVM中的虚拟机使用了virtio这个半虚拟化驱动来是虚拟机支持scsi设备,而物理机升级时用不到virtio驱动,自然不会有问题

2.centos6系统中使用Dracut这个程序生成系统的initramfs.img ,在内核安装过程中,Dracut识别内核模块virtio_blk.ko是通过"

"文件中给出的函数识别的,如下

在kernel3.13版本以前,Dracut是通过"blk_init_queue"这个函数安装virtio_blk.ko模块,而在kernel3.13版本之后,安装virtio_blk.ko模块需要新函数"blk_mq_init_queue",但是centos6系统中的Dracut程序依然使用旧的函数"blk_init_queue",因此就无法安装virtio_blk.ko  解决问题的关键在于要确保virtio_blk.ko能够被安装

第一种解决方法:

编辑文件/usr/share/dracut/modules.d/90kernel-modules/installkernel

vim /usr/share/dracut/modules.d/90kernel-modules/installkernel
#第四行中的"blk_init_queue" 替换为"blk_mq_init_queue"

然后使用正常的rpm -ivh 方式安装内核包即可

注:另一种解决方案:

这种解决方案虚拟机也能够成功启动,但是不能够进行硬盘的热拔插,比如在宿主机上使用virsh attach/detach 动态为一台虚拟机加载硬盘,必须重启虚拟机才能生效,而第一种解决方法能够进行以后ing盘的hotplug,即热拔插

1.下载安装新版本内核rpm包(3.18)

这里是

rpm -ivh kernel-ml-3.18.3-1.el6.elrepo.x86_64.rpm

2.解决virtio驱动问题

#添加virtio_blk支持(新建conf文件)
echo 'add_drivers+="virtio_blk"' >/etc/dracut.conf.d/force-vitio_blk-to-ensure-boot.conf
#备份initramfs
cp /boot/initramfs-3.18.3-1.el6.elrepo.x86_64.img /boot/initramfs-3.18.3-1.el6.elrepo.x86_64.img.bak
#重新编译生成initramfs
dracut -f /boot/initramfs-3.18.3-1.el6.elrepo.x86_64.img 3.18.3-1.el6.elrepo.x86_64

3.修改grub.conf

default=0    #default为新内核
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title  Enterprise Linux Server (3.18.3-1.el6.elrepo.x86_64)
        root (hd0,0)
        kernel /vmlinuz-3.18.3-1.el6.elrepo.x86_64 ...

 13.10 (Saucy Salamander) 内核已升级至 Linux Kernel 3.10 RC5 

Linux Kernel 3.4.62 LTS 现已经提供下载  

如何在Ubuntu 13.10上安装Linux内核 3.12  

如何在Ubuntu 14.10,Ubuntu 14.04及其衍生版本安装 3.16.7 CKT2内核  

Linux Kernel 的详细介绍: 
Linux Kernel 的下载地址

更多CentOS相关信息见 专题页面 

本文永久更新链接地址

阅读(1112) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~