从 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 守护进程

vbox虚拟机和vm虚拟机 虚拟机网络不通的解决方法

vbox 中怎么用vboxmanage 查看虚拟机的IP地址。主机是centos系统,没有图形界面

vbox创建虚拟机并联网

如何安装Oracle VM VirtualBox Extension Pack