slitaz-vz rev 2

Add stuff for templates
author Eric Joseph-Alexandre <erjo@slitaz.org>
date Tue Nov 01 09:23:49 2011 +0100 (2011-11-01)
parents d7f371bbe726
children 7af7c96012c3
files base-scripts/Makefile.vz base-scripts/kernel_migrate.sh base-scripts/local.sh base-scripts/network.sh base-scripts/rc.network base-scripts/rcS base-scripts/setup base-scripts/vz base-scripts/vzconf.sh
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/base-scripts/Makefile.vz	Tue Nov 01 09:23:49 2011 +0100
     1.3 @@ -0,0 +1,45 @@
     1.4 +# Build Slitaz template for OpenVZ
     1.5 +#
     1.6 +# 2011/01 Eric Joseph-Alexandre <erjo@slitaz.org> - 
     1.7 +# Publish under GNU General Public License.
     1.8 +
     1.9 +MIRROR+=http://mirror.slitaz.org/iso/
    1.10 +VERSION+=3.0
    1.11 +FLAVOR+=base
    1.12 +SRC+=./777
    1.13 +TMP+=/tmp
    1.14 +
    1.15 +all:
    1.16 +
    1.17 +
    1.18 +template: prepare tar-gz
    1.19 +
    1.20 +prepare:
    1.21 +	@rm -rf $(SRC)/lib/modules
    1.22 +	
    1.23 +	# Set mtab config
    1.24 +	rm -f $(SRC)/etc/mtab
    1.25 +	ln -s /proc/mounts $(SRC)/etc/mtab
    1.26 +
    1.27 +	# Set fstab config
    1.28 +	echo '# /etc/fstab: in VE file system.' > $(SRC)/etc/fstab
    1.29 +	echo '#' >> $(SRC)/etc/fstab
    1.30 +	echo 'proc            /proc        proc    defaults          0       0' >> $(SRC)/etc/fstab
    1.31 +	echo 'devpts          /dev/pts     devpts  defaults          0       0' >> $(SRC)/etc/fstab
    1.32 +
    1.33 +	# Disable root login
    1.34 +	sed -i '/^root.*/root:!:13525:0:99999:7:::/' $(SRC)/etc/shadow
    1.35 +	
    1.36 +	# Disable tty
    1.37 +	sed -i 's/^tty/#tty/'  $(SRC)/etc/shadow
    1.38 +
    1.39 +
    1.40 +tar-gz:
    1.41 +	cd $(SRC) ; tar cvzf $(TMP)/slitaz-$(FLAVOR)-$(VERSION).tar.gz .
    1.42 +
    1.43 +download:
    1.44 +	cd $(SRC)
    1.45 +	
    1.46 +
    1.47 +
    1.48 +.PHONY: prepare template download
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/base-scripts/kernel_migrate.sh	Tue Nov 01 09:23:49 2011 +0100
     2.3 @@ -0,0 +1,36 @@
     2.4 +#!/bin/sh
     2.5 +#
     2.6 +
     2.7 +KVER=2.6.32
     2.8 +PREFIX=ovzkernel-
     2.9 +SUFFIX=
    2.10 +EXTRAVERSION=-i686
    2.11 +
    2.12 +
    2.13 +for i in linux-*
    2.14 +do
    2.15 +	if [ ! -d ${PREFIX}$(echo ${i##linux-})${SUFFIX} ]; then
    2.16 +		cp -pa  $i ${PREFIX}$(echo ${i##linux-})${SUFFIX}
    2.17 +		sed -i -e "s/PACKAGE=.*/PACKAGE=\"${PREFIX}$(echo ${i##linux-})\"/" \
    2.18 +			-e "s/VERSION=.*/VERSION=\"${KVER}\"/" \
    2.19 +			-e "s/DEPENDS.*/DEPENDS=\"${PREFIX%%-}\"/" \
    2.20 +			-e "s/WANTED=.*/WANTED=\"${PREFIX%%-}\"/" \
    2.21 +			-e "s/\(WEB_SITE.*\)/\1\nEXTRAVERSION=\"${EXTRAVERSION}\"/" \
    2.22 +			-e "s/\(EXTRA.*\)/\1\nSOURCE=\"linux\"/" \
    2.23 +			-e "s!\(local path\)!\1\n\tsrc=\$WOK/\$WANTED/\$SOURCE-\$VERSION\n\t_pkg=\$WOK/\$WANTED/\$SOURCE-\$VERSION/_pkg\n\tKERNELRELEASE=\$( cat \$src/include/config/kernel.release 2> /dev/null)!" \
    2.24 +			-e "s!slitaz/list_modules.sh!\OpenVZ/list_modules.sh \${KERNELRELEASE}!" \
    2.25 +			-e "s/\$VERSION-slitaz/\${KERNELRELEASE}/" \
    2.26 +			-e "s/depmod -a \$VERSION-slitaz/depmod -a \${KERNELRELEASE}/" \
    2.27 +			${PREFIX}$(echo ${i##linux-})${SUFFIX}/receipt
    2.28 +			
    2.29 +			sed -i '/chroot/ {
    2.30 +				i\KERNELRELEASE=$(cat $1\/etc\/ovzkernel\/kernel\.release)
    2.31 +			}' ${PREFIX}$(echo ${i##linux-})${SUFFIX}/receipt
    2.32 +			
    2.33 +			sed -i '/\tdepmod/ {
    2.34 +				i\
    2.35 +		\		KERNELRELEASE=$(cat $1\/etc\/ovzkernel\/kernel\.release)
    2.36 +			}' ${PREFIX}$(echo ${i##linux-})${SUFFIX}/receipt
    2.37 +	fi
    2.38 +done
    2.39 +
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/base-scripts/local.sh	Tue Nov 01 09:23:49 2011 +0100
     3.3 @@ -0,0 +1,56 @@
     3.4 +#!/bin/sh
     3.5 +# /etc/init.d/local.sh - Local startup commands.
     3.6 +#
     3.7 +# All commands here will be executed at boot time.
     3.8 +#
     3.9 +. /etc/init.d/rc.functions
    3.10 +
    3.11 +#~ (°-  { Documentation dans /usr/share/doc. Utiliser 'less -EM' pour,
    3.12 +#~ //\    lire des fichiers, devenir root avec 'su' et éditer avec 'nano'.
    3.13 +#~ v_/_   Taper 'startx' pour lancer une session X. }
    3.14 +
    3.15 +
    3.16 +echo "Starting local startup commands... "
    3.17 +
    3.18 +echo  "SliTaz GNU/Linux (`cat /etc/slitaz-release`)" > /etc/motd
    3.19 +echo >> /etc/motd
    3.20 +echo "(°-  { Documentation dans /usr/share/doc. Utiliser 'less -EM' pour," >> /etc/motd
    3.21 +echo "//\    lire des fichiers, devenir root avec 'su' et éditer avec 'nano'." >> /etc/motd
    3.22 +echo "v_/_   Acces au panel : http://<adresse_ip>:3000 }" >> /etc/motd
    3.23 +echo >> /etc/motd
    3.24 +echo "Kernel    : `uname -r`" >> /etc/motd
    3.25 +echo "hostname  : `hostname`" >> /etc/motd
    3.26 +echo "ip        : $(ifconfig br0 | grep inet | \
    3.27 + cut -d ':' -f2 | cut -d ' ' -f1)" >> /etc/motd
    3.28 +echo >> /etc/motd
    3.29 +
    3.30 +echo  "SliTaz GNU/Linux $(cat /etc/slitaz-release) ($(ifconfig br0 | grep inet | \
    3.31 + cut -d ':' -f2 | cut -d ' ' -f1))" > /etc/issue
    3.32 +echo >> /etc/issue
    3.33 +
    3.34 +echo " * Settings Kernel parameters" 
    3.35 +/sbin/sysctl -w -p /etc/sysctl.conf > /dev/null 2>&1
    3.36 +
    3.37 +# Setting up owp and VZ in Live mode
    3.38 +if [ ! -f /var/lib/slitaz-vz ]; then
    3.39 +	# vzquota doesn't work in live mode ( http://labs.slitaz.org/issues/380 )
    3.40 +	sed -i s/DISK_QUOTA=yes/DISK_QUOTA=no/ /etc/vz/vz.conf
    3.41 +	
    3.42 +        /usr/bin/ruby /usr/share/ovz-web-panel/utils/hw-daemon/hw-daemon.rb stop > /dev/null 2>&1
    3.43 +                                                                                                 
    3.44 +        echo " * Settings hw-daemon"                                                             
    3.45 +        echo "address = 127.0.0.1" > /usr/share/ovz-web-panel/utils/hw-daemon/hw-daemon.ini      
    3.46 +        echo "port = 7767" >> /usr/share/ovz-web-panel/utils/hw-daemon/hw-daemon.ini  
    3.47 +		           
    3.48 +        export RAND_KEY=`head -c 200 /dev/urandom | md5sum | awk '{ print \$1 }'`                
    3.49 +        echo "key = $RAND_KEY" >> /usr/share/ovz-web-panel/utils/hw-daemon/hw-daemon.ini         
    3.50 +                                                                                                 
    3.51 +        # Add localhost in server list                                                           
    3.52 +        echo " * Adding localhost to the list of controlled servers..."                          
    3.53 +        #/usr/bin/ruby /usr/share/ovz-web-panel/script/runner -e production "HardwareServer.new(:host => 'localhost', :auth_key => '"$(echo  $RAND_KEY)"').co
    3.54 +        sqlite3  /usr/share/ovz-web-panel/db/production.sqlite3 "insert into hardware_servers(host,auth_key) values('localhost','"$(echo $RAND_KEY)"')"      
    3.55 +        /usr/bin/ruby /usr/share/ovz-web-panel/utils/hw-daemon/hw-daemon.rb start 
    3.56 +	
    3.57 +	# Create slitaz-vz will prevent this configs. 
    3.58 +	date > /var/lib/slitaz-vz
    3.59 +fi
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/base-scripts/network.sh	Tue Nov 01 09:23:49 2011 +0100
     4.3 @@ -0,0 +1,226 @@
     4.4 +#!/bin/sh
     4.5 +# /etc/init.d/network.sh - Network initialization boot script.
     4.6 +# Config file is: /etc/network.conf
     4.7 +#
     4.8 +. /etc/init.d/rc.functions
     4.9 +
    4.10 +if [ -z "$2" ]; then
    4.11 +	. /etc/network.conf 
    4.12 +else
    4.13 +	. $2 
    4.14 +fi
    4.15 +
    4.16 +
    4.17 +Boot() {
    4.18 +	# Set hostname.
    4.19 +	echo -n "Setting hostname..."
    4.20 +	/bin/hostname -F /etc/hostname
    4.21 +	status
    4.22 +
    4.23 +	# Configure loopback interface.
    4.24 +	echo -n "Configuring loopback..."
    4.25 +	/sbin/ifconfig lo 127.0.0.1 up
    4.26 +	/sbin/route add 127.0.0.1 lo
    4.27 +	status	
    4.28 +}
    4.29 +
    4.30 +
    4.31 +eth() {
    4.32 +#  Use ethernet
    4.33 +	   	ifconfig $INTERFACE up	
    4.34 +}
    4.35 +
    4.36 +wifi() {
    4.37 +	# For wifi. Users just have to enable it through yes and usually
    4.38 +	# essid any will work and the interface is autodetected.
    4.39 +	if [ "$WIFI" = "yes" ] || grep -q "wifi" /proc/cmdline; then
    4.40 +	    ifconfig $INTERFACE down
    4.41 +		
    4.42 +		# Confirm if $WIFI_INTERFACE is the wifi interface
    4.43 +		if [ ! -d /sys/class/net/$WIFI_INTERFACE/wireless ]; then
    4.44 +			echo "$WIFI_INTERFACE is not a wifi interface, changing it."
    4.45 +			WIFI_INTERFACE=$(grep : /proc/net/dev | cut -d: -f1 | \
    4.46 +				while read dev; do iwconfig $dev 2>&1 | \
    4.47 +					grep -iq "essid" && { echo $dev ; break; }; \
    4.48 +				done)
    4.49 +			[ -n "$WIFI_INTERFACE" ] && sed -i "s/^WIFI_INTERFACE=.*/WIFI_INTERFACE=\"$WIFI_INTERFACE\"/" /etc/network.conf
    4.50 +		fi
    4.51 +		
    4.52 +		echo -n "Configuring $WIFI_INTERFACE..."
    4.53 +		ifconfig $WIFI_INTERFACE up
    4.54 +		if iwconfig $WIFI_INTERFACE | grep -q "Tx-Power"; then
    4.55 +			iwconfig $WIFI_INTERFACE txpower on
    4.56 +		fi
    4.57 +		status
    4.58 +		
    4.59 +		[ -n "$WPA_DRIVER" ] || WPA_DRIVER="wext"
    4.60 +		
    4.61 +		
    4.62 +		IWCONFIG_ARGS=""
    4.63 +		[ -n "$WIFI_MODE" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS mode $WIFI_MODE"
    4.64 +		[ -n "$WIFI_CHANNEL" ] && IWCONFIG_ARGS="$IWCONFIG_ARGS channel $WIFI_CHANNEL"
    4.65 +		# unencrypted network
    4.66 +		if [ "$WIFI_KEY" == "" -o "$WIFI_KEY_TYPE" == "none" ]; 
    4.67 +then
    4.68 +			iwconfig $WIFI_INTERFACE essid "$WIFI_ESSID" $IWCONFIG_ARGS
    4.69 +		fi
    4.70 +		# encrypted network
    4.71 +		[ -n "$WIFI_KEY" ] && case "$WIFI_KEY_TYPE" in
    4.72 +			wep|WEP) 
    4.73 +			     IWCONFIG_ARGS="$IWCONFIG_ARGS key $WIFI_KEY"
    4.74 +				 iwconfig $WIFI_INTERFACE essid "$WIFI_ESSID" $IWCONFIG_ARGS
    4.75 +# wpa_supplicant can also deal with wep encryption but iwconfig is preferred
    4.76 +# Tip: Use unquoted strings for hexadecimal key in wep_key0
    4.77 +#			cat /etc/wpa_supplicant.conf > /tmp/wpa.conf 
    4.78 +#			cat >> /tmp/wpa.conf <<EOF
    4.79 +#ctrl_interface=/var/run/wpa_supplicant
    4.80 +#ctrl_interface_group=0
    4.81 +#ap_scan=1
    4.82 +#network={
    4.83 +#	ssid="$WIFI_ESSID"
    4.84 +#	scan_ssid=1
    4.85 +#	key_mgmt=NONE
    4.86 +#	wep_key0="$WIFI_KEY"
    4.87 +#	wep_tx_keyidx=0
    4.88 +#	priority=5
    4.89 +#}
    4.90 +#EOF
    4.91 +#				echo "Starting wpa_supplicant for NONE/WEP..."
    4.92 +#				wpa_supplicant -B -W -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE 
    4.93 +				    ;;
    4.94 +			wpa|WPA) cat /etc/wpa_supplicant.conf > /tmp/wpa.conf # load pre-configured multiple profiles 
    4.95 +			cat >> /tmp/wpa.conf <<EOF
    4.96 +ctrl_interface=/var/run/wpa_supplicant
    4.97 +ctrl_interface_group=0
    4.98 +ap_scan=1
    4.99 +network={
   4.100 +	ssid="$WIFI_ESSID"
   4.101 +	scan_ssid=1
   4.102 +	proto=WPA RSN
   4.103 +	key_mgmt=WPA-PSK
   4.104 +	psk="$WIFI_KEY"
   4.105 +	priority=5
   4.106 +}
   4.107 +EOF
   4.108 +				echo "Starting wpa_supplicant for WPA-PSK..."
   4.109 +				wpa_supplicant -B -W -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE 
   4.110 +				;;
   4.111 +			any|ANY) cat /etc/wpa_supplicant.conf > /tmp/wpa.conf 
   4.112 +			cat >> /tmp/wpa.conf <<EOF
   4.113 +ctrl_interface=/var/run/wpa_supplicant
   4.114 +ctrl_interface_group=0
   4.115 +ap_scan=1
   4.116 +network={
   4.117 +	ssid="$WIFI_ESSID"
   4.118 +	scan_ssid=1
   4.119 +	key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
   4.120 +	group=CCMP TKIP WEP104 WEP40
   4.121 +	pairwise=CCMP TKIP
   4.122 +	psk="$WIFI_KEY"
   4.123 +	priority=5
   4.124 +}
   4.125 +EOF
   4.126 +				echo "Starting wpa_supplicant for any key type..."
   4.127 +				wpa_supplicant -B -W -c/tmp/wpa.conf -D$WPA_DRIVER -i$WIFI_INTERFACE 
   4.128 +				;;
   4.129 +		esac
   4.130 +		
   4.131 +		rm -f /tmp/wpa.conf
   4.132 +		
   4.133 +		INTERFACE=$WIFI_INTERFACE	
   4.134 +		 		
   4.135 +	fi
   4.136 +
   4.137 +}
   4.138 +
   4.139 +wpa()
   4.140 +{
   4.141 +	DHCP_SCRIPT="/etc/init.d/wpa_action.sh"
   4.142 +	wpa_cli -a$DHCP_SCRIPT -B 
   4.143 +}
   4.144 +
   4.145 +dhcp() {
   4.146 +
   4.147 +# For a dynamic IP with DHCP. 
   4.148 +	if [ "$DHCP" = "yes" ]  ; then
   4.149 +		echo "Starting udhcpc client on: $INTERFACE..."		
   4.150 +		if [ -d /var/run/wpa_supplicant ]; then # wpa wireless && wpa_ctrl_open interface is up
   4.151 +		   wpa		  
   4.152 +		else  # fallback on udhcpc: wep, eth
   4.153 +		   /sbin/udhcpc -b -T 1 -A 12 -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid
   4.154 +		fi		
   4.155 +	fi
   4.156 +	
   4.157 +}
   4.158 +
   4.159 +static_ip() {
   4.160 +# For a static IP.
   4.161 +	if [ "$STATIC" = "yes" ] ; then
   4.162 +		echo "Configuring static IP on $INTERFACE: $IP..."
   4.163 +		/sbin/ifconfig $INTERFACE $IP netmask $NETMASK up
   4.164 +		/sbin/route add default gateway $GATEWAY
   4.165 +		# wpa_supplicant waits for wpa_cli
   4.166 +		[ -d /var/run/wpa_supplicant ] && wpa_cli -B
   4.167 +		# Multi-DNS server in $DNS_SERVER.
   4.168 +		/bin/mv /etc/resolv.conf /tmp/resolv.conf.$$
   4.169 +		if [ -n "$DNS_SERVER" ], then
   4.170 +			for NS in $DNS_SERVER
   4.171 +			do
   4.172 +				echo "nameserver $NS" >> /etc/resolv.conf
   4.173 +			done
   4.174 +		else
   4.175 +			touch /etc/resolv.conf
   4.176 +		fi
   4.177 +	fi
   4.178 +}
   4.179 +
   4.180 +# Stopping everything
   4.181 +Stop() {
   4.182 +	echo "Stopping all interfaces"
   4.183 +	ifconfig $INTERFACE down
   4.184 +	ifconfig $WIFI_INTERFACE down
   4.185 +
   4.186 +	echo "Killing all daemons"
   4.187 +	killall udhcpc
   4.188 +	killall wpa_supplicant 2>/dev/null
   4.189 +	
   4.190 +	if iwconfig $WIFI_INTERFACE | grep -q "Tx-Power"; then
   4.191 +		echo "Shutting down wifi card"
   4.192 +		iwconfig $WIFI_INTERFACE txpower off
   4.193 +	fi
   4.194 +}
   4.195 +
   4.196 +Start() {
   4.197 +   eth
   4.198 +   wifi
   4.199 +   dhcp 
   4.200 +   static_ip
   4.201 +   # change default lxpanel panel iface
   4.202 +	sed -i "s/iface=.*/iface=$INTERFACE/" /etc/lxpanel/default/panels/panel	
   4.203 +}
   4.204 +
   4.205 +
   4.206 +# looking for arguments:
   4.207 +if [ -z "$1" ]; then
   4.208 +	Boot
   4.209 +	Start
   4.210 +else
   4.211 +	case $1 in
   4.212 +		start)
   4.213 +			Start ;;
   4.214 +		stop)
   4.215 +			Stop ;;
   4.216 +		restart)
   4.217 +			Stop
   4.218 +			Start ;;
   4.219 +		*)
   4.220 +			echo ""
   4.221 +			echo -e "\033[1mUsage:\033[0m /etc/init.d/`basename $0` [start|stop|restart]"
   4.222 +			echo ""
   4.223 +			echo -e "	Default configuration file is \033[1m/etc/network.conf\033[0m"
   4.224 +			echo -e "	You can specify another configuration file in the second argument:"
   4.225 +			echo -e "	\033[1mUsage:\033[0m /etc/init.d/`basename $0` [start|stop|restart] file.conf"
   4.226 +			echo ""
   4.227 +
   4.228 +	esac
   4.229 +fi
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/base-scripts/rc.network	Tue Nov 01 09:23:49 2011 +0100
     5.3 @@ -0,0 +1,79 @@
     5.4 +#!/bin/sh
     5.5 +# rc.network, set network config stuff for OpenVZ container.
     5.6 +#
     5.7 +# 
     5.8 +
     5.9 +. /etc/init.d/rc.functions
    5.10 +
    5.11 +if [ -z "$2" ]; then
    5.12 +	. /etc/network.conf 
    5.13 +else
    5.14 +	. $2 
    5.15 +fi
    5.16 +
    5.17 +Boot() {
    5.18 +	# Set hostname.
    5.19 +	/bin/hostname -F /etc/hostname
    5.20 +
    5.21 +	# We are always start loopback
    5.22 +	ifconfig lo up
    5.23 +}
    5.24 +
    5.25 +_ifconfig() {
    5.26 +	#  Use ethernet
    5.27 +	ifconfig $INTERFACE up	
    5.28 +	
    5.29 +	# Start all network devices
    5.30 +	for interface in /etc/network/ifconfig-*
    5.31 +	do
    5.32 +		DEVICE=$(echo "`basename $interface`" | sed 's/ifconfig-//') 
    5.33 +		. $interface
    5.34 +		if [ "$ONBOOT" = "yes" ]; then
    5.35 +			case $MODE in
    5.36 +				static)
    5.37 +					/sbin/ifconfig $DEVICE $IP netmask $NETMASK broadcast  $BROADCAST up ;;
    5.38 +				dhcp)
    5.39 +					/sbin/udhcpc -b -T 1 -A 12 -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid ;;
    5.40 +				*)
    5.41 +					echo "$MODE is not supported." ;;
    5.42 +			esac
    5.43 +		fi
    5.44 +	done
    5.45 +}
    5.46 +
    5.47 +# Stopping everything
    5.48 +Stop() {
    5.49 +	echo "Stopping all interfaces"
    5.50 +	ifconfig $INTERFACE down
    5.51 +	
    5.52 +	# Stopping all network interfaces.
    5.53 +	for interface in /etc/network/ifconfig-*
    5.54 +	do
    5.55 +		DEVICE=$(echo "`basename $interface`" | sed 's/ifconfig-//') 
    5.56 +		. $interface
    5.57 +		if [ "$ONBOOT" = "yes" ]; then
    5.58 +			/sbin/ifconfig $DEVICE down
    5.59 +		fi
    5.60 +	done
    5.61 +	
    5.62 +}
    5.63 +
    5.64 +Start() {
    5.65 +	_ifconfig
    5.66 +}
    5.67 +
    5.68 +# looking for arguments:
    5.69 +case $1 in
    5.70 +		start)
    5.71 +			Start ;;
    5.72 +		stop)
    5.73 +			Stop ;;
    5.74 +		restart)
    5.75 +			Stop
    5.76 +			Start
    5.77 +			;;
    5.78 +		*)
    5.79 +			Boot
    5.80 +			Start
    5.81 +			;;
    5.82 +esac
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/base-scripts/rcS	Tue Nov 01 09:23:49 2011 +0100
     6.3 @@ -0,0 +1,255 @@
     6.4 +#!/bin/sh
     6.5 +# /etc/init.d/rcS - Initial boot script for SliTaz GNU/Linux. 
     6.6 +# Config file is : /etc/rcS.conf
     6.7 +#
     6.8 +# rcS is the main initialization script used to check fs, mount, clean,
     6.9 +# run scripts and start daemons.
    6.10 +#
    6.11 +. /etc/init.d/rc.functions
    6.12 +. /etc/rcS.conf
    6.13 +
    6.14 +# Boot time.
    6.15 +bootdate=`date +%s`
    6.16 +
    6.17 +if [ "$1" != "logged" ]; then # logged
    6.18 +
    6.19 +echo "Processing /etc/init.d/rcS..."
    6.20 +
    6.21 +# Mount /proc.
    6.22 +echo -n "Mounting proc filesystem..."
    6.23 +/bin/mount proc
    6.24 +status
    6.25 +
    6.26 +# Parse cmdline args for earlier boot options. All other boot options
    6.27 +# are in /etc/init./bootopts.sh.
    6.28 +echo -n "Searching for early boot options..."
    6.29 +for opt in `cat /proc/cmdline`
    6.30 +do
    6.31 +	case $opt in
    6.32 +		fastbootx|fbx)
    6.33 +			export FAST_BOOT_X="yes" ;;
    6.34 +		cdrom=*)
    6.35 +			export CDROM=${opt#cdrom=} ;;
    6.36 +		modprobe=*)
    6.37 +			export MODPROBE="yes" ;;
    6.38 +		config=*)
    6.39 +			export CONFIG=${opt#config=} ;;
    6.40 +		*)
    6.41 +			continue ;;
    6.42 +	esac
    6.43 +done
    6.44 +status
    6.45 +
    6.46 +# Start Udev to populate /dev and handle hotplug events
    6.47 +if [ "$UDEV" = "yes" ]; then
    6.48 +	echo -n "Starting udev daemon..."
    6.49 +	/sbin/udevd --daemon
    6.50 +	status
    6.51 +	echo -n "Udevadm requesting events from the Kernel..."
    6.52 +	udevadm trigger
    6.53 +	status
    6.54 +	echo -n "Udevadm waiting for the event queue to finish..."
    6.55 +	udevadm settle
    6.56 +	status
    6.57 +	echo "/sbin/udevd" > /proc/sys/kernel/hotplug
    6.58 +fi
    6.59 +
    6.60 +# Before mounting filesystems we check fs specified in the file
    6.61 +# /etc/rcS.conf and variable $CHECK_FS.
    6.62 +if [ -n "$CHECK_FS" ]; then
    6.63 +	mount -o remount,ro /
    6.64 +	for i in $CHECK_FS
    6.65 +	do
    6.66 +		echo "Checking filesystem on : $i"
    6.67 +		/sbin/e2fsck -p $i
    6.68 +	done
    6.69 +fi
    6.70 +
    6.71 +# Remount rootfs rw.
    6.72 +echo "Remounting rootfs read/write..."
    6.73 +/bin/mount -o remount,rw /
    6.74 +
    6.75 +# Mount filesystems in /etc/fstab.
    6.76 +echo "Mounting filesystems in fstab..."
    6.77 +/bin/mount -a
    6.78 +
    6.79 +# Store boot messages to log files.
    6.80 +/bin/dmesg > /var/log/dmesg.log &
    6.81 +vcsa2txt < /dev/vcsa1 | awk 'BEGIN {s=0} /^Processing|^.witching/ {s=1} { if (s) print }' >/var/log/boot.log
    6.82 +script -a -q -c '/etc/init.d/rcS logged' /var/log/boot.log
    6.83 +
    6.84 +else # logged
    6.85 +
    6.86 +# Clean up the system.
    6.87 +if [ "$CLEAN_UP_SYSTEM" = "yes" ]; then
    6.88 +	echo -n "Cleaning up the system..."
    6.89 +	find /var/run -name "*.pid" -type f | xargs /bin/rm -f
    6.90 +	/bin/rm -rf /tmp /var/run/dbus/* /var/run/hald/pid /var/lock/*
    6.91 +	/bin/mkdir -p /tmp && /bin/chmod 1777 /tmp
    6.92 +	status
    6.93 +else
    6.94 +	echo "System clean up is disabled in /etc/rcS.conf..."
    6.95 +	echo -n "Keeping all tmp and pid files..."
    6.96 +	status
    6.97 +fi
    6.98 +
    6.99 +# Set up tmp X11 and ICE dir.
   6.100 +#~ echo -n "Setting up tmp X11 and ICE unix dir..."
   6.101 +#~ /bin/mkdir -p /tmp/.X11-unix /tmp/.ICE-unix
   6.102 +#~ /bin/chmod 1777 /tmp/.X11-unix /tmp/.ICE-unix
   6.103 +#~ status
   6.104 +
   6.105 +# Fast boot into X for HD install or custom Live system. We need 
   6.106 +# keymap settings since Xvesa dumps the console mapping and a correct
   6.107 +# slim configuration for screen resolution. DBUS and HAL must also start
   6.108 +# before X session (manual login or autologin) to have devices in PCmanFM.
   6.109 +if [ "$FAST_BOOT_X" = "yes" ]; then
   6.110 +	/etc/init.d/i18n.sh
   6.111 +	/etc/init.d/dbus start
   6.112 +	/etc/init.d/hald start
   6.113 +	/etc/init.d/slim start &
   6.114 +fi
   6.115 +
   6.116 +# Create /dev/cdrom if needed (symlink does not exist on LiveCD).
   6.117 +# Also add /dev/cdrom to fstab if entry does not exist.
   6.118 +if [ -n "$CDROM" ]; then
   6.119 +	DRIVE_NAME=${CDROM#/dev/}
   6.120 +else
   6.121 +	DRIVE_NAME=`cat /proc/sys/dev/cdrom/info | grep "drive name" | cut -f 3`
   6.122 +fi
   6.123 +if [ -n "$DRIVE_NAME" -a ! "`readlink /dev/cdrom`" ]; then
   6.124 +	echo -n "Creating symlink : /dev/cdrom..."
   6.125 +	ln -s /dev/$DRIVE_NAME /dev/cdrom
   6.126 +	ln -s /dev/$DRIVE_NAME /dev/dvd
   6.127 +	status
   6.128 +fi
   6.129 +if ! grep -q "/dev/cdrom" /etc/fstab; then
   6.130 +	echo -n "Adding /dev/cdrom  to fstab..."
   6.131 +	echo '/dev/cdrom      /media/cdrom iso9660 user,ro,noauto       0       0' \
   6.132 +		>> /etc/fstab
   6.133 +	status
   6.134 +fi
   6.135 +# Chmod hack on each boot for Asunder and burnbox. Allowing all users
   6.136 +# to burn/rip CD/DVD.
   6.137 +if [ -n "$DRIVE_NAME" -a "`readlink /dev/cdrom`" ]; then
   6.138 +	echo -n "Chmoding cdrom device..."
   6.139 +	chmod 0666 /dev/cdrom
   6.140 +	chmod 0666 /dev/dvd
   6.141 +	chmod 0666 /dev/$DRIVE_NAME
   6.142 +	status
   6.143 +fi
   6.144 +
   6.145 +# Handle kernel cmdline parameter modprobe=<module_list> 
   6.146 +if [ -n "$MODPROBE" ]; then
   6.147 +	MODULES=`sed -e 's/.* modprobe=\([^ ]*\).*/\1/' -e 's/,/\n/g' < /proc/cmdline`
   6.148 +	for i in $MODULES; do
   6.149 +		echo -n "Loading kernel module $i"
   6.150 +		/sbin/modprobe $i
   6.151 +		status 
   6.152 +	done
   6.153 +fi
   6.154 +
   6.155 +# Handle kernel cmdline parameter config=<device>,<path> to source a 
   6.156 +# disk init script
   6.157 +if [ -n "$CONFIG" ]; then
   6.158 +	DEVICE=${CONFIG%,*}
   6.159 +	SCRIPT=${CONFIG#*,}
   6.160 +	echo "Probing $DEVICE... "
   6.161 +	if ! /bin/mount -r $DEVICE /mnt; then
   6.162 +		if echo $DEVICE | grep -Eq "/dev/sd|UUID=|LABEL="; then
   6.163 +			USBDELAY=`cat /sys/module/usb_storage/parameters/delay_use`
   6.164 +			USBDELAY=$((1+$USBDELAY))
   6.165 +			echo "$DEVICE is potentially a USB device: sleep for $USBDELAY seconds"
   6.166 +			sleep $USBDELAY
   6.167 +		fi
   6.168 +		if ! /bin/mount -r $DEVICE /mnt; then
   6.169 +			CONFIG=""
   6.170 +		fi
   6.171 +	fi
   6.172 +	echo -n "Source $SCRIPT from $DEVICE..."
   6.173 +	if [ -n "$CONFIG" ]; then
   6.174 +		. /mnt/$SCRIPT
   6.175 +		/bin/umount /mnt 2> /dev/null || true
   6.176 +	fi
   6.177 +	status 
   6.178 +fi
   6.179 +
   6.180 +# Mount /proc/bus/usb.
   6.181 +if [ -d /proc/bus/usb ]; then
   6.182 +	echo -n "Mounting /proc/bus/usb filesystem..."
   6.183 +	/bin/mount -t usbfs usbfs /proc/bus/usb
   6.184 +	status
   6.185 +fi
   6.186 +
   6.187 +# Start syslogd and klogd.
   6.188 +if [ "$KERNEL_LOG_DAEMONS" = "yes" ]; then
   6.189 +	echo -n "Starting system log deamon: syslogd..."
   6.190 +	/sbin/syslogd -s $SYSLOGD_ROTATED_SIZE && status
   6.191 +	echo -n "Starting kernel log daemon: klogd..."
   6.192 +	/sbin/klogd && status
   6.193 +else
   6.194 +	echo "Kernel log daemons are disabled in /etc/rc.conf..."
   6.195 +fi
   6.196 +
   6.197 +# Load all modules listed in config file.
   6.198 +if [ -n "$LOAD_MODULES" ]; then
   6.199 +	for mod in $LOAD_MODULES
   6.200 +	do
   6.201 +		modprobe $mod
   6.202 +	done
   6.203 +fi
   6.204 +
   6.205 +# Be quiet on configuration to avoid messages overwriting ncurses dialog
   6.206 +echo "0 0 0 0" > /proc/sys/kernel/printk
   6.207 +
   6.208 +# Detect PCI and USB devices with Tazhw from slitaz-tools. We load
   6.209 +# kernel modules only at first boot or in LiveCD mode.
   6.210 +if [ ! -s /var/lib/detected-modules ]; then
   6.211 +	/sbin/tazhw init
   6.212 +fi
   6.213 +
   6.214 +# Call udevadm trigger to ensure /dev is fully populate now that all 
   6.215 +# modules are loaded.
   6.216 +if [ "$UDEV" = "yes" ]; then
   6.217 +	echo -n "Requesting events from the Kernel..."
   6.218 +	udevadm trigger
   6.219 +	status
   6.220 +fi
   6.221 +
   6.222 +# Start all scripts specified with $RUN_SCRIPTS.
   6.223 +echo "Executing all initialization scripts..."
   6.224 +for script in $RUN_SCRIPTS
   6.225 +do
   6.226 +	if [ -x /etc/init.d/$script ]; then
   6.227 +		/etc/init.d/$script
   6.228 +	fi
   6.229 +done
   6.230 +
   6.231 +# Re-source main config file. In Live mode, daemons list can be modified 
   6.232 +# by boot options (screen=text will remove slim).
   6.233 +. /etc/rcS.conf
   6.234 +
   6.235 +# Start all daemons specified with $RUN_DAEMONS.
   6.236 +echo "Starting all daemons specified in /etc/rcS.conf..."
   6.237 +for daemon in $RUN_DAEMONS
   6.238 +do
   6.239 +	if [ -x /etc/init.d/$daemon ]; then
   6.240 +		/etc/init.d/$daemon start
   6.241 +	fi
   6.242 +done
   6.243 +
   6.244 +# Back to a verbose mode.
   6.245 +echo "7 4 1 7" > /proc/sys/kernel/printk
   6.246 +
   6.247 +# Reset screen and display a bold message.
   6.248 +if [ -n "$MESSAGE" ]; then
   6.249 +	/usr/bin/reset
   6.250 +	#echo -e "\033[1m$MESSAGE\033[0m"
   6.251 +fi
   6.252 +
   6.253 +# Display and log boot time.
   6.254 +time=$((`date +%s` - $bootdate))
   6.255 +echo $time > /var/log/boot-time
   6.256 +#echo "SliTaz boot time: ${time}s"
   6.257 +
   6.258 +fi # logged
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/base-scripts/setup	Tue Nov 01 09:23:49 2011 +0100
     7.3 @@ -0,0 +1,232 @@
     7.4 +#!/bin/sh
     7.5 +# Tazadmin - SliTaz System Configuration
     7.6 +#
     7.7 +#
     7.8 +# Author : Eric Joseph-Alexandre (Erjo) <erjo@slitaz.org>
     7.9 +#           
    7.10 +
    7.11 +#export DIALOGRC=$PWD/rc/slackware.rc
    7.12 +
    7.13 +VERSION=1.0
    7.14 +
    7.15 +: ${DIALOG=dialog}
    7.16 +
    7.17 +BACKTITLE="SliTaz Configuration Tools v.${VERSION}"
    7.18 +COMMAND=$1
    7.19 +LOG=/tmp/$(basename $0).log
    7.20 +OUT=/tmp/_retval_
    7.21 +DATADIR=/usr/share/slitaz-tools/tazadmin/
    7.22 +#DATADIR=./
    7.23 +
    7.24 +BS="15 50"
    7.25 +
    7.26 +# Messages language setting
    7.27 +# Switch to default English if $LANG.msg doesn't exist.
    7.28 +set_locale()
    7.29 +{
    7.30 +	if [ -f ${LANG%%_*}.msg ]; then
    7.31 +		. ${DATADIR}${LANG%%_*}.msg
    7.32 +	fi
    7.33 +}
    7.34 +
    7.35 +# use  --msgbox.
    7.36 +# syntax: msg ["Title"] "Message text"
    7.37 +msg()
    7.38 +{
    7.39 +	if [ $# -gt 1 ]; then
    7.40 +		TITLE=$1
    7.41 +		shift
    7.42 +		MSG="$@"
    7.43 +	else
    7.44 +		MSG="$@"
    7.45 +	fi
    7.46 +	$DIALOG --title " ${TITLE:-Message} " \
    7.47 +		--colors --backtitle "$BACKTITLE" \
    7.48 +		--clear --msgbox "\n$MSG" 0 0
    7.49 +}
    7.50 +
    7.51 +# Exit install if user is not root.
    7.52 +check_root()
    7.53 +{
    7.54 +	if test $(id -u) != 0 ; then
    7.55 +		error_message "$ERR_CHK_ROOT"
    7.56 +		exit 0
    7.57 +	fi
    7.58 +}
    7.59 +
    7.60 +# functions
    7.61 +#
    7.62 +trim(){
    7.63 +	read LINE
    7.64 +	echo $LINE
    7.65 +}
    7.66 +
    7.67 +get_argc()
    7.68 +{
    7.69 +	echo $#
    7.70 +}
    7.71 +
    7.72 +
    7.73 +
    7.74 +
    7.75 +get_hostname()
    7.76 +{
    7.77 +	# Set hostname
    7.78 +	HOSTNAME=$(cat /etc/hostname)
    7.79 +	exec 3>&1
    7.80 +	HOSTNAME=`$DIALOG --backtitle "$BACKTITLE"  --title "Hostname" --clear  \
    7.81 +        --inputbox "Enter your computer hostname" $BS "${HOSTNAME}" 2>&1 1>&3`
    7.82 +	ret=$?
    7.83 +	exec 3>&-
    7.84 +	# if $HOSTNAME is set we update /etc/hostname
    7.85 +	# and change current hostname.
    7.86 +	if [ ! -z ${HOSTNAME} ]; then
    7.87 +		echo ${HOSTNAME} > /etc/hostname
    7.88 +		hostname $(cat /etc/hostname)
    7.89 +	fi
    7.90 +}	
    7.91 +
    7.92 +set_ip_adress()
    7.93 +{
    7.94 +	# Set static configuration for Network.
    7.95 +	. /etc/network.conf	
    7.96 +	exec 3>&1
    7.97 +	IPCONFIG=`$DIALOG --ok-label "Submit" \
    7.98 +     	--backtitle "$BACKTITLE" --extra-button --extra-label "${BTN_DHCP:-Use DHCP server}"\
    7.99 +     	--title " IP configuration " \
   7.100 +		--form "Here is a possible piece of a configuration program." \
   7.101 +		20 55 0 \
   7.102 +    	"Interface          : " 1 1 "$INTERFACE" 1 21 20 0 \
   7.103 +    	"IP Address         : " 2 1 "$IP" 2 21 20 0 \
   7.104 +    	"Network mask       : " 3 1 "$NETMASK"  3 21  20 0 \
   7.105 +    	"Default gateway    : " 4 1 "$GATEWAY"  4 21  20 0 \
   7.106 +    	"DNS server(s)      : " 5 1 "$DNS_SERVER" 5 21 20 0 \
   7.107 +    	2>&1 1>&3`
   7.108 +		ret=$?
   7.109 +		exec 3>&-
   7.110 +		
   7.111 +	case "$ret" in
   7.112 +		0)
   7.113 +			if  [[ "`get_argc $IPCONFIG`" -gt "1" ]]; then
   7.114 +				set_static_ip $IPCONFIG
   7.115 +			else
   7.116 +				msg "${ERR_BED_IP:-Invalid values.}"
   7.117 +			fi
   7.118 +			;;
   7.119 +		3)
   7.120 +			get_dhcp_lease ;;
   7.121 +	esac	
   7.122 +}
   7.123 +
   7.124 +get_dhcp_lease()
   7.125 +{
   7.126 +	sed -i 's/DHCP=.*/DHCP="yes"/' /etc/network.conf
   7.127 +	sed -i 's/STATIC=.*/STATIC="no"/' /etc/network.conf
   7.128 +	/sbin/udhcpc -b -i $INTERFACE -p /var/run/udhcpc.$INTERFACE.pid &
   7.129 +}
   7.130 +
   7.131 +set_static_ip()
   7.132 +{
   7.133 +	sed -i 's/DHCP=.*/DHCP="no"/' /etc/network.conf
   7.134 +	sed -i 's/STATIC=.*/STATIC="yes"/' /etc/network.conf
   7.135 +	sed -i -e "s/INTERFACE=".*"/INTERFACE=\"$1\"/" /etc/network.conf
   7.136 +	sed -i -e "s/IP=".*"/IP=\"$2\"/" /etc/network.conf
   7.137 +	sed -i -e "s/NETMASK=".*"/NETMASK=\"$3\"/" /etc/network.conf
   7.138 +	sed -i -e "s/GATEWAY=".*"/GATEWAY=\"$4\"/" /etc/network.conf
   7.139 +	sed -i -e "s/DNS_SERVER=".*"/DNS_SERVER=\"$5\"/" /etc/network.conf
   7.140 +}
   7.141 +	
   7.142 +network_menu()
   7.143 +{
   7.144 +	ret=0
   7.145 + 	until [ $ret -eq 1 ];do
   7.146 +    	$DIALOG --title "$MENU_TITLE" \
   7.147 +        	--backtitle "$BACKTITLE" --clear \
   7.148 +        	--cancel-label "Quitter" \
   7.149 +        	--colors \
   7.150 +        	--menu "$TAZ_CMD_MSG" 15 50 40\
   7.151 +        	"adress"  	"  Network settings" \
   7.152 +        	"hostname"  	"  Set your hostname" \
   7.153 +        	2> $OUT
   7.154 +    	ret=$?
   7.155 +    	case `cat $OUT` in
   7.156 +       	hostname)
   7.157 +			get_hostname ;;
   7.158 +       	adress)
   7.159 +       		set_ip_adress ;;
   7.160 +    	esac
   7.161 +	done
   7.162 +}
   7.163 +
   7.164 +set_password()
   7.165 +{
   7.166 +	SEP='
   7.167 +'
   7.168 +	exec 3>&1
   7.169 +	PASSWORD=`$DIALOG --backtitle "$BACKTITLE" --title "Set password" --clear \
   7.170 + 		--separate-widget "$SEP" \
   7.171 + 		--insecure --passwordbox "Enter new password for user below: \n\n" 10 50 \
   7.172 +		--title "Confirme password" \
   7.173 +        --insecure --passwordbox "Confirme new password for user below: \n\n"	10 50 2>&1 1>&3`
   7.174 +	ret=$?
   7.175 +	exec 3>&-
   7.176 +	if [ -z "${PASSWORD}" ]; then
   7.177 +		msg "Password not set"
   7.178 +	else
   7.179 +		PASS1="$(echo $PASSWORD | cut -d ' ' -f1)"
   7.180 +		PASS2="$(echo $PASSWORD | cut -d ' ' -f2)"
   7.181 +		if [ "$PASS1" != "$PASS2" ]; then
   7.182 +			msg "Passwords don't match.\nNothing change."
   7.183 +		else
   7.184 +			echo  "root:$PASS1" | chpasswd
   7.185 +		fi
   7.186 +	fi
   7.187 +}
   7.188 +
   7.189 +##
   7.190 +# Program sequence
   7.191 +#
   7.192 +set_locale
   7.193 +check_root
   7.194 +
   7.195 +until [ $retval -eq 1 ];do
   7.196 +	$DIALOG --title "$MENU_TITLE" \
   7.197 +		--backtitle "$BACKTITLE" --clear \
   7.198 +		--cancel-label "Quitter" \
   7.199 +		--colors \
   7.200 +		--menu "$TAZ_CMD_MSG" 15 50 40\
   7.201 +		"keymap"  		"  Keyboard mapping" \
   7.202 +		"locale"      	"  Language setting" \
   7.203 +		"network"   	"  Netwok configuration" \
   7.204 +		"password" 		"  Change root password" \
   7.205 +		2> $OUT
   7.206 +	
   7.207 +	retval=$?
   7.208 +	
   7.209 +	# Execute commands
   7.210 +	#
   7.211 +	case `cat $OUT` in
   7.212 +		keymap)
   7.213 +			if [ -x /sbin/tazkeymap ]; then
   7.214 +				tazkeymap
   7.215 +			else
   7.216 +				msg "Unable to find tazkeymap !"
   7.217 +			fi
   7.218 +			;;
   7.219 +		locale)
   7.220 +			if [ -x /sbin/tazlocale ]; then
   7.221 +				tazlocale
   7.222 +			else
   7.223 +				msg "Unable to find tazlocale !"
   7.224 +			fi
   7.225 +			;;
   7.226 +		network)
   7.227 +			network_menu;;
   7.228 +		password)
   7.229 +			set_password ;;
   7.230 +	esac
   7.231 +done
   7.232 +
   7.233 +clear
   7.234 +
   7.235 +exit 0
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/base-scripts/vz	Tue Nov 01 09:23:49 2011 +0100
     8.3 @@ -0,0 +1,604 @@
     8.4 +#!/bin/sh
     8.5 +#  Copyright (C) 2000-2008, Parallels, Inc. All rights reserved.
     8.6 +#
     8.7 +#  This program is free software; you can redistribute it and/or modify
     8.8 +#  it under the terms of the GNU General Public License as published by
     8.9 +#  the Free Software Foundation; either version 2 of the License, or
    8.10 +#  (at your option) any later version.
    8.11 +#
    8.12 +#  This program is distributed in the hope that it will be useful,
    8.13 +#  but WITHOUT ANY WARRANTY; without even the implied warranty of
    8.14 +#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    8.15 +#  GNU General Public License for more details.
    8.16 +#
    8.17 +#  You should have received a copy of the GNU General Public License
    8.18 +#  along with this program; if not, write to the Free Software
    8.19 +#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    8.20 +#
    8.21 +#
    8.22 +# OpenVZ startup script, used for redhat and debian related distributions.
    8.23 +
    8.24 +###
    8.25 +# description: OpenVZ startup script.
    8.26 +###
    8.27 +
    8.28 +VZCONF=/etc/vz/vz.conf
    8.29 +
    8.30 +[ -f ${VZCONF} ] || exit 0
    8.31 +. ${VZCONF}
    8.32 +[ "${VIRTUOZZO}" = "no" ] && exit 0
    8.33 +
    8.34 +VZCTL=/usr/sbin/vzctl
    8.35 +[ -x ${VZCTL} ] || exit 0
    8.36 +
    8.37 +VZQUOTA=/usr/sbin/vzquota
    8.38 +CONFIG_DIR=/etc/vz/conf
    8.39 +LOCKFILE=/var/lock/subsys/vz_lock
    8.40 +SUBSYS_VZ=/var/lock/subsys/vz
    8.41 +VESTAT=/proc/vz/vestat
    8.42 +VZDEV=venet0
    8.43 +PRELOAD_MODULES=
    8.44 +MODULES=
    8.45 +MODULES_OTHER=
    8.46 +NET_MODULES=
    8.47 +IPT_MODULES=
    8.48 +
    8.49 +if [ "${MODULES_DISABLED}" != "yes" ]; then
    8.50 +	PRELOAD_MODULES="af_packet"
    8.51 +	MODULES="vzmon vzdquota vzdev"
    8.52 +	CPT_MODULES="vzcpt vzrst"
    8.53 +	MODULES_OTHER="vzcompat ${CPT_MODULES}"
    8.54 +	VNET_MODULES="vznetdev vznet"
    8.55 +	VETH_MODULES="vzethdev"
    8.56 +	NET_MODULES="${VNET_MODULES} ${VETH_MODULES}"
    8.57 +	if [ "${VZWDOG}" = "yes" ]; then
    8.58 +		MODULES="${MODULES} vzwdog"
    8.59 +	fi
    8.60 +	IPT_MODULES="ip_tables ${IPTABLES} xt_tcpudp"
    8.61 +	if [ "${IPV6}" = "yes" ]; then
    8.62 +    		IPT_MODULES="${IPT_MODULES} ${IP6TABLES}"
    8.63 +	fi
    8.64 +	VZFS_MODULES="simfs"
    8.65 +fi
    8.66 +
    8.67 +
    8.68 +rc_done='..done'
    8.69 +rc_failed='..failed'
    8.70 +
    8.71 +# Source function library.
    8.72 +if [ -r /etc/init.d/functions ]; then
    8.73 +	source /etc/init.d/functions
    8.74 +	if [ -r /etc/redhat-release ] || [ -r /etc/centos-release ]; then
    8.75 +		DISTR=redhat
    8.76 +	fi
    8.77 +elif [ -r /etc/rc.status ]; then
    8.78 +	source /etc/rc.status
    8.79 +	if [ -r /etc/SuSE-release ]; then
    8.80 +		DISTR=suse
    8.81 +	fi
    8.82 +elif [ -r /etc/debian_version ]; then
    8.83 +	DISTR=debian
    8.84 +	LOCKFILE=/var/lock/vz_lock
    8.85 +	SUBSYS_VZ=/var/lock/vz
    8.86 +elif [ -r /etc/slitaz-release ]; then
    8.87 +	DISTR=slitaz
    8.88 +	LOCKFILE=/var/lock/vz_lock
    8.89 +	SUBSYS_VZ=/var/lock/vz
    8.90 +fi
    8.91 +
    8.92 +VEINFO=""
    8.93 +RETVAL=0
    8.94 +# Number of the containers to stop in parallel.
    8.95 +# In case of empty value the number of CTs is calculated as 'num_cpu * 4'
    8.96 +PARALLEL=
    8.97 +cd /
    8.98 +
    8.99 +# We used to install OpenVZ cron job when the vzctl package was
   8.100 +# installed, irrespective of whether OpenVZ was actually being
   8.101 +# run. Although the cron jobs didn't create any problems if someone
   8.102 +# wasn't running OpenVZ some users complained about the cron log file
   8.103 +# filling up, resource usage, and power consumption since systems
   8.104 +# wouldn't really idle. It really only makes sense to run the OpenVZ
   8.105 +# cron job if the vz service is turned on and not just merely
   8.106 +# having the package installed. This init.d script is an obvious place
   8.107 +# to install or remove the cron jobs based on the service
   8.108 +# being enabled or not.
   8.109 +SRC_CRONSCRIPT_DIR=/etc/vz/cron
   8.110 +DST_CRONSCRIPT_DIR=/etc/cron.d
   8.111 +
   8.112 +check_old_cron_files()
   8.113 +{
   8.114 +	# avoid double OpenVZ cron settings
   8.115 +	local f
   8.116 +	for f in vpsreboot vpsnetclean; do
   8.117 +		[ -f $DST_CRONSCRIPT_DIR/$f ] && rm -f $DST_CRONSCRIPT_DIR/$f
   8.118 +	done
   8.119 +}
   8.120 +
   8.121 +setup_cron()
   8.122 +{
   8.123 +	check_old_cron_files
   8.124 +	[ -z "$SRC_CRONSCRIPT_DIR" ] && return
   8.125 +	[ -d "$SRC_CRONSCRIPT_DIR" ] || return
   8.126 +	cat $SRC_CRONSCRIPT_DIR/vz* > $DST_CRONSCRIPT_DIR/vz &&
   8.127 +		chmod 644 $DST_CRONSCRIPT_DIR/vz
   8.128 +}
   8.129 +
   8.130 +remove_cron()
   8.131 +{
   8.132 +	check_old_cron_files
   8.133 +	[ -z "$SRC_CRONSCRIPT_DIR" ] && return
   8.134 +	[ -d "$SRC_CRONSCRIPT_DIR" ] || return
   8.135 +	cat > $DST_CRONSCRIPT_DIR/vz <<EOF
   8.136 +# DO NOT EDIT THIS FILE!
   8.137 +#
   8.138 +# Contents of this file managed by /etc/init.d/vz script
   8.139 +# Master copy is in $SRC_CRONSCRIPT_DIR/vz* file(s).
   8.140 +# Consult $SRC_CRONSCRIPT_DIR/vz* for documentation.
   8.141 +EOF
   8.142 +}
   8.143 +
   8.144 +# Actualize OpenVZ cron entry:
   8.145 +# if OpenVZ is running, add it, otherwise remove.
   8.146 +update_cron()
   8.147 +{
   8.148 +	if is_running; then
   8.149 +		__echo "Adding OpenVZ cron entries"
   8.150 +		setup_cron
   8.151 +	else
   8.152 +		__echo "Removing OpenVZ cron entries"
   8.153 +		remove_cron
   8.154 +	fi
   8.155 +	print_result
   8.156 +}
   8.157 +
   8.158 +check_kernel()
   8.159 +{
   8.160 +	if ! test -d /proc/vz ; then
   8.161 +		print_failure "Running kernel is not OpenVZ kernel."
   8.162 +		exit 1
   8.163 +	fi
   8.164 +}
   8.165 +
   8.166 +get_kernel_version()
   8.167 +{
   8.168 +	[ ! -z "$KERNEL_MAJOR" ] && return
   8.169 +
   8.170 +	local ver=$(uname -r)
   8.171 +	local kernel=$(echo $ver | sed s/[-+].*//)
   8.172 +	KERNEL_MAJOR=$(echo $kernel | awk -F . '{print $1}')
   8.173 +	KERNEL_MINOR=$(echo $kernel | awk -F . '{print $2}')
   8.174 +	KERNEL_PATCHLEVEL=$(echo $kernel | awk -F . '{print $3}')
   8.175 +}
   8.176 +
   8.177 +check_kernel_config()
   8.178 +{
   8.179 +	test -r /proc/config.gz || return 0
   8.180 +
   8.181 +	local conf opt err=0
   8.182 +	local opt_must="SIM_FS VE VE_CALLS VZ_GENCALLS"
   8.183 +	get_kernel_version
   8.184 +	# For kernels >= 2.6.9 VZ_DEV must be set.
   8.185 +	test "${KERNEL_MINOR}" -ge 6 &&
   8.186 +		test "${KERNEL_PATCHLEVEL}" -gt 9 &&
   8.187 +			opt_must="${opt_must} VZ_DEV"
   8.188 +#	local opt_rec="SCHED_VCPU FAIRSCHED VZ_QUOTA VZ_QUOTA_UGID VE_NETDEV VE_ETHDEV
   8.189 +#			VE_IPTABLES VZ_CHECKPOINT VZ_WDOG"
   8.190 +
   8.191 +	conf="`zcat /proc/config.gz 2>/dev/null | grep -E -v '^#|^$'`"
   8.192 +
   8.193 +	for opt in $opt_must; do
   8.194 +		if ! echo "$conf" 2>/dev/null | grep -q "$opt="; then
   8.195 +			echo "ERROR: Missing kernel config option: CONFIG_$opt"
   8.196 +			err=1
   8.197 +		fi
   8.198 +	done
   8.199 +	if [ $err != 0 ]; then
   8.200 +		print_failure "Please recompile your kernel."
   8.201 +		exit 1
   8.202 +	fi
   8.203 +}
   8.204 +
   8.205 +get_parallel()
   8.206 +{
   8.207 +	[ -n "${PARALLEL}" ] && return
   8.208 +	PARALLEL=`awk '
   8.209 +BEGIN { num=0; }
   8.210 +$1 == "processor" { num++; }
   8.211 +END { print num * 4; }' /proc/cpuinfo`
   8.212 +}
   8.213 +
   8.214 +get_veinfo()
   8.215 +{
   8.216 +	if [ -f /proc/vz/veinfo ]; then
   8.217 +		VEINFO=/proc/vz/veinfo
   8.218 +	elif [ -f /proc/veinfo ]; then
   8.219 +		VEINFO=/proc/veinfo
   8.220 +	elif [ ! -f $VESTAT ]; then
   8.221 +		return 1
   8.222 +	fi
   8.223 +	return 0
   8.224 +}
   8.225 +
   8.226 +print_success()
   8.227 +{
   8.228 +	if [ "$DISTR" = "redhat" ]; then
   8.229 +		echo_success
   8.230 +	else
   8.231 +		echo -n "$rc_done"
   8.232 +	fi
   8.233 +	echo
   8.234 +}
   8.235 +
   8.236 +print_failure()
   8.237 +{
   8.238 +	echo -n "$1"
   8.239 +	if [ "$DISTR" = "redhat" ]; then
   8.240 +		failure $"$1"
   8.241 +	else
   8.242 +		echo -n "$rc_failed"
   8.243 +	fi
   8.244 +	echo
   8.245 +}
   8.246 +
   8.247 +# Calls either print_success or print_failure, depending on $?
   8.248 +# Optional argument $1 -- an error string passed to print_failure.
   8.249 +print_result()
   8.250 +{
   8.251 +	if [ $? -eq 0 ] ; then
   8.252 +		print_success
   8.253 +	else
   8.254 +		print_failure "$1"
   8.255 +	fi
   8.256 +}
   8.257 +
   8.258 +__echo()
   8.259 +{
   8.260 +	if [ "$DISTR" = "redhat" ]; then
   8.261 +		echo -n $"$1"
   8.262 +	else
   8.263 +		echo -n "$1"
   8.264 +	fi
   8.265 +}
   8.266 +
   8.267 +is_running()
   8.268 +{
   8.269 +	get_veinfo || return 1
   8.270 +	[ -f $SUBSYS_VZ ] || return 1
   8.271 +}
   8.272 +
   8.273 +status()
   8.274 +{
   8.275 +	check_kernel
   8.276 +
   8.277 +	if is_running; then
   8.278 +		echo "OpenVZ is running..."
   8.279 +		return 0
   8.280 +	else
   8.281 +		echo "OpenVZ is stopped."
   8.282 +		return 3
   8.283 +	fi
   8.284 +}
   8.285 +
   8.286 +start_net()
   8.287 +{
   8.288 +	local mod
   8.289 +
   8.290 +	# load all kernel modules needed for containers networking
   8.291 +	for mod in ${NET_MODULES}; do
   8.292 +		modprobe ${mod} 2>/dev/null
   8.293 +	done
   8.294 +
   8.295 +	if ip addr list | grep -q "venet0:.*UP" 2>/dev/null; then
   8.296 +		return 0
   8.297 +	fi
   8.298 +
   8.299 +	get_veinfo
   8.300 +	if [ -z "$VEINFO" ]; then
   8.301 +		return 0
   8.302 +	fi
   8.303 +	__echo "Bringing up interface $VZDEV: "
   8.304 +	ip link set $VZDEV up
   8.305 +	print_result
   8.306 +	ip addr add 0.0.0.0/0 dev $VZDEV
   8.307 +	__echo "Configuring interface $VZDEV: "
   8.308 +	sysctl -w net.ipv4.conf.$VZDEV.send_redirects=0
   8.309 +	print_result
   8.310 +	if [ "${IPV6}" = "yes" ]; then
   8.311 +		__echo "Configuring ipv6 $VZDEV: "
   8.312 +		# Fix me: ip addres should be generated
   8.313 +		ip -6 addr add fe80::1/128 dev $VZDEV
   8.314 +		print_result
   8.315 +	fi
   8.316 +}
   8.317 +
   8.318 +stop_net()
   8.319 +{
   8.320 +	local mod
   8.321 +
   8.322 +	if ip addr list | grep -q "venet0:.*UP" 2>/dev/null; then
   8.323 +		__echo "Bringing down interface $VZDEV: "
   8.324 +		ip link set $VZDEV down
   8.325 +		print_result
   8.326 +	fi
   8.327 +	for mod in ${NET_MODULES}; do
   8.328 +		/sbin/modprobe -r ${mod} > /dev/null 2>&1
   8.329 +	done
   8.330 +}
   8.331 +
   8.332 +setup_ve0()
   8.333 +{
   8.334 +	if test -z "${VE0CPUUNITS}"; then
   8.335 +		echo "Warning: VE0CPUUNITS is not set in ${VZCONF}; using value of 1000"
   8.336 +		VE0CPUUNITS=1000
   8.337 +	fi
   8.338 +	msg=`${VZCTL} set 0 --cpuunits ${VE0CPUUNITS} 2>&1`
   8.339 +	if [ $? -ne 0 ]; then
   8.340 +		print_failure "vzctl set 0 --cpuunits ${VE0CPUUNITS} failed: $msg"
   8.341 +	fi
   8.342 +
   8.343 +	if ! test -f "${CONFIG_DIR}/0.conf"; then
   8.344 +		return
   8.345 +	fi
   8.346 +	if ! grep -q '^ONBOOT=yes\|^ONBOOT=\"yes\"' ${CONFIG_DIR}/0.conf;
   8.347 +	then
   8.348 +		return
   8.349 +	fi
   8.350 +	__echo "Configure node UB resources: "
   8.351 +	msg=`$VZCTL set 0 --reset_ub 2>&1`
   8.352 +	print_result "$msg"
   8.353 +}
   8.354 +
   8.355 +start_ves()
   8.356 +{
   8.357 +	local veid
   8.358 +	local velist
   8.359 +	local msg
   8.360 +	local need_restart
   8.361 +
   8.362 +	need_restart=""
   8.363 +	cd ${CONFIG_DIR} || return
   8.364 +	velist=`grep -l '^ONBOOT=yes\|^ONBOOT=\"yes\"' [0-9]*.conf 2>/dev/null |
   8.365 +		sed -e 's/.conf//g' | sort -n`
   8.366 +	cd - >/dev/null
   8.367 +	sysctl -w net.ipv4.route.src_check=0
   8.368 +	for veid in $velist; do
   8.369 +		[ "${veid}" = "0" ] && continue
   8.370 +		__echo "Starting CT ${veid}: "
   8.371 +		if [ "x${VZFASTBOOT}" = "xyes" -a "x${DISK_QUOTA}" = "xyes" ];
   8.372 +		then
   8.373 +			$VZQUOTA stat ${veid} >/dev/null 2>&1
   8.374 +			if [ $? -eq 6 ]; then
   8.375 +				if $VZQUOTA show ${veid} 2>&1 | grep "vzquota : (warning) Quota is running" >/dev/null 2>&1; then
   8.376 +					$VZQUOTA on ${veid} --nocheck >/dev/null 2>&1
   8.377 +					need_restart="${need_restart} ${veid}"
   8.378 +				fi
   8.379 +			fi
   8.380 +		fi
   8.381 +		msg=`$VZCTL start ${veid} 2>&1`
   8.382 +		print_result "$msg"
   8.383 +	done
   8.384 +	for veid in ${need_restart}; do
   8.385 +		__echo "Stopping CT ${veid}: "
   8.386 +		$VZCTL stop ${veid} 2>&1 >/dev/null 2>&1
   8.387 +		print_result "$msg"
   8.388 +		__echo "Starting CT ${veid}: "
   8.389 +		msg=`$VZCTL start ${veid} 2>&1`
   8.390 +		print_result "$msg"
   8.391 +	done
   8.392 +}
   8.393 +
   8.394 +stop_ves()
   8.395 +{
   8.396 +	local veid
   8.397 +	local velist
   8.398 +	local msg
   8.399 +	local m
   8.400 +	local mounts
   8.401 +	local fail
   8.402 +	local iter
   8.403 +	local quota
   8.404 +	local pids
   8.405 +
   8.406 +	if get_veinfo; then
   8.407 +		get_parallel
   8.408 +		for i in 0 1 2; do
   8.409 +			iter=0;
   8.410 +			pids=
   8.411 +			velist=`awk '$1 != "VEID" && $1 != "Version:" {print $1}' ${VESTAT}`
   8.412 +			for veid in $velist; do
   8.413 +				echo "Shutting down CT $veid"
   8.414 +				# Set fairsched parameters to maximum so
   8.415 +				# CT will stop fast
   8.416 +				$VZCTL set $veid --cpuunits 2000 --cpulimit 0 >/dev/null 2>&1
   8.417 +				$VZCTL --skiplock stop $veid >/dev/null 2>&1 &
   8.418 +				pids="$pids $!"
   8.419 +				iter=$(($iter+1))
   8.420 +				if [ ${iter} -gt ${PARALLEL} ]; then
   8.421 +					for pid in ${pids}; do
   8.422 +						wait ${pid}
   8.423 +					done
   8.424 +					pids=
   8.425 +					iter=0
   8.426 +				fi
   8.427 +			done
   8.428 +			for pid in $pids; do
   8.429 +				wait $pid
   8.430 +			done
   8.431 +		done
   8.432 +	fi
   8.433 +	iter=0
   8.434 +	fail=1
   8.435 +	while test $iter -lt 5 -a $fail -ne 0; do
   8.436 +		fail=0
   8.437 +		mounts=`awk '{if ($3=="simfs") print $2}' /proc/mounts`
   8.438 +		for m in $mounts; do
   8.439 +			__echo "Unmounting CT area "
   8.440 +			echo -n $m
   8.441 +			msg=`umount $m 2>&1`
   8.442 +			if [ $? -eq 0 ]; then
   8.443 +				print_success
   8.444 +			else
   8.445 +				print_failure "$msg"
   8.446 +				fail=$((fail+1))
   8.447 +				fuser -k -m ${m} > /dev/null 2>&1
   8.448 +			fi
   8.449 +		done
   8.450 +		iter=$(($iter+1))
   8.451 +	done
   8.452 +	# turn quota off
   8.453 +	quota=`awk -F: '/^[0-9]+:/{print $1}' /proc/vz/vzquota 2>/dev/null`
   8.454 +	for m in ${quota}; do
   8.455 +		__echo "Turn quota off for CT "
   8.456 +		echo -n $m
   8.457 +		msg=`vzquota off ${m} 2>&1`
   8.458 +		print_result "$msg"
   8.459 +	done
   8.460 +}
   8.461 +
   8.462 +lockfile()
   8.463 +{
   8.464 +	local TEMPFILE="${1}.$$"
   8.465 +	local LOCKFILE="${1}"
   8.466 +
   8.467 +	trap -- "rm -f ${LOCKFILE} ${TEMPFILE}" EXIT
   8.468 +
   8.469 +	echo $$ > ${TEMPFILE} 2> /dev/null || {
   8.470 +		echo "Can't write to ${TEMPFILE}"
   8.471 +	}
   8.472 +	ln ${TEMPFILE} ${LOCKFILE} >/dev/null 2>&1 && {
   8.473 +		rm -f ${TEMPFILE};
   8.474 +		return 0;
   8.475 +	}
   8.476 +	kill -0 `cat $LOCKFILE` >/dev/null 2>&1 && {
   8.477 +		return 1;
   8.478 +	}
   8.479 +	ln ${TEMPFILE} ${LOCKFILE} >/dev/null 2>&1 && {
   8.480 +		rm -f ${TEMPFILE};
   8.481 +		return 0;
   8.482 +	}
   8.483 +	rm -f ${LOCKFILE}
   8.484 +	echo $$ > ${LOCKFILE}
   8.485 +	return 0
   8.486 +}
   8.487 +
   8.488 +start()
   8.489 +{
   8.490 +	local veid
   8.491 +	local velist
   8.492 +	local msg
   8.493 +	local mod
   8.494 +
   8.495 +	check_kernel
   8.496 +	check_kernel_config
   8.497 +
   8.498 +	if ! lockfile $LOCKFILE; then
   8.499 +		__echo "OpenVZ is locked"
   8.500 +		print_failure
   8.501 +		return 1
   8.502 +	fi
   8.503 +	if [ -f ${SUBSYS_VZ} ]; then
   8.504 +		__echo "OpenVZ already running"
   8.505 +		print_failure
   8.506 +		return 1
   8.507 +	fi
   8.508 +	__echo "Starting OpenVZ: "
   8.509 +	load_modules "${IPT_MODULES}"
   8.510 +	for mod in $PRELOAD_MODULES; do
   8.511 +		/sbin/modprobe -r $mod >/dev/null 2>&1
   8.512 +		/sbin/modprobe $mod >/dev/null 2>&1
   8.513 +	done
   8.514 +	for mod in $MODULES; do
   8.515 +		/sbin/modprobe $mod >/dev/null 2>&1
   8.516 +		RETVAL=$?
   8.517 +		if [ $RETVAL -ne 0 ]; then
   8.518 +			print_failure "failed to load module ${mod}"
   8.519 +			return $RETVAL
   8.520 +		fi
   8.521 +	done
   8.522 +	load_modules "${MODULES_OTHER} ${VZFS_MODULES}"
   8.523 +	print_success "loading OpenVZ modules"
   8.524 +
   8.525 +	if [ ! -e /dev/vzctl ]; then
   8.526 +		# On most modern distros udev will create a device for you,
   8.527 +		# while on the old distros /dev/vzctl comes with vzctl rpm.
   8.528 +		# So the below mknod call is probably not needed at all.
   8.529 +		/bin/mknod -m 600 /dev/vzctl c 126 0 > /dev/null 2>&1
   8.530 +		RETVAL=$?
   8.531 +		if [ $RETVAL -ne 0 ]; then
   8.532 +			print_failure "creating /dev/vzctl"
   8.533 +			return $RETVAL
   8.534 +		fi
   8.535 +	fi
   8.536 +
   8.537 +	start_net
   8.538 +	setup_ve0
   8.539 +	setup_cron
   8.540 +	start_ves
   8.541 +
   8.542 +	rm -f $LOCKFILE
   8.543 +	touch $SUBSYS_VZ
   8.544 +}
   8.545 +
   8.546 +stop()
   8.547 +{
   8.548 +	local mod
   8.549 +
   8.550 +	if ! lockfile $LOCKFILE; then
   8.551 +		__echo "OpenVZ is locked"
   8.552 +		print_failure
   8.553 +		RETVAL=1
   8.554 +		return 1
   8.555 +	fi
   8.556 +
   8.557 +	stop_ves
   8.558 +	remove_cron
   8.559 +	stop_net
   8.560 +	__echo "Stopping OpenVZ: "
   8.561 +	for mod in ${MODULES_OTHER} ${MODULES} ${PRELOAD_MODULES} ${IPT_MODULES} ${VZFS_MODULES}; do
   8.562 +		/sbin/modprobe -r ${mod} > /dev/null 2>&1
   8.563 +	done
   8.564 +	rm -f $LOCKFILE
   8.565 +	rm -f $SUBSYS_VZ
   8.566 +	print_success
   8.567 +}
   8.568 +
   8.569 +load_modules()
   8.570 +{
   8.571 +	local modules=$1
   8.572 +	local mod
   8.573 +
   8.574 +	for mod in ${modules}; do
   8.575 +		if /sbin/lsmod | grep -qw ${mod}; then
   8.576 +			continue
   8.577 +		fi
   8.578 +		/sbin/modprobe ${mod} >/dev/null 2>&1
   8.579 +	done
   8.580 +}
   8.581 +
   8.582 +# See how we were called.
   8.583 +case "$1" in
   8.584 +  start)
   8.585 +	start
   8.586 +	;;
   8.587 +  stop)
   8.588 +	stop
   8.589 +	;;
   8.590 +  restart|force-reload)
   8.591 +	stop
   8.592 +	start
   8.593 +	;;
   8.594 +  status)
   8.595 +	status
   8.596 +	RETVAL=$?
   8.597 +	;;
   8.598 +  update-cron)
   8.599 +	update_cron
   8.600 +	RETVAL=0
   8.601 +	;;
   8.602 +  *)
   8.603 +	echo "Usage: $0 {start|stop|status|restart|force-reload|update-cron}"
   8.604 +	exit 1
   8.605 +esac
   8.606 +
   8.607 +exit $RETVAL
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/base-scripts/vzconf.sh	Tue Nov 01 09:23:49 2011 +0100
     9.3 @@ -0,0 +1,53 @@
     9.4 +#!/bin/sh
     9.5 +# Set network bridge for OpenVZ server
     9.6 +#
     9.7 +#       This program is free software; you can redistribute it and/or modify
     9.8 +#       it under the terms of the GNU General Public License as published by
     9.9 +#       the Free Software Foundation; either version 2 of the License, or
    9.10 +#       (at your option) any later version.
    9.11 +#       
    9.12 +#       This program is distributed in the hope that it will be useful,
    9.13 +#       but WITHOUT ANY WARRANTY; without even the implied warranty of
    9.14 +#       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    9.15 +#       GNU General Public License for more details.
    9.16 +#       
    9.17 +#       You should have received a copy of the GNU General Public License
    9.18 +#       along with this program; if not, write to the Free Software
    9.19 +#       Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
    9.20 +#       MA 02110-1301, USA.
    9.21 +#
    9.22 +#  20011 - Eric Joseph-Alexandre <erjo@slitaz.org>
    9.23 +
    9.24 +
    9.25 +CONFIG_DIR=/var/lib/slitaz-vz
    9.26 +
    9.27 +# Get real network device name from stored config if exist. 
    9.28 +if [ -f $CONFIG_DIR/network/interfaces ]; then
    9.29 +	BRIDGE=$(grep ^BRIDGE $CONFIG_DIR/network/interfaces | sed 's/.*"\(.*\)"/\1/')
    9.30 +	IFACE=$(grep ^INTERFACE $CONFIG_DIR/network/interfaces | sed 's/.*"\(.*\)"/\1/')
    9.31 +else
    9.32 +	BRIDGE=br0
    9.33 +	IFACE=$(grep ^INTERFACE /etc/network.conf | sed 's/.*"\(.*\)"/\1/')
    9.34 +	
    9.35 +	# Store interface infos for the next boot in hd mode
    9.36 +	mkdir -p $CONFIG_DIR/network
    9.37 +	echo "BRIDGE=\"$BRIDGE\"" > $CONFIG_DIR/network/interfaces
    9.38 +	echo "INTERFACE=\"$IFACE\"" >> $CONFIG_DIR/network/interfaces
    9.39 +fi
    9.40 +
    9.41 +# Set Brigde configuration
    9.42 +if [ -x /usr/sbin/brctl ]; then
    9.43 +	if (/usr/sbin/brctl addbr $BRIDGE); then
    9.44 +		/sbin/ifconfig $IFACE down
    9.45 +		/sbin/ifconfig $IFACE 0
    9.46 +		/usr/sbin/brctl addif $BRIDGE $IFACE
    9.47 +		
    9.48 +		# Update INTERFACE in /etc/network.conf
    9.49 +		grep ^INTERFACE /etc/network.conf | grep -q $BRIDGE \
    9.50 +			|| sed -i "s/^INTERFACE=\"\(.*\)\"/INTERFACE=\"$BRIDGE\"/" /etc/network.conf
    9.51 +	else
    9.52 +		echo "Unable to set netwok bridge"
    9.53 +	fi
    9.54 +else
    9.55 +	echo "Can't find brctl. Make sure you have installed brctl-utils"
    9.56 +fi