Перезагрузить виртуальную машину (запустить на vbox) в определенное (скомпилированное) ядро ​​из оболочки

Я бегу Ubuntu 14.04 с Vbox. На этой машине я скомпилировал и запустил ядро ​​3.14, которое я выбираю из меню grub, когда Ubuntu загружается на vbox. Хост также работает на Ubuntu 14.04.

Я хотел спросить - есть ли способ загрузить гостевую Ubuntu в конкретное ядро ​​с помощью команды на оболочке?

Я могу запустить команду vm через vbox через эту команду:

VBoxManage startvm ubuservloc --type headless

но это не совсем то, что мне нужно.

1 ответ

Я не знаю ни одного способа прямого общения с хоста на гостевой GRUB, но есть несколько косвенных путей:

  1. смонтировать /boot файловую систему с хоста и поместите туда файл, который читается гостем grub.cfg,
  2. VBoxManage controlvm keyboardputscancode набрать горячую клавишу, назначенную правильному ядру в GRUB (вскоре после запуска виртуальной машины)
  3. Настройте GRUB для прослушивания (виртуального) последовательного порта и выберите ядро, записав в этот файл

Если допустима вторая перезагрузка (сначала загрузите ядро ​​по умолчанию, а затем перезагрузите желаемое ядро), есть также несколько способов (вы можете использовать grub-set-default команда от гостя, чтобы выбрать желаемое ядро ​​и выполнить перезагрузку). Некоторые я могу думать здесь:

  1. VBoxManage guestcontrol run вызвать скрипт оболочки с хоста в гостевой системе (после загрузки гостевых дополнений)
  2. VBoxManage guestproperty установить свойство с хоста и VBoxControl guestproperty прочитать его из сценария инициализации и решить оттуда
  3. Просто в гостевой SSH и перезагрузись оттуда:D

Очевидно, что если вы всегда хотите загрузить это ядро, почему бы не сделать его стандартным? И в случае, если вы всегда хотите поочередно загрузить два разных ядра, вы также можете установить значение по умолчанию для следующей загрузки в другой директории из grub.cfg.

Другие вопросы по тегам