/tmp
我无法登录我的 Ubuntu12.04(这是使用 VMWARE FUSION 6 在 OSX 上运行的虚拟机),因为我在重新启动计算机之前出于某种目的更改了权限。
因此,我尝试shift
在启动机器时按 键以恢复模式启动 Ubuntu(以便更改 的权限/tmp
),但这是不可能的,因为启动时没有出现 grub 屏幕。
如果 grub 没有出现,如何进入恢复模式?
答案1
这听起来像是为 iPXE 救援量身定制的情况。本质上,您不是从虚拟机自己的虚拟磁盘文件系统启动虚拟机,而是使用通过互联网检索的启动文件。实际上,它与从可移动驱动器上的 Live ISO 映像启动几乎相同,一旦环境完成启动,您将能够安装虚拟磁盘并进行任何所需的修复。
您可以找到将 VMware 附带的 PXE ROM 替换为 iPXE ROM 的说明这里(此过程中我的最佳结果是使用 VMware 设置来模拟 Intel e1000e 网络适配器,但它们都应该可以工作)。按照所述替换 ROM 文件并编辑虚拟机的 .vmx 文件后,打开 VMware Fusion,选择有问题的虚拟机并在 GUI 中验证您在 vmx 文件中设置的网络适配器模型是否处于活动状态且处于桥接模式。
确定后,单击OK退出“设置”窗口,然后单击 Fusion 主窗口中的绿色“播放”按钮以启动虚拟机。
窗口出现后,开始F2以大约一秒的间隔按键盘上的按键,直到出现固件设置菜单,可能需要关闭虚拟机并再次启动几个周期才能获得计时正确的。当出现类似这样的内容时,你就会知道你已经得到了它:
仅使用键盘即可导航固件设置菜单,因此请点击 键➔直至到达启动设置,然后点击⬆/⬇以使“网络启动自...”选项突出显示,最后根据+需要多次点击该键将其移至列表顶部,使其成为第一个启动设备。完成后,按F10键确认新的启动配置,虚拟机自然会重新启动并使它们生效。
一旦再次开始启动过程,密切关注控制台输出非常重要。通常,通过 PXE 引导需要网络上某处的本地服务器来提供引导的环境文件,但规范还提供了一个chain
将 URL 作为参数的命令,这无疑是实现此目的的最简单方法。要使用 chain 命令,您需要注意在启动过程的早期阶段显示的消息,如下所示:
iPXE -- Open Source Network Boot Firmware -- http://ipxe.org
Features: HTTP iSCSI DNS TFTP AoE FCoE TFTP COMBOOT ELF PXE PXEXT
Press Ctrl-B for the iPXE command line...
自然,这是您混合指定的组合键以切换到命令行的提示!
(通常是Ctrl+ B,但我也见过一两次其他组合键)
期望的结果是,由于您所做的一切,您现在将看到与以下内容非常相似的内容:
iPXE>
恭喜你,你已经进入冲刺阶段了。最后一步是从您的网络设备获取 IP 地址,并将您的虚拟机指向属于该网络设备的服务器。Netboot.xyz 项目。总之,您需要在 iPXE 命令行提示符下发出两个单独的命令。他们是:
dhcp
chain --autofree https://boot.netboot.xyz/menu.ipxe
几秒钟之内,您就会看到一个可供启动的 Linux 发行版的实时映像大杂烩,以及大量也可以启动的流行“救援光盘”。看?
还应该注意的是,如果您遇到任何困难,Netboot.xyz 团队有自己的推荐流程使用 iPXE 从 VMware 内部访问他们的服务,这与我刚才在这里详细介绍的不同,尽管根据我自己的经验,我发现它并不那么可靠。此外,您还可以在命令行上使用所有 iPXE 命令,dhcp
并且chain
通过示例进行了详细说明这里。
祝你好运!
笔记:上述 iPXE 命令假设您正在为虚拟机使用 UEFI 配置,这种配置近年来已变得越来越普遍。如果我的说法有误,并且您已配置为 BIOS 引导进程,则最终命令将需要稍有不同;使用此链命令而不是上面的命令:chain --autofree https://boot.netboot.xyz/ipxe/netboot.xyz.lkrn