version 1.0.2 #404 boot-tools $DEVICE desde ssh, variables adaptadas a OG 1.X, permitido servicios distribuidos ogrepo(imagenes) oglive(tftpboot) ogshare(engine) ogdns
git-svn-id: https://opengnsys.es/svn/branches/version1.0@2073 a21b9725-9963-47de-94b9-378ad31fedc9remotes/github/master
parent
9d53e3b063
commit
4c7d806f9f
|
@ -6,8 +6,6 @@
|
|||
#@warning License: GNU GPLv3+
|
||||
|
||||
|
||||
|
||||
|
||||
ogExportKernelParameters ()
|
||||
{
|
||||
GLOBAL="cat /proc/cmdline"
|
||||
|
@ -21,54 +19,88 @@ return 0
|
|||
ogExportVarEnvironment ()
|
||||
{
|
||||
export CFGINITRD="/tmp/initrd.cfg"
|
||||
echo "puntos de accesos al servidor ogprotocol=nfs" >> $CFGINITRD
|
||||
export NFSROOTBOOT="/var/lib/tftpboot" && echo "NFSROOTBOOT=$NFSROOTBOOT" >> $CFGINITRD
|
||||
export NFSCLIENTDIR="/opt/opengnsys/client" && echo "NFSCLIENDIR=$NFSCLIENTDIR" >> $CFGINITRD
|
||||
export NFSLOGDIR="/opt/opengnsys/log/clients" && echo "NFSLOGDIR=$NFSLOGDIR" >> $CFGINITRD
|
||||
export NFSIMGDIR="/opt/opengnsys/images" && echo "NFSIMGDIR=$NFSIMGDIR" >> $CFGINITRD
|
||||
echo "puntos de accesos al servidor ogprotocol=smb" >> $CFGINITRD
|
||||
export SMBROOTBOOT="tftpboot" && echo "SMBROOTBOOT=$SMBROOTBOOT" >> $CFGINITRD
|
||||
export SMBCLIENTDIR="ogclient" && echo "SMBCLIENTDIR=$SMBCLIENTDIR" >> $CFGINITRD
|
||||
export SMBLOGDIR="oglog" && echo "SMBLOGDIR=$SMBLOGDIR" >> $CFGINITRD
|
||||
export SMBIMGDIR="ogimages" && echo "SMBIMGDIR=$SMBIMGDIR" >> $CFGINITRD
|
||||
|
||||
echo "puntos de montaje local para los contenedores" >> $CFGINITRD
|
||||
export LOCALROOTBOOT="/opt/og2fs/tftpboot" && echo "LOCALROOTBOOT=$LOCALROOTBOOT" >> $CFGINITRD
|
||||
export LOCALCLIENTDIR="/opt/opengnsys" && echo "LOCALCLIENTDIR=$LOCALCLIENTDIR" >> $CFGINITRD
|
||||
export LOCALLOGDIR="/opt/opengnsys/log" && echo "LOCALLOGDIR=$LOCALLOGDIR" >> $CFGINITRD
|
||||
export LOCALIMGDIR="/opt/opengnsys/images" && echo "LOCALIMGDIR=$LOCALIMGDIR" >> $CFGINITRD
|
||||
|
||||
echo "puntos de montajes para realizar la integración unionfs entre el initrd y el sistema root" >> $CFGINITRD
|
||||
#punto de montaje donde se accede al 2nd FS mediante loop
|
||||
export LOCALROOTIMG="/opt/og2fs/2ndfs" && echo "LOCALROOTIMG=$LOCALROOTIMG" >> $CFGINITRD
|
||||
OGPROTOCOL="${ogprotocol:-smb}"
|
||||
case "$OGPROTOCOL" in
|
||||
nfs|NFS)
|
||||
#export NFSROOTBOOT="/var/lib/tftpboot"
|
||||
export SRCOGLIVE="/var/lib/tftpboot" && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD
|
||||
#export NFSCLIENTDIR="/opt/opengnsys/client"
|
||||
export SRCOGSHARE="/opt/opengnsys/client" && echo "SRCOGSHARE=$SRCOGSHARE" >> $CFGINITRD
|
||||
#export NFSLOGDIR="/opt/opengnsys/log/clients"
|
||||
export SRCOGLOG="/opt/opengnsys/log/clients" && echo "SRCOGLOG=$SRCOGLOG" >> $CFGINITRD
|
||||
#export NFSIMGDIR="/opt/opengnsys/images"
|
||||
export SRCOGIMAGES="/opt/opengnsys/images" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD
|
||||
;;
|
||||
smb|SMB|cifs|CIFS|samba|SAMBA)
|
||||
export OPTIONS=" -o user=opengnsys,pass=og"
|
||||
#export SMBROOTBOOT="tftpboot" && echo "SMBROOTBOOT=$SMBROOTBOOT" >> $CFGINITRD
|
||||
export SRCOGLIVE="tftpboot" && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD
|
||||
#export SMBCLIENTDIR="ogclient" && echo "SMBCLIENTDIR=$SMBCLIENTDIR" >> $CFGINITRD
|
||||
export SRCOGSHARE="ogclient" && echo "SRCOGSHARE=$SRCOGSHARE" >> $CFGINITRD
|
||||
#export SMBLOGDIR="oglog" && echo "SMBLOGDIR=$SMBLOGDIR" >> $CFGINITRD
|
||||
export SRCOGLOG="oglog" && echo "SRCOGLOG=$SRCOGLOG" >> $CFGINITRD
|
||||
#export SMBIMGDIR="ogimages" && echo "SMBIMGDIR=$SMBIMGDIR" >> $CFGINITRD
|
||||
export SRCOGIMAGES="ogimages" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD
|
||||
;;
|
||||
local|LOCAL)
|
||||
export SRCOGLIVE="local"
|
||||
;;
|
||||
esac
|
||||
#punto de acceso al boot-tools live
|
||||
#export LOCALROOTBOOT="/opt/og2fs/tftpboot" && echo "LOCALROOTBOOT=$LOCALROOTBOOT" >> $CFGINITRD
|
||||
export DSTOGLIVE="/opt/oglive/tftpboot"
|
||||
#punto de montaje para unionfs
|
||||
export LOCALROOTRAM="/opt/og2fs/1stfs" && echo "LOCALROOTRAM=$LOCALROOTRAM" >> $CFGINITRD
|
||||
#punto de union entreo LOCALROOTIMG y LOCALROOTRAM
|
||||
export LOCALROOTUNION="/opt/og2fs/unionfs" && echo "LOCALROOTUNION=$LOCALROOTUNION" >> $CFGINITRD
|
||||
##INFORMACION DE OTRAS VARIABLES OBTENDIAS EN OTRAS FUNCIONES.
|
||||
#ogGetROOTSERVER() ip del servidor pxe, valor obtenido automaticamente desde dhcpd.
|
||||
#IPV4DDR
|
||||
#IPV4BROADCAST
|
||||
#IPV4NETMASK
|
||||
#IPV4GATEWAY
|
||||
#DNS0 DNS1
|
||||
#HOSTNAME
|
||||
#ROOTSERVER #ip del servidor pxe que ha servido el kernel
|
||||
#REPOSERVER=ogrepo -> ogConectROOTSERVER() ip del servidor de images para separar serviicios.
|
||||
#export LOCALROOTRAM="/opt/og2fs/1stfs" && echo "LOCALROOTRAM=$LOCALROOTRAM" >> $CFGINITRD
|
||||
export OGLIVERAMFS="/opt/oglive/ramfs" && echo "OGLIVERAMFS=$OGLIVERAMFS" >> $CFGINITRD
|
||||
#punto de montaje donde se accede al 2nd FS mediante loop
|
||||
#export LOCALROOTIMG="/opt/og2fs/2ndfs" && echo "LOCALROOTIMG=$LOCALROOTIMG" >> $CFGINITRD
|
||||
export OGLIVEROOTFS="/opt/oglive/rootfs" && echo "OGLIVEROOTFS=$OGLIVEROOTFS" >> $CFGINITRD
|
||||
#punto de union entre LOCALROOTIMG y LOCALROOTRAM
|
||||
#export LOCALROOTUNION="/opt/og2fs/unionfs" && echo "LOCALROOTUNION=$LOCALROOTUNION" >> $CFGINITRD
|
||||
export OGLIVEUNIONFS="/opt/oglive/unionfs" && echo "OGLIVEUNIONFS=$OGLIVEUNIONFS" >> $CFGINITRD
|
||||
#etiquta para los dispositivos offline
|
||||
export OGLIVELABEL="ogClient"
|
||||
|
||||
#echo "puntos de montajes para los demas accesos"
|
||||
#echo "acceso al client, engine, scritps, interfaz"
|
||||
#export LOCALCLIENTDIR="/opt/opengnsys" && echo "LOCALCLIENTDIR=$LOCALCLIENTDIR" >> $CFGINITRD
|
||||
export DSTOGSHARE="/opt/opengnsys" && echo "DSTOGSHARE=$DSTOGSHARE" >> $CFGINITRD
|
||||
#export LOCALLOGDIR="/opt/opengnsys/log" && echo "LOCALLOGDIR=$LOCALLOGDIR" >> $CFGINITRD
|
||||
export DSTOGLOG="/opt/opengnsys/log" && echo "DSTOGLOG=$DSTOGLOG" >> $CFGINITRD
|
||||
#export LOCALIMGDIR="/opt/opengnsys/images" && echo "LOCALIMGDIR=$LOCALIMGDIR" >> $CFGINITRD
|
||||
export DSTOGIMAGES="/opt/opengnsys/images" && echo "DSTOGIMAGES=$DSTOGIMAGES" >> $CFGINITRD
|
||||
|
||||
##INFORMACION DE OTRAS VARIABLES OBTENDIAS EN OTRAS FUNCIONES ogConfigureNetwork.
|
||||
#DEVICE
|
||||
#IPV4DDR
|
||||
#IPV4BROADCAST
|
||||
#IPV4NETMASK
|
||||
#IPV4GATEWAY
|
||||
#HOSTNAME
|
||||
#INFORMACION de otras variasbles obteneidas desde ogGetROOTSERVER
|
||||
#ROOTSERVER si ip=dhcp -> ROOTSERVER=NEXT-SERVER; si ip=host:rootserver:gw:mask:hostname:interfaz -> ROOTSERVER=rootserver
|
||||
#BOOTIF -> si el gestor remoto es pxelinux.0 y se añade una linea más tipo "IPAPPEND 2" esta variable tendrá la mac de la interfaz.
|
||||
#$OGSERVERLIVE
|
||||
#$OGSERVERSHARE
|
||||
#$OGSERVERLOG
|
||||
#$OGSERVERIMAGES
|
||||
return 0
|
||||
}
|
||||
|
||||
ogConfigureRamfs ()
|
||||
{
|
||||
mkdir -p $LOCALROOTBOOT
|
||||
mkdir -p $LOCALROOTIMG
|
||||
mkdir -p $LOCALROOTRAM
|
||||
mkdir -p $LOCALROOTUNION
|
||||
#mkdir -p $LOCALROOTBOOT
|
||||
mkdir -p $DSTOGLIVE
|
||||
#mkdir -p $LOCALROOTRAM
|
||||
mkdir -p $OGLIVERAMFS
|
||||
#mkdir -p $LOCALROOTIMG
|
||||
mkdir -p $OGLIVEROOTFS
|
||||
#mkdir -p $LOCALROOTUNION
|
||||
mkdir -p $OGLIVEUNIONFS
|
||||
}
|
||||
|
||||
ogLoadNetModule ()
|
||||
{
|
||||
#cargando netmodule
|
||||
if [ -n "$ognetmodule" ]
|
||||
then
|
||||
echo "Cargando modulo de red $netmodule"
|
||||
|
@ -90,6 +122,10 @@ ogPostConfigureFS()
|
|||
echo "order hosts,bind" > /etc/host.conf
|
||||
echo "multi on" >> /etc/host.conf
|
||||
|
||||
#configuramos el dns
|
||||
echo "nameserver $ogdns" > /etc/resolv.conf
|
||||
|
||||
|
||||
# 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" ")
|
||||
|
@ -99,18 +135,27 @@ ogPostConfigureFS()
|
|||
echo "localnet $NETIP" >> /etc/networks
|
||||
#route
|
||||
|
||||
echo "ogLive1.0.2" > /etc/debian_chroot
|
||||
|
||||
#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
|
||||
[ "$LOCALMEDIA" == "CACHE" ] && ln -s /opt/og2fs/tftpboot /opt/opengnsys/cache
|
||||
[ "$ogprotocol" == "local" ] && ln -s /opt/og2fs/2ndfs/opt/opengnsys/* /opt/opengnsys/
|
||||
#[ "$LOCALMEDIA" == "CACHE" ] && ln -s /opt/oglive/tftpboot /opt/opengnsys/cache
|
||||
#[ "$ogprotocol" == "local" ] && ln -s /opt/oglive/2ndfs/opt/opengnsys/* /opt/opengnsys/
|
||||
[ "$LOCALMEDIA" == "CACHE" ] && ln -s $DSTOGLIVE /opt/opengnsys/cache
|
||||
[ "$ogprotocol" == "local" ] && ln -s ${OGLIVEROOTFS}/opt/opengnsys/* /opt/opengnsys/
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#Requiere ogConfigureNetworking.
|
||||
#Exporta ROOTSERVER
|
||||
# si la red ha sido configurada con dhcp el valor de ROOTSERVER será el valor de next-server del dhcp
|
||||
# si la red ha sido configurada con el parametro de kernel ip, será el segundo valor.
|
||||
## ip=iphost:ipnext-server:ipgateway:netmask:hostname:iface:none
|
||||
## ip=172.17.36.21:62.36.225.150:172.17.36.254:255.255.255.0:prueba1:eth0:none
|
||||
ogGetROOTSERVER ()
|
||||
{
|
||||
# get nfs root from dhcp
|
||||
|
@ -135,72 +180,81 @@ ogGetROOTSERVER ()
|
|||
fi
|
||||
export ROOTSERVER
|
||||
echo "ROOTSERVER=$ROOTSERVER" >> $CFGINITRD
|
||||
return 0
|
||||
|
||||
#si oglive no oglive=R
|
||||
export OGSERVERIMAGES="${ogrepo:-$ROOTSERVER}"
|
||||
export OGSERVERSHARE="${ogshare:-$ROOTSERVER}"
|
||||
export OGSERVERLOG="${oglog:-$ROOTSERVER}"
|
||||
export OGSERVERLIVE="${oglive:-$OGSERVERIMAGES}"
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
ogConectROOTSERVER ()
|
||||
#ogConnect
|
||||
# parm 1 ip servidor TODO:dns
|
||||
# parm 2 protocolo
|
||||
# parm 3 punto de acceso remoto
|
||||
# parm 4 punto de montaje local
|
||||
# parm 5 acceso de lectura tipo ",ro"
|
||||
ogConnect ()
|
||||
{
|
||||
local OPTIONS
|
||||
#params a detectar
|
||||
if [ $ogrepo ]
|
||||
then
|
||||
# Validar si la ip es correcta
|
||||
ROOTREPO=$ogrepo
|
||||
else
|
||||
ROOTREPO=$ROOTSERVER
|
||||
fi
|
||||
SERVER=$1
|
||||
PROTOCOL=$2
|
||||
SRC=$3
|
||||
DST=$4
|
||||
READONLY=$5
|
||||
|
||||
case "$ogprotocol" in
|
||||
local)
|
||||
case "$PROTOCOL" in
|
||||
nfs)
|
||||
nfsmount -o nolock${READONLY} ${SERVER}:${SRC} ${DST}
|
||||
;;
|
||||
smb)
|
||||
mount.cifs //${SERVER}/${SRC} ${DST} ${OPTIONS}${READONLY}
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
ogConnectOgLive ()
|
||||
{
|
||||
# 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 ogClient | awk -F: '{print $2}' | tr -d \"); do export $i; done
|
||||
mount -t $TYPE LABEL=$LABEL $LOCALROOTBOOT
|
||||
for i in $(blkid /dev/s* | grep $OGLIVELABEL | awk -F: '{print $2}' | tr -d \"); do export $i; done
|
||||
mount -t $TYPE LABEL=$LABEL $DSTOGLIVE
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
mount -t reiserfs LABEL=CACHE $LOCALROOTBOOT
|
||||
mount -t reiserfs LABEL=CACHE $DSTOGLIVE
|
||||
export LOCALMEDIA=CACHE
|
||||
fi
|
||||
;;
|
||||
httfs)
|
||||
echo "protocolo httfs aun no soportado"
|
||||
;;
|
||||
sshfs)
|
||||
echo "protocolo sshfs aun no soportado"
|
||||
;;
|
||||
smb)
|
||||
echo "Preparando conexión con el Repositorio $ROOTSERVER por $ogprotocol"
|
||||
OPTIONS=" -o user=opengnsys,pass=og"
|
||||
mount.cifs //${ROOTSERVER}/${SMBCLIENTDIR} $LOCALCLIENTDIR $OPTIONS
|
||||
mount.cifs //${ROOTSERVER}/${SMBLOGDIR} $LOCALLOGDIR $OPTIONS
|
||||
mount.cifs //${ROOTSERVER}/${SMBROOTBOOT} $LOCALROOTBOOT $OPTIONS
|
||||
mount.cifs //${ROOTREPO}/${SMBIMGDIR} $LOCALIMGDIR ${OPTIONS},ro
|
||||
;;
|
||||
nfs)
|
||||
echo "Preparando conexión con el Repositorio $ROOTSERVER por $ogprotocol"
|
||||
nfsmount -o nolock,ro $ROOTSERVER:$NFSCLIENTDIR $LOCALCLIENTDIR
|
||||
nfsmount -o nolock $ROOTSERVER:$NFSLOGDIR $LOCALLOGDIR
|
||||
nfsmount -o nolock $ROOTSERVER:$NFSROOTBOOT $LOCALROOTBOOT
|
||||
nfsmount -o nolock,ro $ROOTREPO:$NFSIMGDIR $LOCALIMGDIR
|
||||
;;
|
||||
esac
|
||||
else
|
||||
# Si ogprotocol es remoto. TODO en smb rw y en nfs ro??
|
||||
ogConnect $OGSERVERLIVE $OGPROTOCOL $SRCOGLIVE $DSTOGLIVE
|
||||
fi
|
||||
# Si el montaje ha sido correcto, tanto en local como en remoto. Procedemos con la union
|
||||
ogMergeLive
|
||||
}
|
||||
|
||||
ogMerge2ndFile()
|
||||
|
||||
|
||||
ogMergeLive()
|
||||
{
|
||||
if [ -f $LOCALROOTBOOT/ogclient/ogclient.sqfs ]
|
||||
#Si existe en el punto de acceso del del oglive el fichero ogclient.sqfs
|
||||
if [ -f $DSTOGLIVE/ogclient/ogclient.sqfs ]
|
||||
then
|
||||
cat /proc/mounts > /tmp/mtab.preunion
|
||||
if [ "$og2nd" == "img" ]
|
||||
then
|
||||
#para acceder al img
|
||||
losetup /dev/loop0 $LOCALROOTBOOT/ogclient/ogclient.img -o 32256
|
||||
mount /dev/loop0 $LOCALROOTIMG
|
||||
#Montamos el ROOTFS tipo img, para desarrolladores
|
||||
losetup /dev/loop0 $DSTOGLIVE/ogclient/ogclient.img -o 32256
|
||||
mount /dev/loop0 $OGLIVEROOTFS
|
||||
else
|
||||
## para acceder al squashfs
|
||||
mount $LOCALROOTBOOT/ogclient/ogclient.sqfs $LOCALROOTIMG -t squashfs -o loop
|
||||
## Montamos el ROOTFS tipo squashfs
|
||||
mount $DSTOGLIVE/ogclient/ogclient.sqfs $OGLIVEROOTFS -t squashfs -o loop
|
||||
fi
|
||||
# Realizamos la union entre el ogliveram(initrd) y el ogliverootfs(ogclient.sqfs)
|
||||
for i in etc var lib bin sbin usr root boot; do
|
||||
unionmount $i
|
||||
ogUnionLiveDir $i
|
||||
done
|
||||
cat /tmp/mtab.preunion > /etc/mtab
|
||||
else
|
||||
|
@ -210,57 +264,40 @@ fi
|
|||
}
|
||||
|
||||
|
||||
unionmount()
|
||||
|
||||
|
||||
#ogUnionLiveDir
|
||||
#par 1 el directorio a unir.
|
||||
# para el parmetro 1 (directorio),
|
||||
ogUnionLiveDir()
|
||||
{
|
||||
tmpdir=/$1 #dir
|
||||
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"
|
||||
#UPATH="/unionfs"
|
||||
#LOCALROOTIMG="/opt/og2fs/2ndfs"
|
||||
#LOCALROOTRAM="/opt/og2fs/1stfs" #/unionfs/host #punto de montaje para unionfs
|
||||
#LOCALROOTUNION=/opt/og2fs/unionfs/" #/unionfs/union #punto de union entreo LOCALROOTIMG y LOCALROOTRAM
|
||||
#mkdir -p $LOCALROOTRAM #/unionfs/host
|
||||
#mkdir -p $LOCALROOTUNION #/unionfs/union
|
||||
mkdir -p $LOCALROOTRAM$tmpdir
|
||||
#mount --bind /$tmpdir $LOCALROOTRAM$tmpdir
|
||||
U1STDIR="${LOCALROOTRAM}${tmpdir}=RW"
|
||||
U2NDDIR="${LOCALROOTIMG}${tmpdir}=RO"
|
||||
UNIONDIR=$LOCALROOTUNION$tmpdir
|
||||
|
||||
mkdir -p $OGLIVERAMFS$TMPDIR
|
||||
U1STDIR="${OGLIVERAMFS}${TMPDIR}=RW"
|
||||
U2NDDIR="${OGLIVEROOTFS}${TMPDIR}=RO"
|
||||
UNIONDIR=${OGLIVEUNIONFS}${TMPDIR}
|
||||
mkdir -p $UNIONDIR
|
||||
$UBIN $FUSE_OPT $UNION_OPT ${U1STDIR}:${U2NDDIR} $UNIONDIR
|
||||
mount --bind $UNIONDIR $tmpdir
|
||||
mount --bind $UNIONDIR $TMPDIR
|
||||
}
|
||||
|
||||
|
||||
unionmountOLD()
|
||||
{
|
||||
FUSE_OPT="-o default_permissions -o allow_other -o use_ino -o nonempty -o suid"
|
||||
UNION_OPT="-o cow -o noinitgroups"
|
||||
UPATH="/unionfs"
|
||||
UBIN="unionfs-fuse"
|
||||
mkdir -p /unionfs/host
|
||||
mkdir -p /unionfs/union
|
||||
dir=$1
|
||||
mkdir -p /unionfs/host/$dir
|
||||
#mount --bind /$dir /unionfs/host/$dir
|
||||
mkdir -p /unionfs/union/$dir
|
||||
host="/unionfs/host/${dir}=RW"
|
||||
common="/opt/og2fs/${dir}=RO"
|
||||
$UBIN $FUSE_OPT $UNION_OPT ${host}:${common} /unionfs/union/$dir
|
||||
mount --bind /unionfs/union/$dir /$dir
|
||||
}
|
||||
|
||||
ogconfigure_lo()
|
||||
|
||||
ogConfigureLoopback()
|
||||
{
|
||||
# for the portmapper we need localhost
|
||||
ifconfig lo 127.0.0.1
|
||||
#/etc/init.d/portmap start
|
||||
}
|
||||
|
||||
ogconfigure_networking()
|
||||
ogConfigureNetworking()
|
||||
{
|
||||
#echo "ogconfigure_networking: Buscando interfaz a configurar DEVICE"
|
||||
#echo "ogConfigureNetworking: Buscando interfaz a configurar DEVICE"
|
||||
if [ -n "${BOOTIF}" ]
|
||||
then
|
||||
#echo " variable BOOTIF exportada con pxelinux.0 con valor $BOOTIF"
|
||||
|
@ -310,7 +347,7 @@ else
|
|||
fi
|
||||
if [ -z "${DEVICE}" ]; then
|
||||
echo "variable DEVICE con valor $DEVICE no encontrada, llamamos de nuevo a ogconfigure_networking"
|
||||
ogconfigure_networking
|
||||
ogConfigureNetworking
|
||||
fi
|
||||
|
||||
[ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ] && return 0
|
||||
|
@ -329,7 +366,7 @@ sleep 1
|
|||
CARRIER=$(cat /sys/class/net/${DEVICE}/carrier)
|
||||
if [ "$CARRIER" != "1" ]
|
||||
then
|
||||
ogconfigure_networking
|
||||
ogConfigureNetworking
|
||||
fi
|
||||
|
||||
# support ip options see linux sources
|
||||
|
@ -376,7 +413,7 @@ done
|
|||
# source ipconfig output
|
||||
if [ -n "${DEVICE}" ]; then
|
||||
. /tmp/net-${DEVICE}.conf
|
||||
DEVICECFG="/tmp/net-${DEVICE}"
|
||||
DEVICECFG="/tmp/net-${DEVICE}.conf"
|
||||
export DEVICECFG
|
||||
export DEVICE
|
||||
echo "DEVICE=$DEVICE" >> $CFGINITRD
|
||||
|
@ -477,3 +514,118 @@ ogYesNo()
|
|||
}
|
||||
|
||||
|
||||
### # borrar
|
||||
|
||||
ogConectROOTSERVER ()
|
||||
{
|
||||
local OPTIONS
|
||||
#params a detectar
|
||||
if [ $ogrepo ]
|
||||
then
|
||||
# Validar si la ip es correcta
|
||||
ROOTREPO=$ogrepo
|
||||
else
|
||||
ROOTREPO=$ROOTSERVER
|
||||
fi
|
||||
|
||||
case "$ogprotocol" in
|
||||
local)
|
||||
echo "Montar imagen del sistema root desde dispositivo local"
|
||||
for i in $(blkid /dev/s* | grep ogClient | awk -F: '{print $2}' | tr -d \"); do export $i; done
|
||||
mount -t $TYPE LABEL=$LABEL $LOCALROOTBOOT
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
mount -t reiserfs LABEL=CACHE $LOCALROOTBOOT
|
||||
export LOCALMEDIA=CACHE
|
||||
fi
|
||||
;;
|
||||
httfs)
|
||||
echo "protocolo httfs aun no soportado"
|
||||
;;
|
||||
sshfs)
|
||||
echo "protocolo sshfs aun no soportado"
|
||||
;;
|
||||
smb)
|
||||
echo "Preparando conexión con el Repositorio $ROOTSERVER por $ogprotocol"
|
||||
OPTIONS=" -o user=opengnsys,pass=og"
|
||||
mount.cifs //${ROOTSERVER}/${SMBROOTBOOT} $LOCALROOTBOOT $OPTIONS
|
||||
mount.cifs //${ROOTSERVER}/${SMBCLIENTDIR} $LOCALCLIENTDIR $OPTIONS
|
||||
mount.cifs //${ROOTSERVER}/${SMBLOGDIR} $LOCALLOGDIR $OPTIONS
|
||||
|
||||
mount.cifs //${ROOTREPO}/${SMBIMGDIR} $LOCALIMGDIR ${OPTIONS},ro
|
||||
;;
|
||||
nfs)
|
||||
echo "Preparando conexión con el Repositorio $ROOTSERVER por $ogprotocol"
|
||||
nfsmount -o nolock $ROOTSERVER:$NFSROOTBOOT $LOCALROOTBOOT
|
||||
nfsmount -o nolock,ro $ROOTSERVER:$NFSCLIENTDIR $LOCALCLIENTDIR
|
||||
nfsmount -o nolock $ROOTSERVER:$NFSLOGDIR $LOCALLOGDIR
|
||||
|
||||
nfsmount -o nolock,ro $ROOTREPO:$NFSIMGDIR $LOCALIMGDIR
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
ogMerge2ndFile()
|
||||
{
|
||||
if [ -f $LOCALROOTBOOT/ogclient/ogclient.sqfs ]
|
||||
then
|
||||
cat /proc/mounts > /tmp/mtab.preunion
|
||||
if [ "$og2nd" == "img" ]
|
||||
then
|
||||
#para acceder al img
|
||||
losetup /dev/loop0 $LOCALROOTBOOT/ogclient/ogclient.img -o 32256
|
||||
mount /dev/loop0 $LOCALROOTIMG
|
||||
else
|
||||
## para acceder al squashfs
|
||||
mount $LOCALROOTBOOT/ogclient/ogclient.sqfs $LOCALROOTIMG -t squashfs -o loop
|
||||
fi
|
||||
for i in etc var lib bin sbin usr root boot; do
|
||||
unionmount $i
|
||||
done
|
||||
cat /tmp/mtab.preunion > /etc/mtab
|
||||
else
|
||||
echo "Fichero imagen del cliente no encontrado"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
unionmount()
|
||||
{
|
||||
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"
|
||||
#UPATH="/unionfs"
|
||||
#LOCALROOTIMG="/opt/og2fs/2ndfs"
|
||||
#LOCALROOTRAM="/opt/og2fs/1stfs" #/unionfs/host #punto de montaje para unionfs
|
||||
#LOCALROOTUNION=/opt/og2fs/unionfs/" #/unionfs/union #punto de union entreo LOCALROOTIMG y LOCALROOTRAM
|
||||
#mkdir -p $LOCALROOTRAM #/unionfs/host
|
||||
#mkdir -p $LOCALROOTUNION #/unionfs/union
|
||||
mkdir -p $LOCALROOTRAM$tmpdir
|
||||
#mount --bind /$tmpdir $LOCALROOTRAM$tmpdir
|
||||
U1STDIR="${LOCALROOTRAM}${tmpdir}=RW"
|
||||
U2NDDIR="${LOCALROOTIMG}${tmpdir}=RO"
|
||||
UNIONDIR=$LOCALROOTUNION$tmpdir
|
||||
mkdir -p $UNIONDIR
|
||||
$UBIN $FUSE_OPT $UNION_OPT ${U1STDIR}:${U2NDDIR} $UNIONDIR
|
||||
mount --bind $UNIONDIR $tmpdir
|
||||
}
|
||||
|
||||
|
||||
unionmountOLD()
|
||||
{
|
||||
FUSE_OPT="-o default_permissions -o allow_other -o use_ino -o nonempty -o suid"
|
||||
UNION_OPT="-o cow -o noinitgroups"
|
||||
UPATH="/unionfs"
|
||||
UBIN="unionfs-fuse"
|
||||
mkdir -p /unionfs/host
|
||||
mkdir -p /unionfs/union
|
||||
dir=$1
|
||||
mkdir -p /unionfs/host/$dir
|
||||
#mount --bind /$dir /unionfs/host/$dir
|
||||
mkdir -p /unionfs/union/$dir
|
||||
host="/unionfs/host/${dir}=RW"
|
||||
common="/opt/og2fs/${dir}=RO"
|
||||
$UBIN $FUSE_OPT $UNION_OPT ${host}:${common} /unionfs/union/$dir
|
||||
mount --bind /unionfs/union/$dir /$dir
|
||||
}
|
||||
|
|
|
@ -21,7 +21,9 @@
|
|||
#@version 0.8.1 - UnionFS + squasfs
|
||||
#@author Antonio J. Doblas Viso. Universidad de Málaga. EVLT.
|
||||
#@date 2010/06/29
|
||||
|
||||
#@version 1.0. - Adaptacion variables. Corrección enlace red
|
||||
#@author Antonio J. Doblas Viso. Universidad de Málaga. EVLT.
|
||||
#@date 2011/06/16
|
||||
#*/
|
||||
|
||||
|
||||
|
@ -45,8 +47,6 @@ mountroot ()
|
|||
|
||||
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before get OG variables: y/N "
|
||||
[ $? == 0 ] && sh || echo " "
|
||||
|
||||
|
||||
set -a
|
||||
log_success_msg "Checking kernel parameters"
|
||||
ogExportKernelParameters
|
||||
|
@ -67,29 +67,48 @@ mountroot ()
|
|||
|
||||
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before configure networking: y/N "
|
||||
[ $? == 0 ] && sh || echo " "
|
||||
ogconfigure_networking
|
||||
ogConfigureNetworking
|
||||
log_success_msg "config networking"
|
||||
ogconfigure_lo
|
||||
ogConfigureLoopback
|
||||
log_success_msg "config loopback"
|
||||
|
||||
|
||||
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before detect rootserver: y/N "
|
||||
[ $? == 0 ] && sh || echo " "
|
||||
ogGetROOTSERVER && log_success_msg "Get Info from pxe server"
|
||||
ogGetROOTSERVER && log_success_msg "Get Info from pxe server and ckeck distribuited OG services "
|
||||
|
||||
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before conect with og Services : y/N "
|
||||
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before connect and merging the rootfs -ogLive- : y/N "
|
||||
[ $? == 0 ] && sh || echo " "
|
||||
ogConectROOTSERVER && log_success_msg "Conecting with og services" || sh
|
||||
# ogConectROOTMEDIA
|
||||
ogConnectOgLive && log_success_msg "Merge the initrd with the remote rootfs -ogLive-" || sh
|
||||
# si es necesario realiza ogConnect $OGSERVERLIVE $OGPROTOCOL $SRCOGLIVE $DSTOGLIVE
|
||||
|
||||
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before merge the Second File System with initrd (First File System) : y/N "
|
||||
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before connect with client dir SHARE -engine,scripts,interface, -share- : y/N "
|
||||
[ $? == 0 ] && sh || echo " "
|
||||
ogMerge2ndFile && log_success_msg "Merge onto Second File System"
|
||||
ogConnect $OGSERVERSHARE $OGPROTOCOL $SRCOGSHARE $DSTOGSHARE
|
||||
|
||||
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before connect with client dir LOG STORAGE : y/N "
|
||||
[ $? == 0 ] && sh || echo " "
|
||||
ogConnect $OGSERVERLOG $OGPROTOCOL $SRCOGLOG $DSTOGLOG
|
||||
|
||||
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before connect with REPOSITORY STORAGE : y/N "
|
||||
[ $? == 0 ] && sh || echo " "
|
||||
ogConnect $OGSERVERIMAGES $OGPROTOCOL $SRCOGIMAGES $DSTOGIMAGES
|
||||
|
||||
|
||||
#[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/og-bottom"
|
||||
#run_scripts /scripts/og-bottom
|
||||
#[ "$quiet" != "y" ] && log_end_msg
|
||||
|
||||
#[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before conect with og Services : y/N "
|
||||
#[ $? == 0 ] && sh || echo " "
|
||||
#ogConectROOTSERVER && log_success_msg "Conecting with og services" || sh
|
||||
|
||||
|
||||
#[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before merge the Second File System with initrd (First File System) : y/N "
|
||||
#[ $? == 0 ] && sh || echo " "
|
||||
#ogMerge2ndFile && log_success_msg "Merge onto Second File System"
|
||||
|
||||
|
||||
####[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/og-bottom"
|
||||
####run_scripts /scripts/og-bottom
|
||||
####[ "$quiet" != "y" ] && log_end_msg
|
||||
|
||||
|
||||
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before doing the postconfiguration: y/N "
|
||||
|
|
|
@ -1,4 +1,10 @@
|
|||
#!/bin/bash
|
||||
|
||||
### NOTA este archivo se sobreescribe al conectarse con el ogSHARE
|
||||
|
||||
|
||||
|
||||
|
||||
#/**
|
||||
#@file loadenviron.sh
|
||||
#@brief Script de carga de la API de funciones de OpenGNSys.
|
||||
|
|
Loading…
Reference in New Issue