Персональный сайт Федоренко Александра Суббота, 14.06.2025, 22:01
Приветствую Вас Гость | RSS
Меню сайта

Категории раздела
Мои статьи [17]
Linux [47]
Кулинария [13]
LINUX [33]
WINDOWS [11]

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » Статьи » Linux

Автостарт виртуальных машин VirtualBox в CentOS 6.3

В прошлой статье мы разобрали как устанавливать VirtualBox в  CentOS. В этой разберем как сделать автостарт созданных виртуальных машин вместе со стартом операционной системы CentOS. Это может оказаться полезным, если произошла перезагрузка сервера в момент когда вас нет на месте и вы вручную не имеете возможности их запустить. Мне это требуется именно по этому, мой сервер по ряду причин должен перезагружаться раз в неделю,  так как мне лень это делать самому, я написал скрипт, и каждое воскресенье в 12 ночи сервер сам перезагружается. Ну и чтобы в понедельник в ручную не мне не запускать все виртуалки я реализовал автостарт виртуальных машин.

А сделал я это следующим образом:

Если вы создавали отдельно пользователя для управления виртуальных машин, как это сделал я, то первое что надо сделать это зайти в систему именно под его учетной записью. (Хочу обратить внимание что для работы скрипта автозапуска виртуальных машин пользователь должен не иметь пароля.) Теперь создадим виртуальную машину допустим с Windows XP. (Важно создавать виртуальную машину, именно от пользователя для которого будим делать автостарт). Ну представим что создали, установили на нее XP, настроили там все как нам требуется, не забыли в Windows разрешить удаленное подключение к раб столу, чтобы было удобно в дальнейшем ее администрировать. Теперь нам необходимо реализовать автостарт этой виртуальной машины, делать мы это будим так:

Запускаем терминал, и заходи в него с правами администратора:

1.# su
2.pass:

Далее создаем файл скрипт запуска виртуальной машины в /etc/init.d/

1.# touch /etc/init.d/vmsctrl

Далее изменяем права на доступ к файлу чтобы каждый пользователь мог его читать и запускать на выполнение:

1.# chmod 755 /etc/init.d/vmsctrl

Теперь скопируем в файл vmsctrl код автозвапуска виртуальных машин. Для этого откроем  его в текстовом редакторе:

1.# gedit /etc/init.d/vmsctrl

Скопируем и сохраним в нем следующий код не забыв заменить в строке NAME= «vbadmin» имя пользователя vbadmin на имя вашего пользователя виртуальной машиной:

#!/bin/bash
######################################################################################
 ## Script for automatic control over VirtualBox virtual machines
 ## Copyright (C) 2012 Almir Dzinovic <almir@dzinovic.net>
 ## Error correction CrazySysAdmin
 ##
 ## This program is free software; you can redistribute it and/or modify it under
 ## the terms of the GNU General Public License as published by the Free Software
 ## Foundation; either version 3 of the License, or (at your option) any later version.
 ##
 ## This program is distributed in the hope that it will be useful, but WITHOUT
 ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 ## FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 ##
 ## Get the full text of the GPL here: http://www.gnu.org/licenses/gpl.txt
 ######################################################################################
### BEGIN INIT INFO
 # Provides: VBox VMs Control
 # Required-Start: $local_fs $network $syslog
 # Required-Stop:
 # Default-Start: 2 3 5
 # Default-Stop: 0 6
 # Short-Description: Starts or stops VirtualBox VMs
 # Description: Starts or stops VirtualBox virtual machines
 ### END INIT INFO
# vmsctrl Starts or stops VirtualBox VMs.
 #
 # chkconfig: 235 99 05
 # description: Starts or stops VirtualBox virtual machines.
 # config: /etc/default/vmsctrl.conf
. /lib/lsb/init-functions
DESC="VirtualBox VMs control script"
NAME="vbadmin"
. /etc/default/virtualbox
VMACHINES=$(su - "$NAME" -c "vboxmanage list vms | awk '{ print \$NF }' | sed -e 's/[{}]//g'")
case "$1" in
  start)
  echo -n $"Starting virtual machines "
  # Starting virtual machines
  for i in $VMACHINES
  do
  su - "$NAME" -c "vboxmanage startvm $i --type headless &> /dev/null"
  done
  [ $? -eq 0 ] && log_success_msg || \
  log_failure_msg
  ;;
  stop)
  echo -n $"Powering off virtual machines "
  # Powering off virtual machines
  for i in $VMACHINES
  do
  su - "$NAME" -c "vboxmanage controlvm $i poweroff &> /dev/null"
  done
  [ $? -eq 0 ] && log_success_msg || \
  log_failure_msg
  ;;
  restart)
  echo -n $"Power cycling virtual machines "
  # Power cycling virtual machines
  for i in $VMACHINES
  do
  su - "$NAME" -c "vboxmanage controlvm $i reset &> /dev/null"
  done
  [ $? -eq 0 ] && log_success_msg || \
  log_failure_msg
  ;;
  *)
  echo $"Usage: "$0" {start|stop|restart}"
  exit 1
  ;;
 esac
exit $?

 

Теперь создадим соответствующую службу для запуска:

1.# chkconfig --add vmsctrl

Проверим работоспособность скрипта:

1.# /etc/init.d/vmsctrl start

Результатом выполнения команды должен стать успешный запуск виртуальной машины с Windows XP. Если не стартует, то стоит проверить существует ли в системе вообще какие либо зарегистрированные виртуальные машины (Команду необходимо выполнять от имени пользователя виртуальной машины):

1.# vboxmanage list vms

Если результатом выполнения команды окажется пустота, то соответственной зарегистрированных виртуальных машин нет, и вы где то, что то, накасячили… Так что, если что пишите в коменты.

Осталось самое малое, скрыть пользователя виртуальных машин, что бы он не отображался при старте системы. (Не обязательно делать, но желательно, в основном из за того что эта учетка без пароля) Делается это командой:

1.# usermod -u 999 vbadmin

На этом все, за сим я  откланиваюсь.

P.S.
Команд по управлению скриптом всего 3, объяснять что они делают я думаю не требуется:

1.# /etc/init.d/vmsctrl start
2.# /etc/init.d/vmsctrl stop
3.# /etc/init.d/vmsctrl restart
Категория: Linux | Добавил: AFed (26.06.2013)
Просмотров: 2023 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск

Copyright MyCorp © 2025Создать бесплатный сайт с uCoz