我正在运行 ubuntu 14.04 with vbox 。在这台机器上,我编译并运行了内核 3.14,当 ubuntu 在 vbox 上加载时,我从 grub 菜单中选择了它。 主机也运行在 ubuntu 14.04 上。
我想问 - 有没有办法通过 shell 上的命令将 guest ubuntu 加载到特定内核?
我可以使用以下命令通过命令行在 vbox 上开始运行虚拟机:
VBoxManage startvm ubuservloc --type headless
但这并不是我所需要的。
最佳答案
我不知道有什么方法可以直接从主机与 guest 的 GRUB 通信,但是有几种间接的方法可以去:
- 从主机挂载
/boot
文件系统,并在其中放置一个文件,供 guest 的grub.cfg
读取。 VBoxManage controlvm keyboardputscancode
键入分配给 GRUB 中正确内核的热键(在启动 VM 后不久)- 配置 GRUB 以监听(虚拟)串行端口并通过写入该文件来选择内核
如果可以接受第二次重启(首先启动到默认内核,然后重新启动到所需的内核),还有几种方法(您可以使用 guest 的 grub-set-default
命令来选择您想要的内核并重新启动)。一些我能想到的:
VBoxManage guestcontrol run
在 guest 中从主机调用 shell 脚本(在加载 guest 添加后)VBoxManage guestproperty
从主机设置属性,VBoxControl guestproperty
从初始化脚本读取它并从那里决定- 只需 SSH 进入 guest 并从那里重新启动 :D
显然,如果您总是想启动该内核,为什么不将其设置为默认值呢?如果您总是想交替启动两个不同的内核,您还可以直接从 grub.cfg 将下次启动的默认值设置为另一个内核。
关于virtual-machine - 从 shell 将 VM(在 vbox 上运行)重启到特定(已编译)内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34711586/