![在另一个文件系统中更新 Grub](https://linux22.com/image/599460/%E5%9C%A8%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E4%B8%AD%E6%9B%B4%E6%96%B0%20Grub.png)
在我将 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 安装指南中有一个示例。
祝你好运!