在另一个文件系统中更新 Grub

在另一个文件系统中更新 Grub

在我将 Ubuntu 12.04 中的一些 GUI 应用程序安装到 Rackspace 后,托管在 Rackspace 中的云服务器停止了工作,该应用程序自动安装了它的依赖包 ubuntu-desktop(或其他类似的(GUI)包)。

事实上,这件事发生在两周前。

但是今天是我在安装 ubuntu-desktop(或类似的软件包)后第一次重新启动服务器,我意识到 Web 服务器无法启动,因为它没有足够的 RAM 来加载 GUI(并且它也没有图形设备)——在终端上打印“正在加载启动屏幕”(或类似内容)后,它会冻结。

为了解决这个问题,我可以访问 Rackspace 中的救援模式,在那里我可以访问我的服务器的文件系统而无需实际启动它,这样我可以在打开它之前在这里和那里调整配置。

我做了一些研究,发现我可以强制控制台模式将 Grub 配置从 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 更改为 GRUB_CMDLINE_LINUX_DEFAULT="text"。但此更改需要运行,update-grub而我无法运行,因为我只能访问服务器文件系统,但不能登录它来运行命令。

你们明白我的问题了吗?我说得够清楚了吗?抱歉我的英语不好,我还在学习。

因此,我的问题是:

如何在不登录服务器的情况下更新 grub?这可能吗?如果不行,还有其他方法可以强制启动到文本模式吗?只需调整配置文件,这样就不必登录服务器了。

谢谢。

答案1

耶!

我通过手动编辑已挂载文件系统上的 /boot/grub/grub.cfg 并将出现的“quiet splash”替换为“text”来使其工作。这样就update-grub不需要了。

这不是一个完美的解决方案,但它确实有效。

现在我可以通过 SSH 正常连接到我的服务器了。稍后我会运行update-grub以确保此手动文件编辑不会产生任何副作用。

所以,这就是我今天学到的:不要在那些廉价的低性能云服务器上安装 GUI,因为它们没有足够的资源来启动,从而很难修复。

答案2

嗯......救援模式基本上是 Linux 单用户 root shell 吗?如果是这样,请尝试从已安装的文件系统运行该程序。我假设您安装的磁盘包含 /boot 区域。

救援映像上可能还有一个 grub 可供您运行以修复外部磁盘。

最坏的情况是,联系 Rackspace 寻求指导。

答案3

您能通过单用户模式登录主机吗?这应该会中断使用 GUI 的尝试,并让您有机会编辑 grub.conf 并运行update-grub

另外,检查你/etc/inittab的操作系统是否使用该功能。你可以将默认运行级别设置为非 GUI 值。请参阅10.4.2 节RHEL6 安装指南中有一个示例。

祝你好运!

相关内容