Mailinglist Archive: opensuse-ru (6 mails)

< Previous Next >
[opensuse-ru] Проблема со скриптом автозапуска виртуальных машин Virtual Box
Имеется стандартный скрипт /etc/init.d/vboxes, который должен согласно документации заниматься автозапуском и отключением виртуальных машин virtualbox, вещь по идее хорошая, но есть несколько багов.
Во первых в файле /etc/sysconfig/vbox можно указать только имя машины, а не ее UUID, во вторых в имени машины не должно быть пробелов. Это я исправил, там проблем особых не было.

Патчик для скрипта:

--- vboxes 2011-10-30 11:20:43.000000000 +0700
+++ vboxes.patched 2012-04-19 12:12:38.000000000 +0700
@@ -79,7 +79,6 @@

N=1
for VBOX in $VBOX_AUTOSTART; do
-
if grep -q \; <<< "$VBOX"; then
VBOX_NAME[$N]=$(cut -d\; -f1 <<< "$VBOX")
VBOX_USER[$N]=$(cut -d\; -f2 <<< "$VBOX")
@@ -126,8 +125,9 @@

VBOX_PRESENT=$(su ${VBOX_USER[$N]} -c "$VBOXMGR_BIN list --long vms" |
sed -n 's/^Name:[[:blank:]]\{7\} *//p' | grep -w "${VBOX_NAME[$N]}")
-
- if [[ -n "$VBOX_PRESENT" ]]; then
+ VBOX_UUID=`echo "${VBOX_NAME[$N]}" | tr -d "{" | tr -d "}"`
+ VBOX_PRESENT_UUID=$(su ${VBOX_USER[$N]} -c "$VBOXMGR_BIN list --long vms" | sed -n 's/^UUID:[[:blank:]]\{7\} *//p' | grep -w "$VBOX_UUID")
+ if [[ -n "$VBOX_PRESENT" ]] || [[ -n "$VBOX_PRESENT_UUID" ]]; then

# VBoxManage startvm does not result in a VM with working networking
# su ${VBOX_USER[$N]} -c "$VBOXMGR_BIN -q startvm "${VBOX_NAME[$N]}" -type headless" > /tmp/$PRG.$$ 2>&1
@@ -190,7 +190,8 @@
N=1
for VBOX_USER in $VBOX_USERS; do
VBOX_RUNNING=$(su $VBOX_USER -c "$VBOXMGR_BIN list --long runningvms" |
- sed -n 's/^Name:[[:blank:]]\{7\} *//p')
+ sed -n 's/^UUID:[[:blank:]]\{7\} *//p')
+
for VBOX in $VBOX_RUNNING; do
VBOX_NAME[$N]="$VBOX"
VBOX_USER[$N]="$VBOX_USER"

Теперь выползла хрень еще интереснее. Если запускать скрипт в режиме System V, то запуск и завершение проходит корректно, если в режиме SystemD, то виртуалки запускаются, но не выключаются.
Попробовал отлаживать скрипт и получается, что он даже и не пытается их отключать. Видимо это связано, с тем, что после запуска службе назначается статус inactive (dead).

/etc/rc.d/vboxes status
redirecting to systemctl
vboxes.service - LSB: Autostart Virtual Box VMs
Loaded: loaded (/etc/init.d/vboxes)
Active: inactive (dead) since Thu, 19 Apr 2012 12:15:42 +0700; 12min ago
CGroup: name=systemd:/system/vboxes.service

Подскажите, кто писал скрипты для SystemD, как службе сказать, что она живая. Или подскажите нормальную документацию по SystemD, а то я уже замучился в примерах ковыряться :) Их похоже инопланетяне писали.


< Previous Next >
This Thread
  • No further messages