Как я могу заставить виртуальную машину VirtualBox (с Ubuntu) запускать команду при возобновлении ее состояния?

Я использую несколько виртуальных машин Ubuntu на хосте MacBook Pro.

Всякий раз, когда я приостанавливаю виртуальную машину или сохраняю ее состояние на диск, при следующем перезапуске системные часы не синхронизируются.

Есть ли способ для виртуальной машины узнать, что она только что возобновилась, и выполнить команду? (например, работает ntpdate -u time.nist.gov как корень сделает свое дело)

Я пытался изменить сценарии в /etc/pm/sleep.d, но они, кажется, не вызваны на приостановке / возобновлении VM.

3 ответа

Решение

Для этого конкретного использования предполагается, что гостевые дополнения синхронизируют часы виртуальной машины автоматически. (См. "Синхронизация времени" на http://www.virtualbox.org/manual/ch04.html или, если вы хотите настроить его, http://www.virtualbox.org/manual/ch09.html.) Возможно, это обновление могло перестать работать при использовании более старой версии гостевых дополнений, чем версия VirtualBox на хосте.

Чтобы установить или обновить гостевые дополнения, смонтируйте образ компакт-диска гостевого дополнения с помощью соответствующей команды меню на хосте и запустите сценарий с компакт-диска гостя. Для получения дополнительной информации см. Инструкции по адресу http://www.virtualbox.org/manual/ch04.html.

Самое простое решение - установить DKMS на сервер, который синхронизирует время и делает много других полезных вещей. Это работает в моей системе OSX, на которой работает VirtualBox с гостевой виртуальной машиной Ubuntu.

Все, что мне нужно было сделать, это запустить это на моей виртуальной машине:

sudo apt-get install virtualbox-guest-dkms
sudo reboot

Людям могут понадобиться разные пакеты, соответствующие их вкусу Linux.

Справочник по Ubuntu DKMS: https://help.ubuntu.com/community/DKMS

Вы можете использовать crontab в linux, если хотите, это не полное исправление, но вы можете установить его так, чтобы он запускался каждые 5 минут, если вы хотите, чтобы он выполнял нужную вам команду, поэтому обновляете время на сервере.

Этот пост показывает, как использовать crontab. Также вы можете посмотреть документацию CronHowTo @ Ubuntu

Это может быть полезно для вас.

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