summaryrefslogtreecommitdiffstats
path: root/client/boot-tools/clientstructure/etc/initramfs-tools/scripts/ogfunctions
diff options
context:
space:
mode:
Diffstat (limited to 'client/boot-tools/clientstructure/etc/initramfs-tools/scripts/ogfunctions')
-rw-r--r--client/boot-tools/clientstructure/etc/initramfs-tools/scripts/ogfunctions479
1 files changed, 0 insertions, 479 deletions
diff --git a/client/boot-tools/clientstructure/etc/initramfs-tools/scripts/ogfunctions b/client/boot-tools/clientstructure/etc/initramfs-tools/scripts/ogfunctions
deleted file mode 100644
index 16539dd6..00000000
--- a/client/boot-tools/clientstructure/etc/initramfs-tools/scripts/ogfunctions
+++ /dev/null
@@ -1,479 +0,0 @@
-#@file ogfunctions.lib
-#@brief Librería o clase para la generación del 1erFS
-#@class client
-#@brief Funciones para la generación del primers sistema (initrd)
-#@version 0.91
-#@warning License: GNU GPLv3+
-
-
-
-
-ogExportKernelParameters ()
-{
- GLOBAL="cat /proc/cmdline"
- for i in `${GLOBAL}`
- do
- echo $i | grep "=" > /dev/null && export $i
- done
-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
- #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.
- return 0
-}
-
-ogConfigureRamfs ()
-{
- mkdir -p $LOCALROOTBOOT
- mkdir -p $LOCALROOTIMG
- mkdir -p $LOCALROOTRAM
- mkdir -p $LOCALROOTUNION
-}
-
-ogLoadNetModule ()
-{
- #cargando netmodule
- if [ -n "$ognetmodule" ]
- then
- echo "Cargando modulo de red $netmodule"
- insmod `find /lib/modules/ -name ${netmodule}*`
- fi
-}
-
-
-ogPostConfigureFS()
-{
- # configuramos el /etc/hostname.
- echo $HOSTNAME > /etc/hostname
-
- #configuramos el /etc/hosts
- echo "127.0.0.1 localhost" > /etc/hosts
- echo "$IPV4ADDR $HOSTNAME" >> /etc/hosts
-
- #configuramos el host.conf
- echo "order hosts,bind" > /etc/host.conf
- echo "multi on" >> /etc/host.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" ")
- 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
- echo "localnet $NETIP" >> /etc/networks
- #route
-
- #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/
-
-
-}
-
-
-
-
-ogGetROOTSERVER ()
-{
- # get nfs root from dhcp
- if [ "x${NFSROOT}" = "xauto" ]; then
- # check if server ip is part of dhcp root-path
- if [ "${ROOTPATH#*:}" = "${ROOTPATH}" ]; then
- NFSROOT=${ROOTSERVER}:${ROOTPATH}
- else
- NFSROOT=${ROOTPATH}
- fi
-
- # nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
- elif [ -n "${NFSROOT}" ]; then
- # nfs options are an optional arg
- if [ "${NFSROOT#*,}" != "${NFSROOT}" ]; then
- NFSOPTS="-o ${NFSROOT#*,}"
- fi
- NFSROOT=${NFSROOT%%,*}
- if [ "${NFSROOT#*:}" = "$NFSROOT" ]; then
- NFSROOT=${ROOTSERVER}:${NFSROOT}
- fi
- fi
- export ROOTSERVER
- echo "ROOTSERVER=$ROOTSERVER" >> $CFGINITRD
-return 0
-}
-
-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}/${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
-}
-
-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
-}
-
-ogconfigure_lo()
-{
-# for the portmapper we need localhost
-ifconfig lo 127.0.0.1
-#/etc/init.d/portmap start
-}
-
-ogconfigure_networking()
-{
-#echo "ogconfigure_networking: Buscando interfaz a configurar DEVICE"
-if [ -n "${BOOTIF}" ]
-then
- #echo " variable BOOTIF exportada con pxelinux.0 con valor $BOOTIF"
- IP=$IPOPTS
- temp_mac=${BOOTIF#*-}
- # convert to typical mac address format by replacing "-" with ":"
- bootif_mac=""
- IFS='-'
- for x in $temp_mac ; do
- if [ -z "$bootif_mac" ]; then
- bootif_mac="$x"
- else
- bootif_mac="$x:$bootif_mac"
- fi
- done
- unset IFS
- # 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##*/}
- break
- fi
- fi
- done
-else
- #echo "variable BOOTIF no exportada, intentamos detectar que interfaz se ha iniciado"
- IP=$ip
- #TODO Detectar que interfaz se ha iniciado
- case ${IP} in
- none|off)
- return 0
- ;;
- ""|on|any)
- # Bring up device
- DEVICE=eth0
- ;;
- dhcp|bootp|rarp|both)
- DEVICE=eth0
- ;;
- *)
- DEVICE=`echo $IP | cut -f6 -d:`
- ;;
- esac
-fi
-if [ -z "${DEVICE}" ]; then
- echo "variable DEVICE con valor $DEVICE no encontrada, llamamos de nuevo a ogconfigure_networking"
- ogconfigure_networking
-fi
-
-[ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ] && return 0
-#if [ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ]; then
-# echo "variable DEVICE con valor $DEVICE y fichero /tmp/net-$DEVICE encontrados"
-# return 0
-#else
-# echo "variable DEVICE con valor $DEVICE encontrada, procedemos a configurala y a crear el fichero /tmp/net-$DEVICE"
-#fi
-
-# Activamos la interfaz antes de configurar.
-ip address flush $DEVICE
-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
- ogconfigure_networking
-fi
-
-# support ip options see linux sources
-# Documentation/filesystems/nfsroot.txt
-# Documentation/frv/booting.txt
-for ROUNDTTT in 2 3 4 6 9 16 25 36 64 100; do
- # 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.
- if [ -e /tmp/net-"${DEVICE}".conf ]; then
- break;
- fi
- 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} "
- 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} "
- ipconfig -t ${ROUNDTTT} -c ${IP} -d ${DEVICE}
- ;;
- *)
- echo "Setting $DEVICE with option * and Variable IP= $IP: ipconfig -t ${ROUNDTTT} -d $IP "
- ipconfig -t ${ROUNDTTT} -d $IP
- # grab device entry from ip option
- NEW_DEVICE=${IP#*:*:*:*:*:*}
- if [ "${NEW_DEVICE}" != "${IP}" ]; then
- NEW_DEVICE=${NEW_DEVICE%:*}
- else
- # wrong parse, possibly only a partial string
- NEW_DEVICE=
- fi
- if [ -n "${NEW_DEVICE}" ]; then
- DEVICE="${NEW_DEVICE}"
- fi
- ;;
- esac
-done
-
-# source ipconfig output
-if [ -n "${DEVICE}" ]; then
- . /tmp/net-${DEVICE}.conf
- DEVICECFG="/tmp/net-${DEVICE}"
- export DEVICECFG
- export DEVICE
- echo "DEVICE=$DEVICE" >> $CFGINITRD
- echo "DEVICECFG=$DEVICECFG" >> $CFGINITRD
- echo "exportando variable DEVICE con valor = $DEVICE y el DEVICECFG con valor $DEVICECFG"
-else
- # source any interface as not exaclty specified
- . /tmp/net-*.conf
-fi
-}
-
- #####################################################################
-# Ask yesno question.
-#
-# Usage: yesno OPTIONS QUESTION
-#
-# Options:
-# --timeout N Timeout if no input seen in N seconds.
-# --default ANS Use ANS as the default answer on timeout or
-# if an empty answer is provided.
-#
-# Exit status is the answer. 0=yes 1=no
-
-ogYesNo()
-{
- local ans
- local ok=0
- local timeout=0
- local default
- local t
-
- while [[ "$1" ]]
- do
- case "$1" in
- --default)
- shift
- default=$1
- if [[ ! "$default" ]]; then error "Missing default value"; fi
- t=$(echo $default | tr '[:upper:]' '[:lower:]')
-
- if [[ "$t" != 'y' && "$t" != 'yes' && "$t" != 'n' && "$t" != 'no' ]]; then
- error "Illegal default answer: $default"
- fi
- default=$t
- shift
- ;;
-
- --timeout)
- shift
- timeout=$1
- if [[ ! "$timeout" ]]; then error "Missing timeout value"; fi
- #if [[ ! "$timeout" =~ ^[0-9][0-9]*$ ]]; then error "Illegal timeout value: $timeout"; fi
- shift
- ;;
-
- -*)
- error "Unrecognized option: $1"
- ;;
-
- *)
- break
- ;;
- esac
- done
-
- if [[ $timeout -ne 0 && ! "$default" ]]; then
- error "Non-zero timeout requires a default answer"
- fi
-
- if [[ ! "$*" ]]; then error "Missing question"; fi
-
- while [[ $ok -eq 0 ]]
- do
- if [[ $timeout -ne 0 ]]; then
- if ! read -t $timeout -p "$*" ans; then
- ans=$default
- else
- # Turn off timeout if answer entered.
- timeout=0
- if [[ ! "$ans" ]]; then ans=$default; fi
- fi
- else
- read -p "$*" ans
- if [[ ! "$ans" ]]; then
- ans=$default
- else
- ans=$(echo $ans | tr '[:upper:]' '[:lower:]')
- fi
- fi
-
- if [[ "$ans" == 'y' || "$ans" == 'yes' || "$ans" == 'n' || "$ans" == 'no' ]]; then
- ok=1
- fi
-
- if [[ $ok -eq 0 ]]; then warning "Valid answers are: yes y no n"; fi
- done
- [[ "$ans" = "y" || "$ans" == "yes" ]]
-}
-
-