|
|
|
@ -19,6 +19,7 @@
|
|
|
|
|
#*/ ##
|
|
|
|
|
ogGetNetworkDevice ()
|
|
|
|
|
{
|
|
|
|
|
echo "ogGetNetworkDevice()" >>/tmp/oginit.log
|
|
|
|
|
# Mantener retrocompatibilidad con interfaces antiguas tipo eth.
|
|
|
|
|
case "$1" in
|
|
|
|
|
eth0) ind=1 ;;
|
|
|
|
@ -26,13 +27,17 @@ case "$1" in
|
|
|
|
|
eth2) ind=3 ;;
|
|
|
|
|
*) ind="$1" ;;
|
|
|
|
|
esac
|
|
|
|
|
echo "ind ($ind)" >>/tmp/oginit.log
|
|
|
|
|
# Buscar el dispositivo del índice.
|
|
|
|
|
dev=""
|
|
|
|
|
for f in /sys/class/net/*/uevent; do
|
|
|
|
|
echo "source $f" >>/tmp/oginit.log
|
|
|
|
|
source $f
|
|
|
|
|
let aux=$IFINDEX-1
|
|
|
|
|
echo "aux ($aux)" >>/tmp/oginit.log
|
|
|
|
|
[ "$ind" = "$INTERFACE" -o "$ind" = $aux ] && dev="$INTERFACE"
|
|
|
|
|
done
|
|
|
|
|
echo "dev ($dev)" >>/tmp/oginit.log
|
|
|
|
|
[ -n "$dev" ] && echo "$dev"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -50,18 +55,20 @@ done
|
|
|
|
|
#*/ ##
|
|
|
|
|
ogExportKernelParameters ()
|
|
|
|
|
{
|
|
|
|
|
echo "ogExportKernelParameters()" >>/tmp/oginit.log
|
|
|
|
|
GLOBAL="cat /proc/cmdline"
|
|
|
|
|
for i in `${GLOBAL}`
|
|
|
|
|
do
|
|
|
|
|
echo $i | grep "=" > /dev/null && export $i
|
|
|
|
|
for i in `${GLOBAL}`; do
|
|
|
|
|
echo $i | grep "=" > /dev/null && export $i && echo "export $i" >>/tmp/oginit.log
|
|
|
|
|
done
|
|
|
|
|
# Sustituir índice de interfaz de red por su dispositivo.
|
|
|
|
|
DEVIND=$(echo "$ip" | cut -f6 -d:)
|
|
|
|
|
echo "DEVIND ($DEVIND)" >>/tmp/oginit.log
|
|
|
|
|
if [ -n "$DEVIND" ]; then
|
|
|
|
|
PRE=$(echo "$ip" | cut -f1-5 -d:)
|
|
|
|
|
POST=$(echo "$ip" | cut -f7- -d:)
|
|
|
|
|
DEVICE=$(ogGetNetworkDevice $DEVIND)
|
|
|
|
|
[ -n "$DEVICE" ] && export ip="$PRE:$DEVICE:${POST:-none}"
|
|
|
|
|
echo "DEVICE ($DEVICE)" >>/tmp/oginit.log
|
|
|
|
|
[ -n "$DEVICE" ] && export ip="$PRE:$DEVICE:${POST:-none}" && echo "export ip=$PRE:$DEVICE:${POST:-none}" >>/tmp/oginit.log
|
|
|
|
|
fi
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
@ -80,6 +87,7 @@ ogExportKernelParameters ()
|
|
|
|
|
#*/ ##
|
|
|
|
|
ogChangeVideoResolution ()
|
|
|
|
|
{
|
|
|
|
|
echo "ogChangeVideoResolution()" >>/tmp/oginit.log
|
|
|
|
|
# Variables locales.
|
|
|
|
|
local DRIVER MODE
|
|
|
|
|
# Mostrar resolución y driver por defecto si solo hay una opción disponible.
|
|
|
|
@ -119,6 +127,7 @@ fi
|
|
|
|
|
#*/ ##
|
|
|
|
|
ogExportVarEnvironment ()
|
|
|
|
|
{
|
|
|
|
|
echo "ogExportVarEnvironment()" >>/tmp/oginit.log
|
|
|
|
|
export CFGINITRD="/tmp/initrd.cfg"
|
|
|
|
|
OGPROTOCOL="${ogprotocol:-smb}"
|
|
|
|
|
[ "$ogunit" != "" ] && OGUNIT="/$ogunit"
|
|
|
|
@ -126,6 +135,8 @@ ogExportVarEnvironment ()
|
|
|
|
|
export OPTIONS=" -o user=opengnsys,pass=og"
|
|
|
|
|
DEFOGLIVE="ogclient"
|
|
|
|
|
export OGLIVEDIR="${oglivedir:-$DEFOGLIVE}" && echo "OGLIVEDIR=$OGLIVEDIR" >> $CFGINITRD
|
|
|
|
|
echo "CFGINITRD ($CFGINITRD) OGPROTOCOL ($OGPROTOCOL) OGUNIT ($OGUNIT) OGLIVEDIR ($OGLIVEDIR)" >>/tmp/oginit.log
|
|
|
|
|
export CFGINITRD="/tmp/initrd.cfg"
|
|
|
|
|
case "$OGPROTOCOL" in
|
|
|
|
|
nfs|NFS)
|
|
|
|
|
export SRCOGLIVE="/var/lib/tftpboot" && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD
|
|
|
|
@ -147,22 +158,20 @@ ogExportVarEnvironment ()
|
|
|
|
|
export SRCOGIMAGES="images" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
#punto de acceso al boot-tools live
|
|
|
|
|
export DSTOGLIVE="/opt/oglive/tftpboot"
|
|
|
|
|
#punto de montaje para unionfs
|
|
|
|
|
export OGLIVERAMFS="/opt/oglive/ramfs" && echo "OGLIVERAMFS=$OGLIVERAMFS" >> $CFGINITRD
|
|
|
|
|
#punto de montaje donde se accede al 2nd FS mediante loop
|
|
|
|
|
export OGLIVEROOTFS="/opt/oglive/rootfs" && echo "OGLIVEROOTFS=$OGLIVEROOTFS" >> $CFGINITRD
|
|
|
|
|
#punto de union entre LOCALROOTIMG y LOCALROOTRAM
|
|
|
|
|
export OGLIVEUNIONFS="/opt/oglive/unionfs" && echo "OGLIVEUNIONFS=$OGLIVEUNIONFS" >> $CFGINITRD
|
|
|
|
|
#etiquta para los dispositivos offline
|
|
|
|
|
export OGLIVELABEL="ogClient"
|
|
|
|
|
echo "SRCOGLIVE ($SRCOGLIVE) SRCOGSHARE ($SRCOGSHARE) SRCOGLOG ($SRCOGLOG) SRCOGIMAGES ($SRCOGIMAGES)" >>/tmp/oginit.log
|
|
|
|
|
export DSTOGLIVE="/opt/oglive/tftpboot" #punto de acceso al boot-tools live
|
|
|
|
|
export OGLIVERAMFS="/opt/oglive/ramfs" && echo "OGLIVERAMFS=$OGLIVERAMFS" >> $CFGINITRD #punto de montaje para unionfs
|
|
|
|
|
export OGLIVEROOTFS="/opt/oglive/rootfs" && echo "OGLIVEROOTFS=$OGLIVEROOTFS" >> $CFGINITRD #punto de montaje donde se accede al 2nd FS mediante loop
|
|
|
|
|
export OGLIVEUNIONFS="/opt/oglive/unionfs" && echo "OGLIVEUNIONFS=$OGLIVEUNIONFS" >> $CFGINITRD #punto de union entre LOCALROOTIMG y LOCALROOTRAM
|
|
|
|
|
export OGLIVELABEL="ogClient" #etiquta para los dispositivos offline
|
|
|
|
|
echo "DSTOGLIVE ($DSTOGLIVE) OGLIVERAMFS ($OGLIVERAMFS) OGLIVEROOTFS ($OGLIVEROOTFS) OGLIVEUNIONFS ($OGLIVEUNIONFS)" >>/tmp/oginit.log
|
|
|
|
|
|
|
|
|
|
#echo "puntos de montajes para los demas accesos"
|
|
|
|
|
#echo "acceso al client, engine, scritps, interfaz"
|
|
|
|
|
export DSTOGSHARE="/opt/opengnsys" && echo "DSTOGSHARE=$DSTOGSHARE" >> $CFGINITRD
|
|
|
|
|
export DSTOGLOG="/opt/opengnsys/log" && echo "DSTOGLOG=$DSTOGLOG" >> $CFGINITRD
|
|
|
|
|
export DSTOGIMAGES="/opt/opengnsys/images" && echo "DSTOGIMAGES=$DSTOGIMAGES" >> $CFGINITRD
|
|
|
|
|
echo "DSTOGSHARE ($DSTOGSHARE) DSTOGLOG ($DSTOGLOG) DSTOGIMAGES ($DSTOGIMAGES)" >>/tmp/oginit.log
|
|
|
|
|
|
|
|
|
|
##INFORMACION DE OTRAS VARIABLES OBTENDIAS EN OTRAS FUNCIONES ogConfigureNetwork.
|
|
|
|
|
#DEVICE
|
|
|
|
@ -194,6 +203,7 @@ ogExportVarEnvironment ()
|
|
|
|
|
#*/ ##
|
|
|
|
|
ogConfigureRamfs ()
|
|
|
|
|
{
|
|
|
|
|
echo "ogConfigureRamfs()" >>/tmp/oginit.log
|
|
|
|
|
mkdir -p $DSTOGLIVE
|
|
|
|
|
mkdir -p $OGLIVERAMFS
|
|
|
|
|
mkdir -p $OGLIVEROOTFS
|
|
|
|
@ -215,9 +225,9 @@ ogConfigureRamfs ()
|
|
|
|
|
#*/ ##
|
|
|
|
|
ogLoadNetModule ()
|
|
|
|
|
{
|
|
|
|
|
if [ -n "$ognetmodule" ]
|
|
|
|
|
then
|
|
|
|
|
echo "Cargando modulo de red $ognetmodule"
|
|
|
|
|
echo "ogLoadNetModule()" >>/tmp/oginit.log
|
|
|
|
|
if [ -n "$ognetmodule" ]; then
|
|
|
|
|
echo "Cargando modulo de red $ognetmodule" |tee -a /tmp/oginit.log
|
|
|
|
|
modprobe ${ognetmodule}
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
@ -235,6 +245,8 @@ ogLoadNetModule ()
|
|
|
|
|
#*/ ##
|
|
|
|
|
ogPostConfigureFS()
|
|
|
|
|
{
|
|
|
|
|
echo "ogPostConfigureFS()" >>/tmp/oginit.log
|
|
|
|
|
echo "IPV4ADDR ($IPV4ADDR) HOSTNAME ($HOSTNAME)" >>/tmp/oginit.log
|
|
|
|
|
# configuramos el /etc/hostname.
|
|
|
|
|
echo $HOSTNAME > /etc/hostname
|
|
|
|
|
|
|
|
|
@ -249,10 +261,12 @@ ogPostConfigureFS()
|
|
|
|
|
#configuramos el dns anterior ubuntu 12.04 (parámetro del Kernel "ogdns=IP_DNS")
|
|
|
|
|
if [ -n "$ogdns" ]; then
|
|
|
|
|
mkdir -p /run/resolvconf
|
|
|
|
|
echo "writing 'nameserver $ogdns' to /run/resolvconf/resolv.conf" >>/tmp/oginit.log
|
|
|
|
|
echo "nameserver $ogdns" > /run/resolvconf/resolv.conf
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
#configuramos el uso del servicio http proxy (parámetro del Kernel "ogproxy=URL_Proxy")
|
|
|
|
|
echo "ogproxy ($ogproxy)" >>/tmp/oginit.log
|
|
|
|
|
if [ -n "${ogproxy}" ]; then
|
|
|
|
|
export http_proxy="$ogproxy"
|
|
|
|
|
export https_proxy="$ogproxy"
|
|
|
|
@ -263,6 +277,7 @@ ogPostConfigureFS()
|
|
|
|
|
# configuramos el /etc/networks
|
|
|
|
|
#read -e NETIP NETDEFAULT <<<$(route -n | grep eth0 | awk -F" " '{print $1}')
|
|
|
|
|
NETIP=$(route -n | grep eth0 | awk -F" " '{print $1}') && NETIP=$(echo $NETIP | cut -f1 -d" ")
|
|
|
|
|
echo "NETIP ($NETIP)" >>/tmp/oginit.log
|
|
|
|
|
echo "default 0.0.0.0" > /etc/networks
|
|
|
|
|
echo "loopback 127.0.0.0" >> /etc/networks
|
|
|
|
|
echo "link-local 169.254.0.0" >> /etc/networks
|
|
|
|
@ -274,6 +289,7 @@ ogPostConfigureFS()
|
|
|
|
|
#enlace si iniciamos desde ogprotocolo=local { cdrom, usb, cache } .
|
|
|
|
|
# monta el raiz del dispositivo local en /opt/og2fs/tftpboot - acceso al fichero .sqfs
|
|
|
|
|
# y monta el sistema root sqfs en /opt/og2fs/2ndfs
|
|
|
|
|
echo "LOCALMEDIA ($LOCALMEDIA) ogprotocol ($ogprotocol) ogstatus ($ogstatus)" >>/tmp/oginit.log
|
|
|
|
|
#[ "$LOCALMEDIA" == "CACHE" ] && ln -s $DSTOGLIVE /opt/opengnsys/cache
|
|
|
|
|
#[ "$ogprotocol" == "local" ] && ln -s ${OGLIVEROOTFS}/opt/opengnsys/* /opt/opengnsys/
|
|
|
|
|
if [ "$ogprotocol" == "local" ]; then
|
|
|
|
@ -282,16 +298,21 @@ ogPostConfigureFS()
|
|
|
|
|
# Montamos CACHE
|
|
|
|
|
# Si existe particion identificada como CACHE se monta.
|
|
|
|
|
DEVICECACHE=$(blkid -L "CACHE")
|
|
|
|
|
echo "DEVICECACHE ($DEVICECACHE)" >>/tmp/oginit.log
|
|
|
|
|
if [ "$DEVICECACHE" != "" ]; then
|
|
|
|
|
# Se monta diferente segun el dispositivo de cache igual o no al de ogclient.
|
|
|
|
|
DEVICEOGLIVE=$(df |grep $DSTOGLIVE|awk '{print $1}')
|
|
|
|
|
echo "DEVICEOGLIVE ($DEVICEOGLIVE)" >>/tmp/oginit.log
|
|
|
|
|
if [[ "$DEVICECACHE" == "*$DEVICEOGLIVE*" ]];then
|
|
|
|
|
echo "running 'mount --bind $DSTOGLIVE /opt/opengnsys/cache'" >>/tmp/oginit.log
|
|
|
|
|
mount --bind $DSTOGLIVE /opt/opengnsys/cache
|
|
|
|
|
else
|
|
|
|
|
echo "running 'mount $DEVICECACHE /opt/opengnsys/cache'" >>/tmp/oginit.log
|
|
|
|
|
mount $DEVICECACHE /opt/opengnsys/cache
|
|
|
|
|
fi
|
|
|
|
|
if [ "$ogstatus" == "offline" ]; then
|
|
|
|
|
[ -d /opt/opengnsys/cache/log ] || mkdir /opt/opengnsys/cache/log
|
|
|
|
|
echo "running 'mount --bind /opt/opengnsys/cache/log /opt/opengnsys/log'" >>/tmp/oginit.log
|
|
|
|
|
mount --bind /opt/opengnsys/cache/log /opt/opengnsys/log
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
@ -300,9 +321,14 @@ ogPostConfigureFS()
|
|
|
|
|
# Si estatus distinto de online buscamos un dispositivo con etiqueta repo
|
|
|
|
|
# y si no existe montamos la cache como repo (si existe).
|
|
|
|
|
TYPE=$(blkid | grep REPO | awk -F"TYPE=" '{print $2}' | tr -d \")
|
|
|
|
|
echo "TYPE ($TYPE)" >>/tmp/oginit.log
|
|
|
|
|
if [ "$TYPE" == "" ]; then
|
|
|
|
|
[ -d "/opt/opengnsys/cache$DSTOGIMAGES" ] && mount --bind /opt/opengnsys/cache$DSTOGIMAGES $DSTOGIMAGES
|
|
|
|
|
if [ -d "/opt/opengnsys/cache$DSTOGIMAGES" ]; then
|
|
|
|
|
echo "running 'mount --bind /opt/opengnsys/cache$DSTOGIMAGES $DSTOGIMAGES'" >>/tmp/oginit.log
|
|
|
|
|
mount --bind /opt/opengnsys/cache$DSTOGIMAGES $DSTOGIMAGES
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
echo "running 'mount -t $TYPE LABEL=REPO $DSTOGIMAGES'" >>/tmp/oginit.log
|
|
|
|
|
mount -t $TYPE LABEL=REPO $DSTOGIMAGES &>/dev/null
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
@ -323,7 +349,6 @@ ogPostConfigureFS()
|
|
|
|
|
mkdir -p /dev/shm
|
|
|
|
|
mount tmpfs -t tmpfs /dev/shm
|
|
|
|
|
chmod 1777 /dev/shm
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -345,6 +370,8 @@ ogPostConfigureFS()
|
|
|
|
|
#*/ ##
|
|
|
|
|
ogGetROOTSERVER ()
|
|
|
|
|
{
|
|
|
|
|
echo "ogGetROOTSERVER()" >>/tmp/oginit.log
|
|
|
|
|
echo "NFSROOT ($NFSROOT)" >>/tmp/oginit.log
|
|
|
|
|
# get nfs root from dhcp
|
|
|
|
|
if [ "x${NFSROOT}" = "xauto" ]; then
|
|
|
|
|
# check if server ip is part of dhcp root-path
|
|
|
|
@ -365,14 +392,17 @@ ogGetROOTSERVER ()
|
|
|
|
|
NFSROOT=${ROOTSERVER}:${NFSROOT}
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
echo "NFSROOT now ($NFSROOT)" >>/tmp/oginit.log
|
|
|
|
|
export ROOTSERVER
|
|
|
|
|
echo "ROOTSERVER=$ROOTSERVER" >> $CFGINITRD
|
|
|
|
|
echo "ROOTSERVER ($ROOTSERVER)" >>/tmp/oginit.log
|
|
|
|
|
|
|
|
|
|
#si oglive no oglive=R
|
|
|
|
|
export OGSERVERIMAGES="${ogrepo:-$ROOTSERVER}" && echo "OGSERVERIMAGES=$OGSERVERIMAGES" >> $CFGINITRD
|
|
|
|
|
export OGSERVERSHARE="${ogshare:-$ROOTSERVER}" && echo "OGSERVERSHARE=$OGSERVERSHARE" >> $CFGINITRD
|
|
|
|
|
export OGSERVERLOG="${oglog:-$ROOTSERVER}" && echo "OGSERVERLOG=$OGSERVERLOG" >> $CFGINITRD
|
|
|
|
|
export OGSERVERLIVE="${oglive:-$OGSERVERIMAGES}" && echo "OGSERVERLIVE=$OGSERVERLIVE" >> $CFGINITRD
|
|
|
|
|
echo "OGSERVERIMAGES ($OGSERVERIMAGES) OGSERVERSHARE ($OGSERVERSHARE) OGSERVERLOG ($OGSERVERLOG) OGSERVERLIVE ($OGSERVERLIVE)" >>/tmp/oginit.log
|
|
|
|
|
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
@ -397,50 +427,50 @@ ogGetROOTSERVER ()
|
|
|
|
|
|
|
|
|
|
ogUpdateInitrd ()
|
|
|
|
|
{
|
|
|
|
|
echo "ogUpdateInitrd()" >>/tmp/oginit.log
|
|
|
|
|
local OGLIVEDIR
|
|
|
|
|
OGLIVEDIR=${oglivedir:-"ogclient"}
|
|
|
|
|
echo "OGLIVEDIR ($OGLIVEDIR)" >>/tmp/oginit.log
|
|
|
|
|
cd /tmp
|
|
|
|
|
mkdir /tmp/cache
|
|
|
|
|
TYPE=$(blkid -po export $(blkid -L CACHE) 2>/dev/null | awk -F= '$1=="TYPE" { print $2}')
|
|
|
|
|
echo "TYPE ($TYPE)" >>/tmp/oginit.log
|
|
|
|
|
# Salir si no se detecta caché.
|
|
|
|
|
[ -z "$TYPE" ] && return
|
|
|
|
|
echo "running 'mount -t $TYPE LABEL=CACHE /tmp/cache'" >>/tmp/oginit.log
|
|
|
|
|
mount -t $TYPE LABEL=CACHE /tmp/cache || return
|
|
|
|
|
echo "running 'mkdir -p /tmp/cache/boot/$OGLIVEDIR'" >>/tmp/oginit.log
|
|
|
|
|
mkdir -p /tmp/cache/boot/$OGLIVEDIR
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# comparamos los del server
|
|
|
|
|
busybox tftp -g -r $OGLIVEDIR/ogvmlinuz.sum $ROOTSERVER
|
|
|
|
|
busybox tftp -g -r $OGLIVEDIR/oginitrd.img.sum $ROOTSERVER
|
|
|
|
|
SERVERVMLINUZ=`cat ogvmlinuz.sum`
|
|
|
|
|
SERVERINITRD=`cat oginitrd.img.sum`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#comparamos los de la cache
|
|
|
|
|
CACHEVMLINUZ=`cat /tmp/cache/boot/$OGLIVEDIR/ogvmlinuz.sum`
|
|
|
|
|
CACHEINITRD=`cat /tmp/cache/boot/$OGLIVEDIR/oginitrd.img.sum`
|
|
|
|
|
|
|
|
|
|
echo "MD5 on SERVER: $SERVERVMLINUZ $SERVERINITRD"
|
|
|
|
|
echo "MD5 on CACHE: $CACHEVMLINUZ $CACHEINITRD"
|
|
|
|
|
echo "MD5 on SERVER: $SERVERVMLINUZ $SERVERINITRD" |tee -a /tmp/oginit.log
|
|
|
|
|
echo "MD5 on CACHE: $CACHEVMLINUZ $CACHEINITRD" |tee -a /tmp/oginit.log
|
|
|
|
|
|
|
|
|
|
cd /tmp/cache/boot/$OGLIVEDIR || mkdir -p /tmp/cache/boot/$OGLIVEDIR
|
|
|
|
|
|
|
|
|
|
if [ "$CACHEVMLINUZ" != "$SERVERVMLINUZ" ]
|
|
|
|
|
then
|
|
|
|
|
echo "ogvmlinuz updating"
|
|
|
|
|
if [ "$CACHEVMLINUZ" != "$SERVERVMLINUZ" ]; then
|
|
|
|
|
echo "ogvmlinuz updating" |tee -a /tmp/oginit.log
|
|
|
|
|
busybox tftp -g -r $OGLIVEDIR/ogvmlinuz $ROOTSERVER
|
|
|
|
|
busybox tftp -g -r $OGLIVEDIR/ogvmlinuz.sum $ROOTSERVER
|
|
|
|
|
DOREBOOT=true
|
|
|
|
|
fi
|
|
|
|
|
if [ "$CACHEINITRD" != "$SERVERINITRD" ]
|
|
|
|
|
then
|
|
|
|
|
echo "oginitrd updating"
|
|
|
|
|
if [ "$CACHEINITRD" != "$SERVERINITRD" ]; then
|
|
|
|
|
echo "oginitrd updating" |tee -a /tmp/oginit.log
|
|
|
|
|
busybox tftp -g -r $OGLIVEDIR/oginitrd.img $ROOTSERVER
|
|
|
|
|
busybox tftp -g -r $OGLIVEDIR/oginitrd.img.sum $ROOTSERVER
|
|
|
|
|
DOREBOOT=true
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
cd /; umount /tmp/cache
|
|
|
|
|
|
|
|
|
|
[ "$DOREBOOT" == "true" ] && reboot -f
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
@ -462,25 +492,33 @@ ogUpdateInitrd ()
|
|
|
|
|
|
|
|
|
|
ogConnect ()
|
|
|
|
|
{
|
|
|
|
|
echo "ogConnect()" >>/tmp/oginit.log
|
|
|
|
|
SERVER=$1
|
|
|
|
|
PROTOCOL=$2
|
|
|
|
|
SRC=$3
|
|
|
|
|
DST=$4
|
|
|
|
|
READONLY=$5
|
|
|
|
|
echo "SERVER ($SERVER) PROTOCOL ($PROTOCOL) SRC ($SRC) DST ($DST) READONLY ($READONLY)" >>/tmp/oginit.log
|
|
|
|
|
OPTIONS_LOG_SAFE=$(echo "$OPTIONS" |sed -e 's/pass=.*/pass=***/')
|
|
|
|
|
|
|
|
|
|
case "$PROTOCOL" in
|
|
|
|
|
nfs)
|
|
|
|
|
echo "running 'nfsmount ${SERVER}:${SRC} ${DST} -o nolock${READONLY} || mount.nfs ${SERVER}:${SRC} ${DST} -o nolock${READONLY}'" >>/tmp/oginit.log
|
|
|
|
|
nfsmount ${SERVER}:${SRC} ${DST} -o nolock${READONLY} 2> /dev/null || mount.nfs ${SERVER}:${SRC} ${DST} -o nolock${READONLY}
|
|
|
|
|
;;
|
|
|
|
|
smb)
|
|
|
|
|
echo "running 'mount.cifs //${SERVER}/${SRC} ${DST} ${OPTIONS_LOG_SAFE}${READONLY}'" >>/tmp/oginit.log
|
|
|
|
|
mount.cifs //${SERVER}/${SRC} ${DST} ${OPTIONS}${READONLY}
|
|
|
|
|
;;
|
|
|
|
|
local)
|
|
|
|
|
# Comprobamos que estatus sea online y que la variable del server no esta vacia.
|
|
|
|
|
echo "ogstatus ($ogstatus) SERVER ($SERVER) SRC ($SRC)" >>/tmp/oginit.log
|
|
|
|
|
if [ "$ogstatus" != "offline" -a "$SERVER" != "" -a "$SRC" != "" ]; then
|
|
|
|
|
# Comprobamos que existe un servicio de samba.
|
|
|
|
|
echo "running 'smbclient -L $SERVER -N'" >>/tmp/oginit.log
|
|
|
|
|
smbclient -L $SERVER -N &>/dev/null
|
|
|
|
|
if [ $? -eq 0 ]; then
|
|
|
|
|
echo "running 'mount.cifs //${SERVER}/og${SRC} ${DST} ${OPTIONS_LOG_SAFE}${READONLY}'" >>/tmp/oginit.log
|
|
|
|
|
mount.cifs //${SERVER}/og${SRC} ${DST} ${OPTIONS}${READONLY}
|
|
|
|
|
fi
|
|
|
|
|
# TODO: buscar condicion para NFS
|
|
|
|
@ -505,21 +543,27 @@ ogConnect ()
|
|
|
|
|
#@date 2011/05/24
|
|
|
|
|
ogConnectOgLive ()
|
|
|
|
|
{
|
|
|
|
|
echo "ogConnectOgLive()" >>/tmp/oginit.log
|
|
|
|
|
echo "SRCOGLIVE ($SRCOGLIVE)" >>/tmp/oginit.log
|
|
|
|
|
# Si ogprotocol=local, la funcion ogExportVar => SRCOGLIVE=local
|
|
|
|
|
if [ "$SRCOGLIVE" == "local" ]
|
|
|
|
|
then
|
|
|
|
|
echo "Montar imagen del sistema root desde dispositivo local"
|
|
|
|
|
for i in $(blkid /dev/s* | grep $OGLIVELABEL | awk -F: '{print $2}' | tr -d \"); do export $i; done
|
|
|
|
|
if [ "$SRCOGLIVE" == "local" ]; then
|
|
|
|
|
echo "Montar imagen del sistema root desde dispositivo local" |tee -a /tmp/oginit.log
|
|
|
|
|
for i in $(blkid /dev/s* | grep $OGLIVELABEL | awk -F: '{print $2}' | tr -d \"); do
|
|
|
|
|
echo "export $i" >>/tmp/oginit.log
|
|
|
|
|
export $i
|
|
|
|
|
done
|
|
|
|
|
# si local usb| cd con partcion es identificada como label $OGLIVELABEL
|
|
|
|
|
echo "running 'mount -t $TYPE LABEL=$OGLIVELABEL $DSTOGLIVE'" >>/tmp/oginit.log
|
|
|
|
|
mount -t $TYPE LABEL=$OGLIVELABEL $DSTOGLIVE
|
|
|
|
|
if [ $? != 0 ]
|
|
|
|
|
then
|
|
|
|
|
if [ $? != 0 ]; then
|
|
|
|
|
# Si local es particion CACHE es identificada como CACHE
|
|
|
|
|
echo "mount failed, running 'mount LABEL=CACHE $DSTOGLIVE'" >>/tmp/oginit.log
|
|
|
|
|
mount LABEL=CACHE $DSTOGLIVE
|
|
|
|
|
#export LOCALMEDIA=CACHE
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
# Si ogprotocol es remoto. TODO en smb rw y en nfs ro??
|
|
|
|
|
echo "running 'ogConnect $OGSERVERLIVE $OGPROTOCOL $SRCOGLIVE $DSTOGLIVE'" >>/tmp/oginit.log
|
|
|
|
|
ogConnect $OGSERVERLIVE $OGPROTOCOL $SRCOGLIVE $DSTOGLIVE
|
|
|
|
|
fi
|
|
|
|
|
# Si el montaje ha sido correcto, tanto en local como en remoto. Procedemos con la union
|
|
|
|
@ -538,33 +582,38 @@ ogConnectOgLive ()
|
|
|
|
|
#@date 2011/05/24
|
|
|
|
|
ogMergeLive()
|
|
|
|
|
{
|
|
|
|
|
echo "ogMergeLive()" >>/tmp/oginit.log
|
|
|
|
|
#Si existe en el punto de acceso del del oglive el fichero ogclient.sqfs
|
|
|
|
|
if [ ! -d $DSTOGLIVE/$OGLIVEDIR ]; then
|
|
|
|
|
echo "Usando ogLive por defecto."
|
|
|
|
|
export OGLIVEDIR=$DEFOGLIVE
|
|
|
|
|
fi
|
|
|
|
|
if [ -f $DSTOGLIVE/$OGLIVEDIR/ogclient.sqfs ]
|
|
|
|
|
then
|
|
|
|
|
echo "OGLIVEDIR ($OGLIVEDIR) og2nd ($og2nd)" >>/tmp/oginit.log
|
|
|
|
|
if [ -f $DSTOGLIVE/$OGLIVEDIR/ogclient.sqfs ]; then
|
|
|
|
|
cat /proc/mounts > /tmp/mtab.preunion
|
|
|
|
|
if [ "$og2nd" == "img" ]
|
|
|
|
|
then
|
|
|
|
|
if [ "$og2nd" == "img" ]; then
|
|
|
|
|
#Montamos el ROOTFS tipo img, para desarrolladores
|
|
|
|
|
#TODO: comprobar que se tiene acceso de escritura
|
|
|
|
|
echo "running 'losetup /dev/loop0 $DSTOGLIVE/$OGLIVEDIR/ogclient.img -o 32256'" >>/tmp/oginit.log
|
|
|
|
|
losetup /dev/loop0 $DSTOGLIVE/$OGLIVEDIR/ogclient.img -o 32256
|
|
|
|
|
echo "running 'mount /dev/loop0 $OGLIVEROOTFS'" >>/tmp/oginit.log
|
|
|
|
|
mount /dev/loop0 $OGLIVEROOTFS
|
|
|
|
|
else
|
|
|
|
|
## Montamos el ROOTFS tipo squashfs
|
|
|
|
|
echo "running 'mount $DSTOGLIVE/$OGLIVEDIR/ogclient.sqfs $OGLIVEROOTFS -t squashfs -o loop'" >>/tmp/oginit.log
|
|
|
|
|
mount $DSTOGLIVE/$OGLIVEDIR/ogclient.sqfs $OGLIVEROOTFS -t squashfs -o loop
|
|
|
|
|
fi
|
|
|
|
|
# Realizamos la union entre el ogliveram(initrd) y el ogliverootfs(ogclient.sqfs)
|
|
|
|
|
# Nota: el orden es muy importante para evitar errores de montaje.
|
|
|
|
|
[ -d $OGLIVEROOTFS/lib32 ] && LIBS=lib32
|
|
|
|
|
echo "LIBS ($LIBS)" >>/tmp/oginit.log
|
|
|
|
|
for i in bin sbin lib $LIBS etc var usr root boot; do
|
|
|
|
|
echo "ogUnionLiveDir $i" >>/tmp/oginit.log
|
|
|
|
|
ogUnionLiveDir $i
|
|
|
|
|
done
|
|
|
|
|
[ -L /etc/mtab ] || cat /tmp/mtab.preunion > /etc/mtab
|
|
|
|
|
else
|
|
|
|
|
echo "Fichero imagen del cliente no encontrado"
|
|
|
|
|
echo "Fichero imagen del cliente no encontrado" |tee -a /tmp/oginit.log
|
|
|
|
|
return 1
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
@ -582,10 +631,12 @@ fi
|
|
|
|
|
#@date 2011/05/24
|
|
|
|
|
ogUnionLiveDir()
|
|
|
|
|
{
|
|
|
|
|
echo "ogUnionLiveDir()" >>/tmp/oginit.log
|
|
|
|
|
TMPDIR=/$1 #dir
|
|
|
|
|
FUSE_OPT="-o default_permissions -o allow_other -o use_ino -o nonempty -o suid"
|
|
|
|
|
UNION_OPT="-o cow -o noinitgroups"
|
|
|
|
|
UBIN="unionfs-fuse"
|
|
|
|
|
echo "TMPDIR ($TMPDIR) FUSE_OPT ($FUSE_OPT) UNION_OPT ($UNION_OPT) UBIN ($UBIN)" >>/tmp/oginit.log
|
|
|
|
|
|
|
|
|
|
mkdir -p $OGLIVERAMFS$TMPDIR
|
|
|
|
|
U1STDIR="${OGLIVERAMFS}${TMPDIR}=RW"
|
|
|
|
@ -593,7 +644,9 @@ ogUnionLiveDir()
|
|
|
|
|
UNIONDIR=${OGLIVEUNIONFS}${TMPDIR}
|
|
|
|
|
ulimit -n 4096
|
|
|
|
|
mkdir -p $UNIONDIR $TMPDIR
|
|
|
|
|
echo "running '$UBIN $FUSE_OPT $UNION_OPT ${U1STDIR}:${U2NDDIR} $UNIONDIR'" >>/tmp/oginit.log
|
|
|
|
|
$UBIN $FUSE_OPT $UNION_OPT ${U1STDIR}:${U2NDDIR} $UNIONDIR
|
|
|
|
|
echo "running 'mount --bind $UNIONDIR $TMPDIR'" >>/tmp/oginit.log
|
|
|
|
|
mount --bind $UNIONDIR $TMPDIR
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -614,6 +667,7 @@ ogUnionLiveDir()
|
|
|
|
|
#*/ ##
|
|
|
|
|
ogConfigureLoopback()
|
|
|
|
|
{
|
|
|
|
|
echo "ogConfigureLoopback()" >>/tmp/oginit.log
|
|
|
|
|
# for the portmapper we need localhost
|
|
|
|
|
ifconfig lo 127.0.0.1
|
|
|
|
|
#/etc/init.d/portmap start
|
|
|
|
@ -631,10 +685,10 @@ ogConfigureLoopback()
|
|
|
|
|
#*/ ##
|
|
|
|
|
ogConfigureNetworking()
|
|
|
|
|
{
|
|
|
|
|
#echo "ogConfigureNetworking: Buscando interfaz a configurar DEVICE"
|
|
|
|
|
if [ -n "${BOOTIF}" ]
|
|
|
|
|
then
|
|
|
|
|
#echo " variable BOOTIF exportada con pxelinux.0 con valor $BOOTIF"
|
|
|
|
|
echo "ogConfigureNetworking()" >>/tmp/oginit.log
|
|
|
|
|
echo "ogConfigureNetworking: Buscando interfaz a configurar DEVICE" >>/tmp/oginit.log
|
|
|
|
|
if [ -n "${BOOTIF}" ]; then
|
|
|
|
|
echo " variable BOOTIF exportada con pxelinux.0 con valor ($BOOTIF)" >>/tmp/oginit.log
|
|
|
|
|
IP=$IPOPTS
|
|
|
|
|
temp_mac=${BOOTIF#*-}
|
|
|
|
|
# convert to typical mac address format by replacing "-" with ":"
|
|
|
|
@ -648,20 +702,22 @@ then
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
unset IFS
|
|
|
|
|
# look for devices with matching mac address, and set DEVICE to
|
|
|
|
|
# appropriate value if match is found.
|
|
|
|
|
echo "IP ($IP) bootif_mac ($bootif_mac)" >>/tmp/oginit.log
|
|
|
|
|
# look for devices with matching mac address, and set DEVICE to appropriate value if match is found.
|
|
|
|
|
for device in /sys/class/net/* ; do
|
|
|
|
|
if [ -f "$device/address" ]; then
|
|
|
|
|
current_mac=$(cat "$device/address")
|
|
|
|
|
if [ "$bootif_mac" = "$current_mac" ]; then
|
|
|
|
|
DEVICE=${device##*/}
|
|
|
|
|
echo "current_mac ($current_mac) of device ($device) equals bootif_mac ($bootif_mac), setting DEVICE to ($DEVICE)" >>/tmp/oginit.log
|
|
|
|
|
break
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
else
|
|
|
|
|
#echo "variable BOOTIF no exportada, intentamos detectar que interfaz se ha iniciado"
|
|
|
|
|
echo "variable BOOTIF no exportada, intentamos detectar que interfaz se ha iniciado" >>/tmp/oginit.log
|
|
|
|
|
IP=$ip
|
|
|
|
|
echo "IP ($IP)" >>/tmp/oginit.log
|
|
|
|
|
#TODO Detectar que interfaz se ha iniciado
|
|
|
|
|
case "$IP" in
|
|
|
|
|
none|off)
|
|
|
|
@ -678,29 +734,34 @@ else
|
|
|
|
|
DEVICE=`echo $IP | cut -f6 -d:`
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
echo "DEVICE ($DEVICE)" >>/tmp/oginit.log
|
|
|
|
|
fi
|
|
|
|
|
DEVICE=$(ogGetNetworkDevice $DEVICE)
|
|
|
|
|
echo "DEVICE now ($DEVICE)" >>/tmp/oginit.log
|
|
|
|
|
if [ -z "${DEVICE}" ]; then
|
|
|
|
|
echo "variable DEVICE con valor $DEVICE no encontrada, llamamos de nuevo a ogconfigure_networking"
|
|
|
|
|
echo "variable DEVICE con valor $DEVICE no encontrada, llamamos de nuevo a ogconfigure_networking" |tee -a /tmp/oginit.log
|
|
|
|
|
ogConfigureNetworking
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
[ -n "${DEVICE}" ] && [ -e /run/net-"${DEVICE}".conf ] && return 0
|
|
|
|
|
[ -n "${DEVICE}" ] && [ -e /run/net-"${DEVICE}".conf ] && echo "/run/net-$DEVICE.conf exists" >>/tmp/oginit.log && return 0
|
|
|
|
|
#if [ -n "${DEVICE}" ] && [ -e /run/net-"${DEVICE}".conf ]; then
|
|
|
|
|
# echo "variable DEVICE con valor $DEVICE y fichero /run/net-$DEVICE encontrados"
|
|
|
|
|
# echo "variable DEVICE con valor $DEVICE y fichero /run/net-$DEVICE encontrados" |tee -a /tmp/oginit.log
|
|
|
|
|
# return 0
|
|
|
|
|
#else
|
|
|
|
|
# echo "variable DEVICE con valor $DEVICE encontrada, procedemos a configurala y a crear el fichero /run/net-$DEVICE"
|
|
|
|
|
# echo "variable DEVICE con valor $DEVICE encontrada, procedemos a configurala y a crear el fichero /run/net-$DEVICE" |tee -a /tmp/oginit.log
|
|
|
|
|
#fi
|
|
|
|
|
|
|
|
|
|
# Activamos la interfaz antes de configurar.
|
|
|
|
|
echo "running 'ip address flush $DEVICE'" >>/tmp/oginit.log
|
|
|
|
|
ip address flush $DEVICE
|
|
|
|
|
echo "running 'ip link set dev $DEVICE up'" >>/tmp/oginit.log
|
|
|
|
|
ip link set dev $DEVICE up
|
|
|
|
|
|
|
|
|
|
# Si no se detecta señal portadora volver a configurar.
|
|
|
|
|
sleep 1
|
|
|
|
|
CARRIER=$(cat /sys/class/net/${DEVICE}/carrier)
|
|
|
|
|
if [ "$CARRIER" != "1" ]
|
|
|
|
|
then
|
|
|
|
|
echo "CARRIER ($CARRIER)" >>/tmp/oginit.log
|
|
|
|
|
if [ "$CARRIER" != "1" ]; then
|
|
|
|
|
ogConfigureNetworking
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
@ -708,27 +769,29 @@ fi
|
|
|
|
|
# Documentation/filesystems/nfsroot.txt
|
|
|
|
|
# Documentation/frv/booting.txt
|
|
|
|
|
for ROUNDTTT in 2 3 4 6 9 16 25 36 64 100; do
|
|
|
|
|
echo "ROUNDTTT ($ROUNDTTT)" >>/tmp/oginit.log
|
|
|
|
|
# The NIC is to be configured if this file does not exist.
|
|
|
|
|
# Ip-Config tries to create this file and when it succeds
|
|
|
|
|
# creating the file, ipconfig is not run again.
|
|
|
|
|
# Ip-Config tries to create this file and when it succeds creating the file, ipconfig is not run again.
|
|
|
|
|
if [ -e /run/net-"${DEVICE}".conf ]; then
|
|
|
|
|
echo "/run/net-$DEVICE.conf exists" >>/tmp/oginit.log
|
|
|
|
|
break;
|
|
|
|
|
fi
|
|
|
|
|
echo "IP ($IP)" >>/tmp/oginit.log
|
|
|
|
|
case "$IP" in
|
|
|
|
|
none|off)
|
|
|
|
|
return 0
|
|
|
|
|
;;
|
|
|
|
|
""|on|any)
|
|
|
|
|
# Bring up device
|
|
|
|
|
echo "Setting $DEVICE with option:on|any and Variable IP= $IP: ipconfig -t ${ROUNDTTT} ${DEVICE} "
|
|
|
|
|
echo "Setting $DEVICE with option:on|any and Variable IP= $IP: ipconfig -t ${ROUNDTTT} ${DEVICE} " |tee -a /tmp/oginit.log
|
|
|
|
|
ipconfig -t ${ROUNDTTT} ${DEVICE}
|
|
|
|
|
;;
|
|
|
|
|
dhcp|bootp|rarp|both)
|
|
|
|
|
echo "Setting $DEVICE with option:dhcp|bootp|rarp|both and Variable IP= $IP: ipconfig -t ${ROUNDTTT} -c ${IP} -d ${DEVICE} "
|
|
|
|
|
echo "Setting $DEVICE with option:dhcp|bootp|rarp|both and Variable IP= $IP: ipconfig -t ${ROUNDTTT} -c ${IP} -d ${DEVICE} " |tee -a /tmp/oginit.log
|
|
|
|
|
ipconfig -t ${ROUNDTTT} -c ${IP} -d ${DEVICE}
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
echo "Setting $DEVICE with option * and Variable IP= $IP: ipconfig -t ${ROUNDTTT} -d $IP "
|
|
|
|
|
echo "Setting $DEVICE with option * and Variable IP= $IP: ipconfig -t ${ROUNDTTT} -d $IP " |tee -a /tmp/oginit.log
|
|
|
|
|
ipconfig -t ${ROUNDTTT} -d $IP
|
|
|
|
|
# grab device entry from ip option
|
|
|
|
|
NEW_DEVICE=${IP#*:*:*:*:*:*}
|
|
|
|
@ -738,6 +801,7 @@ for ROUNDTTT in 2 3 4 6 9 16 25 36 64 100; do
|
|
|
|
|
# wrong parse, possibly only a partial string
|
|
|
|
|
NEW_DEVICE=
|
|
|
|
|
fi
|
|
|
|
|
echo "NEW_DEVICE ($NEW_DEVICE)" >>/tmp/oginit.log
|
|
|
|
|
if [ -n "${NEW_DEVICE}" ]; then
|
|
|
|
|
DEVICE="${NEW_DEVICE}"
|
|
|
|
|
fi
|
|
|
|
@ -746,19 +810,23 @@ for ROUNDTTT in 2 3 4 6 9 16 25 36 64 100; do
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
# source ipconfig output
|
|
|
|
|
echo "DEVICE ($DEVICE)" >>/tmp/oginit.log
|
|
|
|
|
if [ -n "${DEVICE}" ]; then
|
|
|
|
|
export DEVICE
|
|
|
|
|
export DEVICECFG="/run/net-${DEVICE}.conf"
|
|
|
|
|
# En algunos casos, el fichero de configuración está en /tmp.
|
|
|
|
|
[ ! -f $DEVICECFG -a -f ${DEVICECFG/run/tmp} ] && mv ${DEVICECFG/run/tmp} $DEVICECFG
|
|
|
|
|
echo "source'ing DEVICECFG ($DEVICECFG)" >>/tmp/oginit.log
|
|
|
|
|
source $DEVICECFG
|
|
|
|
|
echo "DEVICE=$DEVICE" >> $CFGINITRD
|
|
|
|
|
echo "DEVICECFG=$DEVICECFG" >> $CFGINITRD
|
|
|
|
|
echo "exportando variable DEVICE con valor = $DEVICE y DEVICECFG con valor $DEVICECFG"
|
|
|
|
|
echo "exportando variable DEVICE con valor = ($DEVICE) y DEVICECFG con valor ($DEVICECFG)"
|
|
|
|
|
# Compatibilidad con versiones anteriores.
|
|
|
|
|
ln -fs $DEVICECFG /tmp
|
|
|
|
|
else
|
|
|
|
|
# source any interface as not exaclty specified
|
|
|
|
|
NET_STAR=/run/net-*.conf
|
|
|
|
|
echo "source'ing ($NET_STAR)" >>/tmp/oginit.log
|
|
|
|
|
source /run/net-*.conf
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
@ -777,6 +845,7 @@ fi
|
|
|
|
|
#*/ ##
|
|
|
|
|
ogYesNo()
|
|
|
|
|
{
|
|
|
|
|
echo "ogYesNo()" >>/tmp/oginit.log
|
|
|
|
|
local ans
|
|
|
|
|
local ok=0
|
|
|
|
|
local timeout=0
|
|
|
|
|