{"id":301,"date":"2019-07-13T21:00:14","date_gmt":"2019-07-13T20:00:14","guid":{"rendered":"http:\/\/slackware.pt\/?p=301"},"modified":"2019-07-13T21:04:02","modified_gmt":"2019-07-13T20:04:02","slug":"gerir-as-maquinas-virtuais","status":"publish","type":"post","link":"http:\/\/slackware.pt\/?p=301","title":{"rendered":"Gerir as m\u00e1quinas virtuais"},"content":{"rendered":"<p>Eis os comandos necess\u00e1rios para compilar o VirtualBox:<\/p>\n<pre style=\"font-size: 0.85em;\">cd \/root\r\nbat\/vboxes stop\r\ncd \/usr\/local\/\r\nVBoxManage extpack uninstall \"Oracle VM VirtualBox Extension Pack\"\r\nreboot\r\nexit\r\ncd \/usr\/local\/\r\nchmod +x .\/VirtualBox-X.X.XX-XXXXX-Linux_amd64.run\r\n.\/VirtualBox-X.X.XX-XXXXX-Linux_amd64.run\r\nVBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-X.X.XX-XXXXX.vbox-extpack\r\ncd -\r\nbat\/vboxes start<\/pre>\n<p>Nota : o ficheiro <strong>bat\/vboxes<\/strong> \u00e9 um ficheiro de comandos que criei para gerir as m\u00e1quinas virtuais do VirtualBox. J\u00e1 agora, este script serve para lan\u00e7ar as m\u00e1quinas virtuais em modo headless e tem o conte\u00fado seguinte:<\/p>\n<pre style=\"font-size: 0.85em;\">#!\/bin\/sh\r\n# PATH should only include \/usr\/* if it runs after the mountnfs.sh script\r\nPATH=\/usr\/sbin:\/usr\/bin:\/sbin:\/bin\r\nSCRIPTNAME=\/root\/bat\/vboxes\r\nMANAGE_CMD=\/root\/bat\/vboxcase \"$1\" in\r\nstart|stop|shutdown|restart|force-reload)\r\necho \"-- $1 virtual boxes --\"\r\n;;\r\n*)\r\necho \"Usage: $SCRIPTNAME {start|stop|shutdown|restart|force-reload}\" &gt;&amp;2\r\nexit 3\r\n;;\r\nesac\r\n\r\nfor i in `VBoxManage list vms | grep \"^\\\"\" | sed -e \"s\/{.*}\/\/g\" | sed -e \"s\/\\\"\/\/g\"`;\r\ndo\r\necho \"$MANAGE_CMD $i $1\"\r\n$MANAGE_CMD $i $1\r\ndone\r\n\r\n<\/pre>\n<p>No script anterior fa\u00e7o refer\u00eancia a um outro script <strong>bat\/vbox<\/strong> cujo conte\u00fado se segue e serve para gerir uma m\u00e1quina virtual de cada vez (ver c\u00f3digo original <a href=\"http:\/\/wiki.contribs.org\/VirtualBox_4.0_on_SME_Server_v8_beta_6\">aqui<\/a>)):<\/p>\n<pre style=\"font-size: 0.85em;\">#!\/bin\/sh\r\n### BEGIN INIT INFO\r\n# Provides: vbox\r\n# Required-Start:$local_fs $remote_fs vboxdrv vboxnet\r\n# Required-Stop: $local_fs $remote_fs\r\n# Default-Start: 2 3 4 5\r\n# Default-Stop: 0 1 6\r\n# Short-Description: MAQUINA virtual machine\r\n# Description: MAQUINA virtual machine hosted by VirtualBox\r\n### END INIT INFO# Author: Brendan Kidwell &lt;brendan@glump.net&gt;#\r\n# Based on \/etc\/init.d\/skeleton from Ubuntu 8.04. Updated for Ubuntu 9.10.\r\n# If you are using Ubuntu &lt;9.10, you might need to change \"Default-Stop\" # above to \"S 0 1 6\". # Do NOT \"set -e\" # O nome da m\u00e1quina tem que vir como 1\u00ba par\u00e2metro # O nome do comando tem que vir como 2\u00ba par\u00e2metro MAQUINA=\"$1\" COMANDO=\"$2\" # PATH should only include \/usr\/* if it runs after the mountnfs.sh script PATH=\/usr\/sbin:\/usr\/bin:\/sbin:\/bin DESC=\"$MAQUINA virtual machine\" NAME=vbox SCRIPTNAME=\/root\/bat\/$NAME MANAGE_CMD=VBoxManage VM_OWNER=root VM_NAME=\"$MAQUINA\" #This has to be the name exactly as it appears in your VirtualBox GUI control panel. # Read configuration variable file if it is present [ -r \/etc\/default\/$NAME ] &amp;&amp; . \/etc\/default\/$NAME # Load the VERBOSE setting and other rcS variables [ -f \/etc\/default\/rcS ] &amp;&amp; . \/etc\/default\/rcS # Define LSB log_* functions. # Depend on lsb-base (&gt;= 3.0-6) to ensure that this file is present.\r\n#. \/lib\/lsb\/init-functions\r\n\r\n#\r\n# Function that starts the daemon\/service\r\n#\r\ndo_start()\r\n{\r\n# Return\r\n# 0 if daemon has been started\r\n# 1 if daemon was already running\r\n# 2 if daemon could not be started\r\n\r\nsudo -H -u $VM_OWNER $MANAGE_CMD showvminfo \"$VM_NAME\"|grep \"^State:\\s*running\" &gt;\/dev\/null &amp;&amp; {\r\necho \"$VM_NAME\" is already running.\r\nreturn 1\r\n}\r\n\r\nsudo -H -u $VM_OWNER $MANAGE_CMD startvm \"$VM_NAME\" -type headless &gt;\/dev\/null || {\r\necho Failed to start \"$VM_NAME\".\r\nreturn 2\r\n}\r\n\r\necho \"$VM_NAME\" started or resumed.\r\nreturn 0\r\n}\r\n\r\n#\r\n# Function that stops the daemon\/service\r\n#\r\ndo_stop()\r\n{\r\n# Return\r\n# 0 if daemon has been stopped\r\n# 1 if daemon was already stopped\r\n# 2 if daemon could not be stopped\r\n# other if a failure occurred\r\n\r\nsudo -H -u $VM_OWNER $MANAGE_CMD showvminfo \"$VM_NAME\"|grep \"^State:\\s*running\" &gt;\/dev\/null || {\r\necho \"$VM_NAME\" is already stopped.\r\nreturn 1\r\n}\r\n\r\nsudo -H -u $VM_OWNER $MANAGE_CMD controlvm \"$VM_NAME\" savestate || {\r\necho Failed to stop \"$VM_NAME\".\r\nreturn 2\r\n}\r\n\r\necho \"$VM_NAME\" suspended.\r\nreturn 0\r\n}\r\n\r\n#\r\n#\r\n# Function that powers off the daemon\/service\r\n#\r\ndo_shutdown()\r\n{\r\n# Return\r\n# 0 if daemon has been stopped\r\n# 1 if daemon was already stopped\r\n# 2 if daemon could not be stopped\r\n# other if a failure occurred\r\n\r\nsudo -H -u $VM_OWNER $MANAGE_CMD showvminfo \"$VM_NAME\"|grep \"^State:\\s*running\" &gt;\/dev\/null || {\r\necho \"$VM_NAME\" is already stopped.\r\nreturn 1\r\n}\r\n\r\nsudo -H -u $VM_OWNER $MANAGE_CMD controlvm \"$VM_NAME\" acpipowerbutton || {\r\necho Failed to stop \"$VM_NAME\".\r\nreturn 2\r\n}\r\n\r\necho \"$VM_NAME\" powered off.\r\nreturn 0\r\n}\r\n\r\n#\r\n# Display \"State\" field from showinfo action\r\n#\r\ndo_status()\r\n{\r\nsudo -H -u $VM_OWNER $MANAGE_CMD showvminfo \"$VM_NAME\"|grep \"^State:\\s*.*$\"\r\n}\r\n\r\ncase \"$COMANDO\" in\r\nstart)\r\n[ \"$VERBOSE\" != no ] &amp;&amp; logger \"Starting $DESC\" \"$NAME\"\r\ndo_start\r\ncase \"$?\" in\r\n0|1) [ \"$VERBOSE\" != no ] &amp;&amp; logger 0 ;;\r\n2) [ \"$VERBOSE\" != no ] &amp;&amp; logger 1 ;;\r\nesac\r\n;;\r\nstop)\r\n[ \"$VERBOSE\" != no ] &amp;&amp; logger \"Stopping $DESC\" \"$NAME\"\r\ndo_stop\r\ncase \"$?\" in\r\n0|1) [ \"$VERBOSE\" != no ] &amp;&amp; logger 0 ;;\r\n2) [ \"$VERBOSE\" != no ] &amp;&amp; logger 1 ;;\r\nesac\r\n;;\r\nshutdown)\r\n[ \"$VERBOSE\" != no ] &amp;&amp; logger \"Powering off $DESC\" \"$NAME\"\r\ndo_shutdown\r\ncase \"$?\" in\r\n0|1) [ \"$VERBOSE\" != no ] &amp;&amp; logger 0 ;;\r\n2) [ \"$VERBOSE\" != no ] &amp;&amp; logger 1 ;;\r\nesac\r\n;;\r\nrestart|force-reload)\r\n#\r\n# If the \"reload\" option is implemented then remove the\r\n# 'force-reload' alias\r\n#\r\nlogger \"Restarting $DESC\" \"$NAME\"\r\ndo_stop\r\ncase \"$?\" in\r\n0|1)\r\ndo_start\r\ncase \"$?\" in\r\n0) logger 0 ;;\r\n1) logger 1 ;; # Old process is still running\r\n*) logger 1 ;; # Failed to start\r\nesac\r\n;;\r\n*)\r\n# Failed to stop\r\nlogger 1\r\n;;\r\nesac\r\n;;\r\nstatus)\r\ndo_status\r\n;;\r\n*)\r\n#echo \"Usage: $SCRIPTNAME nome-maquina {start|stop|shutdown|restart|reload|force-reload}\" &gt;&amp;2\r\necho \"Usage: $SCRIPTNAME nome-maquina {start|stop|shutdown|restart|force-reload|status}\" &gt;&amp;2\r\nexit 3\r\n;;\r\nesac\r\n\r\n<\/pre>\n<p>Usei outro script logo no arranque da m\u00e1quina (<em>host<\/em>) para criar placas de rede virtuais para serem usadas pelas m\u00e1quinas virtuais. S\u00e3o criadas como uma ponte (<em>bridge<\/em>) para uma placa f\u00edsica no <em>host<\/em> que s\u00f3 serve para rencaminhar o tr\u00e1fego das m\u00e1quinas virtuais para a rede e vice-versa. O seu conte\u00fado \u00e9 o seguinte:<\/p>\n<pre style=\"font-size: 0.85em;\">#!\/bin\/sh\r\n# set PATH for the case we are called via sudo or su root\r\n# PATH=\/sbin:\/usr\/bin:\/bin:\/usr\/binUSER=root\r\n\r\nNUMBER_OF_VM=9\r\n# create the bridge\r\nbrctl addbr br0\r\n\r\n# create the taps and insert them into the bridge\r\n\r\nNB=1\r\nwhile [ $NB -le $NUMBER_OF_VM ]\r\ndo\r\ntunctl -t tap$NB -u $USER\r\nip link set up dev tap$NB\r\nbrctl addif br0 tap$NB\r\nlet NB=$NB+1\r\ndone\r\n\r\nip route add 192.168.40.0\/24 dev eth1\r\n\r\n# set the IP address and routing\r\nip link set up dev br0\r\nip addr add 192.168.40.1\/24 dev br0\r\n##ip route add 192.168.40.0\/24 dev br0\r\n\r\nbrctl addif br0 eth1\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Eis os comandos necess\u00e1rios para compilar o VirtualBox: cd \/root bat\/vboxes stop cd \/usr\/local\/ VBoxManage extpack uninstall &#8220;Oracle VM VirtualBox Extension Pack&#8221; reboot exit cd \/usr\/local\/ chmod +x .\/VirtualBox-X.X.XX-XXXXX-Linux_amd64.run .\/VirtualBox-X.X.XX-XXXXX-Linux_amd64.run VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-X.X.XX-XXXXX.vbox-extpack cd &#8211; bat\/vboxes start Nota : o ficheiro bat\/vboxes \u00e9 um ficheiro de comandos que criei para gerir as m\u00e1quinas virtuais &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/slackware.pt\/?p=301\" class=\"more-link\">Continuar a ler <span class=\"screen-reader-text\">&#8220;Gerir as m\u00e1quinas virtuais&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/slackware.pt\/index.php?rest_route=\/wp\/v2\/posts\/301"}],"collection":[{"href":"http:\/\/slackware.pt\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/slackware.pt\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/slackware.pt\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/slackware.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=301"}],"version-history":[{"count":4,"href":"http:\/\/slackware.pt\/index.php?rest_route=\/wp\/v2\/posts\/301\/revisions"}],"predecessor-version":[{"id":305,"href":"http:\/\/slackware.pt\/index.php?rest_route=\/wp\/v2\/posts\/301\/revisions\/305"}],"wp:attachment":[{"href":"http:\/\/slackware.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/slackware.pt\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=301"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/slackware.pt\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}