вторник, 3 мая 2011 г.

Мой rc скрипт для запуска VirtualBox во FreeBSD

Текущий порт virtualbox идет без какого-либо rc скрипта, поэтому его приходится делать самим.
Для начала нужно создать пользователя от которого будет запускаться гостевые окружения:

# adduser
Username: vbox
Full name:
Uid (Leave empty for default):
Login group [vbox]: nobody
Login group is nobody. Invite vbox into other groups? []:
Login class [default]:
Shell (sh csh tcsh bashc bash rbash nologin) [sh]: 
Home directory [/home/vbox]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]: no
Lock out the account after creation? [no]:
Username   : vbox
Password   :
Full Name  :
Uid        : 1003
Class      :
Groups     : nobody
Home       : /home/vbox
Home Mode  :
Shell      : /bin/sh
Locked     : no
OK? (yes/no):  yes

Теперь сам скрипт:

#!/bin/sh

# PROVIDE: vbox
# REQUIRE: LOGIN
# BEFORE: 
# KEYWORD: shutdown

# Add the following line to /etc/rc.conf to enable `vbox':
#
#vbox_enable="YES"
#

. /etc/rc.subr

name="fbsd82"
rcvar=`set_rcvar`

command="/usr/bin/env"
pidfile="/home/vbox/${name}.pid"
command_args="HOME=/home/vbox /usr/sbin/daemon -p ${pidfile} /usr/local/lib/virtualbox/VBoxHeadless --startvm  ${name}"
procname="/usr/local/lib/virtualbox/VBoxHeadless"
stop_cmd="vbox_stopcmd"

# read configuration and set defaults
load_rc_config "$name"
: ${vbox_enable="NO"}
: ${vbox_user="vbox"}

vbox_stopcmd()
{
        su -m ${vbox_user} -c 'sh -c "/usr/bin/env HOME=/home/vbox /usr/local/bin/VBoxManage controlvm fbsd8.2 acpipowerbutton"'
        return 0
}

run_rc_command "$1"

его нужно сохранить под именем vbox в директорию /usr/local/etc/rc.d/ и поставить права 644.
Теперь осталось прописать в /etc/rc.conf fbsd82_enable="YES" и виртуальная машина запустится при следующей перезагрузке.

UPDATE: Начиная с версии 4.0 порт freebsd содержит собственный rc скрипт, и я рекомендую использовать именно его.

Комментариев нет:

Отправить комментарий