В Debian Jessie (в отличии от Debian Wheezy) для управления службами используется systemd и с некоторыми из служб возникают проблемы.
Одна из них: VirtualBox не перезапускает свои виртуальные сетевые адаптеры после пробуждения системы из сна.
Когда это происходит:
- Если у вас установлен и используется VirtualBox версии 4.3.8 и ниже (на более высоких не проверял)
- Если в VirtualBox у вас настроен host-only адаптер
- Вы «усыпили» ваш реальный компьютер, например закрыв крышку ноутбука, после чего «разбудили его»
Каковы признаки:
- Виртуальная машина перестаёт пинговаться
- Подключиться к виртуальной машине по ssh также невозможно
- Если одна из папок виртуальной машины была примонтирована с помощью sshfs, все процессы, пытающиеся ей пользоваться намертво зависают
Что делать?
Для перезапуска вручную можно использовать команду вроде этой (адрес 192.168.100.1 — это адрес моего host-only адаптера, настроенного в VirtualBox):
# ifconfig vboxnet0 192.168.100.1 up |
и именно ей я и пользовался в течении какого-то времени, пока это окончательно не достало, и я решил автоматизировать процесс.
Для автоматизации мы создадим новую службу systemd, которая будет выполняться при событии «resume» (то есть пробуждении компьютера)
Создадим файл скрипта для восстановления сети
Файл положим в /opt/bin/resume-vboxnet0.sh, его содержимое — банальные две строчки:
#!/bin/bash ifconfig vboxnet0 192.168.100.1 up |
Создадим новую службу systemd:
Новая служба в systemd представлена также отдельным файлом с содержимым:
[Unit] # Название службы Description=Reconfigure vboxnet0 after resume # Когда служба должна вызываться: After=suspend.target After=hibernate.target After=hybrid-sleep.target [Service] # Тип службы - одиночный запуск (т.е. это не демон, # который запускается и работает в фоне, # а просто одноразовый скрипт) Type=oneshot # Запуск скрипта resume-vboxnet.sh ExecStart=/opt/bin/resume-vboxnet.sh [Install] # Какими службами востребована данная служба: WantedBy=suspend.target WantedBy=hibernate.target WantedBy=hybrid-sleep.target |
Содержимое этого файла нужно положить в папку /lib/systemd/sys/ под каким-нибудь запоминающимся именем, например resume-vboxnet.service.
В этой папке, хранятся все установленные системные службы systemd.
# nano /lib/systemd/sys/resume-vboxnet.service |
Установим свежесозданную службу, так чтобы systemd начал принимать её во внимание:
# systemctl reenable resume-vboxnet.service |
Проверим работоспособность
Теперь попробуем закрыть крышку ноутбука, чтобы он «уснул» (или какой у вас там настроен способ «усыпления» машины?), после чего «пробуждаем» его, и смотрим, в каком состоянии находится сеть.
Оставить комментарий