从 shell 重新启动 VM(在 vbox 上运行)到特定的(编译的)内核
Posted
技术标签:
【中文标题】从 shell 重新启动 VM(在 vbox 上运行)到特定的(编译的)内核【英文标题】:reboot VM (run on vbox) into specific (compiled) kernel from shell 【发布时间】:2016-04-15 04:11:36 【问题描述】:我正在运行 ubuntu 14.04 with vbox。在这台机器上,我编译并运行了内核 3.14,当 ubuntu 在 vbox 上加载时,我从 grub 菜单中选择它。 主机也在 ubuntu 14.04 上运行。
我想问一下 - 有没有办法通过 shell 上的命令将来宾 ubuntu 加载到特定的内核中?
我可以使用这个命令在 vbox trough 命令行上开始运行虚拟机:
VBoxManage startvm ubuservloc --type headless
但这并不完全是我所需要的。
【问题讨论】:
您是指来自主机的命令,还是来自客人的命令? 【参考方案1】:我不知道有什么方法可以直接从主机与来宾的 GRUB 进行通信,但是您可以采用几种间接方式:
-
从主机上挂载
/boot
文件系统,然后将来宾的grub.cfg
读取的文件放到那里。
VBoxManage controlvm keyboardputscancode
键入分配给 GRUB 中正确内核的热键(在启动 VM 后不久)
将 GRUB 配置为侦听(虚拟)串行端口并通过写入该文件来选择内核
如果可以接受第二次重新启动(首先启动到默认内核,然后重新启动到所需的内核),还有多种方法(您可以使用客户机的 grub-set-default
命令来选择所需的内核并发出重新启动)。我可以在这里想到一些:
VBoxManage guestcontrol run
在来宾中从主机调用 shell 脚本(在加载来宾添加之后)
VBoxManage guestproperty
从主机设置属性,VBoxControl guestproperty
从初始化脚本读取它并从那里决定
只需 SSH 进入来宾并从那里重新启动 :D
显然,如果您总是想启动该内核,为什么不将其设为默认值呢?如果您总是想交替启动两个不同的内核,您还可以将下次启动的默认值设置为 grub.cfg 中的另一个直接启动。
【讨论】:
以上是关于从 shell 重新启动 VM(在 vbox 上运行)到特定的(编译的)内核的主要内容,如果未能解决你的问题,请参考以下文章
vm,vbox 虚拟机设置开机自动启动(创建虚拟机快捷方式的命令)
CDH 5.3.2 - 需要从 shell/脚本重新启动 impala 守护进程