Vagrant не загружается, потому что grub2 ожидает выбора ядра после некорректного завершения работы

У меня есть 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, ожидая, когда пользователь выберет ядро.

Screenshot of Vagrantbox stuck at grub

Поэтому каждый раз, когда это происходит, я устанавливаю vb.gui = true в Vagrantfile, перезагружаю машину и выбираю ядро ​​для загрузки вручную. Интересно то, что после однократного выбора ядра последующие повторные запуски снова работают просто нормально - до следующего неуместного выключения машины.

Мои вопросы: есть ли более элегантный способ, который не требует ручного вмешательства, чтобы предотвратить зависание блуждающего ящика на экране выбора ядра grub после принудительного выключения?

5
задан 17.05.2020, 09:06

2 ответа

Добавьте к /etc/default/grub из своего поля:

GRUB_RECORDFAIL_TIMEOUT=0

И выполненный:

sudo update-grub
1
ответ дан 17.05.2020, 09:07

Во-первых, доберитесь, идентификатор

# 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

Источник

4
ответ дан 17.05.2020, 09:08
  • 1
    После того, как это загрузится успешно, можно добавить GRUB_RECORDFAIL_TIMEOUT=0 к/etc/default/grub, чтобы предотвратить это снова (и выполнить личинку обновления после добавления той строки). Это скажет личинке загружаться обычно после катастрофического отказа вместо того, чтобы ждать ввод данных пользователем для выбора опций восстановления который can' t быть отвеченным, так как VM является бездисплейным. – tomwhipple 17.05.2020, 09:08
  • 2
    Спасибо за указание на этот ответ. Однако это решение также содержит много ручных шагов, и я задался вопросом, существует ли там некоторый " automatic" способ зафиксировать это. – Jean-François Fabre♦ 17.05.2020, 09:08
  • 3
    Я don' t думают there' s личинка определенная опция добавить к Вашему Vagrantfile для предотвращения этого поведения. Но когда-то зафиксированный, этого не должно происходить снова. – Kachi 17.05.2020, 09:09

Теги

Похожие вопросы