我有一台运行 Ubuntu Server 14.04 的虚拟机 (VM)。我使用 putty 远程访问虚拟机。最近我遇到了一个问题,/boot 已满 100%。
我碰到过许多文章,有些建议增加根大小,有些则建议删除旧内核文件,即除了原始文件、最新文件和最新文件之前的文件之外的所有内容。
我意外删除了所有内核文件,即文件名中带有“img”字样的文件。删除这些文件后,/boot 有 67% 的可用空间(这很好)。但重新启动虚拟机后,我无法再登录,出现“拒绝访问”错误。我尝试重新启动虚拟机,但没有任何反应。
一些解决此问题的文章谈到了 Live CD,但我无法物理访问可以插入 CD 的 NAS。有没有办法在不使用可启动光盘的情况下恢复文件?即仅使用 SSH
答案1
initrd.img 文件包含启动虚拟机所需的所有驱动程序。这意味着它可能无法启动到网络已启动的状态,更不用说 sshd 了。
您需要获得控制台访问权限和(虚拟)CD 访问权限,并从 ISO 文件启动。或者回滚到从 /boot 中删除文件之前的快照。
您不应该手动从 /boot 中删除文件,而是应该卸载不再需要的 linux-image 包。
答案2
对我来说,这是有效的方法:我创建了一个新的虚拟机(使用 VirtualBox),其 Ubuntu 版本与崩溃的虚拟机相同。然后使用 WinSCP 将损坏的 VM(即 VDI 文件)本地下载到我的机器上,并将其作为驱动器安装在新创建的 VM 上。然后,我只需将 initrd.img 文件复制到损坏的 VM 的根目录中,之后它就可以正常工作了。
答案3
您无法通过 SSH 连接到无法启动的机器。绝对不行。您必须请能够物理访问机器(在您的情况下是虚拟机管理程序管理控制台)的人来修复此问题。
要删除 Ubuntu 下的旧内核,您应该使用apt-get autoremove
。