我一直在 Windows Server 2008 R2 系统上的 Hyper-V 下将 CentOS 6.2 作为 VM 运行。
如果我运行“uname -r”,它会显示我当前的 Linux 版本为“2.6.32-220.4.1.el6.x86_64”
不久前,我进行了软件更新,更新中包含内核更新。当我重新启动 Linux VM 时,它出现了内核崩溃消息,无法继续。我发现,如果我在启动时按下空格键并选择旧的(原始)Linux 内核版本,系统就可以正常启动。
我谷歌了一下,找到了一个网站,上面说 Linux Integration Services 代码需要针对你正在运行的内核重新编译。由于我无法启动该内核,我不确定这怎么可能。
通过谷歌搜索找到了以下网站 -http://support.microsoft.com/kb/2387594/de- 它说我需要安装动态内核模块支持 - DKMS(我安装了),但当我按照说明进一步操作时,它引用了一个不存在的“dkms.conf”文件。创建一个空白文件也不起作用,因为尝试运行“dkms add -m linuxic -v 3.2”命令(我正在运行 Linux Integration Services 3.2)返回“错误!错误的 conf 文件。”
有关于如何修复该问题的线索,以便我可以让我的 Linux 内核在运行 Linux Integration Services 3.2 驱动程序的 CentOS 6 上保持最新?
答案1
事实证明,问题出在安装的 CentosPlus 内核上。在“添加/删除软件->系统->软件源”中检查了“CentOS-6-Plus”源,并且“plus”内核随软件更新一起安装。
显然这些 Plus 内核之间存在一些不兼容性(它们的内核名称中包含“plus” - 您可以在终端屏幕上输入“rpm -q kernel”来查看)。
我取消选中“CentOS-6 Plus”作为软件源,并删除了通过“yum remove”安装的内核的新加版本,然后在下一次软件更新时,安装了更新内核的非加版本,并且系统启动时没有出现内核恐慌。
希望这能帮助到其他处于同样境况的人。
答案2
您不需要针对跑步内核,仅仅是已安装一。更新的内核头文件应该足以构建新内核的模块。
我这辈子从来没有接触过 Hyper-V(并且,除非我非常不幸,否则这永远不会改变),所以我无法给你任何具体的说明,但我认为文档会向你展示如何指定如何根据你安装的标题构建模块。
答案3
我遇到了类似的问题,但是使用 CentOS 6.5->6.6 和 LIS 4.0 这是我所做的:
1)启动到以前的内核版本
2) 打开 LIS 文件夹 [如果在 CD 上,则将其复制到磁盘]
3) 打开您安装的新内核版本的 /install.sh 文件,而不是您正在运行的版本。在我的情况下是 RHEL66。
4)在执行 rpm 命令的文件内(在我的情况下,执行了两次),在 rpm 命令末尾添加“--force”(不带引号)。
5) 以 root 身份重新执行 install.sh。这应该会安装 RPM 模块。重新启动系统,但这次启动到新内核。注意:我建议在执行此操作之前先对您的 VM 进行快照。这对我来说有效,但对您来说可能无效。
答案4
Microsoft 的说明是针对 Linux Integration Components 版本 2.1 编写的 - 当时他们仍以源代码格式提供这些说明。因此,您可以运行“make”并遵循他们的各种说明。
当前版本 3.4(甚至 3.2)采用没有源代码的 RPM 格式 - 因此他们提到的任何文件和文件夹都不存在。
潜在的问题是(显然)IC 包含用于 Hyper-V 模拟磁盘的改进的磁盘驱动程序 - 而新内核没有它们,因此不知道如何访问文件系统。