virtual-machine - 从 shell 将 VM(在 vbox 上运行)重启到特定(已编译)内核

标签 virtual-machine virtualbox ubuntu-14.04 grub

我正在运行 ubuntu 14.04 with vbox 。在这台机器上,我编译并运行了内核 3.14,当 ubuntu 在 vbox 上加载时,我从 grub 菜单中选择了它。 主机也运行在 ubuntu 14.04 上。

我想问 - 有没有办法通过 shell 上的命令将 guest ubuntu 加载到特定内核?

我可以使用以下命令通过命令行在 vbox 上开始运行虚拟机:

VBoxManage startvm ubuservloc --type headless

但这并不是我所需要的。

最佳答案

我不知道有什么方法可以直接从主机与 guest 的 GRUB 通信,但是有几种间接的方法可以去:

  1. 从主机挂载 /boot 文件系统,并在其中放置一个文件,供 guest 的 grub.cfg 读取。
  2. VBoxManage controlvm keyboardputscancode 键入分配给 GRUB 中正确内核的热键(在启动 VM 后不久)
  3. 配置 GRUB 以监听(虚拟)串行端口并通过写入该文件来选择内核

如果可以接受第二次重启(首先启动到默认内核,然后重新启动到所需的内核),还有几种方法(您可以使用 guest 的 grub-set-default 命令来选择您想要的内核并重新启动)。一些我能想到的:

  1. VBoxManage guestcontrol run 在 guest 中从主机调用 shell 脚本(在加载 guest 添加后)
  2. VBoxManage guestproperty 从主机设置属性,VBoxControl guestproperty 从初始化脚本读取它并从那里决定
  3. 只需 SSH 进入 guest 并从那里重新启动 :D

显然,如果您总是想启动该内核,为什么不将其设置为默认值呢?如果您总是想交替启动两个不同的内核,您还可以直接从 grub.cfg 将下次启动的默认值设置为另一个内核。

关于virtual-machine - 从 shell 将 VM(在 vbox 上运行)重启到特定(已编译)内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34711586/

相关文章:

virtualbox缺少添加 "host-only network"选项

azure - 尝试通过服务管理 API 在 Azure 中创建虚拟机部署

azure - 添加-AzureRmVhd : Resource group 'ResourceGroupName' could not be found

azure - 使用 Azure Devops 将控制台应用程序部署到 Azure VM 上的文件系统

android - Connectivity Manager 始终检测到有 Internet 连接

php - Pushd 未在 ubuntu 14.04 上更改 php 中的目录

ssl - Ubuntu 14.04.2 上的 Citrix Receiver 失败并出现错误委托(delegate)证书颁发机构 - L1K SSL 错误 61

linux - 监控系统信息的脚本 : date and time, CPU使用率和内存

ubuntu - 无法连接到在 VirtualBox 内的 Xubuntu 上运行的 Jupyter 笔记本服务器

linux - 在 VirtualBox 中安装 Oracle Enterprise Linux 6.6