我有一个运行 Ubuntu 服务器 12.04 的 VPS。不久前,我的主机安装了一个替代内核(Amazon 的 EC2 内核之一)来解决我遇到的启动问题。现在,在 2 个 Ubuntu 版本之后,即使安装了更高版本(3.2.xx)的内核,这个内核(2.6.31-302-ec2)仍在使用。
我怎样才能让服务器使用最新安装的内核,最好不要卸载 EC2 内核,以防这样做导致问题?
答案1
恭喜你,你已加入PyGrub!
- 您的
menu.lst
文件、目录中的不同内核映像/boot
,以及最重要的是,您正在运行的内核(Amazon EC2 版本极不可能在物理主机上运行)强烈暗示你启用 pygrub。- 这是因为非 Pygrub XenPV必须使用与主机相同的内核
- 这个奇怪的空白
dmesg
很可能是 EC2 内核定制的一个副作用;与信息量很大的输出进行比较XenPV 3.4 上的正常内核
关于 XenPV 内核选项的一些信息:
- 您当前的自定义 EC2 内核使用选项启动
root=/dev/sda1 xencons=tty
(请参阅结尾menu.lst
) - 这标准XenPV 在标准内核上的启动选项是
root=/dev/xvda1 console=hvc0
xvda
是半虚拟化(且更高效)的磁盘设备,而sda
是效率较低的模拟设备——这是我第一次看到后者在 3.x XenPV 中使用。xencons=tty
和console=hvc0
非常相似,但我相信前者是一种较旧的(遗留)用法;你可以将它们堆叠而不会产生任何不良影响;它只是告诉内核标准虚拟终端不可用于控制台,而应使用专用设备hvc0
。
如何切换内核:
这部分可能有点棘手,您应该得到提供商的认可,因为您可能需要他们帮助完成cp
一两次简单的操作!之后,您将知道您需要哪些选项,以及应该为未来做好准备。
- 如果需要,为了给您提供一些背景信息,以下是我在最新 64 位内核上的 XenPV VPS 的一些文件:
ls -l /boot
,menu.lst
和一个完整启动后dmesg
在顶部添加以下内容
menu.lst
,以适应您需要的内核版本:默认值=0 标题 vmlinuz-3.2.0-25-通用 根 (hd0) 内核/boot/vmlinuz-3.2.0-25-generic ro root=/dev/sda1 xencons=tty console=hvc0 initrd /boot/initrd.img-3.2.0-25-generic
祈祷重新启动,并希望它能够恢复!
- 如果没有,请尝试更改为
root=/dev/xvda1
,这几乎肯定会有效。 menu.lst
升级内核时请记住拒绝安装“新的” !
答案2
默认情况下,xen 客户机(domU)无法控制正在使用的内核。
内核由虚拟机管理程序(dom-0)配置,其中特定内核版本与 ip、内存磁盘大小等一起硬编码在每个虚拟机的配置脚本中。
除非你的 VPS 提供商已启用 pygrub,允许在 VPS 中使用和启动自定义内核。如果是这种情况,请查看此说明
答案3
在软件中心搜索 Grub Customizer。
安装程序。
然后打开 Grub Customizer。
您可以取消选中任何旧内核并选中较新的内核。
当 ubuntu 启动时它只会看到那些被检查的。
希望这可以帮助,
雷納多