У меня есть Vagrant box с Ubuntu 12.04 LTS. Иногда после принудительного выключения (например, из-за того, что машина перестала отвечать на запросы) бродячая коробка не загружается в следующий раз.
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Running 'pre-boot' VM customizations...
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
На скриншоте предварительного просмотра в Virtualbox предполагается, что окно зависает на этапе grub, ожидая, когда пользователь выберет ядро.
Поэтому каждый раз, когда это происходит, я устанавливаю vb.gui = true
в Vagrantfile, перезагружаю машину и выбираю ядро для загрузки вручную. Интересно то, что после однократного выбора ядра последующие повторные запуски снова работают просто нормально - до следующего неуместного выключения машины.
Мои вопросы: есть ли более элегантный способ, который не требует ручного вмешательства, чтобы предотвратить зависание блуждающего ящика на экране выбора ядра grub после принудительного выключения?
Во-первых, доберитесь, идентификатор
# Before v1.1
# MACHINE_ID=$(awk -F\" '{print $6}' .vagrant)
# After v1.1
MACHINE_ID=$(cat .vagrant/machines/default/virtualbox/id)
машины Выключаются, VM
VBoxManage controlvm ${MACHINE_ID} poweroff
Тогда загружаются, машина с консолью
VBoxManage startvm ${MACHINE_ID}
GUI Ожидают его, чтобы загрузиться, войти в систему, работать:
sudo update-grub
, Когда успешный, закрывает его вниз
VBoxManage controlvm ${MACHINE_ID} poweroff
И после этого бродяга будет просто обычно загружать Ваш VM