歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> CentOS 6內核升級到Kernel 3.x中出現的兩個問題

CentOS 6內核升級到Kernel 3.x中出現的兩個問題

日期:2017/2/28 14:01:52   编辑:Linux教程

問題:

之前制作的openstack CentOS6.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 Red Hat Enterprise Linux Server (3.18.3-1.el6.elrepo.x86_64)
root (hd0,0)
kernel /vmlinuz-3.18.3-1.el6.elrepo.x86_64 ...

Ubuntu 13.10 (Saucy Salamander) 內核已升級至 Linux Kernel 3.10 RC5 http://www.linuxidc.com/Linux/2013-06/86110.htm

Linux Kernel 3.4.62 LTS 現已經提供下載 http://www.linuxidc.com/Linux/2013-09/90368.htm

如何在Ubuntu 13.10上安裝Linux內核 3.12 http://www.linuxidc.com/Linux/2013-11/92930.htm

如何在Ubuntu 14.10,Ubuntu 14.04及其衍生版本安裝 3.16.7 CKT2內核 http://www.linuxidc.com/Linux/2014-12/110189.htm

Linux Kernel 的詳細介紹:請點這裡
Linux Kernel 的下載地址:請點這裡

更多CentOS相關信息見CentOS 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=14

Copyright © Linux教程網 All Rights Reserved