[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, а то я уже замучился в примерах ковыряться :) Их похоже инопланетяне писали.
participants (1)
-
Chernousov Anton