Merge pull request 'refs #2594 save a log of early init' (#26) from oginit-log into main

Reviewed-on: #26
filebeat-home 3.12.1
Natalia Serrano 2025-08-06 10:42:48 +02:00
commit ddac2c471c
4 changed files with 596 additions and 532 deletions

View File

@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [3.12.1] - 2025-08-05
### Added
- Save a log of early init (oginit/ogfuncions)
## [3.12.0] - 2025-07-31
### Changed

View File

@ -1 +1 @@
OpenGnsys Client 3.12.0
OpenGnsys Client 3.12.1

View File

@ -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

View File

@ -32,10 +32,12 @@
#@date 2013/02/18
#*/
og_ask() {
echo "$1" >>/tmp/oginit.log
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "$1: y/N "; [ $? == 0 ] && sh || echo " "
}
# Parameter: Where to mount the filesystem
mountroot ()
{
mountroot () {
[ -f /scripts/VERSION.txt ] && OGVERSION=$(cat /scripts/VERSION.txt)
OGVERSION=${OGVERSION:-"OpenGnsys Client"}
echo; echo; echo "$OGVERSION"; echo; echo
@ -44,42 +46,38 @@ mountroot ()
#run_scripts /scripts/og-top
#[ "$quiet" != "y" ] && log_end_msg
# If the root device hasn't shown up yet, give it a little while
# to deal with removable devices
. /scripts/functions
. /scripts/ogfunctions
# If the root device hasn't shown up yet, give it a little while
# to deal with removable devices
sleep 2
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before get OG variables: y/N "
[ $? == 0 ] && sh || echo " "
og_ask "Stop before get OG variables"
set -a
log_success_msg "Checking kernel parameters"
ogExportKernelParameters
# Cambiar resolución de vídeo para kernels que usan el parámetro "video".
[ -n "$video" ] && ogChangeVideoResolution
[ -n "$video" ] && ogChangeVideoResolution # Cambiar resolución de vídeo para kernels que usan el parámetro "video".
log_success_msg "Checking OpenGnsys Environmnet"
ogExportVarEnvironment
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before configure ramfs structure for OG: y/N "
[ $? == 0 ] && sh || echo " "
og_ask "Stop before configure ramfs structure for OG"
ogConfigureRamfs
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before configure netmoule specified in kernel parameters: y/N "
[ $? == 0 ] && sh || echo " "
og_ask "Stop before configure netmoule specified in kernel parameters"
ogLoadNetModule
#[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/og-premount"
#run_scripts /scripts/og-premount
#[ "$quiet" != "y" ] && log_end_msg
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before configure networking: y/N "
[ $? == 0 ] && sh || echo " "
if [ -n "$oglive" ]
then
while !(ping -c 1 $oglive &> /dev/null)
do
og_ask "Stop before configure networking"
if [ -n "$oglive" ]; then
while !(ping -c 1 $oglive &> /dev/null); do
ogConfigureNetworking
done
fi
@ -88,59 +86,50 @@ mountroot ()
log_success_msg "config loopback"
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before detect rootserver: y/N "
[ $? == 0 ] && sh || echo " "
og_ask "Stop before detect rootserver"
ogGetROOTSERVER && log_success_msg "Get Info from pxe server and ckeck distribuited OG services "
if [ "$ogdebug" == "true" -a "$ogupdateinitrd" == "true" ]; then
ogYesNo --timeout 5 --default no "Stop before check updating initrd: y/N "
[ $? == 0 ] && sh || echo " "
if [ "$ogupdateinitrd" == "true" ]; then
og_ask "Stop before check updating initrd"
fi
# Actualizar Initrd si se solicita o si no se corresponde con su kernel.
if [ "$ogupdateinitrd" == "true" -o ! -d /lib/modules/$(uname -r) ]; then
ogUpdateInitrd
ogUpdateInitrd # Actualizar Initrd si se solicita o si no se corresponde con su kernel.
fi
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before connect and merging the rootfs -ogLive- with $OGSERVERLIVE: y/N "
[ $? == 0 ] && sh || echo " "
og_ask "Stop before connect and merging the rootfs -ogLive- with $OGSERVERLIVE"
ogConnectOgLive && log_success_msg "Merge the initrd with the remote rootfs -ogLive- on $OGSERVERLIVE" || sh
# si es necesario realiza ogConnect $OGSERVERLIVE $OGPROTOCOL $SRCOGLIVE $DSTOGLIVE
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before connect with client dir SHARE -engine,scripts,interface, -share- on $OGSERVERSHARE : y/N "
[ $? == 0 ] && sh || echo " "
og_ask "Stop before connect with client dir SHARE -engine,scripts,interface, -share- on $OGSERVERSHARE "
ogConnect $OGSERVERSHARE $OGPROTOCOL $SRCOGSHARE $DSTOGSHARE
if [ $? -ne 0 -a "$SRCOGSHARE" != "$DEFOGSHARE" ]; then
ogConnect $OGSERVERSHARE $OGPROTOCOL $DEFOGSHARE $DSTOGSHARE && SRCOGSHARE=$DEFOGSHARE
fi
unset DEFOGSHARE
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before connect with client dir LOG STORAGE on $OGSERVERLOG : y/N "
[ $? == 0 ] && sh || echo " "
og_ask "Stop before connect with client dir LOG STORAGE on $OGSERVERLOG "
ogConnect $OGSERVERLOG $OGPROTOCOL $SRCOGLOG $DSTOGLOG
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before connect with REPOSITORY STORAGE on $OGSERVERIMAGES : y/N "
[ $? == 0 ] && sh || echo " "
og_ask "Stop before connect with REPOSITORY STORAGE on $OGSERVERIMAGES "
ogConnect $OGSERVERIMAGES $OGPROTOCOL $SRCOGIMAGES $DSTOGIMAGES ,ro
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before doing the postconfiguration: y/N "
[ $? == 0 ] && sh || echo " "
og_ask "Stop before doing the postconfiguration"
ogPostConfigureFS
setupcon -k
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before calling oginit with /etc/inittab: y/N "
[ $? == 0 ] && sh || echo " "
if [ "$oginit" ]
then
og_ask "Stop before calling oginit with /etc/inittab"
if [ "$oginit" ]; then
echo "exec oginit ($oginit)" >>/tmp/oginit.log
exec $oginit
else
echo "exec regular init" >>/tmp/oginit.log
exec init
fi
}