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