Перезагрузить виртуальную машину (запустить на vbox) в определенное (скомпилированное) ядро из оболочки
Я бегу Ubuntu 14.04 с Vbox. На этой машине я скомпилировал и запустил ядро 3.14, которое я выбираю из меню grub, когда Ubuntu загружается на vbox. Хост также работает на Ubuntu 14.04.
Я хотел спросить - есть ли способ загрузить гостевую Ubuntu в конкретное ядро с помощью команды на оболочке?
Я могу запустить команду vm через vbox через эту команду:
VBoxManage startvm ubuservloc --type headless
но это не совсем то, что мне нужно.
1 ответ
Я не знаю ни одного способа прямого общения с хоста на гостевой GRUB, но есть несколько косвенных путей:
- смонтировать
/boot
файловую систему с хоста и поместите туда файл, который читается гостемgrub.cfg
, VBoxManage controlvm keyboardputscancode
набрать горячую клавишу, назначенную правильному ядру в GRUB (вскоре после запуска виртуальной машины)- Настройте GRUB для прослушивания (виртуального) последовательного порта и выберите ядро, записав в этот файл
Если допустима вторая перезагрузка (сначала загрузите ядро по умолчанию, а затем перезагрузите желаемое ядро), есть также несколько способов (вы можете использовать grub-set-default
команда от гостя, чтобы выбрать желаемое ядро и выполнить перезагрузку). Некоторые я могу думать здесь:
VBoxManage guestcontrol run
вызвать скрипт оболочки с хоста в гостевой системе (после загрузки гостевых дополнений)VBoxManage guestproperty
установить свойство с хоста иVBoxControl guestproperty
прочитать его из сценария инициализации и решить оттуда- Просто в гостевой SSH и перезагрузись оттуда:D
Очевидно, что если вы всегда хотите загрузить это ядро, почему бы не сделать его стандартным? И в случае, если вы всегда хотите поочередно загрузить два разных ядра, вы также можете установить значение по умолчанию для следующей загрузки в другой директории из grub.cfg.