From: Harvie Date: Mon, 24 May 2010 21:35:50 +0000 (+0200) Subject: some script obviously for running user-mode-linux vservers X-Git-Url: https://git.harvie.cz/?a=commitdiff_plain;h=b17399492634b273a92cce72a7f814f92d352250;p=mirrors%2FPrograms.git some script obviously for running user-mode-linux vservers --- diff --git a/bash/runvm.sh b/bash/runvm.sh new file mode 100755 index 0000000..670fb48 --- /dev/null +++ b/bash/runvm.sh @@ -0,0 +1,106 @@ +#!/bin/bash + +#BINARIES +screen='/usr/bin/screen'; + +#COMMON +cd /mnt/data2/uml/; #directory to work in +umluser='vserver'; #Setuid before run vserver +umldelay='10'; #Delay (man sleep) before restart after vserver halt/fail +umldir='/mnt/data2/uml/umldir'; #Directory for umid & pid files + +#NETWORK +hostnic='eth1'; #network interface to operate on +umlbridge='br0'; #name of bridge between real network and UMLs +hostip='192.168.2.163'; #ipadres of host +hostmask='255.255.255.0'; #netmask of host +hostgw='192.168.2.1'; #default gw of host + +#MACHINES +uml_machines() { #list of UML machines to be executed + #new_uml respawn umlkernel umlrootimg umlmem umlnice umllog tapnic umlmac + #new_uml true linux.uml debtest.img 64M 10 /dev/null tap0 fe:fd:c0:a8:02:89 + new_uml true /opt/uml/linux-2.6.24-rc7 debtest.img 64M 10 log0.txt tap0 fe:fd:c0:a8:02:89 +} + +############################################################ +echo " + +!!!!!!YOU MAY NEED TO SETUP YOUR GUEST OS!!!!!!! +!!!!!!!!!!OR YOU CAN USE DHCP INSTEAD!!!!!!!!!!! +root@uml# cat /etc/network/interfaces + +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet static +address YOUR.ADD.RESS.HERE +netmask $hostmask +gateway $hostgw +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +"; +############################################################ + +echo [i] Initializing tuntap networking... +modprobe tun + +echo [i] Initializing "$umlbridge" bridge... +ifconfig "$hostnic" 0.0.0.0 promisc up +brctl addbr "$umlbridge" +brctl setfd "$umlbridge" 0 +brctl sethello "$umlbridge" 0 +brctl stp "$umlbridge" off + +echo [i] Adding "$hostnic" interface to "$umlbridge" bridge... +ifconfig "$umlbridge" "$hostip" netmask "$hostmask" up +route add default gw "$hostgw" +brctl addif "$umlbridge" "$hostnic" + +echo [!] Now launching all UML Machines... +new_uml() { + if [ -z "$8" ]; then + echo [!] Failed. Not enough parameters for this machine.; + return; + fi; + + respawn="$1"; + umlkernel="$2"; + umlrootimg="$3"; + umlmem="$4"; + umlnice="$5"; + umllog="$6"; + tapnic="$7"; + umlmac="$8"; + + tunctl -d "$tapnic" + tunctl -u "$umluser" -t "$tapnic" + + echo [i] Adding "$tapnic" interface to "$umlbridge" bridge... + ifconfig "$tapnic" 0.0.0.0 promisc up + brctl addif "$umlbridge" "$tapnic" + + #echo [R] Sleeping 120 before REBOOT.... #DEBUG FEATURE + #sleep 120; + #reboot; + + + echo [S] Starting UML on "$tapnic"... + + #con0=fd:0,fd:1 con1=pty + #$screen -d -m su "$umluser" -c "nice -n $umlnice $umlkernel mem=$umlmem ubd0=$umlrootimg jail eth0=tuntap,$tapnic,$umlmac uml_dir=$umldir umid=$tapnic con0=fd:0,fd:1 con1=pty > $umllog 2>&1" + #su "$umluser" -c "$screen -d -m nice -n $umlnice $umlkernel mem=$umlmem ubd0=$umlrootimg jail eth0=tuntap,$tapnic,$umlmac uml_dir=$umldir umid=$tapnic con0=fd:0,fd:1 con1=pty > $umllog 2>&1" + #nice -n "$umlnice" su "$umluser" -c "$screen -d -m $umlkernel mem=$umlmem ubd0=$umlrootimg jail eth0=tuntap,$tapnic,$umlmac uml_dir=$umldir umid=$tapnic con0=fd:0,fd:1 con1=pty > $umllog 2>&1" + + nice -n "$umlnice" su "$umluser" -c "$screen -d -m bash -c ' + while true; do + $umlkernel mem=$umlmem ubd0=$umlrootimg jail eth0=tuntap,$tapnic,$umlmac uml_dir=$umldir umid=$tapnic con0=fd:0,fd:1 con1=pty > $umllog 2>&1; + sleep $umldelay; + if ( $respawn ); then continue; fi; break; + done; + '"; +} + +uml_machines; +echo [!] All UML Machines launched.