diff --git a/INSTALL.es.txt b/INSTALL.es.txt new file mode 100644 index 0000000..b357595 --- /dev/null +++ b/INSTALL.es.txt @@ -0,0 +1,46 @@ +########## INSTALACION ################################## + +### NOTA principal: utilizar el usuario root para este proceso #### +1. Comprobar la conexión a internet, sobre todo si usas proxy. El hecho de que te funcione apt-get no significa que tengas el proxy configurado. +1. Descargar del subversion la estrucutura del cliente. + +# reubicacion al trunk/client/boot + +Proceso: +0. Si ya tenemos un /var/lib/tftpboot/ogclient lo renombramos por si acaso. +1. Descargar del subversion la rama ogClient. +3. Ejecutar el instalador: + +mv /opt/opengnsys/tftpboot/ogclient/ /opt/opengnsys/tftpboot/ogclientTrunk; +svn checkout http://www.opengnsys.es/svn/branches/ogClient /tmp/opengnsys_installer/opengnsys/installer/ogClient; +svn checkout http://www.opengnsys.es/svn/branches/version1.0/client/shared/ /tmp/opengnsys_installer/opengnsys/client/shared; +svn checkout http://www.opengnsys.es/svn/branches/version1.0/client/engine/ /tmp/opengnsys_installer/opengnsys/client/engine; +find /tmp/opengnsys_installer/ -name .svn -type d -exec rm -fr {} \; 2>/dev/null; +/tmp/opengnsys_installer/opengnsys/installer/ogClient/ogClientGeneratorV2.sh; + + + +NOTA: el proceso tardará un buen rato, dependiendo de nuestras circustancias. +NOTA: crea un kernel, initrd, ogclient.img en /var/lib/tftpboot/ogclient +NOTA: el ogclient.img es el Segundo sistema de archivos en formato fichero bloques emulando a disco con partición primaria. +NOTA: el ogclient.sqfs es el Segundo sistema de archivos (partición primaria del img) en formato squashfs. Se usará con el parámetro og2nd=sqfs +NOTA: los logs de instalación estarán en /tmp/opengnsys_installation.log + + + NOTA A RECORDAR: + NOTA ACLARATORIA: $OGSCRITPS(reboot,poweroff) antes de /sbin/{reboot,poweroff} + + ################## Descripcion de la estrucutra de ogClient. + los directorios old y serverstrucutre son antiguos, pero no borrarlos. + INSTALL.es.txt : este mismo archivo. + ogInstaller.lib : son todas las funciones de instalacion del instalador oficial de opengnys. Algunas de ellas son utilizadas. Crear ticket para separar las funciones de iinstalacion del proceso de instalacion. + ogClientManager.lib: son las funicones especificas para la instalacion del ogclient. estan escritas en orden de que son llamadas por el instalador, (ogClientGeneratorV2.sh) + ogClientGeneratorV2.sh. Es el guión de ejecución del isntalador. + + + + ############ ERROR PRINCIPAL 2 ####### + necesita que en el equipo donde se ejecuta el scripts, disponga de la estrucutra /opt/opengnsys/client + sobre todo los lib/fonts, el lib/pci.ids el bin/browser y el bin/ogAdmClient + + diff --git a/clientstructure/etc/apt/sources.list.debian b/clientstructure/etc/apt/sources.list.debian new file mode 100644 index 0000000..495e48d --- /dev/null +++ b/clientstructure/etc/apt/sources.list.debian @@ -0,0 +1,4 @@ +deb http://ftp.us.debian.org/debian lenny main contrib non-free + +deb http://security.debian.org/ lenny/updates main contrib non-free +deb-src http://security.debian.org/ lenny/updates main contrib non-free diff --git a/clientstructure/etc/apt/sources.list.ubuntu b/clientstructure/etc/apt/sources.list.ubuntu new file mode 100644 index 0000000..29348cc --- /dev/null +++ b/clientstructure/etc/apt/sources.list.ubuntu @@ -0,0 +1,56 @@ +deb http://es.archive.ubuntu.com/ubuntu/ OSCODENAME main restricted +deb-src http://es.archive.ubuntu.com/ubuntu/ OSCODENAME main restricted +## Major bug fix updates produced after the final release of the +## distribution. +deb http://es.archive.ubuntu.com/ubuntu/ OSCODENAME-updates main restricted +deb-src http://es.archive.ubuntu.com/ubuntu/ OSCODENAME-updates main restricted +## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu +## team. Also, please note that software in universe WILL NOT receive any +## review or updates from the Ubuntu security team. +deb http://es.archive.ubuntu.com/ubuntu/ OSCODENAME universe +deb-src http://es.archive.ubuntu.com/ubuntu/ OSCODENAME universe +deb http://es.archive.ubuntu.com/ubuntu/ OSCODENAME-updates universe +deb-src http://es.archive.ubuntu.com/ubuntu/ OSCODENAME-updates universe + +## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu +## team, and may not be under a free licence. Please satisfy yourself as to +## your rights to use the software. Also, please note that software in +## multiverse WILL NOT receive any review or updates from the Ubuntu +## security team. +deb http://es.archive.ubuntu.com/ubuntu/ OSCODENAME multiverse +deb-src http://es.archive.ubuntu.com/ubuntu/ OSCODENAME multiverse +deb http://es.archive.ubuntu.com/ubuntu/ OSCODENAME-updates multiverse +deb-src http://es.archive.ubuntu.com/ubuntu/ OSCODENAME-updates multiverse + +## Uncomment the following two lines to add software from the 'backports' +## repository. +## N.B. software from this repository may not have been tested as +## extensively as that contained in the main release, although it includes +## newer versions of some applications which may provide useful features. +## Also, please note that software in backports WILL NOT receive any review +## or updates from the Ubuntu security team. +# deb http://es.archive.ubuntu.com/ubuntu/ OSCODENAME-backports main restricted universe multiverse +# deb-src http://es.archive.ubuntu.com/ubuntu/ OSCODENAME-backports main restricted universe multiverse + +## Uncomment the following two lines to add software from Canonical's +## 'partner' repository. +## This software is not part of Ubuntu, but is offered by Canonical and the +## respective vendors as a service to Ubuntu users. +# deb http://archive.canonical.com/ubuntu OSCODENAME partner +# deb-src http://archive.canonical.com/ubuntu OSCODENAME partner + + +deb http://security.ubuntu.com/ubuntu OSCODENAME-security main restricted +deb-src http://security.ubuntu.com/ubuntu OSCODENAME-security main restricted +deb http://security.ubuntu.com/ubuntu OSCODENAME-security universe +deb-src http://security.ubuntu.com/ubuntu OSCODENAME-security universe +deb http://security.ubuntu.com/ubuntu OSCODENAME-security multiverse +deb-src http://security.ubuntu.com/ubuntu OSCODENAME-security multiverse + + +deb http://archive.ubuntu.com/ubuntu OSCODENAME main +deb http://free.nchc.org.tw/drbl-core drbl stable +deb http://free.nchc.org.tw/ubuntu OSCODENAME-security main restricted universe multiverse +deb http://ppa.launchpad.net/freenx-team/ubuntu/ OSCODENAME main +deb http://ppa.launchpad.net/randomaction/ppa/ubuntu OSCODENAME main +deb-src http://ppa.launchpad.net/randomaction/ppa/ubuntu OSCODENAME main diff --git a/clientstructure/etc/environment b/clientstructure/etc/environment new file mode 100644 index 0000000..bb529d9 --- /dev/null +++ b/clientstructure/etc/environment @@ -0,0 +1,4 @@ +LC_TYPE=es_ES@euro +LC_ALL=es_ES@euro +LANG=es_ES@euro +LANGUAGE=es_ES@euro \ No newline at end of file diff --git a/clientstructure/etc/fstab b/clientstructure/etc/fstab new file mode 100644 index 0000000..d7473df --- /dev/null +++ b/clientstructure/etc/fstab @@ -0,0 +1,13 @@ +# /etc/fstab: static file system information. +# +# Use 'blkid -o value -s UUID' to print the universally unique identifier +# for a device; this may be used with UUID= as a more robust way to name +# devices that works even if disks are added and removed. See fstab(5). +# +# +proc /proc proc 0 0 +/dev/sda1 ext3 errors=remount-ro 0 1 + + + + diff --git a/clientstructure/etc/initramfs-tools/hooks/oghooks b/clientstructure/etc/initramfs-tools/hooks/oghooks new file mode 100755 index 0000000..15fd01c --- /dev/null +++ b/clientstructure/etc/initramfs-tools/hooks/oghooks @@ -0,0 +1,58 @@ +#!/bin/sh -e +# initramfs hook for OpenGnsys + +#@file oghooks +#@brief configuración initrd para OpenGnSys +#@warning +#@version 0.9 - estrucura opengnsys, bash-static, unionfs, atheros +#@author Antonio J. Doblas Viso. +#@date 2010/05/24 +#*/ + +PREREQ="og" + +# Output pre-requisites +prereqs() +{ + echo "$PREREQ" +} + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + + +. /usr/share/initramfs-tools/hook-functions + +mkdir -p ${DESTDIR}/scripts/og-top +mkdir -p ${DESTDIR}/scripts/og-premount +mkdir -p ${DESTDIR}/scripts/og-bottom +mkdir -p ${DESTDIR}/mnt/ +mkdir -p ${DESTDIR}/net/ +mkdir -p ${DESTDIR}/usr +mkdir -p ${DESTDIR}/var/lock +mkdir -p ${DESTDIR}/var/log +mkdir -p ${DESTDIR}/opt/opengnsys; +mkdir -p ${DESTDIR}/ogboot; +mkdir -p ${DESTDIR}/boot; + +# Insert basic binaries +copy_exec /bin/bash-static /bin/bash +copy_exec /usr/bin/unionfs-fuse +copy_exec /sbin/mount.cifs + + +# Insert OpenGnsys Engine +#mkdir -p ${DESTDIR}/opt/opengnsys/lib/engine +#cp -prv /opt/opengnsys/client/lib/engine ${DESTDIR}/opt/opengnsys/lib/engine + +rm -fr ${DESTDIR}/lib/modules/2.6.32-21-generic-pae/kernel/drivers/net/atl* +manual_add_modules cifs +manual_add_modules smbfs +manual_add_modules atl1e +manual_add_modules squashfs + + diff --git a/clientstructure/etc/initramfs-tools/modules b/clientstructure/etc/initramfs-tools/modules new file mode 100644 index 0000000..8bac1d4 --- /dev/null +++ b/clientstructure/etc/initramfs-tools/modules @@ -0,0 +1,14 @@ +# List of modules that you want to include in your initramfs. +# +# Syntax: module_name [args ...] +# +# You must run update-initramfs(8) to effect this change. +# +# Examples: +# +# raid1 +# sd_mod +vga16b +vesafb +fbcon + diff --git a/clientstructure/etc/initramfs-tools/scripts/ogfunctions b/clientstructure/etc/initramfs-tools/scripts/ogfunctions new file mode 100644 index 0000000..ce2716d --- /dev/null +++ b/clientstructure/etc/initramfs-tools/scripts/ogfunctions @@ -0,0 +1,427 @@ +#@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 () +{ + #puntos de accesos al servidor ogprotocol=nfs + export NFSROOTBOOT="/var/lib/tftpboot" + export NFSCLIENTDIR="/opt/opengnsys/client" + export NFSLOGDIR="/opt/opengnsys/log/clients" + export NFSIMGDIR="/opt/opengnsys/images" + #puntos de accesos al servidor ogprotocol=smb + export SMBROOTBOOT="tftpboot" + export SMBCLIENTDIR="ogclient" + export SMBLOGDIR="oglog" + export SMBIMGDIR="ogimages" + + #puntos de montaje local ram o cache + export LOCALCLIENTDIR="/opt/opengnsys" + export LOCALLOGDIR="/opt/opengnsys/log" + export LOCALIMGDIR="/opt/opengnsys/images" + export LOCALROOTBOOT="/opt/og2fs/tftpboot" #punto de montaje del contendor tftpboot + export LOCALROOTIMG="/opt/og2fs/2ndfs" #punto de montaje donde se accede al 2nd FS mediante loop + export LOCALROOTRAM="/opt/og2fs/1stfs" #punto de montaje para unionfs + export LOCALROOTUNION="/opt/og2fs/unionfs" #punto de union entreo LOCALROOTIMG y LOCALROOTRAM + ##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 +} + + + + +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=[:][,] + 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 +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 + cdrom) + echo "Montar imagen de CD-ROM" + blkid /dev/s* + mount -t iso9660 LABEL=ogClient $LOCALROOTBOOT + ;; + 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() +{ +IP=$IPOPTS +# http://paste.ubuntu.com/427631/ Paste from yofel at Tue, 4 May 2010 13:49:56 +0000 + if [ -n "${BOOTIF}" ]; then + # pxelinux sets BOOTIF to a value based on the mac address of the + # network card used to PXE boot, so use this value for DEVICE rather + # than a hard-coded device name from initramfs.conf. this facilitates + # network booting when machines may have multiple network cards. + # pxelinux sets BOOTIF to 01-$mac_address + + # strip off the leading "01-", which isn't part of the mac + # address + 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 + fi + + # networking already configured thus bail out + [ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ] && return 0 + + # 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) + # Do nothing + ;; + ""|on|any) + # Bring up device + echo "Setting $DEVICE with kernel params $IP: ipconfig -t ${ROUNDTTT} ${DEVICE} " + ipconfig -t ${ROUNDTTT} ${DEVICE} + ;; + dhcp|bootp|rarp|both) + echo "Setting $DEVICE with (dhcp) kernel params $IP: ipconfig -t ${ROUNDTTT} -c ${IP} -d ${DEVICE} " + ipconfig -t ${ROUNDTTT} -c ${IP} -d ${DEVICE} + ;; + *) + echo "Setting $DEVICE with kernel params $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 + # source specific bootdevice + . /tmp/net-${DEVICE}.conf + 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" ]] +} + + diff --git a/clientstructure/etc/initramfs-tools/scripts/oginit b/clientstructure/etc/initramfs-tools/scripts/oginit new file mode 100755 index 0000000..a6c05d5 --- /dev/null +++ b/clientstructure/etc/initramfs-tools/scripts/oginit @@ -0,0 +1,111 @@ +# OpenGnsys oginit -*- shell-script -*- + +#@file oginit +#@brief Guion modificador inicio initrd para OpenGnSys +#@warning +#@version 0.1 - basado en ROOTfs +#@author Antonio J. Doblas Viso. Universidad de Málaga +#@date 2009/00/00 +#@version 0.2 - basado en el instalador de ubunto +#@author Alejandro Castillo +#@author Ramón Gómez +#@author Irina +#@author Antonio Doblas +#@date 2010/00/00 +#@version 0.7 - Generación limpia con mkinitrd, busybox +#@author Antonio J. Doblas Viso. Universidad de Málaga. EVLT. +#@date 2010/05/24 +#@version 0.8 - Integración con FileSystem externo +#@author Antonio J. Doblas Viso. Universidad de Málaga. EVLT. +#@date 2010/06/24 +#@version 0.8.1 - UnionFS + squasfs +#@author Antonio J. Doblas Viso. Universidad de Málaga. EVLT. +#@date 2010/06/29 + +#*/ + + + + + +# Parameter: Where to mount the filesystem +mountroot () +{ + [ "$quiet" != "y" ] && log_begin_msg "Running OpenGnsys /scripts/og-top" + 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 + + [ "$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 + log_success_msg "Checking Opengnys Environmnet" + ogExportVarEnvironment + + [ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before configure ramfs structure for OG: y/N " + [ $? == 0 ] && sh || echo " " + ogConfigureRamfs + + [ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before configure netmoule specified in kernel parameters: y/N " + [ $? == 0 ] && sh || echo " " + 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 " " + ogconfigure_networking + log_success_msg "config networking" + ogconfigure_lo + 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" + + [ "$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 + # ogConectROOTMEDIA + + [ "$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 " + [ $? == 0 ] && sh || echo " " + 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 + exec $oginit +else + exec init +fi + + + + + +} diff --git a/clientstructure/etc/inittab b/clientstructure/etc/inittab new file mode 100644 index 0000000..94c3002 --- /dev/null +++ b/clientstructure/etc/inittab @@ -0,0 +1,14 @@ +# This is run first except when booting in single-user mode +# +#::sysinit:/opt/opengnsys/etc/preinit/defaultTESTING.sh +# /bin/sh invocations on selected ttys +# +# Start an "askfirst" shell on the console (whatever that may be) +#::askfirst:/bin/sh +# Start an "askfirst" shell on /dev/tty2-4 +#tty1::respawn:/sbin/getty 38400 tty1 +tty1::respawn:/opt/opengnsys/etc/preinit/defaultTESTING.sh +tty2::respawn:/sbin/getty 38400 tty2 +tty3::respawn:/sbin/getty 38400 tty3 +tty4::respawn:/sbin/getty 38400 tty4 +tty5::respawn:/sbin/getty 38400 tty5 diff --git a/clientstructure/etc/modprobe.d/blacklist-framebuffer.conf b/clientstructure/etc/modprobe.d/blacklist-framebuffer.conf new file mode 100644 index 0000000..8b047e4 --- /dev/null +++ b/clientstructure/etc/modprobe.d/blacklist-framebuffer.conf @@ -0,0 +1,30 @@ +# Framebuffer drivers are generally buggy and poorly-supported, and cause +# suspend failures, kernel panics and general mayhem. For this reason we +# never load them automatically. +blacklist aty128fb +blacklist atyfb +#blacklist radeonfb +blacklist cirrusfb +blacklist cyber2000fb +blacklist cyblafb +blacklist gx1fb +blacklist hgafb +blacklist i810fb +blacklist intelfb +blacklist kyrofb +blacklist lxfb +blacklist matroxfb_base +blacklist neofb +blacklist nvidiafb +blacklist pm2fb +blacklist rivafb +blacklist s1d13xxxfb +blacklist savagefb +blacklist sisfb +blacklist sstfb +blacklist tdfxfb +blacklist tridentfb +#blacklist vesafb +blacklist vfb +blacklist viafb +blacklist vt8623fb diff --git a/clientstructure/etc/mtab b/clientstructure/etc/mtab new file mode 100644 index 0000000..e69de29 diff --git a/clientstructure/etc/network/interfaces b/clientstructure/etc/network/interfaces new file mode 100644 index 0000000..dbe4358 --- /dev/null +++ b/clientstructure/etc/network/interfaces @@ -0,0 +1,4 @@ +auto lo +iface lo inet loopback +auto eth0 +iface eth0 inet dhcp \ No newline at end of file diff --git a/clientstructure/etc/profile.d/loadenviron.sh b/clientstructure/etc/profile.d/loadenviron.sh new file mode 100755 index 0000000..0bf46a3 --- /dev/null +++ b/clientstructure/etc/profile.d/loadenviron.sh @@ -0,0 +1,84 @@ +#!/bin/bash +#/** +#@file loadenviron.sh +#@brief Script de carga de la API de funciones de OpenGNSys. +#@warning License: GNU GPLv3+ +#@version 0.9 +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2009-10-10 +#*/ + + GLOBAL="cat /proc/cmdline" + for i in `${GLOBAL}` + do + echo $i | grep "=" > /dev/null && export $i + done + + +# FIXME Temporal +export LANG="${LANG:-es_ES}" + +#/// Directorios del projecto OpenGNSys. +export OPENGNSYS="${OPENGNSYS:-/opt/opengnsys}" +if [ -d $OPENGNSYS ]; then + export OGBIN=$OPENGNSYS/bin + export OGETC=$OPENGNSYS/etc + export OGLIB=$OPENGNSYS/lib + export OGAPI=$OGLIB/engine/bin + export OGSCRIPTS=$OPENGNSYS/scripts + export OGIMG=$OPENGNSYS/images + export OGCAC=$OPENGNSYS/cache + export OGLOG=$OPENGNSYS/log + +# export PATH=$OGBIN:$OGAPI:$OGSCRIPTS:$PATH + # export LD_LIBRARY_PATH=$OGLIB:$LD_LIBRARY_PATH + + #/// Cargar fichero de idioma. + LANGFILE=$OGETC/lang.$LANG.conf + if [ -f $LANGFILE ]; then + source $LANGFILE + #for i in $(grep "^[a-zA-Z].*=" $LANGFILE | cut -f1 -d=); do + for i in $(awk -F= '{if (NF==2) print $1}' $LANGFILE); do + export $i + done + fi + #/// Cargar API de funciones. + echo "$MSG_LOADAPI" + for i in $OGAPI/*.lib; do + source $i + done + for i in $(typeset -F | cut -f3 -d" "); do + export -f $i + done + # Carga de las API testing + if [ "$engine" = "testing" ] + then + for i in $OGAPI/*.testing; do + source $i + done + fi + # Añadir dependencia de arquitectura + ARCH=$(ogGetArch) + if [ -n "$ARCH" ]; then + # export PATH=$OGBIN/$ARCH:$PATH + # export LD_LIBRARY_PATH=$OGLIB/$ARCH:$LD_LIBRARY_PATH + export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin:/opt/og2fs/2ndfs/opt/drbl/sbin + export PATH=$OGSCRIPTS:$PATH:$OGAPI:$OGBIN:$OGBIN/$ARCH + fi + # Fichero de registros. + export OGLOGFILE="$OGLOG/$(ogGetIpAddress).log" + # FIXME Pruebas para grupos de ordenadores + #export OGGROUP=$(ogGetGroup) + export OGGROUP=aula3 +fi + +#/// Declaración de códigos de error. +export OG_ERR_FORMAT=1 # Formato de ejecución incorrecto. +export OG_ERR_NOTFOUND=2 # Fichero o dispositivo no encontrado. +export OG_ERR_PARTITION=3 # Error en partición de disco. +export OG_ERR_LOCKED=4 # Partición o fichero bloqueado. +export OG_ERR_IMAGE=5 # Error al crear o restaurar una imagen. +export OG_ERR_NOTOS=6 # Sin sistema operativo. +export OG_ERR_NOTEXEC=7 # Programa o función no ejecutable. + + diff --git a/clientstructure/etc/ssh/ssh_config b/clientstructure/etc/ssh/ssh_config new file mode 100644 index 0000000..7f9319d --- /dev/null +++ b/clientstructure/etc/ssh/ssh_config @@ -0,0 +1,56 @@ + +# This is the ssh client system-wide configuration file. See +# ssh_config(5) for more information. This file provides defaults for +# users, and the values can be changed in per-user configuration files +# or on the command line. + +# Configuration data is parsed as follows: +# 1. command line options +# 2. user-specific file +# 3. system-wide file +# Any configuration value is only changed the first time it is set. +# Thus, host-specific definitions should be at the beginning of the +# configuration file, and defaults at the end. + +# Site-wide defaults for some commonly used options. For a comprehensive +# list of available options, their meanings and defaults, please see the +# ssh_config(5) man page. + +Host * +# ForwardAgent no +# ForwardX11 no +# ForwardX11Trusted yes +# RhostsRSAAuthentication no +# RSAAuthentication yes +# PasswordAuthentication yes + HostbasedAuthentication no +# GSSAPIAuthentication no +# GSSAPIDelegateCredentials no +# GSSAPIKeyExchange no +# GSSAPITrustDNS no +# BatchMode no +# CheckHostIP yes +# AddressFamily any +# ConnectTimeout 0 +# StrictHostKeyChecking ask +# IdentityFile ~/.ssh/identity +# IdentityFile ~/.ssh/id_rsa +# IdentityFile ~/.ssh/id_dsa +# Port 22 +# Protocol 2,1 +# Cipher 3des +# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc +# MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160 +# EscapeChar ~ +# Tunnel no +# TunnelDevice any:any +# PermitLocalCommand no +# VisualHostKey no + SendEnv LANG LC_* +# HashKnownHosts yes + GSSAPIAuthentication yes + GSSAPIDelegateCredentials no + + StrictHostKeyChecking no + UserKnownHostsFile=/dev/null + diff --git a/clientstructure/etc/ssh/sshd_config b/clientstructure/etc/ssh/sshd_config new file mode 100644 index 0000000..ea0303b --- /dev/null +++ b/clientstructure/etc/ssh/sshd_config @@ -0,0 +1,86 @@ +# Package generated configuration file +# See the sshd_config(5) manpage for details + +# What ports, IPs and protocols we listen for +Port 22 +# Use these options to restrict which interfaces/protocols sshd will bind to +#ListenAddress :: +#ListenAddress 0.0.0.0 +Protocol 2 +# HostKeys for protocol version 2 +HostKey /etc/ssh/ssh_host_rsa_key +HostKey /etc/ssh/ssh_host_dsa_key +#Privilege Separation is turned on for security +UsePrivilegeSeparation yes + +# Lifetime and size of ephemeral version 1 server key +KeyRegenerationInterval 3600 +ServerKeyBits 768 + +# Logging +SyslogFacility AUTH +LogLevel INFO + +# Authentication: +LoginGraceTime 120 +PermitRootLogin yes +StrictModes yes + +RSAAuthentication yes +PubkeyAuthentication yes +#AuthorizedKeysFile %h/.ssh/authorized_keys + +# Don't read the user's ~/.rhosts and ~/.shosts files +IgnoreRhosts yes +# For this to work you will also need host keys in /etc/ssh_known_hosts +RhostsRSAAuthentication no +# similar for protocol version 2 +HostbasedAuthentication no +# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication +#IgnoreUserKnownHosts yes + +# To enable empty passwords, change to yes (NOT RECOMMENDED) +PermitEmptyPasswords no + +# Change to yes to enable challenge-response passwords (beware issues with +# some PAM modules and threads) +ChallengeResponseAuthentication no + +# Change to no to disable tunnelled clear text passwords +#PasswordAuthentication yes + +# Kerberos options +#KerberosAuthentication no +#KerberosGetAFSToken no +#KerberosOrLocalPasswd yes +#KerberosTicketCleanup yes + +# GSSAPI options +#GSSAPIAuthentication no +#GSSAPICleanupCredentials yes + +X11Forwarding yes +X11DisplayOffset 10 +PrintMotd no +PrintLastLog yes +TCPKeepAlive yes +#UseLogin no + +#MaxStartups 10:30:60 +#Banner /etc/issue.net + +# Allow client to pass locale environment variables +AcceptEnv LANG LC_* + +Subsystem sftp /usr/lib/openssh/sftp-server + +# Set this to 'yes' to enable PAM authentication, account processing, +# and session processing. If this is enabled, PAM authentication will +# be allowed through the ChallengeResponseAuthentication and +# PasswordAuthentication. Depending on your PAM configuration, +# PAM authentication via ChallengeResponseAuthentication may bypass +# the setting of "PermitRootLogin without-password". +# If you just want the PAM account and session checks to run without +# PAM authentication, then enable this but set PasswordAuthentication +# and ChallengeResponseAuthentication to 'no'. +UsePAM yes diff --git a/clientstructure/root/CompileSoftware.sh b/clientstructure/root/CompileSoftware.sh new file mode 100755 index 0000000..1a9b854 --- /dev/null +++ b/clientstructure/root/CompileSoftware.sh @@ -0,0 +1,30 @@ +#!/bin/bash +################################################################ +##################### SOFTWARE ##################### +################################################################ +export LANGUAGE=C +export LC_ALL=C +export LANG=C + +#dpkg-divert --local --rename --add /sbin/initctl +#ln -s /bin/true /sbin/initctl + +apt-get -y update +# software to compile code +apt-get -y --force-yes install build-essential libattr* attr make m4 gettext libmhash-dev gdebi-core gawk + +source /opt/opengnsys/lib/engine/bin/ToolsGNU.c + +ctorrent install +udpcast install +#ntfs-3g install +ms-sys install + +wget -O partclone_0.2.16_i386.deb http://downloads.sourceforge.net/project/partclone/stable/0.2.16/partclone_0.2.16_i386.deb?use_mirror=ovh +gdebi -n partclone_0.2.16_i386.deb + + cd /tmp + wget http://damien.guibouret.free.fr/savepart.zip + unzip savepart.zip -d /sbin/ + + diff --git a/clientstructure/root/ConfFS.sh b/clientstructure/root/ConfFS.sh new file mode 100755 index 0000000..3e0f4b5 --- /dev/null +++ b/clientstructure/root/ConfFS.sh @@ -0,0 +1,24 @@ +#!/bin/bash +dpkg-divert --local --rename --add /sbin/initctl +ln -s /bin/true /sbin/initctl +#mv /etc/fstab /etc/fstab.original 2>/dev/null +#mv /etc/mtab /etc/mtab.original 2>/dev/null + +#TODO: fichero etc/hosts +#TODO: fichero etc/resolv.conf +echo "ogClient" > /etc/hostname + +#export PASSROOT=og +#dpkg-reconfigure passwd +#echo "root:$PASSROOT" | chpasswd + + +#for i in pts/0 pts/1 pts/2 pts/3 do +# +# +#done +#TODO: introducir mas consoluas para el acceso como root. +echo "pts/0" >> /etc/securetty +echo "pts/1" >> /etc/securetty +echo "pts/2" >> /etc/securetty +echo "pts/3" >> /etc/securetty \ No newline at end of file diff --git a/clientstructure/root/GenerateInitrd.generic.sh b/clientstructure/root/GenerateInitrd.generic.sh new file mode 100755 index 0000000..eaeb475 --- /dev/null +++ b/clientstructure/root/GenerateInitrd.generic.sh @@ -0,0 +1,16 @@ +#!/bin/bash +export OSDISTRIB=$(lsb_release -i | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null +#OSCODENAME=$(lsb_release -c | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null +export OSCODENAME=$(cat /etc/lsb-release | grep CODENAME | awk -F= '{print $NF}') +export OSRELEASE=$(uname -a | awk '{print $3}') +uname -a | grep x86_64 > /dev/null && export OSARCH=amd64 || export OSARCH=i386 +export OSHTTP="http://es.archive.ubuntu.com/ubuntu/" + + + +cd /usr/lib/initramfs-tools/bin/ +rm * +cp /bin/busybox ./ +cd /tmp/ +mkinitramfs -o /tmp/initrd.img-$OSRELEASE -v $OSRELEASE +cp /boot/vmlinuz-$OSRELEASE /tmp \ No newline at end of file diff --git a/clientstructure/root/InstallSoftware.sh b/clientstructure/root/InstallSoftware.sh new file mode 100755 index 0000000..da8d8d0 --- /dev/null +++ b/clientstructure/root/InstallSoftware.sh @@ -0,0 +1,62 @@ +#!/bin/bash +################################################################ +##################### SOFTWARE ##################### +################################################################ +export LANGUAGE=C +export LC_ALL=C +export LANG=C + + +dpkg-divert --local --rename --add /sbin/initctl +ln -s /bin/true /sbin/initctl + +apt-get clean +apt-get -y update + + +# software system +apt-get -y --force-yes install linux-image-${OSRELEASE} linux-headers-${OSRELEASE} linux-image-$RELEASE wget dialog man-db htop fbset gdebi-core busybox-static + +apt-get -y --force-yes install console-data locales + +# sofware networking +apt-get -y --force-yes install netpipes nfs-common sshfs smbfs smbclient davfs2 unionfs-fuse open-iscsi nmap tcpdump arping dnsutils + +apt-get clean +# software services +apt-get -y --force-yes install openssh-server bittornado trickle iptraf screen schroot grub + +# software disk and filesystem +apt-get -y --force-yes install drbl-ntfsprogs ntfsprogs parted ntfs-3g dosfstools +apt-get -y --force-yes install dmraid dmsetup lvm2 e2fsprogs jfsutils reiserfsprogs xfsprogs unionfs-fuse mhddfs squashfs-tools +apt-get -y --force-yes install btrfs-tools hfsplus hfsprogs hfsutils nilfs-tools reiser4progs ufsutils + +# software cloning +apt-get -y --force-yes install drbl-partimage fsarchiver pv kexec-tools +apt-get -y --force-yes install mbuffer + + +apt-get clean +## software postconf +apt-get -y --force-yes install drbl-chntpw chntpw ethtool lshw gawk + +# software compressor +apt-get -y --force-yes install lzma zip unzip gzip lzop drbl-lzop pigz pbzip2 lbzip2 rzip p7zip-full unzip + +apt-get -y --force-yes remove busybox +apt-get -y --force-yes install busybox-static bash-static +apt-get clean +#apt-get -y --force-yes xorg-dev xorg lxde roxterm +# +#################################################################### +###################### Reconfigurando paquetes ###################### +################################################################### + + +#dpkg-reconfigure console-data +#dpkg-reconfigure console-setup +#dpkg-reconfigure locales +apt-get clean +##TODO################# Borrar algunos binarios del mkinitramfs + + diff --git a/clientstructure/root/ReconfigureLocales.sh b/clientstructure/root/ReconfigureLocales.sh new file mode 100755 index 0000000..5480d14 --- /dev/null +++ b/clientstructure/root/ReconfigureLocales.sh @@ -0,0 +1,4 @@ +#!/bin/bash +dpkg-reconfigure console-data +dpkg-reconfigure console-setup +dpkg-reconfigure locales \ No newline at end of file diff --git a/clientstructure/root/generateSshKeysClient.sh b/clientstructure/root/generateSshKeysClient.sh new file mode 100755 index 0000000..9857ad4 --- /dev/null +++ b/clientstructure/root/generateSshKeysClient.sh @@ -0,0 +1,23 @@ +#!/bin/bash +echo "comprobando directorio .ssh del root" +if [ ! -d /root/.ssh ] +then + echo "creando directorio .ssh 600" + mkdir -p /root/.ssh + chmod 700 /root/.ssh +fi + + +echo "comprobando el fichero authorized_keys .ssh del root" +if [ ! -f /root/.ssh/authorized_keys ] +then + echo "creando el fichero authorized_keys" + touch /root/.ssh/authorized_keys + chmod 600 /root/.ssh/authorized_keys +fi + +ssh-keygen -q -f /root/.ssh/id_rsa -N "" +cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys + +## TODO: exportamos la publica a los repos +cp /root/.ssh/id_rsa.pub /tmp/rsa.ogclient.pub \ No newline at end of file diff --git a/clientstructure/root/importSshKeys.sh b/clientstructure/root/importSshKeys.sh new file mode 100755 index 0000000..17a797f --- /dev/null +++ b/clientstructure/root/importSshKeys.sh @@ -0,0 +1,17 @@ +#!/bin/bash +echo "comprobando directorio .ssh del root" +if [ ! -d /root/.ssh ] +then + echo "creando directorio .ssh 600" + mkdir -p /root/.ssh + chmod 700 /root/.ssh +fi +echo "creando el fichero authorized_keys" +touch /root/.ssh/authorized_keys +chmod 600 /root/.ssh/authorized_keys + +echo "importando la clave publica del servidor OG" +cat /tmp/id_rsa.pub + +[ -f /tmp/id_rsa.pub ] && cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys || echo "no key publica og" + \ No newline at end of file diff --git a/clientstructure/root/qemu.sh b/clientstructure/root/qemu.sh new file mode 100755 index 0000000..c5a93cd --- /dev/null +++ b/clientstructure/root/qemu.sh @@ -0,0 +1,9 @@ +#/bin/bash + +mount -o rw,remount / +mount proc /proc -t proc +export PATH=$PATH dpkg -i *.deb +modprobe 8139too +modprobe 8139cp +dhclient +/etc/init.d/ssh restart \ No newline at end of file diff --git a/clientstructure/var/lib/locales/supported.d/local b/clientstructure/var/lib/locales/supported.d/local new file mode 100644 index 0000000..be3f2a4 --- /dev/null +++ b/clientstructure/var/lib/locales/supported.d/local @@ -0,0 +1,5 @@ +es_ES ISO-8859-1 +es_ES@euro ISO-8859-15 +es_ES.UTF-8 UTF-8 +es_ES.UTF-8@euro UTF-8 +en_US.UTF-8 UTF-8 \ No newline at end of file diff --git a/kernelParameterOG.es.txt b/kernelParameterOG.es.txt new file mode 100644 index 0000000..890652b --- /dev/null +++ b/kernelParameterOG.es.txt @@ -0,0 +1,29 @@ + +KERNEL ogclient/ogvmlinuz +initrd=ogclient/oginitrd.img + + + boot=oginit + + oginit=init|/bin/bash + + + ogrepo=ip del repositorio + + og2nd=sqfs|img + ogprotocol=smb|nfs + ogactiveadmin=true|false + ogdebug=true|false + + vga=788 + irqpoll + acpi=on + + +FIXME: en la version actual +repo=iprepoman +IP + +TODO: en la proxima version +ogrepo +ip \ No newline at end of file diff --git a/ogClientGeneratorV2.sh b/ogClientGeneratorV2.sh new file mode 100755 index 0000000..2144926 --- /dev/null +++ b/ogClientGeneratorV2.sh @@ -0,0 +1,166 @@ +#!/bin/bash +#@file ogClientGenerator.sh +#@brief Script generación del cliente OpenGnSys +#@warning +#@version 0.9 - +#@author Antonio J. Doblas Viso. +#@date 2010/05/24 +#*/ + + +#$1 OSCONENAME lucid karmic +#if [ $# -ne 1 ]; then +# echo ": invalid number of parameters" +# echo " host | lucid | karmic | jaunty | lenny | squeeze " +# exit 1 +#fi +TYPECLIENT=host + +# Solo ejecutable por usuario root +if [ "$(whoami)" != 'root' ] +then + echo "ERROR: this program must run under root privileges!!" + exit 1 +fi + + + +#FIXME: variables del instalador oficial. +WORKDIR=/tmp/opengnsys_installer +INSTALL_TARGET=/opt/opengnsys +LOG_FILE=/tmp/opengnsys_installation.log +PROGRAMDIR=$(readlink -e $(dirname "$0")) + + +#funciones especificas del cliente. +source $PROGRAMDIR/ogClientManager.lib +#funciones incluidas dentro del scritps general de instalacion. +source $PROGRAMDIR/ogInstaller.lib + +echoAndLog "OpenGnSys CLIENT installation begins at $(date)" + +echoAndLog "OpenGnSys CLIENT installation begins at $(date)" +########################################################################## +## FASE 1 - Instalación de software adicional. +##TO DO Integrar en el instaldor. Actualizar repositorios +# Datos para la generación del cliente. +DEPENDENCIES=( debootstrap subversion schroot squashfs-tools) +apt-get update +# Instalación de dependencias (paquetes de sistema operativo). +declare -a notinstalled +checkDependencies DEPENDENCIES notinstalled +if [ $? -ne 0 ]; then + installDependencies notinstalled + if [ $? -ne 0 ]; then + echoAndLog "Error while installing some dependeces, please verify your server installation before continue" + exit 1 + fi +fi +############## FIN DEL TO DO +############################################## FIN FASE 1 + + + + + +echoAndLog "OpenGnSys CLIENT installation begins at $(date)" + +############## FASE 2 - Asignación de variables +#obtenemos las variables necesarias. +ogClientVar +#obtenemos la información del host. +ogClientOsInfo +######################## FIN fase 2 + +############# FASE 3: Segundo Sistema archivos (img) Creación. +#TODO comprobacion de que el fichero esta creado. +file $OGCLIENTFILE | grep "partition 1: ID=0x83" +if [ $? == 1 ] +then + ##3.1 creación y formateo del disco virtual. generamos el dispositivo loop. + ogClient2ndFile || exit 1 +fi + + +#3.2 generamos el Sistema de archivos con debootstrap +# Comprobamos que ya tenemos alguno. +schroot -p -c IMGogclient -- touch /tmp/ogclientOK +if [ -f /tmp/ogclientOK ] +then + rm /tmp/ogclientOK +else + ogClient2ndFs $TYPECLIENT || exit +fi + + +############### FASE 4: Configuración el acceso al Segundo Sistema de archivos (img), para schroot +cat /etc/schroot/schroot.conf | grep ogclient || ogClientSchrootConf + + +############### FASE 5: Configuración del Segundo Sistema de archivos (img) con la estructura especial de OpenGnsys +ogClient2ndSVN $TYPECLIENT || exit + + + + +############# FASE6: Ejecutamos los scripts de personalización del 2º sistema de archivos (img) desde la jaula schroot +### 6.1 instalacion de software con apt-get +schroot -p -c IMGogclient -- /root/InstallSoftware.sh +echo "saltando" + if [ $? -ne 0 ]; then + errorAndLog "Instalando sofware adicional OG : ERROR" + exit +else + echoAndLog "Instalando sofware adicional OG: OK" +fi +#### 6.2 compilación de software. +cd / +schroot -p -c IMGogclient -- /root/CompileSoftware.sh +cd - + +### 6.3 configuracion hostname passroot securety +cd / +schroot -c IMGogclient -- /root/ConfFS.sh +cd - +#schroot -c IMGogclient -- echo -ne "og1\nog1\n" | passwd root +# schroot -c IMGogclient -- passwd root | echo "root" + + +### 6.4 incorporamos la clave publica del servidor +cd / +ssh-keygen -q -f /root/.ssh/id_rsa -N "" +cp /root/.ssh/id_rsa.pub /tmp +schroot -p -c IMGogclient -- /root/importSshKeys.sh +cd - +############ y la del propio cliente. +schroot -c IMGogclient -- /root/generateSshKeysClient.sh + +## configuramos los locales. +schroot -c IMGogclient -- /root/ReconfigureLocales.sh + + +################## FIN fase 6. Fin de comfiguración del segundo sistema de archivos (img) + +################## FASE 7. Generamos el 1er sistema de archivos. INITRD +#nota el parametro es el "tipo" de linux generado en debootstrap. usar solo "host", es decir version,kernel ... del propio host +#nota: hace un schroot, al 2fs (img), ejecuta el fichero generateinitrd. +#nota: deja en el directorio tmp del host el nuevo initrd, y lo copia al tftpboot +ogClientInitrd $TYPECLIENT + + +################## FASE 8. convertimos el 2ºFS(img) en 2ºFS(sqfs) +# generamos el 2sistema de archivos en squashfs +ogClient2ndSqfs +################## FIN FASE 8. convertimos el 2ºFS(img) en 2ºFS(sqfs) + + +##################### FASE 9. algunos detallas del pxe +#dejamos ficheros de ejemplo para el pxe y el nfs +ogClientConfpxe +##################### FIN FASE 9. algunos detallas del pxe + + +# Mostrar sumario de la instalación e instrucciones de post-instalación. +installationSummary + +echoAndLog "OpenGnSys installation finished at $(date)" \ No newline at end of file diff --git a/ogClientManager.lib b/ogClientManager.lib new file mode 100644 index 0000000..85cd868 --- /dev/null +++ b/ogClientManager.lib @@ -0,0 +1,607 @@ + +ogClientVar() +{ +export SVNCLIENTDIR=/tmp/opengnsys_installer/opengnsys/installer/ogClient +export SVNCLIENTSTRUCTURE=/tmp/opengnsys_installer/opengnsys/client/shared +export SVNCLIENTENGINE=/tmp/opengnsys_installer/opengnsys/client/engine + +export OGCLIENTBASEDIR=/var/lib/tftpboot/ogclient/ +export OGCLIENTFILE=${OGCLIENTBASEDIR}ogclient.img +export OGCLIENTMOUNT=${OGCLIENTBASEDIR}ogclientmount +# tamaño maximo limitado por schroot 2GB +export OGCLIENTSIZEMB=1900 +#export OGCLIENTSIZEMB=1000 +# export OGCLIENTSIZEKB=500 +export OGCLIENTLABEL=ogClient +#export OGLIB=/opt/opengnsys/client/lib +} + + + +function ogClientOsInfo () +{ +#TODO según host, un OSHHTP u otro OSARCH + #1 OSCODENAME jaunty|karmic|lucid + #devuelve OSDISTRIB(ubuntu,debian),OSCODENAME(lucid,karmic,squeeze):OGRELEASE:httpAPT + case $1 in + host | HOST) + export OSDISTRIB=$(lsb_release -i | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null + #OSCODENAME=$(lsb_release -c | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null + export OSCODENAME=$(cat /etc/lsb-release | grep CODENAME | awk -F= '{print $NF}') + export OSRELEASE=$(uname -a | awk '{print $3}') + uname -a | grep x86_64 > /dev/null && export OSARCH=amd64 || export OSARCH=i386 + export OSHTTP="http://es.archive.ubuntu.com/ubuntu/" + ;; + jaunty|JAUNTY) + export OSDISTRIB=ubuntu + export OSCODENAME=jaunty + export OSRELEASE="2.6.28-11-generic" + export OSARCH=i386 + export OSHTTP="http://es.archive.ubuntu.com/ubuntu/" + ;; + lenny|LENNY) + export OSDISTRIB=debian + export OSCODENAME=lenny + export OSRELEASE="2.6.28-11-generic" + export OSARCH=i386 + export OSHTTP="http://es.archive.ubuntu.com/ubuntu/ " + ;; + squeeze|SQUEEZE) + export OSDISTRIB=debian + export OSCODENAME=squeeze + export OSRELEASE="2.6.28-11-generic" + export OSARCH=i386 + export OSHTTP="http://es.archive.ubuntu.com/ubuntu/ " + ;; + karmic|KARMIC) + export OSDISTRIB=ubuntu + export OSCODENAME=karmic + export OSRELEASE="2.6.31-14-generic" + export OSARCH=i386 + export OSHTTP="http://es.archive.ubuntu.com/ubuntu/ " + ;; + lucid|LUCID) + export OSDISTRIB=ubuntu + export OSCODENAME=lucid + export OSRELEASE="2.6.32-21-generic-pae" + export OSARCH=i386 + export OSHTTP="http://es.archive.ubuntu.com/ubuntu/ " + ;; + *) + return 1 + ;; + esac + echo $OSDISTRIB:$OSCODENAME:$OSRELEASE:$OSARCH:$OSHTTP +} + +#creación y formateo del disco virtual. +ogClient2ndFile () +{ +local RERROR DISKLOOP PARTLOOP #return code error +echoAndLog "$FUNCNAME(): Creación y formateo del disco virtual $OGCLIENTSIZEMB MB " +#Desmontamos por si acaso el dispositivo virtual +mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT +mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT +echo "$FUNCNAME(): Creando el directorio donde se montará el disco virtual $OGCLIENTMOUNT" +mkdir -p $OGCLIENTMOUNT +if [ $? -ne 0 ] +then + errorAndLog "$FUNCNAME(): Creando directorio $OGCLIENTMOUNT : ERROR" + return 1 +fi +echo "$FUNCNAME(): Creando el disco virtual que almacenará el FS del cliente $OGCLIENTSIZEMB MB de datos físicos" +dd if=/dev/zero of=$OGCLIENTFILE bs=1048576 count=$OGCLIENTSIZEMB +#qemu-img create $OGCLIENTFILE 3G +#dd if=/dev/zero of=$OGCLIENTFILE bs=1k count=$OGCLIENTSIZEKB # necesita 500MB +if [ $? -ne 0 ] +then + errorAndLog "$FUNCNAME(): Creando el disco virtual: ERROR" + return 1 +fi + +DISKLOOP=$(losetup -f) +losetup $DISKLOOP $OGCLIENTFILE +echo "$FUNCNAME(): particiondo el disco virtual - $DISKLOOP - con una particion primaria" +echo -e "n\np\n1\n\n\nt\n83\nw" | fdisk $DISKLOOP +#echo $? +# da error, porque no puede actualizar el kernel. +#if [ $? -ne 0 ] +#then +# errorAndLog "$FUNCNAME(): Particionando el disco virutal: ERROR" +# return 1 +#fi + +echoAndLog "$FUNCNAME(): Desmontando $DISKLOOP despues del particionado " +losetup -d $DISKLOOP + +if [ $? -ne 0 ] +then + errorAndLog "$FUNCNAME(): Liberando disco virtual despues del particionado: ERROR" + return 1 +fi + + +#mkfs.ext3 -L $OGCLIENTLABEL /dev/loop1 +#mkfs.ext3 -L $OGCLIENTLABEL /dev/loop1 +PARTLOOP=$(losetup -f) +echo "$FUNCNAME(): Formateando la particion principal $PARTLOOP" +losetup -o 32256 $PARTLOOP $OGCLIENTFILE && mkfs.ext3 -b 4096 -L $OGCLIENTLABEL $PARTLOOP +if [ $? -ne 0 ] +then + errorAndLog "$FUNCNAME(): Formateando la particion principal del disco virtual: ERROR" + return 1 +fi +echoAndLog "$FUNCNAME(): Desmontando $PARTLOOP despues del formateo " +losetup -d $PARTLOOP +if [ $? -ne 0 ] +then + errorAndLog "$FUNCNAME(): Liberando la particion virtual despues del formateo: ERROR" + return 1 +else + echoAndLog "$FUNCNAME(): $OGCLIENTFILE $OGCLIENTSIZEMB MB : OK" +fi +} + + + + + +ogClient2ndFs () +{ +ogClientOsInfo $1 +echoAndLog "$FUNCNAME: Iniciando la generación del sistema de archivos " +#Montamos el dispositivo virtual en su punto de montaje. +mount | grep $OGCLIENTMOUNT || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256 + +mount | grep $OGCLIENTMOUNT && echoAndLog "$FUNCNAME: mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256 OK " || errorAndLog "$FUNCNAME: mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256 : FAILURE " + +#debootstrap --include=linux-image-${OSRELEASE},linux-headers-${OSRELEASE} --arch=$OSARCH --components=main,universe ${OSCODENAME} ${OGCLIENTMOUNT} ${OSHTTP} +debootstrap --arch=$OSARCH --components=main,universe ${OSCODENAME} ${OGCLIENTMOUNT} ${OSHTTP} + + +if [ $? -ne 0 ]; then + errorAndLog "$FUNCNAME: debootstrap --include=linux-image-${OSRELEASE},linux-headers-${OSRELEASE} --arch=$OSARCH --components=main,universe $OSCODENAME $OGCLIENTMOUNT $OSHTTP + : ha fallado!" + mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT + return 1 +else + echoAndLog "$FUNCNAME: debootstrap --include=linux-image-${OSRELEASE},linux-headers-${OSRELEASE} --arch=$OSARCH --components=main,universe $OSCODENAME $OGCLIENTMOUNT $OSHTTP + : ok" + mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT + return 0 +fi + sleep 5 + +##preubas revisar OSRELEASE +#debootstrap --include=linux-image-${OSRELEASE} --arch=i386 --variant=minbase $OSVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/ +#debootstrap --variant=minbase --include=linux-image-${OGRELEASE} --arch=i386 $OGVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/ +#echo debootstrap --include=linux-image-${OGRELEASE},dbus --arch=i386 --components=main,universe $OGVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/ +} + + + + +########## configura el segundo sistema de archivos +########### parametro: "host" +function ogClient2ndSVN() +{ +ogClientOsInfo $1 +#1 la salida de ogClientOsInfo +local LERROR +LERROR=TRUE +echoAndLog "$FUNCNAME: Iniciando la personalización con datos del SVN " +# comprobar que está montado $OGCLIENTMOUNT +mount | grep $OGCLIENTMOUNT || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256 + +# parseamos del apt.source +sed -e "s/OSCODENAME/$OSCODENAME/g" ${SVNCLIENTDIR}/clientstructure/etc/apt/sources.list.ubuntu > ${SVNCLIENTDIR}/clientstructure/etc/apt/sources.list +if [ $? -ne 0 ] +then + errorAndLog "$FUNCNAME(): Parsing apt.sources : ERROR" + return 1 +fi + +#parseamos el script de generación del initrd. +sed -e "s/OSRELEASE/$OSRELEASE/g" ${SVNCLIENTDIR}/clientstructure/root/GenerateInitrd.generic.sh > ${SVNCLIENTDIR}/clientstructure/root/GenerateInitrd.sh +if [ $? -ne 0 ] +then + errorAndLog "$FUNCNAME(): Parsing GenerateInitrd.sh : ERROR" + return 1 +fi + +#damos permiso al directorio de scripts +chmod 775 ${SVNCLIENTDIR}/clientstructure/root/* + +# los copiamos +cp -prv ${SVNCLIENTDIR}/clientstructure/* $OGCLIENTMOUNT +mkdir -p ${OGCLIENTMOUNT}/opt/opengnsys/ +cp -prv ${SVNCLIENTSTRUCTURE}/* ${OGCLIENTMOUNT}/opt/opengnsys/ +cp -prv ${SVNCLIENTENGINE}/* ${OGCLIENTMOUNT}/opt/opengnsys/lib/engine/bin/ + +if [ $? -ne 0 ] +then + errorAndLog "$FUNCNAME(): Copying client data : ERROR" + return 1 +fi + +# copiamos algunas cosas del nfsexport + +#### Tipos de letra para el Browser. +cp -pr ${SVNCLIENTSTRUCTURE}/lib/fonts $OGCLIENTMOUNT/usr/local/lib/fonts +#### Crear enlaces para compatibilidad con las distintas versiones del Browser. +mkdir -p $OGCLIENTMOUNT/usr/local/Trolltech/QtEmbedded-4.5.1/lib/ +mkdir -p $OGCLIENTMOUNT/usr/local/QtEmbedded-4.6.2/lib/ +mkdir -p $OGCLIENTMOUNT/usr/local/QtEmbedded-4.6.3/lib/ +ln -fs $OGCLIENTMOUNT/usr/local/lib/fonts /usr/local/Trolltech/QtEmbedded-4.5.1/lib/fonts +ln -fs $OGCLIENTMOUNT/usr/local/lib/fonts /usr/local/QtEmbedded-4.6.2/lib/fonts +ln -fs $OGCLIENTMOUNT/usr/local/lib/fonts /usr/local/QtEmbedded-4.6.3/lib/fonts +if [ $? -ne 0 ] +then + errorAndLog "$FUNCNAME(): Linking Browser fonts : ERROR" + return 1 +fi + +# B ######################################################## +cp -pr ${SVNCLIENTSTRUCTURE}/lib/pci.ids $OGCLIENTMOUNT/etc +if [ $? -ne 0 ] +then + errorAndLog "$FUNCNAME(): Copying pci.ids : ERROR" + return 1 +fi + +cp ${SVNCLIENTSTRUCTURE}/bin/browser $OGCLIENTMOUNT/bin +if [ $? -ne 0 ] +then + errorAndLog "$FUNCNAME(): Copying Browser : ERROR" + return 1 +fi + +cp ${SVNCLIENTSTRUCTURE}/bin/ogAdmClient $OGCLIENTMOUNT/bin +if [ $? -ne 0 ] +then + errorAndLog "$FUNCNAME(): Copying ogAdmClient : ERROR" + return 1 +else + mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT + mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT + mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT + mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT + echoAndLog "$FUNCNAME: Finalizado: OK " + return 0 +fi +} + + +ogClientSchrootConf() +{ +echoAndLog "$FUNCNAME: Iniciando la configuración del schroot " +cp /etc/schroot/schroot.conf /etc/schroot/schroot.conf.`getDateTime` +cat << EOF > /etc/schroot/schroot.conf +[IMGogclient] +type=loopback +file=/var/lib/tftpboot/ogclient/ogclient.img +description=ogclient ubuntu luc IMGi +priority=1 +users=root +groups=root +root-groups=root +mount-options=-o offset=32256 +root-users=root +[DIRogclient] +type=directory +directory=/var/lib/tftpboot/ogclient/ogclientmount +description=ogclient ubuntu lucid DIR +priority=2 +users=root +groups=root +root-groups=root +root-users=root +EOF +cp /etc/schroot/mount-defaults /etc/schroot/mount-defaults.`getDateTime` +cat << EOF > /etc/schroot/mount-defaults +# mount.defaults: static file system information for chroots. +# Note that the mount point will be prefixed by the chroot path +# (CHROOT_PATH) +# +# +proc /proc proc defaults 0 0 +#procbususb /proc/bus/usb usbfs defaults 0 0 +#/dev /dev none rw,bind 0 0 +/dev/pts /dev/pts none rw,bind 0 0 +/dev/shm /dev/shm none rw,bind 0 0 +#/home /home none rw,bind 0 0 +/tmp /tmp none rw,bind 0 0 +EOF + +echoAndLog "$FUNCNAME: Finalizado: OK " +return 0 +} + + + +########### param1 "host" +ogClientInitrd() +{ +ogClientVar +cd / +ogClientOsInfo $1 +schroot -c IMGogclient -- /root/GenerateInitrd.generic.sh +echo "cp /tmp/*-${OSRELEASE} $OGCLIENTBASEDIR" +cp /tmp/*-${OSRELEASE} $OGCLIENTBASEDIR +cp /tmp/initrd.img-${OSRELEASE} ${OGCLIENTBASEDIR}/oginitrd.img +cp /tmp/vmlinuz-${OSRELEASE} ${OGCLIENTBASEDIR}/ogvmlinuz +cd - +} + + +ogClient2ndSqfs() +{ +ogClientVar +echoAndLog "$FUNCNAME: Iniciando la creación del sistema de archivos en sqfs " +# si ya existe un sqfs lo renombramos +[ -f $OGCLIENTBASEDIR/ogclient.sqfs ] && mv $OGCLIENTBASEDIR/ogclient.sqfs $OGCLIENTBASEDIR/ogclient.sqfs.`date +%Y%m%d-%H%M%S` +mount | grep $OGCLIENTMOUNT || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256 +mksquashfs $OGCLIENTMOUNT $OGCLIENTBASEDIR/ogclient.sqfs +chmod 744 $OGCLIENTBASEDIR/ogclient.sqfs +mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT +} + + + + +ogClientSshkeys() +{ +echo comprobamos clave rsa en el host REPO OG. +if [ ! -f /root/.ssh/id_rsa.pub ] +then + echo "creando claves rsa" + ssh-keygen -q -f /root/.ssh/id_dsa -t dsa -N "opengnsys" +else + echo "la claves ya estan creadas" +fi +echo "copiamos la clave publica a /tmp" +cp /root/.ssh/id_dsa.pub /tmp + +cat /tmp/id_dsa.pub + +echo "schroot con instrucciones." +schroot -c IMGogclient -- /root/importSshKeys.sh + +echo "limpiando" +rm /tmp/id_dsa.pub + +## copiamos ssh rsa del host al guest como authorized-key2 +##rm ${OGCLIENTMOUNT}/root/.ssh/authorized-key2 +##cat /root/.ssh/id_rsa.pub >> ${OGCLIENTMOUNT}/root/.ssh/authorized-key2 +#cat ${OGCLIENTMOUNT}/root/.ssh/id_rsa.pub >> ${OGCLIENTMOUNT}/root/.ssh/authorized-key2 +##mount | grep $OGCLIENTMOUNT || umount $OGCLIENTMOUNT +} + + +ogClientConfpxe() +{ +################## DEJAMOS FICHERO DE EJEMPLOS PARA: +#default +cat << FIN >> /var/lib/tftpboot/pxelinux.cfg/defaultNEWClient +LABEL pxe-${OGRELEASE} +KERNEL ogclient/vmlinuz-$OGRELEASE +APPEND initrd=ogclient/initrd.img-$OGRELEASE ip=dhcp ro boot=og vga=788 irqpoll acpi=on reposerver= +LABEL pxe-2.6.32-21-generic-pae +KERNEL ogclient/vmlinuz-2.6.32-21-generic-pae +APPEND initrd=ogclient/initrd.img-2.6.32-21-generic-pae ip=dhcp ro boot=oginit vga=788 irqpoll acpi=on ogrepo=172.17.36.11 ogprotocol=nfs og2nd=sqfs +LABEL cache +KERNEL grub.exe +APPEND --config-file="find --set-root /vmlinuz; kernel /vmlinuz ip=dhcp ro boot=og vga=788 irqpoll acpi=on engine=testing reposerver=172.17.32.242; initrd /initrd.img" +LABEL net +KERNEL grub.exe +APPEND keeppxe --config-file="pxe detect; kernel (pd)/ogclient/vmlinuz-2.6.32-21-generic-pae ip=dhcp ro boot=og vga=788 irqpoll acpi=on engine=testing reposerver=172.17.32.242; initrd (pd)/ogclient/initrd.img-2.6.32-21-generic-pae" +LABEL IfNOTcacheGOnet +KERNEL grub.exe +APPEND keeppxe --config-file="pxe detect; default 0; timeout 0; hiddenmenu; title cache; fallback 1; find --set-root /vmlinuz; kernel /vmlinuz ip=dhcp ro boot=og vga=788 irqpoll acpi=on engine=testing reposerver=172.17.32.242; initrd /initrd.img; boot; title net; kernel (pd)/ogclient/vmlinuz-2.6.32-21-generic-pae ip=dhcp ro boot=og vga=788 irqpoll acpi=on engine=testing reposerver=172.17.32.242; initrd (pd)/ogclient/initrd.img-2.6.32-21-generic-pae; boot" +#LABEL pxe-2.6.32-21-generic-pae +#KERNEL ogclient/vmlinuz-2.6.32-21-generic-pae +#APPEND initrd=ogclient/initrd.img-2.6.32-21-generic-pae ip=dhcp ro boot=og vga=788 irqpoll acpi=on reposerver=172.17.32.242 +#LABEL grub +#KERNEL grub.exe +#APPEND keeppxe +FIN +#/etc/hosts +echo "/var/lib/tftpboot *(ro,no_subtree_check,no_root_squash,sync)" > /etc/exportsNEWClient +/etc/init.d/nfs-kernel-server restart +##################################################################### +} + + + +############### No usados en el instalador, solo en actualizaciones. +#/** +# ogClientMount [str_program] +#@brief Acceso al 2nd FS del cliente desde el Servidor Opengnsys +#@param 1 Opciona: scripts o programa a ejecutar para automatizaciones +#@return Si no hay parametros: login de acceso. +#@return con un parametro: La salida del programa ejecutado +#@exception +#@note +#@todo +#@version 0.9 - Primera versión para OpenGnSys +#@author Antonio J. Doblas Viso, Universidad de Málaga +#@date 2010/02/15 +#*/ ## +function ogClientMount () +{ + #TODO comprobar que OGFILE y OGFILEMOUNT existe. + mount | grep $OGCLIENTFILE > /dev/null || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256 + mount | grep $OGCLIENTMOUNT/proc > /dev/null || mount --bind /proc $OGCLIENTMOUNT/proc + mount | grep $OGCLIENTMOUNT/sys > /dev/null || mount --bind /sys $OGCLIENTMOUNT/sys + mount | grep $OGCLIENTMOUNT/tmp > /dev/null || mount --bind /tmp $OGCLIENTMOUNT/tmp + mount | grep $OGCLIENTMOUNT/dev > /dev/null || mount --bind /dev $OGCLIENTMOUNT/dev + mount | grep $OGCLIENTMOUNT/dev/pts > /dev/null || mount --bind /dev/pts $OGCLIENTMOUNT/dev/pts + + + [ $# = 0 ] && $(chroot $OGCLIENTMOUNT /sbin/getty 38400 `tty`) + [ $# = 1 ] && chroot $OGCLIENTMOUNT $1 + +} + +#/** +# ogClientUnmount +#@brief Desmonta el 2nd FS del cliente desde el Servidor Opengnsys +#@param +#@return +#@exception +#@note +#@todo +#@version 0.9 - Primera versión para OpenGnSys +#@author Antonio J. Doblas Viso, Universidad de Málaga +#@date 2010/02/15 +#*/ ## + +function ogClientUnmount () +{ + cd /tmp + echo "desmontando cliente espere" + sleep 5 + mount | grep $OGCLIENTMOUNT/dev > /dev/null && umount $OGCLIENTMOUNT/dev || ogClientUnmount + mount | grep $OGCLIENTMOUNT/dev/pts > /dev/null && umount $OGCLIENTMOUNT/dev/pts || ogClientUnmount + mount | grep $OGCLIENTMOUNT/proc > /dev/null && umount $OGCLIENTMOUNT/proc || ogClientUnmount + mount | grep $OGCLIENTMOUNT/sys > /dev/null && umount $OGCLIENTMOUNT/sys || ogClientUnmount + mount | grep $OGCLIENTMOUNT/tmp > /dev/null && umount $OGCLIENTMOUNT/tmp || ogClientUnmount + mount | grep $OGCLIENTMOUNT > /dev/null && umount $OGCLIENTMOUNT || ogClientUnmount + #-d -f -l + +} + + +############################ hasta el final del archivo antiguos +############################# ANTIGUOS +function ogClientGetRelease () +{ + #1 OSCODENAME jaunty|karmic|lucid + case $1 in + jaunty|JAUNTY) + OSCODENAME=jaunty + OGRELEASE="2.6.28-11-generic" + echo $OGRELEASE + ;; + lenny|LENNY) + OSCODENAME=lenny + OGRELEASE="2.6.28-11-generic" + echo $OGRELEASE + ;; + squeeze|SQUEEZE) + OSCODENAME=squeeze + OGRELEASE="2.6.28-11-generic" + echo $OGRELEASE + ;; + karmic|KARMIC) + OSCODENAME=karmic + OGRELEASE="2.6.31-14-generic" + echo $OGRELEASE + ;; + lucid|LUCID) + OSCODENAME=lucid + OGRELEASE="2.6.32-21-generic-pae" + echo $OGRELEASE + ;; + *) + return 1 + ;; + esac + +} + + +#/** +# ogClientGenerator str_versionUbuntu str_release +#@brief Crea el 2nd FS del cliente desde el Servidor Opengnsys +#@param 1 Versión de ubuntu a generar, jaunty karmic +#@return +#@exception +#@note +#@todo +#@version 0.9 - Primera versión para OpenGnSys +#@author Antonio J. Doblas Viso, Universidad de Málaga +#@date 2010/02/15 +#*/ ## + +function ogClientGeneratorDebootstrap () +{ + if [ $# != 2 ] + then + echo Debes introducir como argumento1: jaunty karmic lucid + echo Debes introducir como argumento2: la release + echo utiliza como entrada ogClientCheckVersion + return + fi + OSCODENAME=$1 + OGRELEASE=$2 + + # instalamos el ultimo debotstrap para permitir instalar versiones superiores a nuestro sistema + #apt-get install gdebi-core + #wget $LASTDEBOOTSTRAP + #gdebi -n debootstrap_1.0.20_all.deb + + #Desmontamos por si acaso el dispositivo virtual + mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT + + #Creamos el directorio donde montaremos el disco virtual + mkdir -p $OGCLIENTMOUNT + + #Creamos el disco virtual con el filesystem del cliente. + dd if=/dev/zero of=$OGCLIENTFILE bs=1048576 count=$OGCLIENTSIZEMB + #qemu-img create $OGCLIENTFILE 3G + #dd if=/dev/zero of=$OGCLIENTFILE bs=1k count=$OGCLIENTSIZEKB # necesita 500MB + + + #particionamos el disco virtual + losetup /dev/loop0 $OGCLIENTFILE + echo -e "n\np\n1\n\n\nt\n83\nw" | fdisk /dev/loop0 + losetup -d /dev/loop0 + + + #formateamos la particion principal. + losetup -o 32256 /dev/loop1 $OGCLIENTFILE + mkfs.ext3 -b 4096 -L $OGCLIENTLABEL /dev/loop1 + #mkfs.ext3 -L $OGCLIENTLABEL /dev/loop1 + #mkfs.ext3 -L $OGCLIENTLABEL /dev/loop1 + losetup -d /dev/loop1 + + #Montamos el dispositivo virtual en su punto de montaje. + mount | grep $OGCLIENTMOUNT || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256 + + #TODO Comprobar arquitectura + #Iniciamos la creación del sistema en el directorio de clientes. + #echo debootstrap --include=linux-image-${OGRELEASE},dbus --arch=i386 --components=main,universe $OGVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/ + debootstrap --include=linux-image-${OGRELEASE},linux-headers-${OGRELEASE} --arch=i386 --components=main,universe $OSCODENAME $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/ + ##preubas + #debootstrap --include=linux-image-${OGRELEASE} --arch=i386 --variant=minbase $OGVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/ + #debootstrap --variant=minbase --include=linux-image-${OGRELEASE} --arch=i386 $OGVERSION $OGCLIENTMOUNT http://es.archive.ubuntu.com/ubuntu/ + + if [ $? -ne 0 ]; then + errorAndLog "ogClientGeneratorDebootstrap(): ha fallado!" + return 1 + else + echoAndLog "ogClientGeneratorDebootstrap(): ok" + return 0 + fi + sleep 5 + +mount | grep $OGCLIENTMOUNT && umount $OGCLIENTFILE + +cat << EOF > /etc/schroot/schroot.conf +[DIRogclient] +type=directory +directory=/var/lib/tftpboot/ogclient/ogclientmount +description=ogclient ubuntu lucid DIR +priority=2 +users=root +groups=root +root-groups=root +root-users=root +EOF +} + + + + + diff --git a/ogInstaller.lib b/ogInstaller.lib new file mode 100644 index 0000000..af0f18d --- /dev/null +++ b/ogInstaller.lib @@ -0,0 +1,958 @@ +#!/bin/bash + + +##################################################################### +####### Algunas funciones útiles de propósito general: +##################################################################### +function getDateTime() +{ + echo `date +%Y%m%d-%H%M%S` +} + +# Escribe a fichero y muestra por pantalla +function echoAndLog() +{ + echo $1 + FECHAHORA=`getDateTime` + echo "$FECHAHORA;$SSH_CLIENT;$1" >> $LOG_FILE +} + +function errorAndLog() +{ + echo "ERROR: $1" + FECHAHORA=`getDateTime` + echo "$FECHAHORA;$SSH_CLIENT;ERROR: $1" >> $LOG_FILE +} + +# comprueba si el elemento pasado en $2 esta en el array $1 +function isInArray() +{ + if [ $# -ne 2 ]; then + errorAndLog "${FUNCNAME}(): invalid number of parameters" + exit 1 + fi + + echoAndLog "${FUNCNAME}(): checking if $2 is in $1" + local deps + eval "deps=( \"\${$1[@]}\" )" + elemento=$2 + + local is_in_array=1 + # copia local del array del parametro 1 + for (( i = 0 ; i < ${#deps[@]} ; i++ )) + do + if [ "${deps[$i]}" = "${elemento}" ]; then + echoAndLog "isInArray(): $elemento found in array" + is_in_array=0 + fi + done + + if [ $is_in_array -ne 0 ]; then + echoAndLog "${FUNCNAME}(): $elemento NOT found in array" + fi + + return $is_in_array + +} + +##################################################################### +####### Funciones de manejo de paquetes Debian +##################################################################### + +function checkPackage() +{ + package=$1 + if [ -z $package ]; then + errorAndLog "checkPackage(): parameter required" + exit 1 + fi + echoAndLog "checkPackage(): checking if package $package exists" + dpkg -s $package | grep Status | grep -qw install &>/dev/null + if [ $? -eq 0 ]; then + echoAndLog "checkPackage(): package $package exists" + return 0 + else + echoAndLog "checkPackage(): package $package doesn't exists" + return 1 + fi +} + +# recibe array con dependencias +# por referencia deja un array con las dependencias no resueltas +# devuelve 1 si hay alguna dependencia no resuelta +function checkDependencies() +{ + if [ $# -ne 2 ]; then + errorAndLog "checkDependencies(): invalid number of parameters" + exit 1 + fi + + echoAndLog "checkDependencies(): checking dependences" + uncompletedeps=0 + + # copia local del array del parametro 1 + local deps + eval "deps=( \"\${$1[@]}\" )" + + declare -a local_notinstalled + + for (( i = 0 ; i < ${#deps[@]} ; i++ )) + do + checkPackage ${deps[$i]} + if [ $? -ne 0 ]; then + local_notinstalled[$uncompletedeps]=$package + let uncompletedeps=uncompletedeps+1 + fi + done + + # relleno el array especificado en $2 por referencia + for (( i = 0 ; i < ${#local_notinstalled[@]} ; i++ )) + do + eval "${2}[$i]=${local_notinstalled[$i]}" + done + + # retorna el numero de paquetes no resueltos + echoAndLog "checkDependencies(): dependencies uncompleted: $uncompletedeps" + return $uncompletedeps +} + +# Recibe un array con las dependencias y lo instala +function installDependencies() +{ + if [ $# -ne 1 ]; then + errorAndLog "installDependencies(): invalid number of parameters" + exit 1 + fi + echoAndLog "installDependencies(): installing uncompleted dependencies" + + # copia local del array del parametro 1 + local deps + eval "deps=( \"\${$1[@]}\" )" + + local string_deps="" + for (( i = 0 ; i < ${#deps[@]} ; i++ )) + do + string_deps="$string_deps ${deps[$i]}" + done + + if [ -z "${string_deps}" ]; then + errorAndLog "installDependencies(): array of dependeces is empty" + exit 1 + fi + + OLD_DEBIAN_FRONTEND=$DEBIAN_FRONTEND + export DEBIAN_FRONTEND=noninteractive + + echoAndLog "installDependencies(): now ${string_deps} will be installed" + apt-get -y install --force-yes ${string_deps} + if [ $? -ne 0 ]; then + errorAndLog "installDependencies(): error installing dependencies" + return 1 + fi + + DEBIAN_FRONTEND=$OLD_DEBIAN_FRONTEND + echoAndLog "installDependencies(): dependencies installed" +} + +# Hace un backup del fichero pasado por parámetro +# deja un -last y uno para el día +function backupFile() +{ + if [ $# -ne 1 ]; then + errorAndLog "${FUNCNAME}(): invalid number of parameters" + exit 1 + fi + + local fichero=$1 + local fecha=`date +%Y%m%d` + + if [ ! -f $fichero ]; then + errorAndLog "${FUNCNAME}(): file $fichero doesn't exists" + return 1 + fi + + echoAndLog "${FUNCNAME}(): realizando backup de $fichero" + + # realiza una copia de la última configuración como last + cp -p $fichero "${fichero}-LAST" + + # si para el día no hay backup lo hace, sino no + if [ ! -f "${fichero}-${fecha}" ]; then + cp -p $fichero "${fichero}-${fecha}" + fi + + echoAndLog "${FUNCNAME}(): backup realizado" +} + +##################################################################### +####### Funciones para el manejo de bases de datos +##################################################################### + +# This function set password to root +function mysqlSetRootPassword() +{ + if [ $# -ne 1 ]; then + errorAndLog "mysqlSetRootPassword(): invalid number of parameters" + exit 1 + fi + + local root_mysql=$1 + echoAndLog "mysqlSetRootPassword(): setting root password in MySQL server" + /usr/bin/mysqladmin -u root password ${root_mysql} + if [ $? -ne 0 ]; then + errorAndLog "mysqlSetRootPassword(): error while setting root password in MySQL server" + return 1 + fi + echoAndLog "mysqlSetRootPassword(): root password saved!" + return 0 +} + +# Si el servicio mysql esta ya instalado cambia la variable de la clave del root por la ya existente +function mysqlGetRootPassword(){ + local pass_mysql + local pass_mysql2 + # Comprobar si MySQL está instalado con la clave de root por defecto. + if mysql -u root -p"$MYSQL_ROOT_PASSWORD" <<<"quit" 2>/dev/null; then + echoAndLog "${FUNCNAME}(): Using default mysql root password." + else + stty -echo + echo "Existe un servicio mysql ya instalado" + read -p "Insertar clave de root de Mysql: " pass_mysql + echo "" + read -p "Confirmar clave:" pass_mysql2 + echo "" + stty echo + if [ "$pass_mysql" == "$pass_mysql2" ] ;then + MYSQL_ROOT_PASSWORD=$pass_mysql + echo "La clave es: ${MYSQL_ROOT_PASSWORD}" + return 0 + else + echo "Las claves no coinciden no se configura la clave del servidor de base de datos." + echo "las operaciones con la base de datos daran error" + return 1 + fi + fi +} + +# comprueba si puede conectar con mysql con el usuario root +function mysqlTestConnection() +{ + if [ $# -ne 1 ]; then + errorAndLog "mysqlTestConnection(): invalid number of parameters" + exit 1 + fi + + local root_password="${1}" + echoAndLog "mysqlTestConnection(): checking connection to mysql..." + echo "" | mysql -uroot -p"${root_password}" + if [ $? -ne 0 ]; then + errorAndLog "mysqlTestConnection(): connection to mysql failed, check root password and if daemon is running!" + return 1 + else + echoAndLog "mysqlTestConnection(): connection success" + return 0 + fi +} + +# comprueba si la base de datos existe +function mysqlDbExists() +{ + if [ $# -ne 2 ]; then + errorAndLog "mysqlDbExists(): invalid number of parameters" + exit 1 + fi + + local root_password="${1}" + local database=$2 + echoAndLog "mysqlDbExists(): checking if $database exists..." + echo "show databases" | mysql -uroot -p"${root_password}" | grep "^${database}$" + if [ $? -ne 0 ]; then + echoAndLog "mysqlDbExists():database $database doesn't exists" + return 1 + else + echoAndLog "mysqlDbExists():database $database exists" + return 0 + fi +} + +function mysqlCheckDbIsEmpty() +{ + if [ $# -ne 2 ]; then + errorAndLog "mysqlCheckDbIsEmpty(): invalid number of parameters" + exit 1 + fi + + local root_password="${1}" + local database=$2 + echoAndLog "mysqlCheckDbIsEmpty(): checking if $database is empty..." + num_tablas=`echo "show tables" | mysql -uroot -p"${root_password}" "${database}" | wc -l` + if [ $? -ne 0 ]; then + errorAndLog "mysqlCheckDbIsEmpty(): error executing query, check database and root password" + exit 1 + fi + + if [ $num_tablas -eq 0 ]; then + echoAndLog "mysqlCheckDbIsEmpty():database $database is empty" + return 0 + else + echoAndLog "mysqlCheckDbIsEmpty():database $database has tables" + return 1 + fi + +} + + +function mysqlImportSqlFileToDb() +{ + if [ $# -ne 3 ]; then + errorAndLog "${FNCNAME}(): invalid number of parameters" + exit 1 + fi + + local root_password="${1}" + local database=$2 + local sqlfile=$3 + + if [ ! -f $sqlfile ]; then + errorAndLog "${FUNCNAME}(): Unable to locate $sqlfile!!" + return 1 + fi + + echoAndLog "${FUNCNAME}(): importing sql file to ${database}..." + perl -pi -e "s/SERVERIP/$SERVERIP/g; s/DEFAULTUSER/$OPENGNSYS_DB_DEFAULTUSER/g; s/DEFAULTPASSWD/$OPENGNSYS_DB_DEFAULTPASSWD/g" $sqlfile + mysql -uroot -p"${root_password}" --default-character-set=utf8 "${database}" < $sqlfile + if [ $? -ne 0 ]; then + errorAndLog "${FUNCNAME}(): error while importing $sqlfile in database $database" + return 1 + fi + echoAndLog "${FUNCNAME}(): file imported to database $database" + return 0 +} + +# Crea la base de datos +function mysqlCreateDb() +{ + if [ $# -ne 2 ]; then + errorAndLog "${FUNCNAME}(): invalid number of parameters" + exit 1 + fi + + local root_password="${1}" + local database=$2 + + echoAndLog "${FUNCNAME}(): creating database..." + mysqladmin -u root --password="${root_password}" create $database + if [ $? -ne 0 ]; then + errorAndLog "${FUNCNAME}(): error while creating database $database" + return 1 + fi + echoAndLog "${FUNCNAME}(): database $database created" + return 0 +} + + +function mysqlCheckUserExists() +{ + if [ $# -ne 2 ]; then + errorAndLog "mysqlCheckUserExists(): invalid number of parameters" + exit 1 + fi + + local root_password="${1}" + local userdb=$2 + + echoAndLog "mysqlCheckUserExists(): checking if $userdb exists..." + echo "select user from user where user='${userdb}'\\G" |mysql -uroot -p"${root_password}" mysql | grep user + if [ $? -ne 0 ]; then + echoAndLog "mysqlCheckUserExists(): user doesn't exists" + return 1 + else + echoAndLog "mysqlCheckUserExists(): user already exists" + return 0 + fi + +} + +# Crea un usuario administrativo para la base de datos +function mysqlCreateAdminUserToDb() +{ + if [ $# -ne 4 ]; then + errorAndLog "mysqlCreateAdminUserToDb(): invalid number of parameters" + exit 1 + fi + + local root_password=$1 + local database=$2 + local userdb=$3 + local passdb=$4 + + echoAndLog "mysqlCreateAdminUserToDb(): creating admin user ${userdb} to database ${database}" + + cat > $WORKDIR/create_${database}.sql < ${basetftp}/pxelinux.cfg/default < /dev/null + if [ $? -eq 0 ]; then + echoAndLog "${FUNCNAME}(): $export exists in /etc/exports, omiting" + return 0 + fi + + cadenaexport="${export}" + for parametro in $* + do + if [ $contador -gt 0 ] + then + host=`echo $parametro | awk -F: '{print $1}'` + options=`echo $parametro | awk -F: '{print $2}'` + if [ "${host}" == "" ]; then + errorAndLog "${FUNCNAME}(): host can't be empty" + return 1 + fi + cadenaexport="${cadenaexport}\t${host}" + + if [ "${options}" != "" ]; then + cadenaexport="${cadenaexport}(${options})" + fi + fi + let contador=contador+1 + done + + echo -en "$cadenaexport\n" >> /etc/exports + + echoAndLog "${FUNCNAME}(): add $export to /etc/exports" + + return 0 +} + +######################################################################## +## Configuracion servicio DHCP +######################################################################## + +function dhcpConfigure() +{ + echoAndLog "${FUNCNAME}(): Sample DHCP Configuration." + + backupFile /etc/dhcp3/dhcpd.conf + + sed -e "s/SERVERIP/$SERVERIP/g" \ + -e "s/NETIP/$NETIP/g" \ + -e "s/NETMASK/$NETMASK/g" \ + -e "s/NETBROAD/$NETBROAD/g" \ + -e "s/ROUTERIP/$ROUTERIP/g" \ + -e "s/DNSIP/$DNSIP/g" \ + $WORKDIR/opengnsys/server/DHCP/dhcpd.conf > /etc/dhcp3/dhcpd.conf + if [ $? -ne 0 ]; then + errorAndLog "${FUNCNAME}(): error while configuring dhcp server" + return 1 + fi + + /etc/init.d/dhcp3-server restart + echoAndLog "${FUNCNAME}(): Sample DHCP Configured in file \"/etc/dhcp3/dhcpd.conf\"." + return 0 +} + + +##################################################################### +####### Funciones específicas de la instalación de Opengnsys +##################################################################### + +# Copiar ficheros del OpenGnSys Web Console. +function installWebFiles() +{ + echoAndLog "${FUNCNAME}(): Installing web files..." + cp -ar $WORKDIR/opengnsys/admin/WebConsole/* $INSTALL_TARGET/www #*/ comentario para doxigen + if [ $? != 0 ]; then + errorAndLog "${FUNCNAME}(): Error copying web files." + exit 1 + fi + find $INSTALL_TARGET/www -name .svn -type d -exec rm -fr {} \; 2>/dev/null + # Cambiar permisos para ficheros especiales. + chown -R $APACHE_RUN_USER:$APACHE_RUN_GROUP \ + $INSTALL_TARGET/www/includes \ + $INSTALL_TARGET/www/comandos/gestores/filescripts \ + $INSTALL_TARGET/www/images/iconos + echoAndLog "${FUNCNAME}(): Web files installed successfully." +} + +# Configuración específica de Apache. +function openGnsysInstallWebConsoleApacheConf() +{ + if [ $# -ne 2 ]; then + errorAndLog "${FUNCNAME}(): invalid number of parameters" + exit 1 + fi + + local path_opengnsys_base=$1 + local path_apache2_confd=$2 + local path_web_console=${path_opengnsys_base}/www + + if [ ! -d $path_apache2_confd ]; then + errorAndLog "${FUNCNAME}(): path to apache2 conf.d can not found, verify your server installation" + return 1 + fi + + mkdir -p $path_apache2_confd/{sites-available,sites-enabled} + + echoAndLog "${FUNCNAME}(): creating apache2 config file.." + + + # genera configuración + cat > $path_opengnsys_base/etc/apache.conf < + Options -Indexes FollowSymLinks + DirectoryIndex acceso.php + +EOF + + ln -fs $path_opengnsys_base/etc/apache.conf $path_apache2_confd/sites-available/opengnsys.conf + ln -fs $path_apache2_confd/sites-available/opengnsys.conf $path_apache2_confd/sites-enabled/opengnsys.conf + if [ $? -ne 0 ]; then + errorAndLog "${FUNCNAME}(): config file can't be linked to apache conf, verify your server installation" + return 1 + else + echoAndLog "${FUNCNAME}(): config file created and linked, restarting apache daemon" + /etc/init.d/apache2 restart + return 0 + fi +} + +# Crear documentación Doxygen para la consola web. +function makeDoxygenFiles() +{ + echoAndLog "${FUNCNAME}(): Making Doxygen web files..." + $WORKDIR/opengnsys/installer/ogGenerateDoc.sh \ + $WORKDIR/opengnsys/client/engine $INSTALL_TARGET/www + if [ ! -d "$INSTALL_TARGET/www/html" ]; then + errorAndLog "${FUNCNAME}(): unable to create Doxygen web files." + return 1 + fi + mv "$INSTALL_TARGET/www/html" "$INSTALL_TARGET/www/api" + chown -R $APACHE_RUN_USER:$APACHE_RUN_GROUP $INSTALL_TARGET/www/api + echoAndLog "${FUNCNAME}(): Doxygen web files created successfully." +} + + +# Crea la estructura base de la instalación de opengnsys +function openGnsysInstallCreateDirs() +{ + if [ $# -ne 1 ]; then + errorAndLog "${FUNCNAME}(): invalid number of parameters" + exit 1 + fi + + local path_opengnsys_base=$1 + + echoAndLog "${FUNCNAME}(): creating directory paths in $path_opengnsys_base" + + mkdir -p $path_opengnsys_base + mkdir -p $path_opengnsys_base/admin/{autoexec,comandos,menus,usuarios} + mkdir -p $path_opengnsys_base/bin + mkdir -p $path_opengnsys_base/client + mkdir -p $path_opengnsys_base/doc + mkdir -p $path_opengnsys_base/etc + mkdir -p $path_opengnsys_base/lib + mkdir -p $path_opengnsys_base/log/clients + mkdir -p $path_opengnsys_base/sbin + mkdir -p $path_opengnsys_base/www + mkdir -p $path_opengnsys_base/images + ln -fs /var/lib/tftpboot $path_opengnsys_base + ln -fs $path_opengnsys_base/log /var/log/opengnsys + + if [ $? -ne 0 ]; then + errorAndLog "${FUNCNAME}(): error while creating dirs. Do you have write permissions?" + return 1 + fi + + echoAndLog "${FUNCNAME}(): directory paths created" + return 0 +} + +# Copia ficheros de configuración y ejecutables genéricos del servidor. +function openGnsysCopyServerFiles () { + if [ $# -ne 1 ]; then + errorAndLog "${FUNCNAME}(): invalid number of parameters" + exit 1 + fi + + local path_opengnsys_base=$1 + + local SOURCES=( client/boot/initrd-generator \ + client/boot/upgrade-clients-udeb.sh \ + client/boot/udeblist.conf \ + client/boot/udeblist-jaunty.conf \ + client/boot/udeblist-karmic.conf \ + client/boot/udeblist-lucid.conf \ + server/PXE/pxelinux.cfg/default \ + doc ) + local TARGETS=( bin/initrd-generator \ + bin/upgrade-clients-udeb.sh \ + etc/udeblist.conf \ + etc/udeblist-jaunty.conf \ + etc/udeblist-karmic.conf \ + etc/udeblist-lucid.conf \ + tftpboot/pxelinux.cfg/default \ + doc ) + + if [ ${#SOURCES[@]} != ${#TARGETS[@]} ]; then + errorAndLog "${FUNCNAME}(): inconsistent number of array items" + exit 1 + fi + + echoAndLog "${FUNCNAME}(): copying files to server directories" + + pushd $WORKDIR/opengnsys + local i + for (( i = 0; i < ${#SOURCES[@]}; i++ )); do + if [ -f "${SOURCES[$i]}" ]; then + echoAndLog "Copying ${SOURCES[$i]} to $path_opengnsys_base/${TARGETS[$i]}" + cp -p "${SOURCES[$i]}" "${path_opengnsys_base}/${TARGETS[$i]}" + elif [ -d "${SOURCES[$i]}" ]; then + echoAndLog "Copying content of ${SOURCES[$i]} to $path_opengnsys_base/${TARGETS[$i]}" + cp -a "${SOURCES[$i]}"/* "${path_opengnsys_base}/${TARGETS[$i]}" + else + echoAndLog "Warning: Unable to copy ${SOURCES[$i]} to $path_opengnsys_base/${TARGETS[$i]}" + fi + done + popd +} + +#################################################################### +### Funciones de compilación de códifo fuente de servicios +#################################################################### + +# Compilar los servicios de OpenGNsys +function servicesCompilation () +{ + local hayErrores=0 + + # Compilar OpenGnSys Server + echoAndLog "${FUNCNAME}(): Compiling OpenGnSys Admin Server" + pushd $WORKDIR/opengnsys/admin/Services/ogAdmServer + make && make install + if [ $? -ne 0 ]; then + echoAndLog "${FUNCNAME}(): error while compiling OpenGnSys Admin Server" + hayErrores=1 + fi + popd + # Compilar OpenGnSys Repository Manager + echoAndLog "${FUNCNAME}(): Compiling OpenGnSys Repository Manager" + pushd $WORKDIR/opengnsys/admin/Services/ogAdmRepo + make && make install + if [ $? -ne 0 ]; then + echoAndLog "${FUNCNAME}(): error while compiling OpenGnSys Repository Manager" + hayErrores=1 + fi + popd + # Compilar OpenGnSys Client + echoAndLog "${FUNCNAME}(): Compiling OpenGnSys Admin Client" + pushd $WORKDIR/opengnsys/admin/Services/ogAdmClient + make && mv ogAdmClient ../../../client/nfsexport/bin + if [ $? -ne 0 ]; then + echoAndLog "${FUNCNAME}(): error while compiling OpenGnSys Admin Client" + hayErrores=1 + fi + popd + + return $hayErrores +} + + +#################################################################### +### Funciones instalacion cliente opengnsys +#################################################################### + +function openGnsysClientCreate() +{ + local OSDISTRIB OSCODENAME + + local hayErrores=0 + + echoAndLog "${FUNCNAME}(): Copying OpenGnSys Client files." + cp -ar $WORKDIR/opengnsys/client/nfsexport/* $INSTALL_TARGET/client + find $INSTALL_TARGET/client -name .svn -type d -exec rm -fr {} \; 2>/dev/null + echoAndLog "${FUNCNAME}(): Copying OpenGnSys Cloning Engine files." + mkdir -p $INSTALL_TARGET/client/lib/engine/bin + cp -ar $WORKDIR/opengnsys/client/engine/*.lib $INSTALL_TARGET/client/lib/engine/bin + if [ $? -ne 0 ]; then + errorAndLog "${FUNCNAME}(): error while copying engine files" + hayErrores=1 + fi + + # Cargar Kernel, Initrd y paquetes udeb para la distribución del servidor (o por defecto). + OSDISTRIB=$(lsb_release -i | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null + OSCODENAME=$(lsb_release -c | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null + if [ "$OSDISTRIB" = "Ubuntu" -a -n "$OSCODENAME" ]; then + echoAndLog "${FUNCNAME}(): Loading Kernel and Initrd files for $OSDISTRIB $OSCODENAME." + $INSTALL_TARGET/bin/initrd-generator -t $INSTALL_TARGET/tftpboot -v "$OSCODENAME" + if [ $? -ne 0 ]; then + errorAndLog "${FUNCNAME}(): error while generating initrd OpenGnSys Admin Client" + hayErrores=1 + fi + echoAndLog "${FUNCNAME}(): Loading udeb files for $OSDISTRIB $OSCODENAME." + $INSTALL_TARGET/bin/upgrade-clients-udeb.sh "$OSCODENAME" + if [ $? -ne 0 ]; then + errorAndLog "${FUNCNAME}(): error while upgrading udeb files OpenGnSys Admin Client" + hayErrores=1 + fi + else + echoAndLog "${FUNCNAME}(): Loading default Kernel and Initrd files." + $INSTALL_TARGET/bin/initrd-generator -t $INSTALL_TARGET/tftpboot/ + if [ $? -ne 0 ]; then + errorAndLog "${FUNCNAME}(): error while generating initrd OpenGnSys Admin Client" + hayErrores=1 + fi + echoAndLog "${FUNCNAME}(): Loading default udeb files." + $INSTALL_TARGET/bin/upgrade-clients-udeb.sh + if [ $? -ne 0 ]; then + errorAndLog "${FUNCNAME}(): error while upgrading udeb files OpenGnSys Admin Client" + hayErrores=1 + fi + fi + + if [ $hayErrores -eq 0 ]; then + echoAndLog "${FUNCNAME}(): Client generation success." + else + errorAndLog "${FUNCNAME}(): Client generation with errors" + fi + + return $hayErrores +} + + +# Configuración básica de servicios de OpenGnSys +function openGnsysConfigure() +{ + echoAndLog "openGnsysConfigure(): Copying init files." + cp -p $WORKDIR/opengnsys/admin/Services/opengnsys.init /etc/init.d/opengnsys + cp -p $WORKDIR/opengnsys/admin/Services/opengnsys.default /etc/default/opengnsys + update-rc.d opengnsys defaults + echoAndLog "openGnsysConfigure(): Creating OpenGnSys config file in \"$INSTALL_TARGET/etc\"." + perl -pi -e "s/SERVERIP/$SERVERIP/g" $INSTALL_TARGET/etc/ogAdmServer.cfg + perl -pi -e "s/SERVERIP/$SERVERIP/g" $INSTALL_TARGET/etc/ogAdmRepo.cfg + echoAndLog "${FUNCNAME}(): Creating Web Console config file" + OPENGNSYS_CONSOLEURL="http://$SERVERIP/opengnsys" + perl -pi -e "s/SERVERIP/$SERVERIP/g; s/OPENGNSYSURL/${OPENGNSYS_CONSOLEURL//\//\\/}/g" $INSTALL_TARGET/www/controlacceso.php + sed -e "s/SERVERIP/$SERVERIP/g" -e "s/OPENGNSYSURL/${OPENGNSYS_CONSOLEURL//\//\\/}/g" $WORKDIR/opengnsys/admin/Services/ogAdmClient/ogAdmClient.cfg > $INSTALL_TARGET/client/etc/ogAdmClient.cfg + echoAndLog "openGnsysConfiguration(): Starting OpenGnSys services." + /etc/init.d/opengnsys start +} + + +##################################################################### +####### Función de resumen informativo de la instalación +##################################################################### + +function installationSummary(){ + echo + echoAndLog "OpenGnSys Installation Summary" + echo "==============================" + echoAndLog "Project version: $(cat $INSTALL_TARGET/doc/VERSION.txt 2>/dev/null)" + echoAndLog "Installation directory: $INSTALL_TARGET" + echoAndLog "Repository directory: $INSTALL_TARGET/images" + echoAndLog "TFTP configuracion directory: /var/lib/tftpboot" + echoAndLog "DHCP configuracion file: /etc/dhcp3/dhcpd.conf" + echoAndLog "NFS configuracion file: /etc/exports" + echoAndLog "Web Console URL: $OPENGNSYS_CONSOLEURL" + echoAndLog "Web Console admin user: $OPENGNSYS_DB_USER" + echoAndLog "Web Console admin password: $OPENGNSYS_DB_PASSWD" + echoAndLog "Web Console default user: $OPENGNSYS_DB_DEFAULTUSER" + echoAndLog "Web Console default password: $OPENGNSYS_DB_DEFAULTPASSWD" + echo + echoAndLog "Post-Installation Instructions:" + echo "===============================" + echoAndLog "Review or edit all configuration files." + echoAndLog "Insert DHCP configuration data and restart service." + echoAndLog "Log-in as Web Console admin user." + echoAndLog " - Review default Organization data and default user." + echoAndLog "Log-in as Web Console organization user." + echoAndLog " - Insert OpenGnSys data (rooms, computers, etc)." +echo +} + diff --git a/old/ModificacionesNecesiariasENGINE/Net.lib b/old/ModificacionesNecesiariasENGINE/Net.lib new file mode 100755 index 0000000..14806b7 --- /dev/null +++ b/old/ModificacionesNecesiariasENGINE/Net.lib @@ -0,0 +1,77 @@ +#!/bin/bash +#/** +#@file Net.lib +#@brief Librería o clase Net +#@class Net +#@brief Funciones básicas de red. +#@version 1.0 +#@warning License: GNU GPLv3+ +#*/ + + +#/** +# ogGetHostname +#@brief Muestra el nombre del cliente. +#@return str_host - nombre de máquina +#@version 1.0 - Integración en OpenGnSys 1.0 +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2010-02-11 +#*/ ## +function ogGetHostname () +{ +local HOST NETFILE +# Tomar nombre de la variable HOSTNAME +HOST="$HOSTNAME" + +# Si no, tomar del DHCP, opción host-name /* (comentario para Doxygen) +[ -z "$HOST" ] && HOST=$(awk -F\" '/option host-name/ {gsub(/;/,""); host=$2} + END {print host} + ' /var/lib/dhcp3/dhclient.leases) +# Si no, leer el parámetro del kernel hostname (comentario para Doxygen) */ +[ -z "$HOST" ] && HOST=$(awk 'BEGIN {RS=""; FS="="} + $1~/hostname/ {print $2}' /proc/cmdline) + +[ "$HOSTNAME" != "$HOST" ] && export HOSTNAME="$HOST" +echo $HOST +} + + +#/** +# ogGetIpAddress +#@brief Muestra la dirección IP del sistema +#@return str_ip - Dirección IP +#@version 1.0 - Integración en OpenGnSys 1.0 +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2010-02-11 +#*/ ## +function ogGetIpAddress () +{ +local IP +#Version og2ndFS +NETFILE="/tmp/net-eth0.conf" +[ -f "$NETFILE" ] && IP=$(cat $NETFILE | grep IPV4ADDR | cut -f2 -d=) + +# Obtener direcciones IP. /* (comentario para Doxygen) +[ -z "$IP" ] && IP=$(ip address show | awk '$2!~/lo/ { readline; if ($1~/inet$/) {sub (/\/.*/, ""); printf ("%s ", $2)}}') +# Mostrar sólo la primera. (comentario para Doxygen) */ +echo ${IP%% *} +} + + +#/** +# ogGetMacAddress +#@brief Muestra la dirección Ethernet del cliente. +#@return str_ether - Dirección Ethernet +#@version 1.0 - Integración en OpenGnSys 1.0 +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2010-02-11 +#*/ ## +function ogGetMacAddress () +{ +local MAC +# Obtener direcciones Ethernet. +MAC=$(ip address show | awk '$2!~/lo/ {readline; if ($1~/ether/) printf ("%s ", toupper($2));}') +# Mostrar sólo la primera. +echo ${MAC%% *} +} + diff --git a/old/ModificacionesNecesiariasENGINE/readme b/old/ModificacionesNecesiariasENGINE/readme new file mode 100644 index 0000000..9078de1 --- /dev/null +++ b/old/ModificacionesNecesiariasENGINE/readme @@ -0,0 +1,27 @@ +Moverse al etc del cliente. +cd /opt/opengnsys/client/etc + +preinit/default + modificamos el sha-bang a /bin/bash + eliminamos enlace del bash + Ejecute solo el loadmodules del for + +preinit/loaenviron + comentamos el LD_PATH + export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin:/opt/og2fs/opt/drbl/sbin + + +dejar en bin solo el browser y el ogadmcliente + +/var/lib/tftboot/pxelinux.cfg/default +DEFAULT pxe2 +LABEL pxe +KERNEL linux +APPEND initrd=initrd.gz ip=dhcp ro vga=788 irqpoll acpi=on boot=admin +LABEL pxe2 +KERNEL vmlinuz-2.6.32-21-generic-pae +APPEND initrd=initrd-2.6.32-21-generic-pae ip=dhcp rootdelay=0 boot=og engine=testing rootmnt=/opt/og2fs vga=788 + + +parametro boot: reservado INCOMPATIBLE CON BOOT=ADMIN +temporalmente: init/default.sh => export boot=admin \ No newline at end of file diff --git a/old/Net.lib b/old/Net.lib new file mode 100755 index 0000000..14806b7 --- /dev/null +++ b/old/Net.lib @@ -0,0 +1,77 @@ +#!/bin/bash +#/** +#@file Net.lib +#@brief Librería o clase Net +#@class Net +#@brief Funciones básicas de red. +#@version 1.0 +#@warning License: GNU GPLv3+ +#*/ + + +#/** +# ogGetHostname +#@brief Muestra el nombre del cliente. +#@return str_host - nombre de máquina +#@version 1.0 - Integración en OpenGnSys 1.0 +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2010-02-11 +#*/ ## +function ogGetHostname () +{ +local HOST NETFILE +# Tomar nombre de la variable HOSTNAME +HOST="$HOSTNAME" + +# Si no, tomar del DHCP, opción host-name /* (comentario para Doxygen) +[ -z "$HOST" ] && HOST=$(awk -F\" '/option host-name/ {gsub(/;/,""); host=$2} + END {print host} + ' /var/lib/dhcp3/dhclient.leases) +# Si no, leer el parámetro del kernel hostname (comentario para Doxygen) */ +[ -z "$HOST" ] && HOST=$(awk 'BEGIN {RS=""; FS="="} + $1~/hostname/ {print $2}' /proc/cmdline) + +[ "$HOSTNAME" != "$HOST" ] && export HOSTNAME="$HOST" +echo $HOST +} + + +#/** +# ogGetIpAddress +#@brief Muestra la dirección IP del sistema +#@return str_ip - Dirección IP +#@version 1.0 - Integración en OpenGnSys 1.0 +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2010-02-11 +#*/ ## +function ogGetIpAddress () +{ +local IP +#Version og2ndFS +NETFILE="/tmp/net-eth0.conf" +[ -f "$NETFILE" ] && IP=$(cat $NETFILE | grep IPV4ADDR | cut -f2 -d=) + +# Obtener direcciones IP. /* (comentario para Doxygen) +[ -z "$IP" ] && IP=$(ip address show | awk '$2!~/lo/ { readline; if ($1~/inet$/) {sub (/\/.*/, ""); printf ("%s ", $2)}}') +# Mostrar sólo la primera. (comentario para Doxygen) */ +echo ${IP%% *} +} + + +#/** +# ogGetMacAddress +#@brief Muestra la dirección Ethernet del cliente. +#@return str_ether - Dirección Ethernet +#@version 1.0 - Integración en OpenGnSys 1.0 +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2010-02-11 +#*/ ## +function ogGetMacAddress () +{ +local MAC +# Obtener direcciones Ethernet. +MAC=$(ip address show | awk '$2!~/lo/ {readline; if ($1~/ether/) printf ("%s ", toupper($2));}') +# Mostrar sólo la primera. +echo ${MAC%% *} +} + diff --git a/old/boot/default.sh b/old/boot/default.sh new file mode 100755 index 0000000..e8c5b5d --- /dev/null +++ b/old/boot/default.sh @@ -0,0 +1,23 @@ +#!/opt/opengnsys/bin/bash + +set -a + +OPENGNSYS=${OPENGNSYS:-/opt/opengnsys} +OGLOGFILE=${OGLOGFILE:-/var/log/opengnsys.log} +#### FIXME EN PRUEBAS +OGLOGFILE=/var/log/opengnsys.log + +/opt/opengnsys/etc/init/load2fs.sh +source /opt/opengnsys/etc/preinit/loadenviron.sh +export PATH=/opt/og2fs/bin:$PATH +export PATH=/opt/og2fs/sbin:$PATH +export PATH=$PATH:/opt/og2fs/opt/drbl/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin + +if [ -x "$OPENGNSYS/bin/ogAdmClient" ]; then + echo "$MSG_LAUNCHCLIENT" + $OPENGNSYS/bin/ogAdmClient -f $OPENGNSYS/etc/ogAdmClient.cfg -l $OGLOGFILE +fi + +bash +# FIXME Arranque Browser +#browser -qws $OGSTARTPAGE diff --git a/old/boot/load2fs.sh b/old/boot/load2fs.sh new file mode 100644 index 0000000..ca3e3be --- /dev/null +++ b/old/boot/load2fs.sh @@ -0,0 +1,19 @@ +#!/bin/bash +#/** +#@file load2fs.sh +#@brief Script de carga del 2nd Sistema de Archivos para el cliente OpenGNSys. +#@warning License: GNU GPLv3+ +#@version 0.9 +#@author Antonio J. Doblas Viso, Unviersidad de Malaga. +#@date 2010-02-15 +#*/ +mkdir -p /opt/og2fs +mount /opt/opengnsys/og2ndFS /opt/og2fs -t ext3 -o loop -o ro +cp -R /opt/og2fs/etc/* /etc/ # */ +mount /opt/og2fs/usr /usr +mount /opt/og2fs/lib /lib +export PATH=/opt/og2fs/sbin:$PATH +export PATH=/opt/og2fs/bin:$PATH +export PATH=$PATH:/opt/og2fs/opt/drbl/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin + +# meter aqui el reboot del Boot.lib \ No newline at end of file diff --git a/old/conframfs.sh b/old/conframfs.sh new file mode 100644 index 0000000..851928d --- /dev/null +++ b/old/conframfs.sh @@ -0,0 +1,34 @@ +#!/bin/bash +#/** +#@file conframfs.sh +#@brief Script de inicio para configurar el 2º FileSystem linkado. +#@version 1.0 +#@author Antonio J. Doblas Viso. Universidad de Málaga +#@date 2010-06-02 +#*/ +#sustituido por la funcion ogPostConfigureFS + +MSG_LOADMODULES=${MSG_CONFRAMFS:-"."} +echo "$MSG_CONFRAMFS" + +# configuramos el /etc/hostname. +HOSTNAME=$(ogGetHostname) +echo $HOSTNAME > /etc/hostname + + +#configuramos el /etc/hosts +IP=$(ogGetIpAddress) +echo "127.0.0.1 localhost" > /etc/hosts +echo "$IP $HOSTNAME" >> /etc/hosts + +### conft net +echo "auto lo " > /etc/network/interfaces +echo "iface lo inet loopback" >> /etc/network/interfaces + + +mkdir -p /var/run/network +cd /var/run/network +touch ifstate + +/etc/init.d/networking restart +ifup lo diff --git a/old/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/bin/busybox b/old/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/bin/busybox new file mode 100755 index 0000000..da2dc63 Binary files /dev/null and b/old/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/bin/busybox differ diff --git a/old/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/busybox b/old/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/busybox new file mode 100755 index 0000000..d04890f Binary files /dev/null and b/old/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/busybox differ diff --git a/old/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/wait-for-root b/old/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/wait-for-root new file mode 100755 index 0000000..aecb5e3 Binary files /dev/null and b/old/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/wait-for-root differ diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/hook-functions b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/hook-functions new file mode 100644 index 0000000..2610f79 --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/hook-functions @@ -0,0 +1,461 @@ +# -*- shell-script -*- + +catenate_cpiogz() { + # Sanity check + if [ ! -e "${1}" ]; then + echo "W:catenate_cpiogz: arg1='${1}' does not exist." >&2 + return + fi + + cat "${1}" >>"${__TMPCPIOGZ}" +} + +force_load() +{ + manual_add_modules ${@} + echo "${@}" >>"${DESTDIR}/conf/modules" +} + +# Takes a file containing a list of modules to be added as an +# argument, figures out dependancies, and adds them. +# +# Input file syntax: +# +# # comment +# modprobe_module_name [args ...] +# [...] +# +add_modules_from_file() +{ + # Sanity check + if [ ! -e "${1}" ]; then + echo "W:add_modules_from_file: arg1='${1}' does not exist." >&2 + return + fi + + sed -e '/^#/d' ${1} | while read module rest; do + force_load "${module}" "${rest}" + done +} + +# Is this module available? +have_module() +{ + modprobe --set-version="${version}" --ignore-install \ + --show-depends "${1}" >/dev/null 2>&1 +} + +# Add dependent modules + eventual firmware +manual_add_modules() +{ + local mam_x firmwares firmware + + for mam_x in $(modprobe --set-version="${version}" --ignore-install \ + --show-depends "${1}" 2>/dev/null | awk '/^insmod/ { print $2 }'); do + # Prune duplicates + if [ -e "${DESTDIR}/${mam_x}" ]; then + continue + fi + + mkdir -p "${DESTDIR}/$(dirname "${mam_x}")" + ln -s "${mam_x}" "${DESTDIR}/$(dirname "${mam_x}")" + if [ "${verbose}" = "y" ]; then + echo "Adding module ${mam_x}" + fi + + # Add firmware files if necessary + firmwares=$(modinfo -F firmware "${mam_x}") + if [ -z "${firmwares}" ]; then + continue + fi + for firmware in $firmwares; do + if [ -e "${DESTDIR}/lib/firmware/${firmware}" ] \ + || [ -e "${DESTDIR}/lib/firmware/${version}/${firmware}" ]; then + continue + fi + + # Only print warning for missing fw of loaded module + # or forced loaded module + if [ ! -e "/lib/firmware/${firmware}" ] \ + && [ ! -e "/lib/firmware/${version}/${firmware}" ]; then + if grep -q "^$(basename "${mam_x}" .ko)[[:space:]]" \ + /proc/modules \ + || grep -q "^$(basename "${mam_x}" .ko)" \ + "${CONFDIR}/modules"; then + echo "W: Possible missing firmware /lib/firmware/${firmware} for module $(basename ${mam_x} .ko)" >&2 + fi + continue + fi + + if [ -e "/lib/firmware/${version}/${firmware}" ]; then + copy_exec "/lib/firmware/${version}/${firmware}" + else + copy_exec "/lib/firmware/${firmware}" + fi + if [ "${verbose}" = "y" ]; then + echo "Adding firmware ${firmware}" + fi + done + done +} + +# $1 is the source path (e.g. /usr/bin/time) +# $2 is the relative destination (e.g. /usr or /usr/time) +# +# The destination is interpreted in the same way "cp" would, meaning +# (assuming /bin is a directory): +# +# "copy_exec /usr/bin/time /bin" -> /bin/time +# "copy_exec /usr/bin/time /bin/mytime" -> /bin/mytime +# +# If $2 is left out, the same destination path as for the source arg will +# be used and directories will be created as needed, so: +# +# "copy_exec /usr/bin/time" -> /usr/bin/time +# +copy_exec() { + local source target destination final_destination x nonoptlib + local libname dirname + + source="${1}" + if [ -n "${2}" ]; then + target="${2}" + else + if [ ! -e "${DESTDIR}/$(dirname "${1}")" ]; then + mkdir -p "${DESTDIR}/$(dirname "${1}")" + fi + target="${1}" + fi + + if [ -d "${DESTDIR}/${target}" ]; then + destination="${target}/$(basename "${source}")" + else + destination="${target}" + fi + final_destination="${DESTDIR}/${destination}" + + if [ -L "$final_destination" ]; then + if [ $(readlink "${final_destination}") != "${source}" ]; then + echo "W:copy_exec: Not copying ${source} to \$DESTDIR${destination}, which is already a copy of $(readlink ${final_destination})" >&2 + return + fi + else + ln -s ${source} ${DESTDIR}/${destination} + if [ "${verbose}" = "y" ]; then + echo "Adding binary ${source}" + fi + fi + + # Copy the dependant libraries + for x in $(ldd ${source} 2>/dev/null | sed -e ' + /\//!d; + /linux-gate/d; + /=>/ {s/.*=>[[:blank:]]*\([^[:blank:]]*\).*/\1/}; + s/[[:blank:]]*\([^[:blank:]]*\) (.*)/\1/' 2>/dev/null); do + + # Try to use non-optimised libraries where possible. + # We assume that all HWCAP libraries will be in tls, + # sse2, vfp or neon + nonoptlib=$(echo "${x}" | sed -e 's#/lib/\(tls\|i686\|sse2\|neon\|vfp\).*/\(lib.*\)#/lib/\2#') + + if [ -e "${nonoptlib}" ]; then + x="${nonoptlib}" + fi + + libname=$(basename "${x}") + dirname=$(dirname "${x}") + + mkdir -p "${DESTDIR}/${dirname}" + if [ ! -e "${DESTDIR}/${dirname}/${libname}" ]; then + ln -s "${x}" "${DESTDIR}/${dirname}" + if [ "${verbose}" = "y" ]; then + echo "Adding library ${x}" + fi + fi + done +} + +# Copy entire subtrees to the initramfs +copy_modules_dir() +{ + local x_mod + + if ! [ -d "${MODULESDIR}/${1}" ]; then + return; + fi + if [ "${verbose}" = "y" ]; then + echo "Copying module directory ${1}" + fi + for x_mod in $(find "${MODULESDIR}/${1}" -name '*.ko' -print); do + manual_add_modules $(basename ${x_mod} .ko) + done +} + +# walk /sys for relevant modules +sys_walk_mod_add() +{ + local driver_path module + device_path="$1" + + while [ "${device_path}" != "/sys" ]; do + driver_path="$(readlink -f ${device_path}/driver)" + if [ -e "$driver_path" ]; then + module="$(basename $(readlink -f $driver_path))" + if [ -n "${module}" ]; then + force_load "${module}" + fi + fi + device_path="$(dirname ${device_path})" + done +} + +# walk /sys for relevant modalias +sys_walk_modalias() +{ + local device_path modalias + + device_path="$(dirname "${1}")" + device_path="$(dirname "${device_path}")" + if [ -e "${device_path}/modalias" ]; then + modalias=$(cat "${device_path}/modalias") + fi + + if [ -n "${modalias}" ]; then + force_load "${modalias}" + fi +} + +# find and only copy root relevant modules +dep_add_modules() +{ + local block minor root FSTYPE root_dev_path x + + # findout root block device + fstype + eval "$(mount | awk '/\/dev\// {if ($3 == "/") {print "root=" $1 "\nFSTYPE=" $5; exit}}')" + if [ "${root}" = "/dev/root" ] ; then + root="/dev/disk/by-uuid/"$(/sbin/blkid -s UUID -o value ${root}) 2>/dev/null + fi + root="$(readlink -f ${root})" + + # find out real rootfs on auto type + if [ "${FSTYPE}" = "auto" ]; then + eval "$(/usr/lib/klibc/bin/fstype ${root})" + fi + + # check that fstype rootfs recognition + if [ "${FSTYPE}" = "unknown" ]; then + echo "mkinitramfs: unknown fstype on root ${root}" + echo "mkinitramfs: workaround is MODULES=most" + echo "mkinitramfs: Error please report bug on initramfs-tools" + exit 1 + fi + + # Add rootfs + manual_add_modules "${FSTYPE}" + + # lvm luks root + if [ "${root#/dev/mapper/}" != "${root}" ]; then + minor=$((0x$(stat --format "%T" ${root}) % 256)) + block=$(ls -1 /sys/block/dm-${minor}/slaves | head -n 1) + if [ "${block#dm-}" != "${block}" ]; then + block=$(ls -1 /sys/block/${block}/slaves | head -n 1) + fi + block=${block%%[0-9]*} + # md root new naming scheme /dev/md/X + elif [ "${root#/dev/md/}" != "${root}" ]; then + root=${root#/dev/md/} + block=$(awk "/^md${root}/{print substr(\$5, 1, 3); exit}" \ + /proc/mdstat) + # md root /dev/mdX + elif [ "${root#/dev/md}" != "${root}" ]; then + root=${root#/dev/} + block=$(awk "/^${root}/{print substr(\$5, 1, 3); exit}" \ + /proc/mdstat) + # mmc always uses numbering in the devicename (mmcblk[0-9]) + elif [ "${root#/dev/mmc}" != "${root}" ]; then + block=${root#/dev/} + block=${block%%p[0-9]*} + # classical root device + else + block=${root#/dev/} + block=${block%%[0-9]*} + fi + + # Error out if /sys lack block dev + if [ -z "${block}" ] || [ ! -e /sys/block/${block} ]; then + echo "mkinitramfs: missing ${block} root ${root} /sys entry" + echo "mkinitramfs: workaround is MODULES=most" + echo "mkinitramfs: Error please report the bug" + exit 1 + fi + + # sys walk ATA + root_dev_path=$(readlink -f /sys/block/${block}/device) + sys_walk_mod_add ${root_dev_path} + + # catch old-style IDE + if [ -e /sys/bus/ide/devices/ ]; then + sys_walk_modalias ${root_dev_path} + manual_add_modules ide-disk + manual_add_modules ide-cd + fi + + if [ -e /sys/bus/scsi/devices/ ]; then + manual_add_modules sd_mod + fi + + if [ -e /sys/bus/i2o/devices/ ]; then + force_load i2o_block + force_load i2o_config + fi + + if [ -e /sys/bus/ps3_system_bus/ ]; then + for x in ps3disk ps3rom ps3-gelic ps3_sys_manager; do + manual_add_modules "${x}" + done + fi + + if [ -e /sys/bus/vio/ ]; then + for x in sunvnet sunvdc; do + manual_add_modules "${x}" + done + fi +} + + +# The modules "most" classes added per default to the initramfs +auto_add_modules() +{ + case "$1" in + base) + for x in ehci-hcd ohci-hcd uhci-hcd usbhid hid_a4tech \ + hid_apple hid_belkin hid_bright hid_cherry hid_chicony \ + hid_cypress hid_dell hid_ezkey hid_gyration hid_logitech \ + hid_microsoft hid_monterey hid_petalynx hid_pl hid_samsung \ + hid_sony hid_sunplus hid_tmff hid_zpff usb-storage ext2 \ + ext3 ext4 isofs jfs nfs reiserfs udf xfs af_packet atkbd i8042 \ + virtio_pci vfat nls_cp437 nls_iso8859-1; do + manual_add_modules "${x}" + done + ;; + net) + for x in 3c59x 8139cp 8139too 8390 atl1 atl1e b44 bmac \ + cxgb3 defxx dl2k e100 e1000 e1000e ehea epic100 \ + ep93xx_eth eql fealnx famachi forcedeth gelic_net \ + hp100 igb ipg mace mv643xx_eth myri10ge \ + natsemi ne2k-pci netconsole niu ns83820 pcnet32 qla3xxx \ + r8169 s2io sis900 skge sky2 slhc smc911x starfire \ + sundance sungem sungem_phy sunhme sunvnet tg3 tlan de2104x \ + de4x5 dmfe tulip winbond-840 xircom_cb xircom_tulip_cb \ + typhon via-rhine via-velocity virtio_net yellowfin; do + manual_add_modules "${x}" + done + ;; + ide) + copy_modules_dir kernel/drivers/ide + ;; + scsi) + copy_modules_dir kernel/drivers/scsi + for x in mptfc mptsas mptscsih mptspi; do + manual_add_modules "${x}" + done + ;; + ata) + copy_modules_dir kernel/drivers/ata + ;; + block) + copy_modules_dir kernel/drivers/block + copy_modules_dir kernel/drivers/usb/storage + ;; + # FIXME: can be removed after Lenny release + ieee1394) + for x in ohci1394 sbp2; do + manual_add_modules "${x}" + done + ;; + firewire) + for x in firewire-ohci firewire-sbp2; do + manual_add_modules "${x}" + done + ;; + i2o) + for x in i2o_block; do + manual_add_modules "${x}" + done + ;; + dasd) + for x in dasd_eckd_mod dasd_fba_mod; do + manual_add_modules "${x}" + done + ;; + *) + auto_add_modules base + auto_add_modules net + auto_add_modules ide + auto_add_modules scsi + auto_add_modules block + auto_add_modules ata + auto_add_modules i2o + auto_add_modules dasd + auto_add_modules ieee1394 + auto_add_modules firewire + ;; + esac +} + +usage() +{ + cat >&2 << EOF + +Usage: ${0} [OPTION]... <-o outfile> [version] + +Options: + -d confdir Specify an alternative configuration directory. + -k Keep temporary directory used to make the image. + -o outfile Write to outfile. + -r root Override ROOT setting in mkinitrd.conf. + +See mkinitramfs(8) for further details. +EOF + exit 1 + +} + +# minimal supported kernel version +check_minkver() +{ + local curversion initdir DPKG_ARCH minversion cm_x tmp + + curversion="${1}" + initdir="${2}" + if [ -z "${initdir}" ]; then + DPKG_ARCH=$(dpkg --print-architecture) + case ${DPKG_ARCH} in + ia64|hppa) + minversion="2.6.15" + ;; + *) + minversion="2.6.12" + ;; + esac + if dpkg --compare-versions "${curversion}" lt "${minversion}"; then + echo "W: kernel ${curversion} too old for initramfs on ${DPKG_ARCH}" >&2 + echo "W: not generating requested initramfs for kernel ${curversion}" >&2 + exit 2 + fi + return 0 + fi + set_initlist + for cm_x in ${initlist}; do + # sed: keep last line starting with MINKVER=, + # remove MINKVER= and trailing space + minver=$(sed '/^MINKVER=/!d;$!d;s/^MINKVER=//;s/[[:space:]]*$//' "${initdir}/${cm_x}") + if [ -z "${tmp}" ]; then + continue + elif dpkg --compare-versions "${curversion}" lt "${minver}"; then + echo "W: ${cm_x} hook script requires at least kernel version ${minver}" >&2 + echo "W: not generating requested initramfs for kernel ${curversion}" >&2 + exit 2 + fi + done +} diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/hooks/compcache b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/hooks/compcache new file mode 100755 index 0000000..37fdd22 --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/hooks/compcache @@ -0,0 +1,95 @@ +#!/bin/sh +set -e + +if [ "$1" = prereqs ]; then + exit 0 +fi + +. /usr/share/initramfs-tools/hook-functions + +number= +suffix= +eval $(printf "%s" "$COMPCACHE_SIZE" | \ + sed -nre 's/^ *([1-9][0-9]*) *([%KMGT]) *$/number="\1"; suffix="\2";/p') + +if [ -z "$number" ] || [ -z "$suffix" ]; then + exit 0 +fi + +if have_module ramzswap; then + name=ramzswap + manual_add_modules ramzswap +elif have_module compcache; then + name=compcache + manual_add_modules compcache +else + exit 0 +fi + +copy_exec /sbin/swapon + +mkdir -p "$DESTDIR"/etc/udev/rules.d +cat >"$DESTDIR"/etc/udev/rules.d/80-compcache.rules <"$DESTDIR"/scripts/init-top/compcache <>"$DESTDIR"/scripts/init-top/compcache <>"$DESTDIR"/scripts/init-top/compcache <' /proc/cmdline || echo "Loading, please wait..." + +# Note that this only becomes /dev on the real filesystem if udev's scripts +# are used; which they will be, but it's worth pointing out +if ! mount -t devtmpfs -o mode=0755 none /dev; then + mount -t tmpfs -o mode=0755 none /dev + mknod -m 0600 /dev/console c 5 1 + mknod /dev/null c 1 3 +fi +mkdir /dev/pts +mount -t devpts -o noexec,nosuid,gid=5,mode=0620 none /dev/pts || true +> /dev/.initramfs-tools +mkdir /dev/.initramfs + +# Export the dpkg architecture +export DPKG_ARCH= +. /conf/arch.conf + +# Set modprobe env +export MODPROBE_OPTIONS="-qb" + +# Export relevant variables +export ROOT= +export ROOTDELAY= +export ROOTFLAGS= +export ROOTFSTYPE= +export IPOPTS= +export HWADDR= +export break= +export init=/sbin/init +export quiet=n +export readonly=y +export rootmnt=/root +export debug= +export panic= +export blacklist= +export resume_offset= + +# Bring in the main config +. /conf/initramfs.conf +for conf in conf/conf.d/*; do + [ -f ${conf} ] && . ${conf} +done +. /scripts/functions + +# Parse command line options +for x in $(cat /proc/cmdline); do + case $x in + init=*) + init=${x#init=} + ;; + root=*) + ROOT=${x#root=} + case $ROOT in + LABEL=*) + ROOT="${ROOT#LABEL=}" + + # support / in LABEL= paths (escape to \x2f) + case "${ROOT}" in + *[/]*) + if [ -x "$(command -v sed)" ]; then + ROOT="$(echo ${ROOT} | sed 's,/,\\x2f,g')" + else + if [ "${ROOT}" != "${ROOT#/}" ]; then + ROOT="\x2f${ROOT#/}" + fi + if [ "${ROOT}" != "${ROOT%/}" ]; then + ROOT="${ROOT%/}\x2f" + fi + IFS='/' + newroot= + for s in $ROOT; do + if [ -z "${newroot}" ]; then + newroot="${s}" + else + newroot="${newroot}\\x2f${s}" + fi + done + unset IFS + ROOT="${newroot}" + fi + esac + ROOT="/dev/disk/by-label/${ROOT}" + ;; + UUID=*) + ROOT="/dev/disk/by-uuid/${ROOT#UUID=}" + ;; + /dev/nfs) + [ -z "${BOOT}" ] && BOOT=nfs + ;; + esac + ;; + rootflags=*) + ROOTFLAGS="-o ${x#rootflags=}" + ;; + rootfstype=*) + ROOTFSTYPE="${x#rootfstype=}" + ;; + rootdelay=*) + ROOTDELAY="${x#rootdelay=}" + case ${ROOTDELAY} in + *[![:digit:].]*) + ROOTDELAY= + ;; + esac + ;; + resumedelay=*) + RESUMEDELAY="${x#resumedelay=}" + ;; + loop=*) + LOOP="${x#loop=}" + ;; + loopflags=*) + LOOPFLAGS="-o ${x#loopflags=}" + ;; + loopfstype=*) + LOOPFSTYPE="${x#loopfstype=}" + ;; + cryptopts=*) + cryptopts="${x#cryptopts=}" + ;; + nfsroot=*) + NFSROOT="${x#nfsroot=}" + ;; + netboot=*) + NETBOOT="${x#netboot=}" + ;; + ip=*) + IPOPTS="${x#ip=}" + ;; + hwaddr=*) + HWADDR="${x#hwaddr=}" + ;; + boot=*) + BOOT=${x#boot=} + ;; + resume=*) + RESUME="${x#resume=}" + ;; + resume_offset=*) + resume_offset="${x#resume_offset=}" + ;; + noresume) + noresume=y + ;; + panic=*) + panic="${x#panic=}" + case ${panic} in + *[![:digit:].]*) + panic= + ;; + esac + ;; + quiet) + quiet=y + ;; + ro) + readonly=y + ;; + rw) + readonly=n + ;; + debug) + debug=y + quiet=n + exec >/dev/.initramfs/initramfs.debug 2>&1 + set -x + ;; + debug=*) + debug=y + quiet=n + set -x + ;; + break=*) + break=${x#break=} + ;; + break) + break=premount + ;; + blacklist=*) + blacklist=${x#blacklist=} + ;; + netconsole=*) + netconsole=${x#netconsole=} + ;; + esac +done + +if [ -z "${noresume}" ]; then + export resume=${RESUME} +else + export noresume +fi + +[ -n "${netconsole}" ] && modprobe netconsole netconsole=${netconsole} + +maybe_break top + +# export BOOT variable value for compcache, +# so we know if we run from casper +export BOOT + +# Don't do log messages here to avoid confusing usplash +run_scripts /scripts/init-top + +maybe_break modules +log_begin_msg "Loading essential drivers..." +load_modules +log_end_msg + +maybe_break premount +[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/init-premount" +run_scripts /scripts/init-premount +[ "$quiet" != "y" ] && log_end_msg + +maybe_break mount +log_begin_msg "Mounting root file system..." +. /scripts/${BOOT} +parse_numeric ${ROOT} +mountroot +log_end_msg + +maybe_break bottom +[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/init-bottom" +run_scripts /scripts/init-bottom +[ "$quiet" != "y" ] && log_end_msg + +# Move virtual filesystems over to the real filesystem +mount -n -o move /sys ${rootmnt}/sys +mount -n -o move /proc ${rootmnt}/proc + +# Check init bootarg +if [ -n "${init}" ] && [ ! -x "${rootmnt}${init}" ]; then + echo "Target filesystem doesn't have ${init}." + init= +fi + +# Search for valid init +if [ -z "${init}" ] ; then + for init in /sbin/init /etc/init /bin/init /bin/sh; do + if [ ! -x "${rootmnt}${init}" ]; then + continue + fi + break + done +fi + +# No init on rootmount +if [ ! -x "${rootmnt}${init}" ]; then + panic "No init found. Try passing init= bootarg." +fi + +# Confuses /etc/init.d/rc +if [ -n ${debug} ]; then + unset debug +fi + +# Chain to real filesystem +maybe_break init +exec run-init ${rootmnt} ${init} "$@" <${rootmnt}/dev/console >${rootmnt}/dev/console 2>&1 +panic "Could not execute run-init." diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/modules b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/modules new file mode 100644 index 0000000..9aa4646 --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/modules @@ -0,0 +1,10 @@ +# List of modules that you want to include in your initramfs. +# +# Syntax: module_name [args ...] +# +# You must run update-initramfs(8) to effect this change. +# +# Examples: +# +# raid1 +# sd_mod diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/functions b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/functions new file mode 100644 index 0000000..3bea0c9 --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/functions @@ -0,0 +1,420 @@ +# -*- shell-script -*- + +_log_msg() +{ + if [ "$quiet" = "y" ]; then return; fi + echo "$@" +} + +log_success_msg() +{ + _log_msg "Success: $@" +} + +log_failure_msg() +{ + _log_msg "Failure: $@" +} + +log_warning_msg() +{ + _log_msg "Warning: $@" +} + +log_begin_msg() +{ + if [ -x /sbin/usplash_write ]; then + /sbin/usplash_write "TEXT $@" + fi + _log_msg "Begin: $@ ..." +} + +log_end_msg() +{ + if [ -x /sbin/usplash_write ]; then + /sbin/usplash_write "SUCCESS ok" + fi + _log_msg "Done." +} + +# Add failure hook +add_mountroot_fail_hook() +{ + mkdir -p /tmp/mountroot-fail-hooks.d + ln -s "$0" /tmp/mountroot-fail-hooks.d/"$1" +} + +# Run failure hooks. +# When a failure hook exits "1", it has not done anything to correct the +# system. Exiting "0" means that something has been attempted to resolve +# the lack of a root filesystem. +# Hooks are run in lexigraphical order, and are responsible for removing +# themselves if they should not re-run in a later cycle. When one exits +# "0", the stack is stopped, so the caller can return to the main rootfs +# wait loop. +try_failure_hooks() +{ + local hook + + # Disable usplash so text from hooks can be seen + if [ -x /sbin/usplash_write ]; then + /sbin/usplash_write "QUIT" + fi + chvt 1 + + for hook in /tmp/mountroot-fail-hooks.d/*; do + if [ -x ${hook} ] && ${hook} mountfail; then + return 0 + fi + done + return 1 +} + +panic() +{ + if [ -x /sbin/usplash_write ]; then + /sbin/usplash_write "QUIT" + fi + chvt 1 + + # Disallow console access + if [ -n "${panic}" ]; then + sleep ${panic} + reboot + fi + + modprobe i8042 + modprobe atkbd + + run_scripts /scripts/panic + + echo $@ + PS1='(initramfs) ' /bin/sh -i /dev/console 2>&1 +} + +maybe_break() +{ + if echo "${break}" | egrep -q "(,|^)$1(,|$)"; then + panic "Spawning shell within the initramfs" + fi +} + +render() +{ + eval "echo -n \${$@}" +} + +set_initlist() +{ + unset initlist + for si_x in ${initdir}/*; do + # skip empty dirs without warning + [ "${si_x}" = "${initdir}/*" ] && return + + # only allow variable name chars + case ${si_x#${initdir}/} in + *[![:alnum:]_]*) + [ "${verbose}" = "y" ] \ + && echo "$si_x ignored: not alphanumeric or '_' file" + continue + ;; + esac + + # skip non executable scripts + if [ ! -x ${si_x} ]; then + [ "${verbose}" = "y" ] \ + && echo "$si_x ignored: not executable" + continue + fi + + # skip directories + if [ -d ${si_x} ]; then + [ "${verbose}" = "y" ] \ + && echo "$si_x ignored: a directory" + continue + fi + + initlist="${initlist} ${si_x#${initdir}/}" + done +} + +reduce_satisfied() +{ + deplist="$(render array_${1})" + unset tmpdeplist + for rs_y in ${deplist}; do + # check if there are alternatives + case ${rs_y} in + *\|*) + OLD_IFS="$IFS" + IFS="|" + for rs_z in ${rs_y}; do + IFS="$OLD_IFS" + # only allow variable name chars + case ${rs_z} in + *[![:alnum:]_]*) + IFS="|" + continue + ;; + esac + # skip non executable scripts + if [ ! -x ${initdir}/${rs_z} ]; then + IFS="|" + continue + fi + # skip directories + if [ -d ${initdir}/${rs_z} ]; then + IFS="|" + continue + fi + tmpdeplist="${tmpdeplist} ${rs_z}" + break + done + IFS="$OLD_IFS" + ;; + *) + case ${rs_y} in + *[![:alnum:]_]*) + continue + ;; + esac + if [ ! -x ${initdir}/${rs_y} ]; then + continue + fi + if [ -d ${initdir}/${rs_y} ]; then + continue + fi + tmpdeplist="${tmpdeplist} ${rs_y}" + ;; + esac + done + deplist=${tmpdeplist} + for rs_x in ${runlist}; do + pop_list_item ${rs_x} ${deplist} + deplist=${tmppop} + done + eval array_${1}=\"${deplist}\" +} + +get_prereqs() +{ + set_initlist + for gp_x in ${initlist}; do + tmp=$(${initdir}/${gp_x} prereqs) + eval array_${gp_x}=\"${tmp}\" + done +} + +count_unsatisfied() +{ + set -- ${@} + return ${#} +} + +# Removes $1 from initlist +pop_list_item() +{ + item=${1} + shift + set -- ${@} + unset tmppop + # Iterate + for pop in ${@}; do + if [ ${pop} = ${item} ]; then + continue + fi + tmppop="${tmppop} ${pop}" + done + +} + +# This function generates the runlist, so we clear it first. +reduce_prereqs() +{ + unset runlist + set -- ${initlist} + i=$# + # Loop until there's no more in the queue to loop through + while [ ${i} -ne 0 ]; do + oldi=${i} + for rp_x in ${initlist}; do + reduce_satisfied ${rp_x} + count_unsatisfied $(render array_${rp_x}) + cnt=${?} + if [ ${cnt} -eq 0 ]; then + runlist="${runlist} ${rp_x}" + pop_list_item ${rp_x} ${initlist} + initlist=${tmppop} + i=$((${i} - 1)) + fi + done + if [ ${i} -eq ${oldi} ]; then + panic "PANIC: Circular dependancy. Exiting." + fi + done +} + +get_prereq_pairs() +{ + set_initlist + for gp_x in ${initlist}; do + echo ${gp_x} ${gp_x} + prereqs=$(${initdir}/${gp_x} prereqs) + for prereq in ${prereqs}; do + echo ${prereq} ${gp_x} + done + done +} + +call_scripts() +{ + for cs_x in ${runlist}; do + [ -f ${initdir}/${cs_x} ] || continue + if [ x"$1" = "xoptional" ]; then + option=$(sed '/^OPTION=/!d;$d;s/^OPTION=//;s/[[:space:]]*$//' "${initdir}/${cs_x}") + [ -z "${option}" ] || eval test -n \"\${$option}\" -a \"\${$option}\" != \"n\" || continue + fi + + # mkinitramfs verbose output + if [ "${verbose}" = "y" ]; then + echo "Calling hook ${cs_x}" + fi + ${initdir}/${cs_x} + # allow boot scripts to modify exported boot paramaters + if [ -e /conf/param.conf ]; then + . /conf/param.conf + fi + done +} + +run_scripts() +{ + initdir=${1} + [ ! -d ${initdir} ] && return + + if [ -f ${initdir}/ORDER ]; then + . ${initdir}/ORDER + elif [ -x /usr/bin/tsort ]; then + runlist=$(get_prereq_pairs | tsort) + call_scripts $2 + else + get_prereqs + reduce_prereqs + call_scripts $2 + fi +} + +cache_run_scripts() +{ + DESTDIR=${1} + scriptdir=${2} + initdir=${DESTDIR}${scriptdir} + [ ! -d ${initdir} ] && return + + runlist=$(get_prereq_pairs | tsort) + for crs_x in ${runlist}; do + [ -f ${initdir}/${crs_x} ] || continue + echo "${scriptdir}/${crs_x}" >> ${initdir}/ORDER + echo "[ -e /conf/param.conf ] && . /conf/param.conf" >> ${initdir}/ORDER + done +} + +# Load custom modules first +load_modules() +{ + if [ -e /conf/modules ]; then + cat /conf/modules | while read m; do + # Skip empty lines + if [ -z "$m" ]; then + continue + fi + # Skip comments - d?ash removes whitespace prefix + com=$(printf "%.1s" "${m}") + if [ "$com" = "#" ]; then + continue + fi + modprobe $m + done + fi +} + +# lilo compatibility +parse_numeric() { + case $1 in + "") + return + ;; + /*) + return + ;; + *:*) + minor=${1#*:} + major=${1%:*} + ;; + *) + value=$(( 0x${1} )) + minor=$(( ${value} % 256 )) + major=$(( ${value} / 256 )) + ;; + esac + + mknod -m 600 /dev/root b ${major} ${minor} + ROOT=/dev/root +} + +configure_networking() +{ + # networking already configured thus bail out + [ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ] && return 0 + + if [ "${HWADDR}" ]; then + # select interface by MAC address + HWADDR="$(echo "${HWADDR}" | tr A-Z- a-z:)" + local iface + for iface in /sys/class/net/*; do + [ -f "$iface/address" ] || continue + if [ "$(cat "$iface/address")" = "${HWADDR}" ]; then + DEVICE="${iface#/sys/class/net/}" + fi + done + fi + + # support ip options see linux sources + # Documentation/filesystems/nfsroot.txt + case ${IPOPTS} in + none|off) + # Do nothing + ;; + ""|on|any) + # Bring up device + ipconfig -t 60 ${DEVICE} + ;; + dhcp|bootp|rarp|both) + ipconfig -t 60 -c ${IPOPTS} -d ${DEVICE} + ;; + *) + ipconfig -t 60 -d $IPOPTS + + # grab device entry from ip option + NEW_DEVICE=${IPOPTS#*:*:*:*:*:*} + if [ "${NEW_DEVICE}" != "${IPOPTS}" ]; 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 + + # source ipconfig output + if [ -n "${DEVICE}" ]; then + # source specific bootdevice + . /tmp/net-${DEVICE}.conf + else + # source any interface as not exaclty specified + . /tmp/net-*.conf + fi +} diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-bottom/plymouth b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-bottom/plymouth new file mode 100755 index 0000000..8b1e7c8 --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-bottom/plymouth @@ -0,0 +1,21 @@ +#!/bin/sh + +OPTION=FRAMEBUFFER +PREREQ="udev" + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +prereqs) + prereqs + exit 0 + ;; +esac + +if [ -f ${rootmnt}/dev/.initramfs/plymouth.pid ] +then + /bin/plymouth update-root-fs --new-root-dir=${rootmnt} +fi diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-bottom/udev b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-bottom/udev new file mode 100755 index 0000000..f9d2ce9 --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-bottom/udev @@ -0,0 +1,24 @@ +#!/bin/sh -e +# initramfs init-bottom script for udev + +PREREQ="" + +# Output pre-requisites +prereqs() +{ + echo "$PREREQ" +} + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + + +# Stop udevd, we'll miss a few events while we run init, but we catch up +pkill udevd + +# Move /dev to the real filesystem +mount -n -o move /dev ${rootmnt}/dev diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-premount/lvm2 b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-premount/lvm2 new file mode 100755 index 0000000..e5bc78f --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-premount/lvm2 @@ -0,0 +1,41 @@ +#!/bin/sh + +# init-premount script for lvm2. + +PREREQS="udev mdadm" +prereqs() +{ + echo $PREREQS +} + +mountroot_fail() +{ + if ! /sbin/lvm vgscan >/dev/null 2>&1 ; then + cat </dev/null; then + modprobe ata_generic all_generic_ide=1 +fi diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/blacklist b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/blacklist new file mode 100755 index 0000000..5e6b3c1 --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/blacklist @@ -0,0 +1,34 @@ +#!/bin/sh + +PREREQ="" + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +# blacklist vga16fb when vga= or video= given +for x in $(cat /proc/cmdline); do + case ${x} in + vga=*|video=*) + echo "blacklist vga16fb" >> /etc/modprobe.d/initramfs + ;; + esac +done + +# sanity check +[ -z "${blacklist}" ] && exit 0 + +# write blacklist to modprobe.d +IFS=',' +for b in ${blacklist}; do + echo "blacklist $b" >> /etc/modprobe.d/initramfs +done diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/console_setup b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/console_setup new file mode 100755 index 0000000..df767bb --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/console_setup @@ -0,0 +1,83 @@ +#! /bin/sh +# A crude much-simplified clone of setupcon for use in the initramfs. + +OPTION=FRAMEBUFFER +PREREQ="framebuffer" + +prereqs () { + echo "$PREREQ" +} + +case $1 in +prereqs) + prereqs + exit 0 + ;; +esac + +. /etc/default/console-setup + +[ "$ACTIVE_CONSOLES" ] || exit 0 + +if [ "$VERBOSE_OUTPUT" = yes ]; then + verbose= +else + verbose='>/dev/null 2>&1' +fi + +for i in 1 2 3 4 5 6; do + [ -c /dev/tty$i ] || mknod /dev/tty$i c 4 $i +done + +for console in $ACTIVE_CONSOLES; do + [ -w $console ] || continue + + if [ "$CHARMAP" = UTF-8 ] || [ -z "$ACM$CHARMAP" ]; then + printf '\033%%G' >$console + else + printf '\033%%@' >$console + fi + + if [ "$FONT" ]; then + FONT="/etc/console-setup/${FONT##*/}" + FONT="${FONT%.gz}" + else + FONT="/etc/console-setup/$CODESET-$FONTFACE$FONTSIZE.psf" + fi + if [ -f "$FONT" ]; then + if type consolechars >/dev/null 2>&1; then + eval consolechars -v --tty=$console -f "$FONT" $verbose + elif type setfont >/dev/null 2>&1; then + eval setfont -v -C $console "$FONT" $verbose + fi + fi + + if [ "$ACM" ]; then + ACM="/etc/console-setup/${ACM##*/}" + ACM="${ACM%.gz}" + else + ACM="/etc/console-setup/$CHARMAP.acm" + fi + if [ -f "$ACM" ]; then + if type consolechars >/dev/null 2>&1; then + eval consolechars -v --tty=$console --acm "$ACM" \ + $verbose + elif type setfont >/dev/null 2>&1; then + eval setfont -v -C "$console" -m "$ACM" $verbose + fi + fi + + if type kbd_mode >/dev/null 2>&1; then + if [ "$CHARMAP" = UTF-8 ] || [ -z "$ACM" ]; then + kbd_mode -u <$console + else + kbd_mode -a <$console + fi + fi +done + +if [ -f /etc/console-setup/cached.kmap.gz ] && type loadkeys >/dev/null; then + eval loadkeys /etc/console-setup/cached.kmap.gz $verbose +fi + +exit 0 diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/framebuffer b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/framebuffer new file mode 100755 index 0000000..bb59aad --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/framebuffer @@ -0,0 +1,104 @@ +#!/bin/sh + +OPTION=FRAMEBUFFER +PREREQ="udev" +prereqs() +{ + echo "$PREREQ" +} +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + + +# The options part of the kernel "video=" argument (i.e. everyting +# after "video=:") has very inconsistent rules. +# +# Generally the following applies: +# 1) options are comma-separated +# 2) options can be in either of these three forms: +# =, :, . +# 3) the "mode" option has the form x[M][R][-][@][i][m] +# and may or may not start with "mode=" +# +# When the options are used with modules, they need to be space-separated +# and the following conversions are needed: +# : -> = +# -> =1 +# -> mode= +parse_video_opts() +{ + local OPTS="$1" + local IFS="," + + # Must be a line like video=:,[opt2]... + if [ "${OPTS}" = "${OPTS%%:*}" ]; then + return + fi + OPTS="${OPTS#*:}" + for opt in ${OPTS}; do + # Already in the "=" form + if [ "${opt}" != "${opt#*=}" ]; then + echo -n "$opt " + # In the ":" form + elif [ "${opt}" != "${opt#*:}" ]; then + echo -n "${opt%:*}=${opt#*:} " + # Presumably a modevalue without the "mode=" prefix + elif [ "${opt}" != "${opt#[0-9]*x[0-9]}" ]; then + echo -n "mode=$opt " + # Presumably a boolean + else + echo -n "${opt}=1 " + fi + done +} + +FB="" +OPTS="" + +for x in $(cat /proc/cmdline); do + case ${x} in + vga=*) + FB="vesafb"; + OPTS=""; + ;; + video=*) + FB=${x#*=} + FB="${FB%%:*}" + OPTS="$(parse_video_opts "${x}")" + esac +done + +# Map command line name to module name +case ${FB} in +matroxfb) + FB=matroxfb_base + ;; +esac + +if [ -n "${FB}" ]; then + # Some framebuffer devices need character devices :-/ + udevadm settle + MODPROBE_OPTIONS=-q modprobe ${FB} ${OPTS} + # Wait for the framebuffer devices to be ready + udevadm settle +else + # If we have no graphics devices yet, wait for udev to settle + [ -d /sys/class/graphics/fbcon ] || udevadm settle + [ -d /sys/class/graphics/fb0 ] || udevadm settle + [ -d /sys/class/drm/card0 ] || udevadm settle +fi + +# Force fb mode via /sys interface +for x in $(cat /proc/cmdline); do + case ${x} in + fbmode=*) + MODE=${x#*=} + echo "$MODE" > /sys/class/graphics/fb0/mode + ;; + esac +done diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/keymap b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/keymap new file mode 100755 index 0000000..cb67aa9 --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/keymap @@ -0,0 +1,28 @@ +#!/bin/sh + +OPTION=FRAMEBUFFER +PREREQ="" +prereqs() +{ + echo "$PREREQ" +} +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +OPTS="-q" + +# Should terminal be in UTF8 mode? +if [ -x /bin/kbd_mode ]; then + /bin/kbd_mode -u + OPTS="${OPTS} -u" +fi + +# Load custom keymap +if [ -x /bin/loadkeys -a -r /etc/boottime.kmap.gz ]; then + loadkeys ${OPTS} /etc/boottime.kmap.gz +fi diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/plymouth b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/plymouth new file mode 100755 index 0000000..813b6b4 --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/plymouth @@ -0,0 +1,20 @@ +#!/bin/sh + +OPTION=FRAMEBUFFER +PREREQ="framebuffer console_setup brltty" + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +prereqs) + prereqs + exit 0 + ;; +esac + +printf '\033[?25l' > /dev/tty7 +/sbin/plymouthd --mode=boot --attach-to-session --pid-file=/dev/.initramfs/plymouth.pid +/bin/plymouth show-splash diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/udev b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/udev new file mode 100755 index 0000000..cd2fa56 --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/udev @@ -0,0 +1,30 @@ +#!/bin/sh -e +# initramfs init-top script for udev + +PREREQ="all_generic_ide blacklist" + +# Output pre-requisites +prereqs() +{ + echo "$PREREQ" +} + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + + +# It's all over netlink now +echo "" > /proc/sys/kernel/hotplug + +# Start the udev daemon to process events +/sbin/udevd --daemon --resolve-names=never + +# Iterate sysfs and fire off everything; if we include a rule for it then +# it'll get handled; otherwise it'll get handled later when we do this again +# in the main boot sequence. +( /sbin/udevadm trigger --subsystem-match=block; \ + /sbin/udevadm trigger --subsystem-nomatch=block; ) & diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local new file mode 100644 index 0000000..865572b --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local @@ -0,0 +1,131 @@ +# Local filesystem mounting -*- shell-script -*- + +# Parameter: Where to mount the filesystem +mountroot () +{ + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-top" + run_scripts /scripts/local-top + [ "$quiet" != "y" ] && log_end_msg + + while [ -z "${FSTYPE}" ]; do + FSTYPE=$(wait-for-root "${ROOT}" ${ROOTDELAY:-30}) + + # Run failure hooks, hoping one of them can fix up the system + # and we can restart the wait loop. If they all fail, abort + # and move on to the panic handler and shell. + if [ -z "${FSTYPE}" ] && ! try_failure_hooks; then + break + fi + done + + # We've given up, but we'll let the user fix matters if they can + while [ -z "${FSTYPE}" -a ! -e "${ROOT}" ]; do + # give hint about renamed root + case "${ROOT}" in + /dev/hd*) + suffix="${ROOT#/dev/hd}" + major="${suffix%[[:digit:]]}" + major="${major%[[:digit:]]}" + if [ -d "/sys/block/sd${major}" ]; then + echo "WARNING bootdevice may be renamed. Try root=/dev/sd${suffix}" + fi + ;; + /dev/sd*) + suffix="${ROOT#/dev/sd}" + major="${suffix%[[:digit:]]}" + major="${major%[[:digit:]]}" + if [ -d "/sys/block/hd${major}" ]; then + echo "WARNING bootdevice may be renamed. Try root=/dev/hd${suffix}" + fi + ;; + esac + echo "Gave up waiting for root device. Common problems:" + echo " - Boot args (cat /proc/cmdline)" + echo " - Check rootdelay= (did the system wait long enough?)" + echo " - Check root= (did the system wait for the right device?)" + echo " - Missing modules (cat /proc/modules; ls /dev)" + panic "ALERT! ${ROOT} does not exist. Dropping to a shell!" + done + + # Get the root filesystem type if not set + if [ -z "${ROOTFSTYPE}" ]; then + [ -n "${FSTYPE}" ] || FSTYPE=$(/sbin/blkid -s TYPE -o value "${ROOT}") + ROOTFSTYPE="${FSTYPE}" + else + FSTYPE="${ROOTFSTYPE}" + fi + + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-premount" + run_scripts /scripts/local-premount + [ "$quiet" != "y" ] && log_end_msg + + if [ ${readonly} = y ] && \ + [ -z "$LOOP" ]; then + roflag=-r + else + roflag=-w + fi + + # FIXME This has no error checking + [ -n "${FSTYPE}" ] && modprobe ${FSTYPE} + + # FIXME This has no error checking + # Mount root + mount ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} ${rootmnt} + mountroot_status="$?" + if [ "$LOOP" ]; then + if [ "$mountroot_status" != 0 ]; then + if [ ${FSTYPE} = ntfs ] || [ ${FSTYPE} = vfat ]; then + panic " +Could not mount the partition ${ROOT}. +This could also happen if the file system is not clean because of an operating +system crash, an interrupted boot process, an improper shutdown, or unplugging +of a removable device without first unmounting or ejecting it. To fix this, +simply reboot into Windows, let it fully start, log in, run 'chkdsk /r', then +gracefully shut down and reboot back into Windows. After this you should be +able to reboot again and resume the installation. +(filesystem = ${FSTYPE}, error code = $mountroot_status) +" + fi + fi + + mkdir -p /host + mount -o move ${rootmnt} /host + + while [ ! -e "/host/${LOOP#/}" ]; do + panic "ALERT! /host/${LOOP#/} does not exist. Dropping to a shell!" + done + + # Get the loop filesystem type if not set + if [ -z "${LOOPFSTYPE}" ]; then + eval $(fstype < "/host/${LOOP#/}") + else + FSTYPE="${LOOPFSTYPE}" + fi + if [ "$FSTYPE" = "unknown" ] && [ -x /sbin/blkid ]; then + FSTYPE=$(/sbin/blkid -s TYPE -o value "/host/${LOOP#/}") + [ -z "$FSTYPE" ] && FSTYPE="unknown" + fi + + if [ ${readonly} = y ]; then + roflag=-r + else + roflag=-w + fi + + # FIXME This has no error checking + modprobe loop + modprobe ${FSTYPE} + + # FIXME This has no error checking + mount ${roflag} -o loop -t ${FSTYPE} ${LOOPFLAGS} "/host/${LOOP#/}" ${rootmnt} + + if [ -d ${rootmnt}/host ]; then + mount -o move /host ${rootmnt}/host + fi + fi + + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-bottom" + run_scripts /scripts/local-bottom + [ "$quiet" != "y" ] && log_end_msg +} diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-bottom/ntfs_3g b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-bottom/ntfs_3g new file mode 100755 index 0000000..335ef95 --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-bottom/ntfs_3g @@ -0,0 +1,16 @@ +#! /bin/sh + +case $1 in +prereqs) + exit 0 + ;; +esac + +if [ "$ROOTFSTYPE" = ntfs ] || [ "$ROOTFSTYPE" = ntfs-3g ] || \ + [ "$LOOPFSTYPE" = ntfs ] || [ "$LOOPFSTYPE" = ntfs-3g ]; then + mkdir -p /dev/.initramfs/varrun + pidof mount.ntfs >> /dev/.initramfs/varrun/sendsigs.omit + pidof mount.ntfs-3g >> /dev/.initramfs/varrun/sendsigs.omit +fi + +exit 0 diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/fixrtc b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/fixrtc new file mode 100755 index 0000000..c9fbc36 --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/fixrtc @@ -0,0 +1,64 @@ +#!/bin/sh -e +# initramfs local-premount script for fixrtc + +PREREQ="" + +# Output pre-requisites +prereqs() +{ + echo "$PREREQ" +} + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + +# use the fixrtc cmdline option in your bootloader to +# automatically set the hardware clock to the date of +# the last mount of your root filesystem to avoid fsck +# to get confused by the superblock being in the future + +BROKEN_CLOCK="" +ROOTDEV="" + +for x in $(cat /proc/cmdline); do + case ${x} in + root=*) + value=${x#*=} + + # Find the device node path depending on the form of root= : + + case ${value} in + UUID=*) + ROOTDEV=/dev/disk/by-uuid/${value#UUID=} + ;; + LABEL=*) + ROOTDEV=/dev/disk/by-label/${value#LABEL=} + ;; + *) + ROOTDEV=${value} + ;; + esac + ;; + fixrtc) + BROKEN_CLOCK=1 + ;; + esac +done + +if [ -n "$BROKEN_CLOCK" -a -n "$ROOTDEV" ];then + ROOTDISK=$(readlink -f "$ROOTDEV") && + + TIMESTR=$(dumpe2fs -h "$ROOTDISK" 2>/dev/null|grep "Last mount time") && + TIME=${TIMESTR#*:} && + + date --set="${TIME} 1 minute" >/dev/null 2>&1 +fi + +# This script is best-effort. If we couldn't fudge the clock as desired, +# just try to carry on boot anyway: +# It will probably fail, but we won't have made the situation any worse. +exit 0 diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/ntfs_3g b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/ntfs_3g new file mode 100755 index 0000000..57e7f8b --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/ntfs_3g @@ -0,0 +1,14 @@ +#! /bin/sh + +case $1 in +prereqs) + exit 0 + ;; +esac + +if [ "$ROOTFSTYPE" = ntfs ] || [ "$ROOTFSTYPE" = ntfs-3g ] || \ + [ "$LOOPFSTYPE" = ntfs ] || [ "$LOOPFSTYPE" = ntfs-3g ]; then + modprobe fuse +fi + +exit 0 diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/resume b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/resume new file mode 100755 index 0000000..4653593 --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/resume @@ -0,0 +1,75 @@ +#!/bin/sh + +PREREQ="" + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +. ./scripts/functions + +if [ -z "${resume}" ]; then + exit 0 +fi + +case $resume in +LABEL=*) + resume="${resume#LABEL=}" + + # support any / in LABEL= path (escape to \x2f) + case "${resume}" in + *[/]*) + if [ -x "$(command -v sed)" ]; then + resume="$(echo ${resume} | sed 's,/,\\x2f,g')" + else + if [ "${resume}" != "${resume#/}" ]; then + resume="\x2f${resume#/}" + fi + if [ "${resume}" != "${resume%/}" ]; then + resume="${resume%/}\x2f" + fi + IFS='/' + newresume= + for s in $resume; do + if [ -z "${newresume}" ]; then + newresume="${s}" + else + newresume="${newresume}\\x2f${s}" + fi + done + unset IFS + resume="${newresume}" + fi + esac + resume="/dev/disk/by-label/${resume}" + ;; +UUID=*) + resume="/dev/disk/by-uuid/${resume#UUID=}" + ;; +esac + +SWAPTYPE=$(wait-for-root "${resume}" ${RESUMEDELAY:-5}) + +case "${SWAPTYPE}" in + swsuspend|s1suspend|s2suspend|ulsuspend|tuxonice) + if [ -x /bin/plymouth ] && plymouth --ping; then + plymouth message --text="Resuming from $resume" + fi + + # hardcode path, uswsusp ships an resume binary too + if [ -n "${resume_offset}" ]; then + /bin/resume ${resume} ${resume_offset} >/dev/null 2>&1 + else + /bin/resume ${resume} >/dev/null 2>&1 + fi + ;; +esac diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/nfs b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/nfs new file mode 100644 index 0000000..b9c2522 --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/nfs @@ -0,0 +1,83 @@ +# NFS filesystem mounting -*- shell-script -*- + +# FIXME This needs error checking + +retry_nr=0 + +# parse nfs bootargs and mount nfs +do_nfsmount() +{ + + configure_networking + + # 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=[:][,] + 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 + + if [ -z "${NFSOPTS}" ]; then + NFSOPTS="-o retrans=10" + fi + + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/nfs-premount" + run_scripts /scripts/nfs-premount + [ "$quiet" != "y" ] && log_end_msg + + if [ ${readonly} = y ]; then + roflag="-o ro" + else + roflag="-o rw" + fi + + nfsmount -o nolock ${roflag} ${NFSOPTS} ${NFSROOT} ${rootmnt} +} + +# NFS root mounting +mountroot() +{ + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/nfs-top" + run_scripts /scripts/nfs-top + [ "$quiet" != "y" ] && log_end_msg + + modprobe nfs + # For DHCP + modprobe af_packet + + # Default delay is around 180s + # FIXME: add usplash_write info + if [ -z "${ROOTDELAY}" ]; then + delay=180 + else + delay=${ROOTDELAY} + fi + + # loop until nfsmount succeds + while [ ${retry_nr} -lt ${delay} ] && [ ! -e ${rootmnt}${init} ]; do + [ ${retry_nr} -gt 0 ] && \ + [ "$quiet" != "y" ] && log_begin_msg "Retrying nfs mount" + do_nfsmount + retry_nr=$(( ${retry_nr} + 1 )) + [ ! -e ${rootmnt}${init} ] && /bin/sleep 1 + [ ${retry_nr} -gt 0 ] && [ "$quiet" != "y" ] && log_end_msg + done + + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/nfs-bottom" + run_scripts /scripts/nfs-bottom + [ "$quiet" != "y" ] && log_end_msg +} diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/nfs-top/udev b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/nfs-top/udev new file mode 100755 index 0000000..980e496 --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/nfs-top/udev @@ -0,0 +1,27 @@ +#!/bin/sh -e +# initramfs nfs-top script for udev + +PREREQ="" + +# Output pre-requisites +prereqs() +{ + echo "$PREREQ" +} + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + + +# Each call to udevsettle can take up to three minutes +if [ -x /sbin/usplash_write ]; then + /sbin/usplash_write "TIMEOUT 360" + trap "/sbin/usplash_write 'TIMEOUT 15'" 0 +fi + +# We need to wait for the network card drivers to be loaded +/sbin/udevadm settle diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/console_setup b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/console_setup new file mode 100755 index 0000000..5e97f65 --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/console_setup @@ -0,0 +1,82 @@ +#! /bin/sh +# A crude much-simplified clone of setupcon for use in the initramfs. + +PREREQ="framebuffer" + +prereqs () { + echo "$PREREQ" +} + +case $1 in +prereqs) + prereqs + exit 0 + ;; +esac + +. /etc/default/console-setup + +[ "$ACTIVE_CONSOLES" ] || exit 0 + +if [ "$VERBOSE_OUTPUT" = yes ]; then + verbose= +else + verbose='>/dev/null 2>&1' +fi + +for i in 1 2 3 4 5 6; do + [ -c /dev/tty$i ] || mknod /dev/tty$i c 4 $i +done + +for console in $ACTIVE_CONSOLES; do + [ -w $console ] || continue + + if [ "$CHARMAP" = UTF-8 ] || [ -z "$ACM$CHARMAP" ]; then + printf '\033%%G' >$console + else + printf '\033%%@' >$console + fi + + if [ "$FONT" ]; then + FONT="/etc/console-setup/${FONT##*/}" + FONT="${FONT%.gz}" + else + FONT="/etc/console-setup/$CODESET-$FONTFACE$FONTSIZE.psf" + fi + if [ -f "$FONT" ]; then + if type consolechars >/dev/null 2>&1; then + eval consolechars -v --tty=$console -f "$FONT" $verbose + elif type setfont >/dev/null 2>&1; then + eval setfont -v -C $console "$FONT" $verbose + fi + fi + + if [ "$ACM" ]; then + ACM="/etc/console-setup/${ACM##*/}" + ACM="${ACM%.gz}" + else + ACM="/etc/console-setup/$CHARMAP.acm" + fi + if [ -f "$ACM" ]; then + if type consolechars >/dev/null 2>&1; then + eval consolechars -v --tty=$console --acm "$ACM" \ + $verbose + elif type setfont >/dev/null 2>&1; then + eval setfont -v -C "$console" -m "$ACM" $verbose + fi + fi + + if type kbd_mode >/dev/null 2>&1; then + if [ "$CHARMAP" = UTF-8 ] || [ -z "$ACM" ]; then + kbd_mode -u <$console + else + kbd_mode -a <$console + fi + fi +done + +if [ -f /etc/console-setup/cached.kmap.gz ] && type loadkeys >/dev/null; then + eval loadkeys /etc/console-setup/cached.kmap.gz $verbose +fi + +exit 0 diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/keymap b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/keymap new file mode 100644 index 0000000..f011abf --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/keymap @@ -0,0 +1,27 @@ +#!/bin/sh + +PREREQ="" +prereqs() +{ + echo "$PREREQ" +} +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +OPTS="-q" + +# Should terminal be in UTF8 mode? +if [ -x /bin/kbd_mode ]; then + /bin/kbd_mode -u + OPTS="${OPTS} -u" +fi + +# Load custom keymap +if [ -x /bin/loadkeys -a -r /etc/boottime.kmap.gz ]; then + loadkeys ${OPTS} /etc/boottime.kmap.gz +fi diff --git a/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/plymouth b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/plymouth new file mode 100755 index 0000000..2da5a6b --- /dev/null +++ b/old/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/plymouth @@ -0,0 +1,18 @@ +#!/bin/sh + +OPTION=FRAMEBUFFER +PREREQ="udev" + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +prereqs) + prereqs + exit 0 + ;; +esac + +/bin/plymouth quit diff --git a/old/initramfs-tools-OG/conf.d/mdadm b/old/initramfs-tools-OG/conf.d/mdadm new file mode 100644 index 0000000..11d27f8 --- /dev/null +++ b/old/initramfs-tools-OG/conf.d/mdadm @@ -0,0 +1,18 @@ +# mdadm boot_degraded configuration +# +# You can run 'dpkg-reconfigure mdadm' to modify the values in this file, if +# you want. You can also change the values here and changes will be preserved. +# Do note that only the values are preserved; the rest of the file is +# rewritten. +# +# BOOT_DEGRADED: +# Do you want to boot your system if a RAID providing your root filesystem +# becomes degraded? +# +# Running a system with a degraded RAID could result in permanent data loss +# if it suffers another hardware fault. +# +# However, you might answer "yes" if this system is a server, expected to +# tolerate hardware faults and boot unattended. + +BOOT_DEGRADED=false diff --git a/old/initramfs-tools-OG/conf.d/resume b/old/initramfs-tools-OG/conf.d/resume new file mode 100644 index 0000000..34fdc4a --- /dev/null +++ b/old/initramfs-tools-OG/conf.d/resume @@ -0,0 +1 @@ +RESUME=UUID=99eb2782-3766-452a-8e1e-0bc26b426b12 diff --git a/old/initramfs-tools-OG/hooks/oghooks b/old/initramfs-tools-OG/hooks/oghooks new file mode 100755 index 0000000..3d9b04b --- /dev/null +++ b/old/initramfs-tools-OG/hooks/oghooks @@ -0,0 +1,40 @@ +#!/bin/sh -e +# initramfs hook for OpenGnsys + + +PREREQ="og" + +# Output pre-requisites +prereqs() +{ + echo "$PREREQ" +} + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + + +. /usr/share/initramfs-tools/hook-functions + +mkdir -p ${DESTDIR}/scripts/og-top +mkdir -p ${DESTDIR}/scripts/og-premount +mkdir -p ${DESTDIR}/scripts/og-bottom +mkdir -p ${DESTDIR}/mnt/ +mkdir -p ${DESTDIR}/net/ +mkdir -p ${DESTDIR}/usr +mkdir -p ${DESTDIR}/var/lock +mkdir -p ${DESTDIR}/var/log +mkdir -p ${DESTDIR}/opt/opengnsys; + +# Insert basic binaries +copy_exec /bin/bash-static /bin/bash + + +# Insert OpenGnsys Engine +mkdir -p ${DESTDIR}/opt/opengnsys/lib/engine +cp -prv /opt/opengnsys/client/lib/engine ${DESTDIR}/opt/opengnsys/lib/engine + diff --git a/old/initramfs-tools-OG/initramfs.conf b/old/initramfs-tools-OG/initramfs.conf new file mode 100644 index 0000000..754e2be --- /dev/null +++ b/old/initramfs-tools-OG/initramfs.conf @@ -0,0 +1,72 @@ +# +# initramfs.conf +# Configuration file for mkinitramfs(8). See initramfs.conf(5). +# + +# +# MODULES: [ most | netboot | dep | list ] +# +# most - Add all framebuffer, acpi, filesystem, and harddrive drivers. +# +# dep - Try and guess which modules to load. +# +# netboot - Add the base modules, network modules, but skip block devices. +# +# list - Only include modules from the 'additional modules' list +# + +MODULES=most + +# +# BUSYBOX: [ y | n ] +# +# Use busybox if available. +# + +BUSYBOX=y + +# +# COMPCACHE_SIZE: [ "x K" | "x M" | "x G" | "x %" ] +# +# Amount of RAM to use for RAM-based compressed swap space. +# +# An empty value - compcache isn't used, or added to the initramfs at all. +# An integer and K (e.g. 65536 K) - use a number of kilobytes. +# An integer and M (e.g. 256 M) - use a number of megabytes. +# An integer and G (e.g. 1 G) - use a number of gigabytes. +# An integer and % (e.g. 50 %) - use a percentage of the amount of RAM. +# +# You can optionally install the compcache package to configure this setting +# via debconf and have userspace scripts to load and unload compcache. +# + +COMPCACHE_SIZE="" + +# +# NFS Section of the config. +# + +# +# BOOT: [ local | nfs ] +# +# local - Boot off of local media (harddrive, USB stick). +# +# nfs - Boot using an NFS drive as the root of the drive. +# + +BOOT=local + +# +# DEVICE: ... +# +# Specify the network interface, like eth0 +# + +DEVICE=eth0 + +# +# NFSROOT: [ auto | HOST:MOUNT ] +# + +NFSROOT=auto + diff --git a/old/initramfs-tools-OG/modules b/old/initramfs-tools-OG/modules new file mode 100644 index 0000000..484ef71 --- /dev/null +++ b/old/initramfs-tools-OG/modules @@ -0,0 +1,13 @@ +# List of modules that you want to include in your initramfs. +# +# Syntax: module_name [args ...] +# +# You must run update-initramfs(8) to effect this change. +# +# Examples: +# +# raid1 +# sd_mod +fbcon +vesafb +vga16b diff --git a/old/initramfs-tools-OG/scripts/og b/old/initramfs-tools-OG/scripts/og new file mode 100755 index 0000000..6408eda --- /dev/null +++ b/old/initramfs-tools-OG/scripts/og @@ -0,0 +1,140 @@ +# OpenGnsys Local filesystem mounting -*- shell-script -*- + +ogLinkBusybox () +{ +for n in `busybox | tail -19 | tr "," "\\n" | sed -e "s/ \|\t//"|grep .` ; do + ln -f /bin/busybox /bin/$n +done +ln -f /bin/busybox /bin/sh +} + +ogConfigureRamfs () +{ +mkdir -p /tmp/og2ndFStmp/ +touch /tmp/og2ndFStmp/modules.dep.temp +touch /tmp/og2ndFStmp/modules.dep +} + + +ogExportKernelParameters () +{ +GLOBAL="cat /proc/cmdline" +for i in `${GLOBAL}` +do + echo $i | grep "=" > /dev/null && export $i +done +} + +ogCheckPointBreak () +{ +# firstshell=0 SH para Arranque en modo depuracion para el cliente intrd +if [ "$firstshell" = "0" ] +then + echo "entrando en sh antes de configurar la red" + sh +fi + + if [ "$firstshell" = "1" ] +then + echo "entrando en sh despues de configurar la red" + sh +fi +# firstrunt=sh Arranque en modo depuracion para el cliente intrd +if [ "$firstrun" = "9" ] +then + sh +fi + +} + +ogLoadNetModule () +{ +#cargando netmodule +if [ -n "$netmodule" ] +then + echo "Cargando modulo de red $netmodule" + insmod `find /lib/modules/ -name ${netmodule}*` +fi +} + + +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=[:][,] + 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 +} + +ogConectROOTSERVER () +{ +echo Preparando conexión con el Repositorio \$ROOTSERVER \$BOOTMODE \$MOUNTOPTS + ## Montamos el resto de cosas necesarias + #printf "$MSG_MOUNTREPO\n" $BOOTMODE; + + mount -t nfs -onolock,ro $ROOTSERVER:/opt/opengnsys/client /opt/opengnsys; + mount -t nfs -o nolock $ROOTSERVER:/opt/opengnsys/log/clients /opt/opengnsys/log; + #mount -t nfs -o "\$MOUNTOPTS" \$SERVERNFS:/opt/opengnsys/images /opt/opengnsys/images; + #mount -t tmpfs none /opt/opengnsys/images -o size=5m +} + + + +# Parameter: Where to mount the filesystem +mountroot () +{ + [ "$quiet" != "y" ] && log_begin_msg "Running OpenGnsys /scripts/og-top" + 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 + + +ogConfigureRamfs +ogExportKernelParameters +ogCheckPointBreak +ogLoadNetModule + + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/og-premount" + run_scripts /scripts/og-premount + [ "$quiet" != "y" ] && log_end_msg + +configure_networking +ogGetROOTSERVER +ogCheckPointBreak + +ogConectROOTSERVER +# ogConectROOTMEDIA +ogCheckPointBreak + +set -a +trap "mount | grep loop && /opt/og2fs/bin/bash" 1 2 3 9 15 +/opt/opengnsys/etc/preinit/default.sh + + + + + + + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/og-bottom" + run_scripts /scripts/og-bottom + [ "$quiet" != "y" ] && log_end_msg +} diff --git a/old/initramfs-tools-OG/update-initramfs.conf b/old/initramfs-tools-OG/update-initramfs.conf new file mode 100644 index 0000000..3c27473 --- /dev/null +++ b/old/initramfs-tools-OG/update-initramfs.conf @@ -0,0 +1,20 @@ +# +# Configuration file for update-initramfs(8) +# + +# +# update_initramfs [ yes | all | no ] +# +# Default is yes +# If set to all update-initramfs will update all initramfs +# If set to no disables any update to initramfs beside kernel upgrade + +update_initramfs=yes + +# +# backup_initramfs [ yes | no ] +# +# Default is no +# If set to no leaves no .bak backup files. + +backup_initramfs=no diff --git a/old/ogClientFunctions b/old/ogClientFunctions new file mode 100755 index 0000000..8311cf3 --- /dev/null +++ b/old/ogClientFunctions @@ -0,0 +1,255 @@ +#!/bin/bash +#Definicion de variables +# TODO: Pendiente Definir directorio base del 2FS +OGBASEDIR=/var/lib/tftpboot/ogclient/ +OGFSFILE=${OGBASEDIR}ogclient.img +OGFSMOUNT=${OGBASEDIR}ogclientmount +OGLIB=/opt/opengnsys/client/lib +FSCLIENTSIZEMB=1000 +PASSROOT=og +SCRIPT=/root/configure.sh +RUNME=$OGFSMOUNT$SCRIPT +LASTDEBOOTSTRAP=http://archive.ubuntu.com/ubuntu/pool/main/d/debootstrap/debootstrap_1.0.20_all.deb +OGMUSTCOMPILE="http://www.informatica.us.es:8080/opengnsys/browser/trunk/client/engine/ToolsGNU.c?format=txt -O /root/ToolsGNU.c" +OGFSLABEL=ogClient + + + + +#/** +# ogClientMount [str_program] +#@brief Acceso al 2nd FS del cliente desde el Servidor Opengnsys +#@param 1 Opciona: scripts o programa a ejecutar para automatizaciones +#@return Si no hay parametros: login de acceso. +#@return con un parametro: La salida del programa ejecutado +#@exception +#@note +#@todo +#@version 0.9 - Primera versión para OpenGnSys +#@author Antonio J. Doblas Viso, Universidad de Málaga +#@date 2010/02/15 +#*/ ## +function ogClientMount () +{ +#TODO comprobar que OGFILE y OGFILEMOUNT existe. +mount $OGFSFILE $OGFSMOUNT -o loop +mount --bind /proc $OGFSMOUNT/proc +mount --bind /sys $OGFSMOUNT/sys +mount --bind /tmp $OGFSMOUNT/tmp +mount --bind /dev $OGFSMOUNT/dev +mount --bind /dev/pts $OGFSMOUNT/dev/pts +[ $# = 0 ] && $(chroot $OGFSMOUNT /sbin/getty 38400 `tty`) +[ $# = 1 ] && chroot $OGFSMOUNT $1 +} + +#/** +# ogClientUnmount +#@brief Desmonta el 2nd FS del cliente desde el Servidor Opengnsys +#@param +#@return +#@exception +#@note +#@todo +#@version 0.9 - Primera versión para OpenGnSys +#@author Antonio J. Doblas Viso, Universidad de Málaga +#@date 2010/02/15 +#*/ ## + +function ogClientUnmount () +{ +cd /tmp +umount -d -f -l $OGFSMOUNT/proc +umount -d -f -l $OGFSMOUNT/sys +umount -d -f -l $OGFSMOUNT/tmp +umount -d -f -l $OGFSMOUNT/dev +umount -d -f -l $OGFSMOUNT/dev/pts +umount -d -f -l $OGFSMOUNT +} + +function ogClientCheckVersion () +{ +#TODO: configurar la version lucid +#TODO: introducir un nuevo case para la vesion +case $1 in + jaunty|JAUNTY) + export OGVERSION=jaunty + exort OGRELEASE=2.6.28-11-generic + ;; + karmic|KARMIC) + export OGVERSION=karmic + export OGRELEASE=2.6.31-14-generic + ;; + lucid|LUCID) + export OGVERSION=lucid + export OGRELEASE=2.6.32-21-generic-pae + ;; +esac +echo $OGVERSION $OGRELEASE +} + + +#/** +# ogClientGenerator str_versionUbuntu str_release +#@brief Crea el 2nd FS del cliente desde el Servidor Opengnsys +#@param 1 Versión de ubuntu a generar, jaunty karmic +#@return +#@exception +#@note +#@todo +#@version 0.9 - Primera versión para OpenGnSys +#@author Antonio J. Doblas Viso, Universidad de Málaga +#@date 2010/02/15 +#*/ ## + +function ogClientGeneratorDebootstrap () +{ + +if [ $# != 2 ] +then +echo Debes introducir como argumento1: jaunty karmic lucid +echo Debes introducir como argumento2: la release +echo utiliza como entrada ogClientCheckVersion +return +fi + +OGVERSION=`echo $1` +OGRELEASE=`echo $2` +echo $OGVERSION $OGRELEASE +pause + +# instalamos el ultimo debotstrap para permitir instalar versiones superiores a nuestro sistema +apt-get install gdebi-core +wget $LASTDEBOOTSTRAP +gdebi -n debootstrap_1.0.20_all.deb + + +#Creamos el directorio donde montaremos el disco virtual +mkdir -p $OGFSMOUNT + +#Creamos el disco virtual con el filesystem del cliente. +dd if=/dev/zero of=$OGFSFILE bs=1048576 count=$FSCLIENTSIZEMB +mkfs.ext3 -b 4096 -L $OGFSLABEL $OGFSFILE -F + +#Montamos el dispositivo virtual en su punto de montaje. +mount $OGFSFILE $OGFSMOUNT -o loop + +#TODO Comprobar arquitectura +#Iniciamos la creación del sistema en el directorio de clientes. +echo debootstrap --include=linux-image-$OGRELEASE --arch=i386 --components=main,universe $OGVERSION $OGFSMOUNT http://es.archive.ubuntu.com/ubuntu/ +debootstrap --include=linux-image-$OGRELEASE --arch=i386 --components=main,universe $OGVERSION $OGFSMOUNT http://es.archive.ubuntu.com/ubuntu/ + + + +} + + +###### Funciones para los clientes offline +function agregarOG { +cd $NEWROOT +mkdir -p opt/opengnsys +cp -prv /opt/opengnsys/client/* $NEWROOT/opt/opengnsys +echo "agregando OG al newinitrd" +} + +function finalizarISO +{ + cd $ANTERIORPWD + mv $TMPINITRD/new-initrd.gz $DEST/initrdISO.gz + if [ $LINUX ] ; then + mv $TMPINITRD/linux $DEST/linuxISO + fi +} + + +function CrearISO { +mkdir -p tmp/iso/isolinux +#cd tmp/iso/ +cp -prv /usr/lib/syslinux/* tmp/iso/isolinux/ +cp -prv /usr/share/gpxe/* tmp/iso/isolinux/ +cp -prv /tmp/linux tmp/iso/isolinux/linuxISO +cp -prv /tmp/initrd.gz tmp/iso/isolinux/ +cp -prv /opt/opengnsys/client/og2ndFS tmp/iso/isolinux/ + + +cat << FIN > tmp/iso/isolinux/isolinux.cfg +DEFAULT menu.c32 +PROMPT 0 +ALLOWOPTIONS 1 + +MENU TITLE FuTuR3 Live Collection + +LABEL gpxe +MENU LABEL gpxe +KERNEL /clonezilla/live/vmlinuz1 +APPEND initrd=/clonezilla/live/initrd1.img boot=live union=aufs noswap vga=788 ip=frommedia + + +#default 0 +#prompt 1 +#timeout 100 + +#display mensaje.txt + +LABEL 0 +MENU LABEL ogClient +KERNEL linuxISO +APPEND initrd=initrd.gz ro vga=788 irqpoll acpi=on boot=admin status=offline + +LABEL 1 +MENU LABEL ogClient1 sin vga +KERNEL linuxISO +APPEND initrd=initrd.gz ro irqpoll acpi=on boot=admin status=offline + +LABEL 2 +MENU LABEL ogClient2 sin irqpoll +KERNEL linuxISO +APPEND initrd=initrd.gz ro acpi=on boot=admin status=offline + +LABEL 3 +MENU LABEL ogClient3 acpi=off +KERNEL linuxISO +APPEND initrd=initrd.gz ro acpi=off boot=admin status=offline + + +#LABEL ogclient +#KERNEL /ogclient/linuxISO +#APPEND initrd=/ogclient/initrdISO.img + +#KERNEL linuxISO +#APPEND initrd=initrdISO.img + +LABEL 4 +MENU LABEL local +localboot 0x80 +append - + + +label 5 +MENU LABEL Network boot via gPXE lkrn +KERNEL gpxe.lkrn + +label 5 +MENU LABEL Network boot via gPXE usb +KERNEL gpxe.usb + +label 5 +MENU LABEL Network boot via gPXE pxe +KERNEL gpxe.pxe + +label 5 +MENU LABEL Network boot via gPXE iso +KERNEL gpxe.iso +FIN +#### /tmp/iso# +mkisofs -V ogClient -o ogClient.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -J -no-emul-boot -boot-load-size 4 -boot-info-table tmp/iso + +} + +function probarISO { +#/tmp/iso +qemu -m 256 -boot d -cdrom ogClient.iso +} + + + + diff --git a/old/ogClientGenerator.sh b/old/ogClientGenerator.sh new file mode 100755 index 0000000..c7c654a --- /dev/null +++ b/old/ogClientGenerator.sh @@ -0,0 +1,306 @@ +#!/bin/bash +#@file ogClientGenerator.sh +#@brief Script generación del cliente OpenGnSys +#@warning +#@version 0.9 - +#@author Antonio J. Doblas Viso. +#@date 2010/05/24 +#*/ + + + +if [ $# -ne 1 ]; then + echo ": invalid number of parameters" + echo " host | lucid | karmic | jaunty | lenny | squeeze " + exit 1 +fi + + + +# Soo ejecutable por usuario root +if [ "$(whoami)" != 'root' ] +then + echo "ERROR: this program must run under root privileges!!" + exit 1 +fi + +# Comprobar si se ha descargado el paquete comprimido (USESVN=0) o sólo el instalador (USESVN=1). +PROGRAMDIR=$(readlink -e $(dirname "$0")) +if [ -d "$PROGRAMDIR/../installer" ]; then + USESVN=0 +else + USESVN=1 + SVN_URL=svn://www.informatica.us.es:3690/opengnsys/branches/ogClient + #directorio donde se almacenará el codigo temporalmente. + SVN_DIR="./opengnsys/installer/ogClient" +fi + +WORKDIR=/tmp/opengnsys_installer +mkdir -p $WORKDIR +INSTALL_TARGET=/opt/opengnsys +LOG_FILE=/tmp/opengnsys_installation.log + +############################################### +pushd $WORKDIR + + +source `dirname $0`/ogInstaller.lib + + +if [ "$1" == "host" ] +then + OSDISTRIB=$(lsb_release -i | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null + #OSCODENAME=$(lsb_release -c | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null + OSCODENAME=$(cat /etc/lsb-release | grep CODENAME | awk -F= '{print $NF}') + OGRELEASE=$(uname -a | awk '{print $3}') +else + OSCODENAME=`echo $1` + OGRELEASE=`ogClientGetRelease $OSCODENAME` +fi + + + +OGCLIENTBASEDIR=/var/lib/tftpboot/ogclient/ +OGCLIENTFILE=${OGCLIENTBASEDIR}ogclient.img +OGCLIENTMOUNT=${OGCLIENTBASEDIR}ogclientmount + +OGLIB=/opt/opengnsys/client/lib + + + +echoAndLog "OpenGnSys CLIENT installation begins at $(date)" + + +# Datos para la generación del cliente. +DEPENDENCIES=( debootstrap subversion schroot) + +## Actualizar repositorios +apt-get update +# Instalación de dependencias (paquetes de sistema operativo). +declare -a notinstalled +checkDependencies DEPENDENCIES notinstalled +if [ $? -ne 0 ]; then + installDependencies notinstalled + if [ $? -ne 0 ]; then + echoAndLog "Error while installing some dependeces, please verify your server installation before continue" + exit 1 + fi +fi + + + +# Si es necesario, descarga el repositorio especifico de la instalación del cliente +if [ $USESVN -eq 1 ]; then + #svnExportCode $SVN_URL + echo svn export "$SVN_URL" $SVN_DIR + #svn export "$SVN_URL" $SVN_DIR + #####debug boorrar el cp + #mkdir -p $SVN_DIR + #cp -prv /home/administrador/workspace/opengnsys/branches/ogClient/* $SVN_DIR + find $SVN_DIR/ -name .svn -type d -exec rm -fr {} \; 2>/dev/null + ###TODO si ya esta descargado da error ??? + ###if [ $? -ne 0 ]; then + ### errorAndLog "Error while getting code from svn" + ### exit 1 + ###fi +else + ln -fs "$(dirname $PROGRAMDIR)" opengnsys +fi + +#### Parseo de ficheros descargados del svn. +# parseamos del apt.source +if [ "$1" == host ] +then + cp /etc/apt/sources.list ${SVN_DIR}/clientstructure/etc/apt/sources.list +else + sed -e "s/OGVERSION/$OGVERSION/g" ${SVN_DIR}/clientstructure/etc/apt/sources.list.generic > ${SVN_DIR}/clientstructure/etc/apt/sources.list + #rm ${SVN_DIR}/clientstructure/etc/apt/sources.list.generic +fi +if [ $? -ne 0 ]; then + errorAndLog "parseando el fichero apt.source: ERROR" +else + echoAndLog "parseando el fichero apt.source: OK" +fi + +#parseamos el scripts de generación del initrd. +sed -e "s/OGRELEASE/$OGRELEASE/g" ${SVN_DIR}/clientstructure/root/GenerateInitrd.generic.sh > ${SVN_DIR}/clientstructure/root/GenerateInitrd.sh +#rm ${SVN_DIR}/clientstructure/root/GenerateInitrd.generic.sh +if [ $? -ne 0 ]; then + errorAndLog "parseando el fichero de cliente GenerateInitrd: ERROR" +else + echoAndLog "parseando el fichero de cliente GenerateInitrd: OK" +fi + + + +#damos permiso al directorio de scripts +chmod 775 ${SVN_DIR}/clientstructure/root/* +if [ $? -ne 0 ]; then + errorAndLog "Dando permisos de escritura al directorio de scrips para el cliente: ERROR" +else + echoAndLog "Dando permisos de escritura al directorio de scrips para el cliente: OK" +fi + + +#####PASO 1. Generamos el 2º sistema de archivos. +echo "generamos el sistema base con debootstrap" +if [ "$1" == host ] +then + echo ogClientGeneratorDebootstrap $OSCODENAME $OGRELEASE 2>&1 | tee -a $LOG_FILE +# ogClientGeneratorDebootstrap $OSCODENAME $OGRELEASE 2>&1 | tee -a $LOG_FILE +else + echo ogClientGeneratorDebootstrap $OSCODENAME $(ogClientGetRelease $OGVERSION) 2>&1 | tee -a $LOG_FILE + ogClientGeneratorDebootstrap $OSCODENAME $(ogClientGetRelease $OGVERSION) 2>&1 | tee -a $LOG_FILE +fi +if [ $? -ne 0 ]; then + errorAndLog "Generando 2nd FileSystem: ERROR" +else + echoAndLog "Generando 2nd FileSystem: OK" +fi + +########################################## + +cp /etc/schroot/schroot.conf /etc/schroot/schroot.conf.`getDateTime` +cat << EOF > /etc/schroot/schroot.conf +[IMGogclient] +type=loopback +file=/var/lib/tftpboot/ogclient/ogclient.img +description=ogclient ubuntu luc IMGi +priority=1 +users=root +groups=root +root-groups=root +mount-options=-o offset=32256 +root-users=root +[DIRogclient] +type=directory +directory=/var/lib/tftpboot/ogclient/ogclientmount +description=ogclient ubuntu lucid DIR +priority=2 +users=root +groups=root +root-groups=root +root-users=root +EOF + + + +####PASO 2 Insertamos datos en el 2º sistema de archivos +#2.1 montamos para insertar los ficheros necesarios. +mount | grep $OGCLIENTMOUNT || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256 +if [ $? -ne 0 ]; then + errorAndLog "Montando 2nd FileSystem Para Añadir elementos OG: ERROR" + exit 1 +else + echoAndLog "Montando 2nd FileSystem Para Añadir elementos OG: OK" +fi + +#2.2 copiamos la estrucutra descargada al fichero imagen. +echo "cp -prv ${SVN_DIR}/clientstructure/* $OGCLIENTMOUNT " +cp -prv ${SVN_DIR}/clientstructure/* $OGCLIENTMOUNT +if [ $? -ne 0 ]; then + errorAndLog "Copiando los elementos del cliente svn: ERROR" + exit 1 +else + echoAndLog "Copiando los elementos del cliente svn: OK" +fi + +#2.3 Copiamos algunas cosas del actual sistema - ver de que manera integrar los lib +# copiamos algunas cosas del nfsexport +echo "Linking fonts for browser1 $OGLIB" +mkdir -p $OGCLIENTMOUNT/usr/local/Trolltech/QtEmbedded-4.5.1/lib/ +cp -pr $OGLIB/fonts $OGCLIENTMOUNT/usr/local/Trolltech/QtEmbedded-4.5.1/lib/fonts +echo "Linking fonts for browser2 $OGLIB" +mkdir -p $OGCLIENTMOUNT/usr/local/QtEmbedded-4.6.2/lib/ +cp -pr $OGLIB/fonts $OGCLIENTMOUNT/usr/local/QtEmbedded-4.6.2/lib/fonts +echo "Coping pci.ids" +cp -pr $OGLIB/pci.ids $OGCLIENTMOUNT/etc +#copiamos el browser y el ogADMcline al bin +cp /opt/opengnsys/client/bin/browser $OGCLIENTMOUNT/bin +cp /opt/opengnsys/client/bin/ogAdmClient $OGCLIENTMOUNT/bin +if [ $? -ne 0 ]; then + errorAndLog "Copiando qt pci.ids fonts: ERROR" + exit 1 +else + echoAndLog "Copiando qt pci.ids fonts: OK" +fi + + +## final desmontamos. +mount | grep $OGCLIENTMOUNT && umount $OGCLIENTMOUNT +if [ $? -ne 0 ]; then + errorAndLog "Desmontando cliente : ERROR" + exit 1 +else + echoAndLog "desmontando cliente: OK" +fi + +################## Fin paso 2 + +popd + +######## instalamos software adicional. +#ogClientMount /root/InstallSoftware.sh 2>&1 | tee -a `echo $LOG_FILE` +cd / +schroot -c IMGogclient -- /root/InstallSoftware.sh 2>&1 | tee -a `echo $LOG_FILE` + +if [ $? -ne 0 ]; then + errorAndLog "Instalando sofware adicional OG : ERROR" + #exit 1 +else + echoAndLog "Instalando sofware adicional OG: OK" +fi +cd - + +#cd / +#schroot -c IMGogclient -- /root/CompileSoftware.sh +#cd - + +### configuracion hostname passroot securety +cd / +schroot -c IMGogclient -- /root/ConfFS.sh +cd - + +##2.4 claves ssh +sshkeys() +{ +##montamos +mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256 +##comprobamos clave rsa en el host,. +if [ ! -f /root/.ssh/id_rsa.pub ] +then + ssh-keygen -q -f /root/.ssh/id_rsa -N "" +fi +## copiamos ssh rsa del host al guest como authorized-key2 +rm ${OGCLIENTMOUNT}/root/.ssh/authorized-key2 +cat /root/.ssh/id_rsa.pub >> ${OGCLIENTMOUNT}/root/.ssh/authorized-key2 +#cat ${OGCLIENTMOUNT}/root/.ssh/id_rsa.pub >> ${OGCLIENTMOUNT}/root/.ssh/authorized-key2 +mount | grep $OGCLIENTMOUNT || umount $OGCLIENTMOUNT +} + +### Generamos el 1er sistema de archivos. +cd / +schroot -c IMGogclient -- /root/GenerateInitrd.sh +cp /tmp/*-${OGRELEASE} $OGCLIENTBASEDIR +cd - + + + +################## DEJAMOS FICHERO DE EJEMPLOS PARA: +#default +cat << FIN >> /var/lib/tftpboot/pxelinux.cfg/defaultNEWClient +LABEL pxe-${OGRELEASE} +KERNEL ogclient/vmlinuz-$OGRELEASE +APPEND initrd=ogclient/initrd.img-$OGRELEASE ip=dhcp ro boot=og vga=788 irqpoll acpi=on reposerver= +FIN +#/etc/hosts +echo "/var/lib/tftpboot *(ro,no_subtree_check,no_root_squash,sync)" > /etc/exportsNEWClient +/etc/init.d/nfs-kernel-server restart +##################################################################### + +# Mostrar sumario de la instalación e instrucciones de post-instalación. +installationSummary + +#rm -rf $WORKDIR +echoAndLog "OpenGnSys installation finished at $(date)" + diff --git a/old/ogFSHlnk/ModificacionesNecesiariasENGINE/Net.lib b/old/ogFSHlnk/ModificacionesNecesiariasENGINE/Net.lib new file mode 100755 index 0000000..14806b7 --- /dev/null +++ b/old/ogFSHlnk/ModificacionesNecesiariasENGINE/Net.lib @@ -0,0 +1,77 @@ +#!/bin/bash +#/** +#@file Net.lib +#@brief Librería o clase Net +#@class Net +#@brief Funciones básicas de red. +#@version 1.0 +#@warning License: GNU GPLv3+ +#*/ + + +#/** +# ogGetHostname +#@brief Muestra el nombre del cliente. +#@return str_host - nombre de máquina +#@version 1.0 - Integración en OpenGnSys 1.0 +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2010-02-11 +#*/ ## +function ogGetHostname () +{ +local HOST NETFILE +# Tomar nombre de la variable HOSTNAME +HOST="$HOSTNAME" + +# Si no, tomar del DHCP, opción host-name /* (comentario para Doxygen) +[ -z "$HOST" ] && HOST=$(awk -F\" '/option host-name/ {gsub(/;/,""); host=$2} + END {print host} + ' /var/lib/dhcp3/dhclient.leases) +# Si no, leer el parámetro del kernel hostname (comentario para Doxygen) */ +[ -z "$HOST" ] && HOST=$(awk 'BEGIN {RS=""; FS="="} + $1~/hostname/ {print $2}' /proc/cmdline) + +[ "$HOSTNAME" != "$HOST" ] && export HOSTNAME="$HOST" +echo $HOST +} + + +#/** +# ogGetIpAddress +#@brief Muestra la dirección IP del sistema +#@return str_ip - Dirección IP +#@version 1.0 - Integración en OpenGnSys 1.0 +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2010-02-11 +#*/ ## +function ogGetIpAddress () +{ +local IP +#Version og2ndFS +NETFILE="/tmp/net-eth0.conf" +[ -f "$NETFILE" ] && IP=$(cat $NETFILE | grep IPV4ADDR | cut -f2 -d=) + +# Obtener direcciones IP. /* (comentario para Doxygen) +[ -z "$IP" ] && IP=$(ip address show | awk '$2!~/lo/ { readline; if ($1~/inet$/) {sub (/\/.*/, ""); printf ("%s ", $2)}}') +# Mostrar sólo la primera. (comentario para Doxygen) */ +echo ${IP%% *} +} + + +#/** +# ogGetMacAddress +#@brief Muestra la dirección Ethernet del cliente. +#@return str_ether - Dirección Ethernet +#@version 1.0 - Integración en OpenGnSys 1.0 +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2010-02-11 +#*/ ## +function ogGetMacAddress () +{ +local MAC +# Obtener direcciones Ethernet. +MAC=$(ip address show | awk '$2!~/lo/ {readline; if ($1~/ether/) printf ("%s ", toupper($2));}') +# Mostrar sólo la primera. +echo ${MAC%% *} +} + diff --git a/old/ogFSHlnk/ModificacionesNecesiariasENGINE/readme b/old/ogFSHlnk/ModificacionesNecesiariasENGINE/readme new file mode 100644 index 0000000..853e37f --- /dev/null +++ b/old/ogFSHlnk/ModificacionesNecesiariasENGINE/readme @@ -0,0 +1,20 @@ +preinit/default + eliminamos enlace del bash + Ejecute solo el loadmodules del for + +preinit/loaenviron + comentamos el LD_PATH + + +/var/lib/tftboot/pxelinux.cfg/default +DEFAULT pxe2 +LABEL pxe +KERNEL linux +APPEND initrd=initrd.gz ip=dhcp ro vga=788 irqpoll acpi=on boot=admin +LABEL pxe2 +KERNEL vmlinuz-2.6.32-21-generic-pae +APPEND initrd=initrd-2.6.32-21-generic-pae ip=dhcp rootdelay=0 boot=og engine=testing rootmnt=/opt/og2fs vga=788 + + +parametro boot: reservado INCOMPATIBLE CON BOOT=ADMIN +temporalmente: init/default.sh => export boot=admin \ No newline at end of file diff --git a/old/ogFSHlnk/boot/default.sh b/old/ogFSHlnk/boot/default.sh new file mode 100755 index 0000000..e8c5b5d --- /dev/null +++ b/old/ogFSHlnk/boot/default.sh @@ -0,0 +1,23 @@ +#!/opt/opengnsys/bin/bash + +set -a + +OPENGNSYS=${OPENGNSYS:-/opt/opengnsys} +OGLOGFILE=${OGLOGFILE:-/var/log/opengnsys.log} +#### FIXME EN PRUEBAS +OGLOGFILE=/var/log/opengnsys.log + +/opt/opengnsys/etc/init/load2fs.sh +source /opt/opengnsys/etc/preinit/loadenviron.sh +export PATH=/opt/og2fs/bin:$PATH +export PATH=/opt/og2fs/sbin:$PATH +export PATH=$PATH:/opt/og2fs/opt/drbl/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin + +if [ -x "$OPENGNSYS/bin/ogAdmClient" ]; then + echo "$MSG_LAUNCHCLIENT" + $OPENGNSYS/bin/ogAdmClient -f $OPENGNSYS/etc/ogAdmClient.cfg -l $OGLOGFILE +fi + +bash +# FIXME Arranque Browser +#browser -qws $OGSTARTPAGE diff --git a/old/ogFSHlnk/boot/load2fs.sh b/old/ogFSHlnk/boot/load2fs.sh new file mode 100644 index 0000000..ca3e3be --- /dev/null +++ b/old/ogFSHlnk/boot/load2fs.sh @@ -0,0 +1,19 @@ +#!/bin/bash +#/** +#@file load2fs.sh +#@brief Script de carga del 2nd Sistema de Archivos para el cliente OpenGNSys. +#@warning License: GNU GPLv3+ +#@version 0.9 +#@author Antonio J. Doblas Viso, Unviersidad de Malaga. +#@date 2010-02-15 +#*/ +mkdir -p /opt/og2fs +mount /opt/opengnsys/og2ndFS /opt/og2fs -t ext3 -o loop -o ro +cp -R /opt/og2fs/etc/* /etc/ # */ +mount /opt/og2fs/usr /usr +mount /opt/og2fs/lib /lib +export PATH=/opt/og2fs/sbin:$PATH +export PATH=/opt/og2fs/bin:$PATH +export PATH=$PATH:/opt/og2fs/opt/drbl/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin + +# meter aqui el reboot del Boot.lib \ No newline at end of file diff --git a/old/ogFSHlnk/boot/ogFSHlnk-generatorV2.sh b/old/ogFSHlnk/boot/ogFSHlnk-generatorV2.sh new file mode 100755 index 0000000..e3505aa --- /dev/null +++ b/old/ogFSHlnk/boot/ogFSHlnk-generatorV2.sh @@ -0,0 +1,395 @@ +#!/bin/bash +#Definicion de variables +# TODO: Pendiente Definir directorio base del 2FS +OGBASEDIR=/opt/opengnsys/client/ +OGFSFILE=${OGBASEDIR}og2ndFS +OGFSMOUNT=${OGBASEDIR}ogfsmount +OGLIB=/opt/opengnsys/client/lib + + + + + +#/** +# ogFSHMount [str_program] +#@brief Acceso al 2nd FS del cliente desde el Servidor Opengnsys +#@param 1 Opciona: scripts o programa a ejecutar para automatizaciones +#@return Si no hay parametros: login de acceso. +#@return con un parametro: La salida del programa ejecutado +#@exception +#@note +#@todo +#@version 0.9 - Primera versión para OpenGnSys +#@author Antonio J. Doblas Viso, Universidad de Málaga +#@date 2010/02/15 +#*/ ## +function ogFSHMount () +{ +mount $OGFSFILE $OGFSMOUNT -t ext3 -o loop +mount --bind /proc $OGFSMOUNT/proc +mount --bind /sys $OGFSMOUNT/sys +mount --bind /tmp $OGFSMOUNT/tmp +mount --bind /dev $OGFSMOUNT/dev +mount --bind /dev/pts $OGFSMOUNT/dev/pts +[ $# = 0 ] && $(chroot $OGFSMOUNT /sbin/getty 38400 `tty`) +[ $# = 1 ] && chroot $OGFSMOUNT $1 +} + +#/** +# ogFSHUnmount +#@brief Desmonta el 2nd FS del cliente desde el Servidor Opengnsys +#@param +#@return +#@exception +#@note +#@todo +#@version 0.9 - Primera versión para OpenGnSys +#@author Antonio J. Doblas Viso, Universidad de Málaga +#@date 2010/02/15 +#*/ ## + +function ogFSHUnmount () +{ +cd /tmp +umount -d -f -l $OGFSMOUNT/proc +umount -d -f -l $OGFSMOUNT/sys +umount -d -f -l $OGFSMOUNT/tmp +umount -d -f -l $OGFSMOUNT/dev +umount -d -f -l $OGFSMOUNT/dev/pts +umount -d -f -l $OGFSMOUNT +} + + +#/** +# ogFSHCreate str_versionUbuntu +#@brief Crea el 2nd FS del cliente desde el Servidor Opengnsys +#@param 1 Versión de ubuntu a generar, jaunty karmic +#@return +#@exception +#@note +#@todo +#@version 0.9 - Primera versión para OpenGnSys +#@author Antonio J. Doblas Viso, Universidad de Málaga +#@date 2010/02/15 +#*/ ## + +function ogFSHCreate () +{ +#Definicion de variables. +local SCRIPT RUNME FSCLIENTSIZEMB PASSROOT LASTDEBOOTSTRAP OGMUSTCOMPILE OGFSLABEL +FSCLIENTSIZEMB=1000 +PASSROOT=og +SCRIPT=/root/configure.sh +RUNME=$OGFSMOUNT$SCRIPT +LASTDEBOOTSTRAP=http://archive.ubuntu.com/ubuntu/pool/main/d/debootstrap/debootstrap_1.0.20_all.deb +OGMUSTCOMPILE="http://www.informatica.us.es:8080/opengnsys/browser/trunk/client/engine/ToolsGNU.c?format=txt -O /root/ToolsGNU.c" +OGFSLABEL=og2FS +#TODO comprobar la compatibilidad del SO host + +if [ $# != 1 ] +then +echo Debes introducir como argumento: jaunty karmic lucid +return +fi + +#TODO: configurar la version lucid +#TODO: introducir un nuevo case para la vesion +case $1 in + jaunty|JAUNTY) + VERSION=jaunty + RELEASE=2.6.28-11-generic + ;; + karmic|KARMIC) + VERSION=karmic + RELEASE=2.6.31-14-generic + ;; + lucid|LUCID) + VERSION=lucid + #RELEASE=2.6.32-19-generic + RELEASE=2.6.32-21-generic-pae + ;; +esac + +# instalamos el ultimo debotstrap para permitir instalar versiones superiores a nuestro sistema +apt-get install gdebi-core +wget $LASTDEBOOTSTRAP +gdebi -n debootstrap_1.0.20_all.deb + +#Creamos el disco virtual con el filesystem del cliente. +dd if=/dev/zero of=$OGFSFILE bs=1048576 count=$FSCLIENTSIZEMB +mkfs.ext3 -b 4096 -L $OGFSLABEL $OGFSFILE -F +#Creamos el directorio donde montaremos el disco virtual +mkdir -p $OGFSMOUNT +#Montamos el dispositivo virtual en su punto de montaje. +mount $OGFSFILE $OGFSMOUNT -t ext3 -o loop + +#TODO Comprobar arquitectura +#Iniciamos la creación del sistema en el directorio de clientes. +echo debootstrap --include=linux-image-$RELEASE --arch=i386 --components=main,universe $VERSION $OGFSMOUNT http://es.archive.ubuntu.com/ubuntu/ +debootstrap --include=linux-image-$RELEASE --arch=i386 --components=main,universe $VERSION $OGFSMOUNT http://es.archive.ubuntu.com/ubuntu/ + +# preparamos el etc.sources. +cat << FIN > ${OGFSMOUNT}/etc/apt/sources.list +deb http://es.archive.ubuntu.com/ubuntu/ $VERSION main restricted +deb-src http://es.archive.ubuntu.com/ubuntu/ $VERSION main restricted +## Major bug fix updates produced after the final release of the +## distribution. +deb http://es.archive.ubuntu.com/ubuntu/ $VERSION-updates main restricted +deb-src http://es.archive.ubuntu.com/ubuntu/ $VERSION-updates main restricted +## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu +## team. Also, please note that software in universe WILL NOT receive any +## review or updates from the Ubuntu security team. +deb http://es.archive.ubuntu.com/ubuntu/ $VERSION universe +deb-src http://es.archive.ubuntu.com/ubuntu/ $VERSION universe +deb http://es.archive.ubuntu.com/ubuntu/ $VERSION-updates universe +deb-src http://es.archive.ubuntu.com/ubuntu/ $VERSION-updates universe + +## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu +## team, and may not be under a free licence. Please satisfy yourself as to +## your rights to use the software. Also, please note that software in +## multiverse WILL NOT receive any review or updates from the Ubuntu +## security team. +deb http://es.archive.ubuntu.com/ubuntu/ $VERSION multiverse +deb-src http://es.archive.ubuntu.com/ubuntu/ $VERSION multiverse +deb http://es.archive.ubuntu.com/ubuntu/ $VERSION-updates multiverse +deb-src http://es.archive.ubuntu.com/ubuntu/ $VERSION-updates multiverse + +## Uncomment the following two lines to add software from the 'backports' +## repository. +## N.B. software from this repository may not have been tested as +## extensively as that contained in the main release, although it includes +## newer versions of some applications which may provide useful features. +## Also, please note that software in backports WILL NOT receive any review +## or updates from the Ubuntu security team. +# deb http://es.archive.ubuntu.com/ubuntu/ $VERSION-backports main restricted universe multiverse +# deb-src http://es.archive.ubuntu.com/ubuntu/ $VERSION-backports main restricted universe multiverse + +## Uncomment the following two lines to add software from Canonical's +## 'partner' repository. +## This software is not part of Ubuntu, but is offered by Canonical and the +## respective vendors as a service to Ubuntu users. +# deb http://archive.canonical.com/ubuntu $VERSION partner +# deb-src http://archive.canonical.com/ubuntu $VERSION partner + + +deb http://security.ubuntu.com/ubuntu $VERSION-security main restricted +deb-src http://security.ubuntu.com/ubuntu $VERSION-security main restricted +deb http://security.ubuntu.com/ubuntu $VERSION-security universe +deb-src http://security.ubuntu.com/ubuntu $VERSION-security universe +deb http://security.ubuntu.com/ubuntu $VERSION-security multiverse +deb-src http://security.ubuntu.com/ubuntu $VERSION-security multiverse + + +deb http://archive.ubuntu.com/ubuntu $VERSION main +deb http://free.nchc.org.tw/drbl-core drbl stable +deb http://free.nchc.org.tw/ubuntu $VERSION-security main restricted universe multiverse +deb http://ppa.launchpad.net/freenx-team/ubuntu/ $VERSION main +deb http://ppa.launchpad.net/randomaction/ppa/ubuntu $VERSION main +deb-src http://ppa.launchpad.net/randomaction/ppa/ubuntu $VERSION main +FIN + +#TODO: fichero etc/hosts +#TODO: fichero etc/resolv.conf +echo "2ndFSHclient" > ${OGFSMOUNT}/etc/hostname +#TODO: introducir mas consoluas para el acceso como root. +echo "pts/0" >> ${OGFSMOUNT}/etc/securetty +echo "pts/1" >> ${OGFSMOUNT}/etc/securetty +echo "pts/2" >> ${OGFSMOUNT}/etc/securetty +echo "pts/3" >> ${OGFSMOUNT}/etc/securetty + +# copiamos algunas cosas del nfsexport +echo "Linking fonts for browser1 $OGLIB" +mkdir -p $OGFSMOUNT/usr/local/Trolltech/QtEmbedded-4.5.1/lib/ +cp -pr $OGLIB/fonts $OGFSMOUNT/usr/local/Trolltech/QtEmbedded-4.5.1/lib/fonts + +echo "Linking fonts for browser2 $OGLIB" +mkdir -p $OGFSMOUNT/usr/local/QtEmbedded-4.6.2/lib/ +cp -pr $OGLIB/fonts $OGFSMOUNT/usr/local/QtEmbedded-4.6.2/lib/fonts + +echo "Coping pci.ids" +cp -pr $OGLIB/pci.ids $OGFSMOUNT/etc + +# Guión de ejecución y personalización final. +cat << FIN > $RUNME +#!/bin/bash +################################################################ +##################### SOFTWARE ##################### +################################################################ +export LANGUAGE=C +export LC_ALL=C +export LANG=C + +dpkg-divert --local --rename --add /sbin/initctl +ln -s /bin/true /sbin/initctl + + +apt-get -y update + +# software system +apt-get -y --force-yes install linux-image-$RELEASE wget dialog man-db htop +# +# software to compile code +apt-get -y --force-yes install build-essential libattr* attr make m4 gettext libmhash-dev gdebi-core gawk +wget $OGMUSTCOMPILE +source /root/ToolsGNU.c +# +# sofware networking +apt-get -y --force-yes install netpipes nfs-common sshfs smbfs smbclient davfs2 +ctorrent install +udpcast install +# +# software services +apt-get -y --force-yes install openssh-server bittornado trickle +# +# software disk and filesystem +apt-get -y --force-yes install drbl-ntfsprogs ntfsprogs parted +apt-get -y --force-yes install dmraid dmsetup mdadm lvm2 e2fsprogs jfsutils reiserfsprogs xfsprogs unionfs-fuse mhddfs squashfs-tools +ntfs-3g install +# +# software cloning +apt-get -y --force-yes install drbl-partimage fsarchiver pv kexec-tools +wget -O partclone_0.2.8_i386.deb http://downloads.sourceforge.net/project/partclone/stable/0.2.8/partclone_0.2.8_i386.deb?use_mirror=ovh +gdebi -n partclone_0.2.8_i386.deb +mbuffer install +# +## software postconf +apt-get -y --force-yes install drbl-chntpw chntpw ethtool lshw gawk +ms-sys install +# +# software compressor +apt-get -y --force-yes install lzma zip unzip gzip lzop drbl-lzop + +apt-get -y --force-yes remove busybox +apt-get -y --force-yes install busybox-static bash-static +# +#################################################################### +###################### Preparando el entorno ###################### +################################################################### +mkdir -p /var/lock +dpkg-reconfigure passwd +echo "root:$PASSROOT" | chpasswd +mv /etc/fstab /etc/fstab.original 2>/dev/null +mv /etc/mtab /etc/mtab.original 2>/dev/null +FIN + +chmod +x $RUNME + +#chroot hacia el punto de montaje. +ogFSHMount $SCRIPT +### Desmontamos y salimos. +ogFSHUnmount 2>/dev/null +ogFSHUnmount 2>/dev/null +ogFSHUnmount 2>/dev/null +} + + +###### Funciones para los clientes offline +function agregarOG { +cd $NEWROOT +mkdir -p opt/opengnsys +cp -prv /opt/opengnsys/client/* $NEWROOT/opt/opengnsys +echo "agregando OG al newinitrd" +} + +function finalizarISO +{ + cd $ANTERIORPWD + mv $TMPINITRD/new-initrd.gz $DEST/initrdISO.gz + if [ $LINUX ] ; then + mv $TMPINITRD/linux $DEST/linuxISO + fi +} + + +function CrearISO { +mkdir -p tmp/iso/isolinux +#cd tmp/iso/ +cp -prv /usr/lib/syslinux/* tmp/iso/isolinux/ +cp -prv /usr/share/gpxe/* tmp/iso/isolinux/ +cp -prv /tmp/linux tmp/iso/isolinux/linuxISO +cp -prv /tmp/initrd.gz tmp/iso/isolinux/ +cp -prv /opt/opengnsys/client/og2ndFS tmp/iso/isolinux/ + + +cat << FIN > tmp/iso/isolinux/isolinux.cfg +DEFAULT menu.c32 +PROMPT 0 +ALLOWOPTIONS 1 + +MENU TITLE FuTuR3 Live Collection + +LABEL gpxe +MENU LABEL gpxe +KERNEL /clonezilla/live/vmlinuz1 +APPEND initrd=/clonezilla/live/initrd1.img boot=live union=aufs noswap vga=788 ip=frommedia + + +#default 0 +#prompt 1 +#timeout 100 + +#display mensaje.txt + +LABEL 0 +MENU LABEL ogClient +KERNEL linuxISO +APPEND initrd=initrd.gz ro vga=788 irqpoll acpi=on boot=admin status=offline + +LABEL 1 +MENU LABEL ogClient1 sin vga +KERNEL linuxISO +APPEND initrd=initrd.gz ro irqpoll acpi=on boot=admin status=offline + +LABEL 2 +MENU LABEL ogClient2 sin irqpoll +KERNEL linuxISO +APPEND initrd=initrd.gz ro acpi=on boot=admin status=offline + +LABEL 3 +MENU LABEL ogClient3 acpi=off +KERNEL linuxISO +APPEND initrd=initrd.gz ro acpi=off boot=admin status=offline + + +#LABEL ogclient +#KERNEL /ogclient/linuxISO +#APPEND initrd=/ogclient/initrdISO.img + +#KERNEL linuxISO +#APPEND initrd=initrdISO.img + +LABEL 4 +MENU LABEL local +localboot 0x80 +append - + + +label 5 +MENU LABEL Network boot via gPXE lkrn +KERNEL gpxe.lkrn + +label 5 +MENU LABEL Network boot via gPXE usb +KERNEL gpxe.usb + +label 5 +MENU LABEL Network boot via gPXE pxe +KERNEL gpxe.pxe + +label 5 +MENU LABEL Network boot via gPXE iso +KERNEL gpxe.iso +FIN +#### /tmp/iso# +mkisofs -V ogClient -o ogClient.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table tmp/iso + +} + +function probarISO { +#/tmp/iso +qemu -m 256 -boot d -cdrom ogClient.iso +} + + + + diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/antonio/rcog b/old/ogFSHlnk/initramfs-tools-OG-unionfs/antonio/rcog new file mode 100644 index 0000000..d93f0b4 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/antonio/rcog @@ -0,0 +1,137 @@ +#/bin/sh + +ogConfigureRamfs () +{ +mkdir -p /tmp/og2ndFStmp/ +touch /tmp/og2ndFStmp/modules.dep.temp +touch /tmp/og2ndFStmp/modules.dep +} + + +ogExportKernelParameters () +{ +GLOBAL="cat /proc/cmdline" +for i in `${GLOBAL}` +do + echo $i | grep "=" > /dev/null && export $i +done +} + +ogCheckPointBreak () +{ +# firstshell=0 SH para Arranque en modo depuracion para el cliente intrd +if [ "$firstshell" = "0" ] +then + echo "entrando en sh antes de configurar la red" + sh +fi + + if [ "$firstshell" = "1" ] +then + echo "entrando en sh despues de configurar la red" + sh +fi +# firstrunt=sh Arranque en modo depuracion para el cliente intrd +if [ "$firstrun" = "9" ] +then + sh +fi + +} + +ogLoadNetModule () +{ +#cargando netmodule +if [ -n "$netmodule" ] +then + echo "Cargando modulo de red $netmodule" + insmod `find /lib/modules/ -name ${netmodule}*` +fi +} + + +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=[:][,] + 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 +} + +ogConectROOTSERVER () +{ +echo Preparando conexión con el Repositorio \$ROOTSERVER \$BOOTMODE \$MOUNTOPTS + ## Montamos el resto de cosas necesarias + #printf "$MSG_MOUNTREPO\n" $BOOTMODE; + + #mount -t nfs -onolock,ro + nfsmount -o nolock,ro $ROOTSERVER:/opt/opengnsys/client /opt/opengnsys; + #mount -t nfs -o nolock + nfsmount -o nolock $ROOTSERVER:/opt/opengnsys/log/clients /opt/opengnsys/log; + #mount -t nfs -o "\$MOUNTOPTS" \$SERVERNFS:/opt/opengnsys/images /opt/opengnsys/images; + #mount -t tmpfs none /opt/opengnsys/images -o size=5m +} + + + +# Parameter: Where to mount the filesystem +mountroot () +{ + [ "$quiet" != "y" ] && log_begin_msg "Running OpenGnsys /scripts/og-top" + 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 + + +ogConfigureRamfs +ogExportKernelParameters +ogCheckPointBreak +ogLoadNetModule + + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/og-premount" + run_scripts /scripts/og-premount + [ "$quiet" != "y" ] && log_end_msg + +. /scripts/functions +configure_networking +ogGetROOTSERVER +ogCheckPointBreak + +ogConectROOTSERVER +# ogConectROOTMEDIA +ogCheckPointBreak + + +mkdir -p /opt/og2fs +mount /opt/opengnsys/og2ndFS /opt/og2fs -o loop -o ro +cp -R /opt/og2fs/etc/* /etc/ # */ +mount /opt/og2fs/usr /usr +mount /opt/og2fs/lib /lib +mount /opt/og2fs/bin /bin +mount /opt/og2fs/sbin /sbin +unset PATH +export PATH=/opt/og2fs/sbin +export PATH=/opt/og2fs/bin:$PATH +export PATH=/opt/og2fs/sbin:$PATH +export PATH=$PATH:/opt/og2fs/opt/drbl/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin +} +mountroot diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/conf.d/resume b/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/conf.d/resume new file mode 100644 index 0000000..e4c89d1 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/conf.d/resume @@ -0,0 +1 @@ +RESUME=UUID=e8ea296e-815a-44d5-be24-b51d6b6fce4d diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/hooks/oghooks b/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/hooks/oghooks new file mode 100755 index 0000000..d495d15 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/hooks/oghooks @@ -0,0 +1,43 @@ +#!/bin/sh -e +# initramfs hook for OpenGnsys + + +PREREQ="og" + +# Output pre-requisites +prereqs() +{ + echo "$PREREQ" +} + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + + +. /usr/share/initramfs-tools/hook-functions + +mkdir -p ${DESTDIR}/scripts/og-top +mkdir -p ${DESTDIR}/scripts/og-premount +mkdir -p ${DESTDIR}/scripts/og-bottom +mkdir -p ${DESTDIR}/mnt/ +mkdir -p ${DESTDIR}/net/ +mkdir -p ${DESTDIR}/usr +mkdir -p ${DESTDIR}/var/lock +mkdir -p ${DESTDIR}/var/log +mkdir -p ${DESTDIR}/opt/opengnsys; + +# Insert basic binaries +copy_exec /bin/bash-static /bin/bash +copy_exec /usr/bin/unionfs-fuse + + + +# Insert OpenGnsys Engine +#mkdir -p ${DESTDIR}/opt/opengnsys/lib/engine +#cp -prv /opt/opengnsys/client/lib/engine ${DESTDIR}/opt/opengnsys/lib/engine + + diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/initramfs.conf b/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/initramfs.conf new file mode 100644 index 0000000..754e2be --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/initramfs.conf @@ -0,0 +1,72 @@ +# +# initramfs.conf +# Configuration file for mkinitramfs(8). See initramfs.conf(5). +# + +# +# MODULES: [ most | netboot | dep | list ] +# +# most - Add all framebuffer, acpi, filesystem, and harddrive drivers. +# +# dep - Try and guess which modules to load. +# +# netboot - Add the base modules, network modules, but skip block devices. +# +# list - Only include modules from the 'additional modules' list +# + +MODULES=most + +# +# BUSYBOX: [ y | n ] +# +# Use busybox if available. +# + +BUSYBOX=y + +# +# COMPCACHE_SIZE: [ "x K" | "x M" | "x G" | "x %" ] +# +# Amount of RAM to use for RAM-based compressed swap space. +# +# An empty value - compcache isn't used, or added to the initramfs at all. +# An integer and K (e.g. 65536 K) - use a number of kilobytes. +# An integer and M (e.g. 256 M) - use a number of megabytes. +# An integer and G (e.g. 1 G) - use a number of gigabytes. +# An integer and % (e.g. 50 %) - use a percentage of the amount of RAM. +# +# You can optionally install the compcache package to configure this setting +# via debconf and have userspace scripts to load and unload compcache. +# + +COMPCACHE_SIZE="" + +# +# NFS Section of the config. +# + +# +# BOOT: [ local | nfs ] +# +# local - Boot off of local media (harddrive, USB stick). +# +# nfs - Boot using an NFS drive as the root of the drive. +# + +BOOT=local + +# +# DEVICE: ... +# +# Specify the network interface, like eth0 +# + +DEVICE=eth0 + +# +# NFSROOT: [ auto | HOST:MOUNT ] +# + +NFSROOT=auto + diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/modules b/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/modules new file mode 100644 index 0000000..8bac1d4 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/modules @@ -0,0 +1,14 @@ +# List of modules that you want to include in your initramfs. +# +# Syntax: module_name [args ...] +# +# You must run update-initramfs(8) to effect this change. +# +# Examples: +# +# raid1 +# sd_mod +vga16b +vesafb +fbcon + diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/scripts/og b/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/scripts/og new file mode 100755 index 0000000..12c39a5 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/scripts/og @@ -0,0 +1,194 @@ +# OpenGnsys Local filesystem mounting -*- shell-script -*- + + +ogLinkBusybox () +{ +for n in `busybox | tail -19 | tr "," "\\n" | sed -e "s/ \|\t//"|grep .` ; do + ln -f /bin/busybox /bin/$n +done +ln -f /bin/busybox /bin/sh +} + +ogConfigureRamfs () +{ +mkdir -p /tmp/og2ndFStmp/ +touch /tmp/og2ndFStmp/modules.dep.temp +touch /tmp/og2ndFStmp/modules.dep +} + + +ogExportKernelParameters () +{ +GLOBAL="cat /proc/cmdline" +for i in `${GLOBAL}` +do + echo $i | grep "=" > /dev/null && export $i +done +} + +ogCheckPointBreak () +{ +# firstshell=0 SH para Arranque en modo depuracion para el cliente intrd +if [ "$firstshell" = "0" ] +then + echo "entrando en sh antes de configurar la red" + sh +fi + + if [ "$firstshell" = "1" ] +then + echo "entrando en sh despues de configurar la red" + sh +fi +# firstrunt=sh Arranque en modo depuracion para el cliente intrd +if [ "$firstrun" = "9" ] +then + sh +fi + +} + +ogLoadNetModule () +{ +#cargando netmodule +if [ -n "$netmodule" ] +then + echo "Cargando modulo de red $netmodule" + insmod `find /lib/modules/ -name ${netmodule}*` +fi +} + + +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=[:][,] + 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 +} + +ogConectROOTSERVER () +{ +echo Preparando conexión con el Repositorio \$ROOTSERVER \$BOOTMODE \$MOUNTOPTS + ## Montamos el resto de cosas necesarias + #printf "$MSG_MOUNTREPO\n" $BOOTMODE; + nfsmount -o nolock,ro $ROOTSERVER:/opt/opengnsys/client /opt/opengnsys; + #mount -t nfs -onolock,ro $ROOTSERVER:/opt/opengnsys/client /opt/opengnsys; + nfsmount -o nolock $ROOTSERVER:/opt/opengnsys/log/clients /opt/opengnsys/log; + #mount -t nfs -o nolock $ROOTSERVER:/opt/opengnsys/log/clients /opt/opengnsys/log; + #mount -t nfs -o "\$MOUNTOPTS" \$SERVERNFS:/opt/opengnsys/images /opt/opengnsys/images; + #mount -t tmpfs none /opt/opengnsys/images -o size=5m +} + +unionmount() +{ +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 + #echo "creando mkdir -p /unionfs/host/$dir" + mkdir -p /unionfs/host/$dir + #echo "montando mount --bind /$dir /unionfs/host/$dir " + mount --bind /$dir /unionfs/host/$dir + ##########echo "creando mkdir -p /unionfs/union/$dir" + mkdir -p /unionfs/union/$dir + host="/unionfs/host/${dir}=RW" + common="/opt/og2fs/${dir}=RO" + #####echo " ejecuantdo $UBIN $FUSE_OPT $UNION_OPT ${host}:${common} /unionfs/union/$dir " + $UBIN $FUSE_OPT $UNION_OPT ${host}:${common} /unionfs/union/$dir + + mount --bind /unionfs/union/$dir /$dir +} + + +# Parameter: Where to mount the filesystem +mountroot () +{ + [ "$quiet" != "y" ] && log_begin_msg "Running OpenGnsys /scripts/og-top" + 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 + + +ogConfigureRamfs +ogExportKernelParameters +ogCheckPointBreak +ogLoadNetModule + + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/og-premount" + run_scripts /scripts/og-premount + [ "$quiet" != "y" ] && log_end_msg + +. /scripts/functions +configure_networking + +# for the portmapper we need localhost +ifconfig lo 127.0.0.1 +/etc/init.d/portmap start + +ogGetROOTSERVER +ogCheckPointBreak + +ogConectROOTSERVER +# ogConectROOTMEDIA +ogCheckPointBreak + + +mkdir -p /opt/og2fs +mount /opt/opengnsys/og2ndFS /opt/og2fs -o loop -o ro + +#mount -t tmpfs -o size=8192 tmpfs /unionfs +for i in etc; do + unionmount $i +done +# root var lib bin sbin usr +cat /proc/mounts > /etc/mtab + +#cp -R /opt/og2fs/etc/* /etc/ # */ +mount /opt/og2fs/usr /usr +mount /opt/og2fs/lib /lib +mount /opt/og2fs/bin /bin +mount /opt/og2fs/sbin /sbin +#export PATH=$PATH:/opt/og2fs/opt/drbl/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin +#chmod 777 /etc/rcog +##unset PATH +##export PATH=$PATH:/opt/og2fs/sbin +##export PATH=/opt/og2fs/bin:$PATH +##export PATH=/opt/og2fs/sbin:$PATH + + + + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/og-bottom" + run_scripts /scripts/og-bottom + [ "$quiet" != "y" ] && log_end_msg + + +#set -a +#trap "mount | grep loop && /opt/og2fs/bin/bash" 1 2 3 9 15 + +#/opt/opengnsys/etc/preinit/default.sh +echo "llamando a init desde scritps og" +exec init +} diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/update-initramfs.conf b/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/update-initramfs.conf new file mode 100644 index 0000000..3c27473 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/initramfs-tools-OG/update-initramfs.conf @@ -0,0 +1,20 @@ +# +# Configuration file for update-initramfs(8) +# + +# +# update_initramfs [ yes | all | no ] +# +# Default is yes +# If set to all update-initramfs will update all initramfs +# If set to no disables any update to initramfs beside kernel upgrade + +update_initramfs=yes + +# +# backup_initramfs [ yes | no ] +# +# Default is no +# If set to no leaves no .bak backup files. + +backup_initramfs=no diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/inittab b/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/inittab new file mode 100644 index 0000000..03e0c06 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/inittab @@ -0,0 +1,14 @@ +# This is run first except when booting in single-user mode +# +#::sysinit:/opt/opengnsys/etc/preinit/default.sh +# /bin/sh invocations on selected ttys +# +# Start an "askfirst" shell on the console (whatever that may be) +#::askfirst:/bin/sh +# Start an "askfirst" shell on /dev/tty2-4 +#tty1::respawn:/sbin/getty 38400 tty1 +tty1::respawn:/opt/opengnsys/etc/preinit/default.sh +tty2::respawn:/sbin/getty 38400 tty2 +tty3::respawn:/sbin/getty 38400 tty3 +tty4::respawn:/sbin/getty 38400 tty4 +tty5::respawn:/sbin/getty 38400 tty5 diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/modprobe.d/blacklist-framebuffer.conf b/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/modprobe.d/blacklist-framebuffer.conf new file mode 100644 index 0000000..8b047e4 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/etc/modprobe.d/blacklist-framebuffer.conf @@ -0,0 +1,30 @@ +# Framebuffer drivers are generally buggy and poorly-supported, and cause +# suspend failures, kernel panics and general mayhem. For this reason we +# never load them automatically. +blacklist aty128fb +blacklist atyfb +#blacklist radeonfb +blacklist cirrusfb +blacklist cyber2000fb +blacklist cyblafb +blacklist gx1fb +blacklist hgafb +blacklist i810fb +blacklist intelfb +blacklist kyrofb +blacklist lxfb +blacklist matroxfb_base +blacklist neofb +blacklist nvidiafb +blacklist pm2fb +blacklist rivafb +blacklist s1d13xxxfb +blacklist savagefb +blacklist sisfb +blacklist sstfb +blacklist tdfxfb +blacklist tridentfb +#blacklist vesafb +blacklist vfb +blacklist viafb +blacklist vt8623fb diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/bin/busybox b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/bin/busybox new file mode 100755 index 0000000..da2dc63 Binary files /dev/null and b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/bin/busybox differ diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/busybox b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/busybox new file mode 100755 index 0000000..d04890f Binary files /dev/null and b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/busybox differ diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/wait-for-root b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/wait-for-root new file mode 100755 index 0000000..aecb5e3 Binary files /dev/null and b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/lib/initramfs-tools/wait-for-root differ diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/hook-functions b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/hook-functions new file mode 100644 index 0000000..2610f79 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/hook-functions @@ -0,0 +1,461 @@ +# -*- shell-script -*- + +catenate_cpiogz() { + # Sanity check + if [ ! -e "${1}" ]; then + echo "W:catenate_cpiogz: arg1='${1}' does not exist." >&2 + return + fi + + cat "${1}" >>"${__TMPCPIOGZ}" +} + +force_load() +{ + manual_add_modules ${@} + echo "${@}" >>"${DESTDIR}/conf/modules" +} + +# Takes a file containing a list of modules to be added as an +# argument, figures out dependancies, and adds them. +# +# Input file syntax: +# +# # comment +# modprobe_module_name [args ...] +# [...] +# +add_modules_from_file() +{ + # Sanity check + if [ ! -e "${1}" ]; then + echo "W:add_modules_from_file: arg1='${1}' does not exist." >&2 + return + fi + + sed -e '/^#/d' ${1} | while read module rest; do + force_load "${module}" "${rest}" + done +} + +# Is this module available? +have_module() +{ + modprobe --set-version="${version}" --ignore-install \ + --show-depends "${1}" >/dev/null 2>&1 +} + +# Add dependent modules + eventual firmware +manual_add_modules() +{ + local mam_x firmwares firmware + + for mam_x in $(modprobe --set-version="${version}" --ignore-install \ + --show-depends "${1}" 2>/dev/null | awk '/^insmod/ { print $2 }'); do + # Prune duplicates + if [ -e "${DESTDIR}/${mam_x}" ]; then + continue + fi + + mkdir -p "${DESTDIR}/$(dirname "${mam_x}")" + ln -s "${mam_x}" "${DESTDIR}/$(dirname "${mam_x}")" + if [ "${verbose}" = "y" ]; then + echo "Adding module ${mam_x}" + fi + + # Add firmware files if necessary + firmwares=$(modinfo -F firmware "${mam_x}") + if [ -z "${firmwares}" ]; then + continue + fi + for firmware in $firmwares; do + if [ -e "${DESTDIR}/lib/firmware/${firmware}" ] \ + || [ -e "${DESTDIR}/lib/firmware/${version}/${firmware}" ]; then + continue + fi + + # Only print warning for missing fw of loaded module + # or forced loaded module + if [ ! -e "/lib/firmware/${firmware}" ] \ + && [ ! -e "/lib/firmware/${version}/${firmware}" ]; then + if grep -q "^$(basename "${mam_x}" .ko)[[:space:]]" \ + /proc/modules \ + || grep -q "^$(basename "${mam_x}" .ko)" \ + "${CONFDIR}/modules"; then + echo "W: Possible missing firmware /lib/firmware/${firmware} for module $(basename ${mam_x} .ko)" >&2 + fi + continue + fi + + if [ -e "/lib/firmware/${version}/${firmware}" ]; then + copy_exec "/lib/firmware/${version}/${firmware}" + else + copy_exec "/lib/firmware/${firmware}" + fi + if [ "${verbose}" = "y" ]; then + echo "Adding firmware ${firmware}" + fi + done + done +} + +# $1 is the source path (e.g. /usr/bin/time) +# $2 is the relative destination (e.g. /usr or /usr/time) +# +# The destination is interpreted in the same way "cp" would, meaning +# (assuming /bin is a directory): +# +# "copy_exec /usr/bin/time /bin" -> /bin/time +# "copy_exec /usr/bin/time /bin/mytime" -> /bin/mytime +# +# If $2 is left out, the same destination path as for the source arg will +# be used and directories will be created as needed, so: +# +# "copy_exec /usr/bin/time" -> /usr/bin/time +# +copy_exec() { + local source target destination final_destination x nonoptlib + local libname dirname + + source="${1}" + if [ -n "${2}" ]; then + target="${2}" + else + if [ ! -e "${DESTDIR}/$(dirname "${1}")" ]; then + mkdir -p "${DESTDIR}/$(dirname "${1}")" + fi + target="${1}" + fi + + if [ -d "${DESTDIR}/${target}" ]; then + destination="${target}/$(basename "${source}")" + else + destination="${target}" + fi + final_destination="${DESTDIR}/${destination}" + + if [ -L "$final_destination" ]; then + if [ $(readlink "${final_destination}") != "${source}" ]; then + echo "W:copy_exec: Not copying ${source} to \$DESTDIR${destination}, which is already a copy of $(readlink ${final_destination})" >&2 + return + fi + else + ln -s ${source} ${DESTDIR}/${destination} + if [ "${verbose}" = "y" ]; then + echo "Adding binary ${source}" + fi + fi + + # Copy the dependant libraries + for x in $(ldd ${source} 2>/dev/null | sed -e ' + /\//!d; + /linux-gate/d; + /=>/ {s/.*=>[[:blank:]]*\([^[:blank:]]*\).*/\1/}; + s/[[:blank:]]*\([^[:blank:]]*\) (.*)/\1/' 2>/dev/null); do + + # Try to use non-optimised libraries where possible. + # We assume that all HWCAP libraries will be in tls, + # sse2, vfp or neon + nonoptlib=$(echo "${x}" | sed -e 's#/lib/\(tls\|i686\|sse2\|neon\|vfp\).*/\(lib.*\)#/lib/\2#') + + if [ -e "${nonoptlib}" ]; then + x="${nonoptlib}" + fi + + libname=$(basename "${x}") + dirname=$(dirname "${x}") + + mkdir -p "${DESTDIR}/${dirname}" + if [ ! -e "${DESTDIR}/${dirname}/${libname}" ]; then + ln -s "${x}" "${DESTDIR}/${dirname}" + if [ "${verbose}" = "y" ]; then + echo "Adding library ${x}" + fi + fi + done +} + +# Copy entire subtrees to the initramfs +copy_modules_dir() +{ + local x_mod + + if ! [ -d "${MODULESDIR}/${1}" ]; then + return; + fi + if [ "${verbose}" = "y" ]; then + echo "Copying module directory ${1}" + fi + for x_mod in $(find "${MODULESDIR}/${1}" -name '*.ko' -print); do + manual_add_modules $(basename ${x_mod} .ko) + done +} + +# walk /sys for relevant modules +sys_walk_mod_add() +{ + local driver_path module + device_path="$1" + + while [ "${device_path}" != "/sys" ]; do + driver_path="$(readlink -f ${device_path}/driver)" + if [ -e "$driver_path" ]; then + module="$(basename $(readlink -f $driver_path))" + if [ -n "${module}" ]; then + force_load "${module}" + fi + fi + device_path="$(dirname ${device_path})" + done +} + +# walk /sys for relevant modalias +sys_walk_modalias() +{ + local device_path modalias + + device_path="$(dirname "${1}")" + device_path="$(dirname "${device_path}")" + if [ -e "${device_path}/modalias" ]; then + modalias=$(cat "${device_path}/modalias") + fi + + if [ -n "${modalias}" ]; then + force_load "${modalias}" + fi +} + +# find and only copy root relevant modules +dep_add_modules() +{ + local block minor root FSTYPE root_dev_path x + + # findout root block device + fstype + eval "$(mount | awk '/\/dev\// {if ($3 == "/") {print "root=" $1 "\nFSTYPE=" $5; exit}}')" + if [ "${root}" = "/dev/root" ] ; then + root="/dev/disk/by-uuid/"$(/sbin/blkid -s UUID -o value ${root}) 2>/dev/null + fi + root="$(readlink -f ${root})" + + # find out real rootfs on auto type + if [ "${FSTYPE}" = "auto" ]; then + eval "$(/usr/lib/klibc/bin/fstype ${root})" + fi + + # check that fstype rootfs recognition + if [ "${FSTYPE}" = "unknown" ]; then + echo "mkinitramfs: unknown fstype on root ${root}" + echo "mkinitramfs: workaround is MODULES=most" + echo "mkinitramfs: Error please report bug on initramfs-tools" + exit 1 + fi + + # Add rootfs + manual_add_modules "${FSTYPE}" + + # lvm luks root + if [ "${root#/dev/mapper/}" != "${root}" ]; then + minor=$((0x$(stat --format "%T" ${root}) % 256)) + block=$(ls -1 /sys/block/dm-${minor}/slaves | head -n 1) + if [ "${block#dm-}" != "${block}" ]; then + block=$(ls -1 /sys/block/${block}/slaves | head -n 1) + fi + block=${block%%[0-9]*} + # md root new naming scheme /dev/md/X + elif [ "${root#/dev/md/}" != "${root}" ]; then + root=${root#/dev/md/} + block=$(awk "/^md${root}/{print substr(\$5, 1, 3); exit}" \ + /proc/mdstat) + # md root /dev/mdX + elif [ "${root#/dev/md}" != "${root}" ]; then + root=${root#/dev/} + block=$(awk "/^${root}/{print substr(\$5, 1, 3); exit}" \ + /proc/mdstat) + # mmc always uses numbering in the devicename (mmcblk[0-9]) + elif [ "${root#/dev/mmc}" != "${root}" ]; then + block=${root#/dev/} + block=${block%%p[0-9]*} + # classical root device + else + block=${root#/dev/} + block=${block%%[0-9]*} + fi + + # Error out if /sys lack block dev + if [ -z "${block}" ] || [ ! -e /sys/block/${block} ]; then + echo "mkinitramfs: missing ${block} root ${root} /sys entry" + echo "mkinitramfs: workaround is MODULES=most" + echo "mkinitramfs: Error please report the bug" + exit 1 + fi + + # sys walk ATA + root_dev_path=$(readlink -f /sys/block/${block}/device) + sys_walk_mod_add ${root_dev_path} + + # catch old-style IDE + if [ -e /sys/bus/ide/devices/ ]; then + sys_walk_modalias ${root_dev_path} + manual_add_modules ide-disk + manual_add_modules ide-cd + fi + + if [ -e /sys/bus/scsi/devices/ ]; then + manual_add_modules sd_mod + fi + + if [ -e /sys/bus/i2o/devices/ ]; then + force_load i2o_block + force_load i2o_config + fi + + if [ -e /sys/bus/ps3_system_bus/ ]; then + for x in ps3disk ps3rom ps3-gelic ps3_sys_manager; do + manual_add_modules "${x}" + done + fi + + if [ -e /sys/bus/vio/ ]; then + for x in sunvnet sunvdc; do + manual_add_modules "${x}" + done + fi +} + + +# The modules "most" classes added per default to the initramfs +auto_add_modules() +{ + case "$1" in + base) + for x in ehci-hcd ohci-hcd uhci-hcd usbhid hid_a4tech \ + hid_apple hid_belkin hid_bright hid_cherry hid_chicony \ + hid_cypress hid_dell hid_ezkey hid_gyration hid_logitech \ + hid_microsoft hid_monterey hid_petalynx hid_pl hid_samsung \ + hid_sony hid_sunplus hid_tmff hid_zpff usb-storage ext2 \ + ext3 ext4 isofs jfs nfs reiserfs udf xfs af_packet atkbd i8042 \ + virtio_pci vfat nls_cp437 nls_iso8859-1; do + manual_add_modules "${x}" + done + ;; + net) + for x in 3c59x 8139cp 8139too 8390 atl1 atl1e b44 bmac \ + cxgb3 defxx dl2k e100 e1000 e1000e ehea epic100 \ + ep93xx_eth eql fealnx famachi forcedeth gelic_net \ + hp100 igb ipg mace mv643xx_eth myri10ge \ + natsemi ne2k-pci netconsole niu ns83820 pcnet32 qla3xxx \ + r8169 s2io sis900 skge sky2 slhc smc911x starfire \ + sundance sungem sungem_phy sunhme sunvnet tg3 tlan de2104x \ + de4x5 dmfe tulip winbond-840 xircom_cb xircom_tulip_cb \ + typhon via-rhine via-velocity virtio_net yellowfin; do + manual_add_modules "${x}" + done + ;; + ide) + copy_modules_dir kernel/drivers/ide + ;; + scsi) + copy_modules_dir kernel/drivers/scsi + for x in mptfc mptsas mptscsih mptspi; do + manual_add_modules "${x}" + done + ;; + ata) + copy_modules_dir kernel/drivers/ata + ;; + block) + copy_modules_dir kernel/drivers/block + copy_modules_dir kernel/drivers/usb/storage + ;; + # FIXME: can be removed after Lenny release + ieee1394) + for x in ohci1394 sbp2; do + manual_add_modules "${x}" + done + ;; + firewire) + for x in firewire-ohci firewire-sbp2; do + manual_add_modules "${x}" + done + ;; + i2o) + for x in i2o_block; do + manual_add_modules "${x}" + done + ;; + dasd) + for x in dasd_eckd_mod dasd_fba_mod; do + manual_add_modules "${x}" + done + ;; + *) + auto_add_modules base + auto_add_modules net + auto_add_modules ide + auto_add_modules scsi + auto_add_modules block + auto_add_modules ata + auto_add_modules i2o + auto_add_modules dasd + auto_add_modules ieee1394 + auto_add_modules firewire + ;; + esac +} + +usage() +{ + cat >&2 << EOF + +Usage: ${0} [OPTION]... <-o outfile> [version] + +Options: + -d confdir Specify an alternative configuration directory. + -k Keep temporary directory used to make the image. + -o outfile Write to outfile. + -r root Override ROOT setting in mkinitrd.conf. + +See mkinitramfs(8) for further details. +EOF + exit 1 + +} + +# minimal supported kernel version +check_minkver() +{ + local curversion initdir DPKG_ARCH minversion cm_x tmp + + curversion="${1}" + initdir="${2}" + if [ -z "${initdir}" ]; then + DPKG_ARCH=$(dpkg --print-architecture) + case ${DPKG_ARCH} in + ia64|hppa) + minversion="2.6.15" + ;; + *) + minversion="2.6.12" + ;; + esac + if dpkg --compare-versions "${curversion}" lt "${minversion}"; then + echo "W: kernel ${curversion} too old for initramfs on ${DPKG_ARCH}" >&2 + echo "W: not generating requested initramfs for kernel ${curversion}" >&2 + exit 2 + fi + return 0 + fi + set_initlist + for cm_x in ${initlist}; do + # sed: keep last line starting with MINKVER=, + # remove MINKVER= and trailing space + minver=$(sed '/^MINKVER=/!d;$!d;s/^MINKVER=//;s/[[:space:]]*$//' "${initdir}/${cm_x}") + if [ -z "${tmp}" ]; then + continue + elif dpkg --compare-versions "${curversion}" lt "${minver}"; then + echo "W: ${cm_x} hook script requires at least kernel version ${minver}" >&2 + echo "W: not generating requested initramfs for kernel ${curversion}" >&2 + exit 2 + fi + done +} diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/hooks/compcache b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/hooks/compcache new file mode 100755 index 0000000..37fdd22 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/hooks/compcache @@ -0,0 +1,95 @@ +#!/bin/sh +set -e + +if [ "$1" = prereqs ]; then + exit 0 +fi + +. /usr/share/initramfs-tools/hook-functions + +number= +suffix= +eval $(printf "%s" "$COMPCACHE_SIZE" | \ + sed -nre 's/^ *([1-9][0-9]*) *([%KMGT]) *$/number="\1"; suffix="\2";/p') + +if [ -z "$number" ] || [ -z "$suffix" ]; then + exit 0 +fi + +if have_module ramzswap; then + name=ramzswap + manual_add_modules ramzswap +elif have_module compcache; then + name=compcache + manual_add_modules compcache +else + exit 0 +fi + +copy_exec /sbin/swapon + +mkdir -p "$DESTDIR"/etc/udev/rules.d +cat >"$DESTDIR"/etc/udev/rules.d/80-compcache.rules <"$DESTDIR"/scripts/init-top/compcache <>"$DESTDIR"/scripts/init-top/compcache <>"$DESTDIR"/scripts/init-top/compcache <' /proc/cmdline || echo "Loading, please wait..." + +# Note that this only becomes /dev on the real filesystem if udev's scripts +# are used; which they will be, but it's worth pointing out +if ! mount -t devtmpfs -o mode=0755 none /dev; then + mount -t tmpfs -o mode=0755 none /dev + mknod -m 0600 /dev/console c 5 1 + mknod /dev/null c 1 3 +fi +mkdir /dev/pts +mount -t devpts -o noexec,nosuid,gid=5,mode=0620 none /dev/pts || true +> /dev/.initramfs-tools +mkdir /dev/.initramfs + +# Export the dpkg architecture +export DPKG_ARCH= +. /conf/arch.conf + +# Set modprobe env +export MODPROBE_OPTIONS="-qb" + +# Export relevant variables +export ROOT= +export ROOTDELAY= +export ROOTFLAGS= +export ROOTFSTYPE= +export IPOPTS= +export HWADDR= +export break= +export init=/sbin/init +export quiet=n +export readonly=y +export rootmnt=/root +export debug= +export panic= +export blacklist= +export resume_offset= + +# Bring in the main config +. /conf/initramfs.conf +for conf in conf/conf.d/*; do + [ -f ${conf} ] && . ${conf} +done +. /scripts/functions + +# Parse command line options +for x in $(cat /proc/cmdline); do + case $x in + init=*) + init=${x#init=} + ;; + root=*) + ROOT=${x#root=} + case $ROOT in + LABEL=*) + ROOT="${ROOT#LABEL=}" + + # support / in LABEL= paths (escape to \x2f) + case "${ROOT}" in + *[/]*) + if [ -x "$(command -v sed)" ]; then + ROOT="$(echo ${ROOT} | sed 's,/,\\x2f,g')" + else + if [ "${ROOT}" != "${ROOT#/}" ]; then + ROOT="\x2f${ROOT#/}" + fi + if [ "${ROOT}" != "${ROOT%/}" ]; then + ROOT="${ROOT%/}\x2f" + fi + IFS='/' + newroot= + for s in $ROOT; do + if [ -z "${newroot}" ]; then + newroot="${s}" + else + newroot="${newroot}\\x2f${s}" + fi + done + unset IFS + ROOT="${newroot}" + fi + esac + ROOT="/dev/disk/by-label/${ROOT}" + ;; + UUID=*) + ROOT="/dev/disk/by-uuid/${ROOT#UUID=}" + ;; + /dev/nfs) + [ -z "${BOOT}" ] && BOOT=nfs + ;; + esac + ;; + rootflags=*) + ROOTFLAGS="-o ${x#rootflags=}" + ;; + rootfstype=*) + ROOTFSTYPE="${x#rootfstype=}" + ;; + rootdelay=*) + ROOTDELAY="${x#rootdelay=}" + case ${ROOTDELAY} in + *[![:digit:].]*) + ROOTDELAY= + ;; + esac + ;; + resumedelay=*) + RESUMEDELAY="${x#resumedelay=}" + ;; + loop=*) + LOOP="${x#loop=}" + ;; + loopflags=*) + LOOPFLAGS="-o ${x#loopflags=}" + ;; + loopfstype=*) + LOOPFSTYPE="${x#loopfstype=}" + ;; + cryptopts=*) + cryptopts="${x#cryptopts=}" + ;; + nfsroot=*) + NFSROOT="${x#nfsroot=}" + ;; + netboot=*) + NETBOOT="${x#netboot=}" + ;; + ip=*) + IPOPTS="${x#ip=}" + ;; + hwaddr=*) + HWADDR="${x#hwaddr=}" + ;; + boot=*) + BOOT=${x#boot=} + ;; + resume=*) + RESUME="${x#resume=}" + ;; + resume_offset=*) + resume_offset="${x#resume_offset=}" + ;; + noresume) + noresume=y + ;; + panic=*) + panic="${x#panic=}" + case ${panic} in + *[![:digit:].]*) + panic= + ;; + esac + ;; + quiet) + quiet=y + ;; + ro) + readonly=y + ;; + rw) + readonly=n + ;; + debug) + debug=y + quiet=n + exec >/dev/.initramfs/initramfs.debug 2>&1 + set -x + ;; + debug=*) + debug=y + quiet=n + set -x + ;; + break=*) + break=${x#break=} + ;; + break) + break=premount + ;; + blacklist=*) + blacklist=${x#blacklist=} + ;; + netconsole=*) + netconsole=${x#netconsole=} + ;; + esac +done + +if [ -z "${noresume}" ]; then + export resume=${RESUME} +else + export noresume +fi + +[ -n "${netconsole}" ] && modprobe netconsole netconsole=${netconsole} + +maybe_break top + +# export BOOT variable value for compcache, +# so we know if we run from casper +export BOOT + +# Don't do log messages here to avoid confusing usplash +run_scripts /scripts/init-top + +maybe_break modules +log_begin_msg "Loading essential drivers..." +load_modules +log_end_msg + +maybe_break premount +[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/init-premount" +run_scripts /scripts/init-premount +[ "$quiet" != "y" ] && log_end_msg + +maybe_break mount +log_begin_msg "Mounting root file system..." +. /scripts/${BOOT} +parse_numeric ${ROOT} +mountroot +log_end_msg + +maybe_break bottom +[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/init-bottom" +run_scripts /scripts/init-bottom +[ "$quiet" != "y" ] && log_end_msg + +# Move virtual filesystems over to the real filesystem +mount -n -o move /sys ${rootmnt}/sys +mount -n -o move /proc ${rootmnt}/proc + +# Check init bootarg +if [ -n "${init}" ] && [ ! -x "${rootmnt}${init}" ]; then + echo "Target filesystem doesn't have ${init}." + init= +fi + +# Search for valid init +if [ -z "${init}" ] ; then + for init in /sbin/init /etc/init /bin/init /bin/sh; do + if [ ! -x "${rootmnt}${init}" ]; then + continue + fi + break + done +fi + +# No init on rootmount +if [ ! -x "${rootmnt}${init}" ]; then + panic "No init found. Try passing init= bootarg." +fi + +# Confuses /etc/init.d/rc +if [ -n ${debug} ]; then + unset debug +fi + +# Chain to real filesystem +maybe_break init +exec run-init ${rootmnt} ${init} "$@" <${rootmnt}/dev/console >${rootmnt}/dev/console 2>&1 +panic "Could not execute run-init." diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/modules b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/modules new file mode 100644 index 0000000..9aa4646 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/modules @@ -0,0 +1,10 @@ +# List of modules that you want to include in your initramfs. +# +# Syntax: module_name [args ...] +# +# You must run update-initramfs(8) to effect this change. +# +# Examples: +# +# raid1 +# sd_mod diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/functions b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/functions new file mode 100644 index 0000000..3bea0c9 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/functions @@ -0,0 +1,420 @@ +# -*- shell-script -*- + +_log_msg() +{ + if [ "$quiet" = "y" ]; then return; fi + echo "$@" +} + +log_success_msg() +{ + _log_msg "Success: $@" +} + +log_failure_msg() +{ + _log_msg "Failure: $@" +} + +log_warning_msg() +{ + _log_msg "Warning: $@" +} + +log_begin_msg() +{ + if [ -x /sbin/usplash_write ]; then + /sbin/usplash_write "TEXT $@" + fi + _log_msg "Begin: $@ ..." +} + +log_end_msg() +{ + if [ -x /sbin/usplash_write ]; then + /sbin/usplash_write "SUCCESS ok" + fi + _log_msg "Done." +} + +# Add failure hook +add_mountroot_fail_hook() +{ + mkdir -p /tmp/mountroot-fail-hooks.d + ln -s "$0" /tmp/mountroot-fail-hooks.d/"$1" +} + +# Run failure hooks. +# When a failure hook exits "1", it has not done anything to correct the +# system. Exiting "0" means that something has been attempted to resolve +# the lack of a root filesystem. +# Hooks are run in lexigraphical order, and are responsible for removing +# themselves if they should not re-run in a later cycle. When one exits +# "0", the stack is stopped, so the caller can return to the main rootfs +# wait loop. +try_failure_hooks() +{ + local hook + + # Disable usplash so text from hooks can be seen + if [ -x /sbin/usplash_write ]; then + /sbin/usplash_write "QUIT" + fi + chvt 1 + + for hook in /tmp/mountroot-fail-hooks.d/*; do + if [ -x ${hook} ] && ${hook} mountfail; then + return 0 + fi + done + return 1 +} + +panic() +{ + if [ -x /sbin/usplash_write ]; then + /sbin/usplash_write "QUIT" + fi + chvt 1 + + # Disallow console access + if [ -n "${panic}" ]; then + sleep ${panic} + reboot + fi + + modprobe i8042 + modprobe atkbd + + run_scripts /scripts/panic + + echo $@ + PS1='(initramfs) ' /bin/sh -i /dev/console 2>&1 +} + +maybe_break() +{ + if echo "${break}" | egrep -q "(,|^)$1(,|$)"; then + panic "Spawning shell within the initramfs" + fi +} + +render() +{ + eval "echo -n \${$@}" +} + +set_initlist() +{ + unset initlist + for si_x in ${initdir}/*; do + # skip empty dirs without warning + [ "${si_x}" = "${initdir}/*" ] && return + + # only allow variable name chars + case ${si_x#${initdir}/} in + *[![:alnum:]_]*) + [ "${verbose}" = "y" ] \ + && echo "$si_x ignored: not alphanumeric or '_' file" + continue + ;; + esac + + # skip non executable scripts + if [ ! -x ${si_x} ]; then + [ "${verbose}" = "y" ] \ + && echo "$si_x ignored: not executable" + continue + fi + + # skip directories + if [ -d ${si_x} ]; then + [ "${verbose}" = "y" ] \ + && echo "$si_x ignored: a directory" + continue + fi + + initlist="${initlist} ${si_x#${initdir}/}" + done +} + +reduce_satisfied() +{ + deplist="$(render array_${1})" + unset tmpdeplist + for rs_y in ${deplist}; do + # check if there are alternatives + case ${rs_y} in + *\|*) + OLD_IFS="$IFS" + IFS="|" + for rs_z in ${rs_y}; do + IFS="$OLD_IFS" + # only allow variable name chars + case ${rs_z} in + *[![:alnum:]_]*) + IFS="|" + continue + ;; + esac + # skip non executable scripts + if [ ! -x ${initdir}/${rs_z} ]; then + IFS="|" + continue + fi + # skip directories + if [ -d ${initdir}/${rs_z} ]; then + IFS="|" + continue + fi + tmpdeplist="${tmpdeplist} ${rs_z}" + break + done + IFS="$OLD_IFS" + ;; + *) + case ${rs_y} in + *[![:alnum:]_]*) + continue + ;; + esac + if [ ! -x ${initdir}/${rs_y} ]; then + continue + fi + if [ -d ${initdir}/${rs_y} ]; then + continue + fi + tmpdeplist="${tmpdeplist} ${rs_y}" + ;; + esac + done + deplist=${tmpdeplist} + for rs_x in ${runlist}; do + pop_list_item ${rs_x} ${deplist} + deplist=${tmppop} + done + eval array_${1}=\"${deplist}\" +} + +get_prereqs() +{ + set_initlist + for gp_x in ${initlist}; do + tmp=$(${initdir}/${gp_x} prereqs) + eval array_${gp_x}=\"${tmp}\" + done +} + +count_unsatisfied() +{ + set -- ${@} + return ${#} +} + +# Removes $1 from initlist +pop_list_item() +{ + item=${1} + shift + set -- ${@} + unset tmppop + # Iterate + for pop in ${@}; do + if [ ${pop} = ${item} ]; then + continue + fi + tmppop="${tmppop} ${pop}" + done + +} + +# This function generates the runlist, so we clear it first. +reduce_prereqs() +{ + unset runlist + set -- ${initlist} + i=$# + # Loop until there's no more in the queue to loop through + while [ ${i} -ne 0 ]; do + oldi=${i} + for rp_x in ${initlist}; do + reduce_satisfied ${rp_x} + count_unsatisfied $(render array_${rp_x}) + cnt=${?} + if [ ${cnt} -eq 0 ]; then + runlist="${runlist} ${rp_x}" + pop_list_item ${rp_x} ${initlist} + initlist=${tmppop} + i=$((${i} - 1)) + fi + done + if [ ${i} -eq ${oldi} ]; then + panic "PANIC: Circular dependancy. Exiting." + fi + done +} + +get_prereq_pairs() +{ + set_initlist + for gp_x in ${initlist}; do + echo ${gp_x} ${gp_x} + prereqs=$(${initdir}/${gp_x} prereqs) + for prereq in ${prereqs}; do + echo ${prereq} ${gp_x} + done + done +} + +call_scripts() +{ + for cs_x in ${runlist}; do + [ -f ${initdir}/${cs_x} ] || continue + if [ x"$1" = "xoptional" ]; then + option=$(sed '/^OPTION=/!d;$d;s/^OPTION=//;s/[[:space:]]*$//' "${initdir}/${cs_x}") + [ -z "${option}" ] || eval test -n \"\${$option}\" -a \"\${$option}\" != \"n\" || continue + fi + + # mkinitramfs verbose output + if [ "${verbose}" = "y" ]; then + echo "Calling hook ${cs_x}" + fi + ${initdir}/${cs_x} + # allow boot scripts to modify exported boot paramaters + if [ -e /conf/param.conf ]; then + . /conf/param.conf + fi + done +} + +run_scripts() +{ + initdir=${1} + [ ! -d ${initdir} ] && return + + if [ -f ${initdir}/ORDER ]; then + . ${initdir}/ORDER + elif [ -x /usr/bin/tsort ]; then + runlist=$(get_prereq_pairs | tsort) + call_scripts $2 + else + get_prereqs + reduce_prereqs + call_scripts $2 + fi +} + +cache_run_scripts() +{ + DESTDIR=${1} + scriptdir=${2} + initdir=${DESTDIR}${scriptdir} + [ ! -d ${initdir} ] && return + + runlist=$(get_prereq_pairs | tsort) + for crs_x in ${runlist}; do + [ -f ${initdir}/${crs_x} ] || continue + echo "${scriptdir}/${crs_x}" >> ${initdir}/ORDER + echo "[ -e /conf/param.conf ] && . /conf/param.conf" >> ${initdir}/ORDER + done +} + +# Load custom modules first +load_modules() +{ + if [ -e /conf/modules ]; then + cat /conf/modules | while read m; do + # Skip empty lines + if [ -z "$m" ]; then + continue + fi + # Skip comments - d?ash removes whitespace prefix + com=$(printf "%.1s" "${m}") + if [ "$com" = "#" ]; then + continue + fi + modprobe $m + done + fi +} + +# lilo compatibility +parse_numeric() { + case $1 in + "") + return + ;; + /*) + return + ;; + *:*) + minor=${1#*:} + major=${1%:*} + ;; + *) + value=$(( 0x${1} )) + minor=$(( ${value} % 256 )) + major=$(( ${value} / 256 )) + ;; + esac + + mknod -m 600 /dev/root b ${major} ${minor} + ROOT=/dev/root +} + +configure_networking() +{ + # networking already configured thus bail out + [ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ] && return 0 + + if [ "${HWADDR}" ]; then + # select interface by MAC address + HWADDR="$(echo "${HWADDR}" | tr A-Z- a-z:)" + local iface + for iface in /sys/class/net/*; do + [ -f "$iface/address" ] || continue + if [ "$(cat "$iface/address")" = "${HWADDR}" ]; then + DEVICE="${iface#/sys/class/net/}" + fi + done + fi + + # support ip options see linux sources + # Documentation/filesystems/nfsroot.txt + case ${IPOPTS} in + none|off) + # Do nothing + ;; + ""|on|any) + # Bring up device + ipconfig -t 60 ${DEVICE} + ;; + dhcp|bootp|rarp|both) + ipconfig -t 60 -c ${IPOPTS} -d ${DEVICE} + ;; + *) + ipconfig -t 60 -d $IPOPTS + + # grab device entry from ip option + NEW_DEVICE=${IPOPTS#*:*:*:*:*:*} + if [ "${NEW_DEVICE}" != "${IPOPTS}" ]; 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 + + # source ipconfig output + if [ -n "${DEVICE}" ]; then + # source specific bootdevice + . /tmp/net-${DEVICE}.conf + else + # source any interface as not exaclty specified + . /tmp/net-*.conf + fi +} diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-bottom/plymouth b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-bottom/plymouth new file mode 100755 index 0000000..8b1e7c8 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-bottom/plymouth @@ -0,0 +1,21 @@ +#!/bin/sh + +OPTION=FRAMEBUFFER +PREREQ="udev" + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +prereqs) + prereqs + exit 0 + ;; +esac + +if [ -f ${rootmnt}/dev/.initramfs/plymouth.pid ] +then + /bin/plymouth update-root-fs --new-root-dir=${rootmnt} +fi diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-bottom/udev b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-bottom/udev new file mode 100755 index 0000000..f9d2ce9 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-bottom/udev @@ -0,0 +1,24 @@ +#!/bin/sh -e +# initramfs init-bottom script for udev + +PREREQ="" + +# Output pre-requisites +prereqs() +{ + echo "$PREREQ" +} + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + + +# Stop udevd, we'll miss a few events while we run init, but we catch up +pkill udevd + +# Move /dev to the real filesystem +mount -n -o move /dev ${rootmnt}/dev diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-premount/lvm2 b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-premount/lvm2 new file mode 100755 index 0000000..e5bc78f --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-premount/lvm2 @@ -0,0 +1,41 @@ +#!/bin/sh + +# init-premount script for lvm2. + +PREREQS="udev mdadm" +prereqs() +{ + echo $PREREQS +} + +mountroot_fail() +{ + if ! /sbin/lvm vgscan >/dev/null 2>&1 ; then + cat </dev/null; then + modprobe ata_generic all_generic_ide=1 +fi diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/blacklist b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/blacklist new file mode 100755 index 0000000..5e6b3c1 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/blacklist @@ -0,0 +1,34 @@ +#!/bin/sh + +PREREQ="" + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +# blacklist vga16fb when vga= or video= given +for x in $(cat /proc/cmdline); do + case ${x} in + vga=*|video=*) + echo "blacklist vga16fb" >> /etc/modprobe.d/initramfs + ;; + esac +done + +# sanity check +[ -z "${blacklist}" ] && exit 0 + +# write blacklist to modprobe.d +IFS=',' +for b in ${blacklist}; do + echo "blacklist $b" >> /etc/modprobe.d/initramfs +done diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/console_setup b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/console_setup new file mode 100755 index 0000000..df767bb --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/console_setup @@ -0,0 +1,83 @@ +#! /bin/sh +# A crude much-simplified clone of setupcon for use in the initramfs. + +OPTION=FRAMEBUFFER +PREREQ="framebuffer" + +prereqs () { + echo "$PREREQ" +} + +case $1 in +prereqs) + prereqs + exit 0 + ;; +esac + +. /etc/default/console-setup + +[ "$ACTIVE_CONSOLES" ] || exit 0 + +if [ "$VERBOSE_OUTPUT" = yes ]; then + verbose= +else + verbose='>/dev/null 2>&1' +fi + +for i in 1 2 3 4 5 6; do + [ -c /dev/tty$i ] || mknod /dev/tty$i c 4 $i +done + +for console in $ACTIVE_CONSOLES; do + [ -w $console ] || continue + + if [ "$CHARMAP" = UTF-8 ] || [ -z "$ACM$CHARMAP" ]; then + printf '\033%%G' >$console + else + printf '\033%%@' >$console + fi + + if [ "$FONT" ]; then + FONT="/etc/console-setup/${FONT##*/}" + FONT="${FONT%.gz}" + else + FONT="/etc/console-setup/$CODESET-$FONTFACE$FONTSIZE.psf" + fi + if [ -f "$FONT" ]; then + if type consolechars >/dev/null 2>&1; then + eval consolechars -v --tty=$console -f "$FONT" $verbose + elif type setfont >/dev/null 2>&1; then + eval setfont -v -C $console "$FONT" $verbose + fi + fi + + if [ "$ACM" ]; then + ACM="/etc/console-setup/${ACM##*/}" + ACM="${ACM%.gz}" + else + ACM="/etc/console-setup/$CHARMAP.acm" + fi + if [ -f "$ACM" ]; then + if type consolechars >/dev/null 2>&1; then + eval consolechars -v --tty=$console --acm "$ACM" \ + $verbose + elif type setfont >/dev/null 2>&1; then + eval setfont -v -C "$console" -m "$ACM" $verbose + fi + fi + + if type kbd_mode >/dev/null 2>&1; then + if [ "$CHARMAP" = UTF-8 ] || [ -z "$ACM" ]; then + kbd_mode -u <$console + else + kbd_mode -a <$console + fi + fi +done + +if [ -f /etc/console-setup/cached.kmap.gz ] && type loadkeys >/dev/null; then + eval loadkeys /etc/console-setup/cached.kmap.gz $verbose +fi + +exit 0 diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/framebuffer b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/framebuffer new file mode 100755 index 0000000..bb59aad --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/framebuffer @@ -0,0 +1,104 @@ +#!/bin/sh + +OPTION=FRAMEBUFFER +PREREQ="udev" +prereqs() +{ + echo "$PREREQ" +} +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + + +# The options part of the kernel "video=" argument (i.e. everyting +# after "video=:") has very inconsistent rules. +# +# Generally the following applies: +# 1) options are comma-separated +# 2) options can be in either of these three forms: +# =, :, . +# 3) the "mode" option has the form x[M][R][-][@][i][m] +# and may or may not start with "mode=" +# +# When the options are used with modules, they need to be space-separated +# and the following conversions are needed: +# : -> = +# -> =1 +# -> mode= +parse_video_opts() +{ + local OPTS="$1" + local IFS="," + + # Must be a line like video=:,[opt2]... + if [ "${OPTS}" = "${OPTS%%:*}" ]; then + return + fi + OPTS="${OPTS#*:}" + for opt in ${OPTS}; do + # Already in the "=" form + if [ "${opt}" != "${opt#*=}" ]; then + echo -n "$opt " + # In the ":" form + elif [ "${opt}" != "${opt#*:}" ]; then + echo -n "${opt%:*}=${opt#*:} " + # Presumably a modevalue without the "mode=" prefix + elif [ "${opt}" != "${opt#[0-9]*x[0-9]}" ]; then + echo -n "mode=$opt " + # Presumably a boolean + else + echo -n "${opt}=1 " + fi + done +} + +FB="" +OPTS="" + +for x in $(cat /proc/cmdline); do + case ${x} in + vga=*) + FB="vesafb"; + OPTS=""; + ;; + video=*) + FB=${x#*=} + FB="${FB%%:*}" + OPTS="$(parse_video_opts "${x}")" + esac +done + +# Map command line name to module name +case ${FB} in +matroxfb) + FB=matroxfb_base + ;; +esac + +if [ -n "${FB}" ]; then + # Some framebuffer devices need character devices :-/ + udevadm settle + MODPROBE_OPTIONS=-q modprobe ${FB} ${OPTS} + # Wait for the framebuffer devices to be ready + udevadm settle +else + # If we have no graphics devices yet, wait for udev to settle + [ -d /sys/class/graphics/fbcon ] || udevadm settle + [ -d /sys/class/graphics/fb0 ] || udevadm settle + [ -d /sys/class/drm/card0 ] || udevadm settle +fi + +# Force fb mode via /sys interface +for x in $(cat /proc/cmdline); do + case ${x} in + fbmode=*) + MODE=${x#*=} + echo "$MODE" > /sys/class/graphics/fb0/mode + ;; + esac +done diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/keymap b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/keymap new file mode 100755 index 0000000..cb67aa9 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/keymap @@ -0,0 +1,28 @@ +#!/bin/sh + +OPTION=FRAMEBUFFER +PREREQ="" +prereqs() +{ + echo "$PREREQ" +} +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +OPTS="-q" + +# Should terminal be in UTF8 mode? +if [ -x /bin/kbd_mode ]; then + /bin/kbd_mode -u + OPTS="${OPTS} -u" +fi + +# Load custom keymap +if [ -x /bin/loadkeys -a -r /etc/boottime.kmap.gz ]; then + loadkeys ${OPTS} /etc/boottime.kmap.gz +fi diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/plymouth b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/plymouth new file mode 100755 index 0000000..813b6b4 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/plymouth @@ -0,0 +1,20 @@ +#!/bin/sh + +OPTION=FRAMEBUFFER +PREREQ="framebuffer console_setup brltty" + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +prereqs) + prereqs + exit 0 + ;; +esac + +printf '\033[?25l' > /dev/tty7 +/sbin/plymouthd --mode=boot --attach-to-session --pid-file=/dev/.initramfs/plymouth.pid +/bin/plymouth show-splash diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/udev b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/udev new file mode 100755 index 0000000..cd2fa56 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/init-top/udev @@ -0,0 +1,30 @@ +#!/bin/sh -e +# initramfs init-top script for udev + +PREREQ="all_generic_ide blacklist" + +# Output pre-requisites +prereqs() +{ + echo "$PREREQ" +} + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + + +# It's all over netlink now +echo "" > /proc/sys/kernel/hotplug + +# Start the udev daemon to process events +/sbin/udevd --daemon --resolve-names=never + +# Iterate sysfs and fire off everything; if we include a rule for it then +# it'll get handled; otherwise it'll get handled later when we do this again +# in the main boot sequence. +( /sbin/udevadm trigger --subsystem-match=block; \ + /sbin/udevadm trigger --subsystem-nomatch=block; ) & diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local new file mode 100644 index 0000000..865572b --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local @@ -0,0 +1,131 @@ +# Local filesystem mounting -*- shell-script -*- + +# Parameter: Where to mount the filesystem +mountroot () +{ + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-top" + run_scripts /scripts/local-top + [ "$quiet" != "y" ] && log_end_msg + + while [ -z "${FSTYPE}" ]; do + FSTYPE=$(wait-for-root "${ROOT}" ${ROOTDELAY:-30}) + + # Run failure hooks, hoping one of them can fix up the system + # and we can restart the wait loop. If they all fail, abort + # and move on to the panic handler and shell. + if [ -z "${FSTYPE}" ] && ! try_failure_hooks; then + break + fi + done + + # We've given up, but we'll let the user fix matters if they can + while [ -z "${FSTYPE}" -a ! -e "${ROOT}" ]; do + # give hint about renamed root + case "${ROOT}" in + /dev/hd*) + suffix="${ROOT#/dev/hd}" + major="${suffix%[[:digit:]]}" + major="${major%[[:digit:]]}" + if [ -d "/sys/block/sd${major}" ]; then + echo "WARNING bootdevice may be renamed. Try root=/dev/sd${suffix}" + fi + ;; + /dev/sd*) + suffix="${ROOT#/dev/sd}" + major="${suffix%[[:digit:]]}" + major="${major%[[:digit:]]}" + if [ -d "/sys/block/hd${major}" ]; then + echo "WARNING bootdevice may be renamed. Try root=/dev/hd${suffix}" + fi + ;; + esac + echo "Gave up waiting for root device. Common problems:" + echo " - Boot args (cat /proc/cmdline)" + echo " - Check rootdelay= (did the system wait long enough?)" + echo " - Check root= (did the system wait for the right device?)" + echo " - Missing modules (cat /proc/modules; ls /dev)" + panic "ALERT! ${ROOT} does not exist. Dropping to a shell!" + done + + # Get the root filesystem type if not set + if [ -z "${ROOTFSTYPE}" ]; then + [ -n "${FSTYPE}" ] || FSTYPE=$(/sbin/blkid -s TYPE -o value "${ROOT}") + ROOTFSTYPE="${FSTYPE}" + else + FSTYPE="${ROOTFSTYPE}" + fi + + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-premount" + run_scripts /scripts/local-premount + [ "$quiet" != "y" ] && log_end_msg + + if [ ${readonly} = y ] && \ + [ -z "$LOOP" ]; then + roflag=-r + else + roflag=-w + fi + + # FIXME This has no error checking + [ -n "${FSTYPE}" ] && modprobe ${FSTYPE} + + # FIXME This has no error checking + # Mount root + mount ${roflag} ${FSTYPE:+-t ${FSTYPE} }${ROOTFLAGS} ${ROOT} ${rootmnt} + mountroot_status="$?" + if [ "$LOOP" ]; then + if [ "$mountroot_status" != 0 ]; then + if [ ${FSTYPE} = ntfs ] || [ ${FSTYPE} = vfat ]; then + panic " +Could not mount the partition ${ROOT}. +This could also happen if the file system is not clean because of an operating +system crash, an interrupted boot process, an improper shutdown, or unplugging +of a removable device without first unmounting or ejecting it. To fix this, +simply reboot into Windows, let it fully start, log in, run 'chkdsk /r', then +gracefully shut down and reboot back into Windows. After this you should be +able to reboot again and resume the installation. +(filesystem = ${FSTYPE}, error code = $mountroot_status) +" + fi + fi + + mkdir -p /host + mount -o move ${rootmnt} /host + + while [ ! -e "/host/${LOOP#/}" ]; do + panic "ALERT! /host/${LOOP#/} does not exist. Dropping to a shell!" + done + + # Get the loop filesystem type if not set + if [ -z "${LOOPFSTYPE}" ]; then + eval $(fstype < "/host/${LOOP#/}") + else + FSTYPE="${LOOPFSTYPE}" + fi + if [ "$FSTYPE" = "unknown" ] && [ -x /sbin/blkid ]; then + FSTYPE=$(/sbin/blkid -s TYPE -o value "/host/${LOOP#/}") + [ -z "$FSTYPE" ] && FSTYPE="unknown" + fi + + if [ ${readonly} = y ]; then + roflag=-r + else + roflag=-w + fi + + # FIXME This has no error checking + modprobe loop + modprobe ${FSTYPE} + + # FIXME This has no error checking + mount ${roflag} -o loop -t ${FSTYPE} ${LOOPFLAGS} "/host/${LOOP#/}" ${rootmnt} + + if [ -d ${rootmnt}/host ]; then + mount -o move /host ${rootmnt}/host + fi + fi + + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/local-bottom" + run_scripts /scripts/local-bottom + [ "$quiet" != "y" ] && log_end_msg +} diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-bottom/ntfs_3g b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-bottom/ntfs_3g new file mode 100755 index 0000000..335ef95 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-bottom/ntfs_3g @@ -0,0 +1,16 @@ +#! /bin/sh + +case $1 in +prereqs) + exit 0 + ;; +esac + +if [ "$ROOTFSTYPE" = ntfs ] || [ "$ROOTFSTYPE" = ntfs-3g ] || \ + [ "$LOOPFSTYPE" = ntfs ] || [ "$LOOPFSTYPE" = ntfs-3g ]; then + mkdir -p /dev/.initramfs/varrun + pidof mount.ntfs >> /dev/.initramfs/varrun/sendsigs.omit + pidof mount.ntfs-3g >> /dev/.initramfs/varrun/sendsigs.omit +fi + +exit 0 diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/fixrtc b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/fixrtc new file mode 100755 index 0000000..c9fbc36 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/fixrtc @@ -0,0 +1,64 @@ +#!/bin/sh -e +# initramfs local-premount script for fixrtc + +PREREQ="" + +# Output pre-requisites +prereqs() +{ + echo "$PREREQ" +} + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + +# use the fixrtc cmdline option in your bootloader to +# automatically set the hardware clock to the date of +# the last mount of your root filesystem to avoid fsck +# to get confused by the superblock being in the future + +BROKEN_CLOCK="" +ROOTDEV="" + +for x in $(cat /proc/cmdline); do + case ${x} in + root=*) + value=${x#*=} + + # Find the device node path depending on the form of root= : + + case ${value} in + UUID=*) + ROOTDEV=/dev/disk/by-uuid/${value#UUID=} + ;; + LABEL=*) + ROOTDEV=/dev/disk/by-label/${value#LABEL=} + ;; + *) + ROOTDEV=${value} + ;; + esac + ;; + fixrtc) + BROKEN_CLOCK=1 + ;; + esac +done + +if [ -n "$BROKEN_CLOCK" -a -n "$ROOTDEV" ];then + ROOTDISK=$(readlink -f "$ROOTDEV") && + + TIMESTR=$(dumpe2fs -h "$ROOTDISK" 2>/dev/null|grep "Last mount time") && + TIME=${TIMESTR#*:} && + + date --set="${TIME} 1 minute" >/dev/null 2>&1 +fi + +# This script is best-effort. If we couldn't fudge the clock as desired, +# just try to carry on boot anyway: +# It will probably fail, but we won't have made the situation any worse. +exit 0 diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/ntfs_3g b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/ntfs_3g new file mode 100755 index 0000000..57e7f8b --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/ntfs_3g @@ -0,0 +1,14 @@ +#! /bin/sh + +case $1 in +prereqs) + exit 0 + ;; +esac + +if [ "$ROOTFSTYPE" = ntfs ] || [ "$ROOTFSTYPE" = ntfs-3g ] || \ + [ "$LOOPFSTYPE" = ntfs ] || [ "$LOOPFSTYPE" = ntfs-3g ]; then + modprobe fuse +fi + +exit 0 diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/resume b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/resume new file mode 100755 index 0000000..4653593 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/local-premount/resume @@ -0,0 +1,75 @@ +#!/bin/sh + +PREREQ="" + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +. ./scripts/functions + +if [ -z "${resume}" ]; then + exit 0 +fi + +case $resume in +LABEL=*) + resume="${resume#LABEL=}" + + # support any / in LABEL= path (escape to \x2f) + case "${resume}" in + *[/]*) + if [ -x "$(command -v sed)" ]; then + resume="$(echo ${resume} | sed 's,/,\\x2f,g')" + else + if [ "${resume}" != "${resume#/}" ]; then + resume="\x2f${resume#/}" + fi + if [ "${resume}" != "${resume%/}" ]; then + resume="${resume%/}\x2f" + fi + IFS='/' + newresume= + for s in $resume; do + if [ -z "${newresume}" ]; then + newresume="${s}" + else + newresume="${newresume}\\x2f${s}" + fi + done + unset IFS + resume="${newresume}" + fi + esac + resume="/dev/disk/by-label/${resume}" + ;; +UUID=*) + resume="/dev/disk/by-uuid/${resume#UUID=}" + ;; +esac + +SWAPTYPE=$(wait-for-root "${resume}" ${RESUMEDELAY:-5}) + +case "${SWAPTYPE}" in + swsuspend|s1suspend|s2suspend|ulsuspend|tuxonice) + if [ -x /bin/plymouth ] && plymouth --ping; then + plymouth message --text="Resuming from $resume" + fi + + # hardcode path, uswsusp ships an resume binary too + if [ -n "${resume_offset}" ]; then + /bin/resume ${resume} ${resume_offset} >/dev/null 2>&1 + else + /bin/resume ${resume} >/dev/null 2>&1 + fi + ;; +esac diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/nfs b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/nfs new file mode 100644 index 0000000..b9c2522 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/nfs @@ -0,0 +1,83 @@ +# NFS filesystem mounting -*- shell-script -*- + +# FIXME This needs error checking + +retry_nr=0 + +# parse nfs bootargs and mount nfs +do_nfsmount() +{ + + configure_networking + + # 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=[:][,] + 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 + + if [ -z "${NFSOPTS}" ]; then + NFSOPTS="-o retrans=10" + fi + + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/nfs-premount" + run_scripts /scripts/nfs-premount + [ "$quiet" != "y" ] && log_end_msg + + if [ ${readonly} = y ]; then + roflag="-o ro" + else + roflag="-o rw" + fi + + nfsmount -o nolock ${roflag} ${NFSOPTS} ${NFSROOT} ${rootmnt} +} + +# NFS root mounting +mountroot() +{ + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/nfs-top" + run_scripts /scripts/nfs-top + [ "$quiet" != "y" ] && log_end_msg + + modprobe nfs + # For DHCP + modprobe af_packet + + # Default delay is around 180s + # FIXME: add usplash_write info + if [ -z "${ROOTDELAY}" ]; then + delay=180 + else + delay=${ROOTDELAY} + fi + + # loop until nfsmount succeds + while [ ${retry_nr} -lt ${delay} ] && [ ! -e ${rootmnt}${init} ]; do + [ ${retry_nr} -gt 0 ] && \ + [ "$quiet" != "y" ] && log_begin_msg "Retrying nfs mount" + do_nfsmount + retry_nr=$(( ${retry_nr} + 1 )) + [ ! -e ${rootmnt}${init} ] && /bin/sleep 1 + [ ${retry_nr} -gt 0 ] && [ "$quiet" != "y" ] && log_end_msg + done + + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/nfs-bottom" + run_scripts /scripts/nfs-bottom + [ "$quiet" != "y" ] && log_end_msg +} diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/nfs-top/udev b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/nfs-top/udev new file mode 100755 index 0000000..980e496 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/nfs-top/udev @@ -0,0 +1,27 @@ +#!/bin/sh -e +# initramfs nfs-top script for udev + +PREREQ="" + +# Output pre-requisites +prereqs() +{ + echo "$PREREQ" +} + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + + +# Each call to udevsettle can take up to three minutes +if [ -x /sbin/usplash_write ]; then + /sbin/usplash_write "TIMEOUT 360" + trap "/sbin/usplash_write 'TIMEOUT 15'" 0 +fi + +# We need to wait for the network card drivers to be loaded +/sbin/udevadm settle diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/console_setup b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/console_setup new file mode 100755 index 0000000..5e97f65 --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/console_setup @@ -0,0 +1,82 @@ +#! /bin/sh +# A crude much-simplified clone of setupcon for use in the initramfs. + +PREREQ="framebuffer" + +prereqs () { + echo "$PREREQ" +} + +case $1 in +prereqs) + prereqs + exit 0 + ;; +esac + +. /etc/default/console-setup + +[ "$ACTIVE_CONSOLES" ] || exit 0 + +if [ "$VERBOSE_OUTPUT" = yes ]; then + verbose= +else + verbose='>/dev/null 2>&1' +fi + +for i in 1 2 3 4 5 6; do + [ -c /dev/tty$i ] || mknod /dev/tty$i c 4 $i +done + +for console in $ACTIVE_CONSOLES; do + [ -w $console ] || continue + + if [ "$CHARMAP" = UTF-8 ] || [ -z "$ACM$CHARMAP" ]; then + printf '\033%%G' >$console + else + printf '\033%%@' >$console + fi + + if [ "$FONT" ]; then + FONT="/etc/console-setup/${FONT##*/}" + FONT="${FONT%.gz}" + else + FONT="/etc/console-setup/$CODESET-$FONTFACE$FONTSIZE.psf" + fi + if [ -f "$FONT" ]; then + if type consolechars >/dev/null 2>&1; then + eval consolechars -v --tty=$console -f "$FONT" $verbose + elif type setfont >/dev/null 2>&1; then + eval setfont -v -C $console "$FONT" $verbose + fi + fi + + if [ "$ACM" ]; then + ACM="/etc/console-setup/${ACM##*/}" + ACM="${ACM%.gz}" + else + ACM="/etc/console-setup/$CHARMAP.acm" + fi + if [ -f "$ACM" ]; then + if type consolechars >/dev/null 2>&1; then + eval consolechars -v --tty=$console --acm "$ACM" \ + $verbose + elif type setfont >/dev/null 2>&1; then + eval setfont -v -C "$console" -m "$ACM" $verbose + fi + fi + + if type kbd_mode >/dev/null 2>&1; then + if [ "$CHARMAP" = UTF-8 ] || [ -z "$ACM" ]; then + kbd_mode -u <$console + else + kbd_mode -a <$console + fi + fi +done + +if [ -f /etc/console-setup/cached.kmap.gz ] && type loadkeys >/dev/null; then + eval loadkeys /etc/console-setup/cached.kmap.gz $verbose +fi + +exit 0 diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/keymap b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/keymap new file mode 100644 index 0000000..f011abf --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/keymap @@ -0,0 +1,27 @@ +#!/bin/sh + +PREREQ="" +prereqs() +{ + echo "$PREREQ" +} +case $1 in +# get pre-requisites +prereqs) + prereqs + exit 0 + ;; +esac + +OPTS="-q" + +# Should terminal be in UTF8 mode? +if [ -x /bin/kbd_mode ]; then + /bin/kbd_mode -u + OPTS="${OPTS} -u" +fi + +# Load custom keymap +if [ -x /bin/loadkeys -a -r /etc/boottime.kmap.gz ]; then + loadkeys ${OPTS} /etc/boottime.kmap.gz +fi diff --git a/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/plymouth b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/plymouth new file mode 100755 index 0000000..2da5a6b --- /dev/null +++ b/old/ogFSHlnk/initramfs-tools-OG-unionfs/usr/share/initramfs-tools/scripts/panic/plymouth @@ -0,0 +1,18 @@ +#!/bin/sh + +OPTION=FRAMEBUFFER +PREREQ="udev" + +prereqs() +{ + echo "$PREREQ" +} + +case $1 in +prereqs) + prereqs + exit 0 + ;; +esac + +/bin/plymouth quit diff --git a/old/ogFSHlnk/old/initramfs-tools-OG/conf.d/mdadm b/old/ogFSHlnk/old/initramfs-tools-OG/conf.d/mdadm new file mode 100644 index 0000000..11d27f8 --- /dev/null +++ b/old/ogFSHlnk/old/initramfs-tools-OG/conf.d/mdadm @@ -0,0 +1,18 @@ +# mdadm boot_degraded configuration +# +# You can run 'dpkg-reconfigure mdadm' to modify the values in this file, if +# you want. You can also change the values here and changes will be preserved. +# Do note that only the values are preserved; the rest of the file is +# rewritten. +# +# BOOT_DEGRADED: +# Do you want to boot your system if a RAID providing your root filesystem +# becomes degraded? +# +# Running a system with a degraded RAID could result in permanent data loss +# if it suffers another hardware fault. +# +# However, you might answer "yes" if this system is a server, expected to +# tolerate hardware faults and boot unattended. + +BOOT_DEGRADED=false diff --git a/old/ogFSHlnk/old/initramfs-tools-OG/conf.d/resume b/old/ogFSHlnk/old/initramfs-tools-OG/conf.d/resume new file mode 100644 index 0000000..34fdc4a --- /dev/null +++ b/old/ogFSHlnk/old/initramfs-tools-OG/conf.d/resume @@ -0,0 +1 @@ +RESUME=UUID=99eb2782-3766-452a-8e1e-0bc26b426b12 diff --git a/old/ogFSHlnk/old/initramfs-tools-OG/hooks/oghooks b/old/ogFSHlnk/old/initramfs-tools-OG/hooks/oghooks new file mode 100755 index 0000000..3d9b04b --- /dev/null +++ b/old/ogFSHlnk/old/initramfs-tools-OG/hooks/oghooks @@ -0,0 +1,40 @@ +#!/bin/sh -e +# initramfs hook for OpenGnsys + + +PREREQ="og" + +# Output pre-requisites +prereqs() +{ + echo "$PREREQ" +} + +case "$1" in + prereqs) + prereqs + exit 0 + ;; +esac + + +. /usr/share/initramfs-tools/hook-functions + +mkdir -p ${DESTDIR}/scripts/og-top +mkdir -p ${DESTDIR}/scripts/og-premount +mkdir -p ${DESTDIR}/scripts/og-bottom +mkdir -p ${DESTDIR}/mnt/ +mkdir -p ${DESTDIR}/net/ +mkdir -p ${DESTDIR}/usr +mkdir -p ${DESTDIR}/var/lock +mkdir -p ${DESTDIR}/var/log +mkdir -p ${DESTDIR}/opt/opengnsys; + +# Insert basic binaries +copy_exec /bin/bash-static /bin/bash + + +# Insert OpenGnsys Engine +mkdir -p ${DESTDIR}/opt/opengnsys/lib/engine +cp -prv /opt/opengnsys/client/lib/engine ${DESTDIR}/opt/opengnsys/lib/engine + diff --git a/old/ogFSHlnk/old/initramfs-tools-OG/initramfs.conf b/old/ogFSHlnk/old/initramfs-tools-OG/initramfs.conf new file mode 100644 index 0000000..754e2be --- /dev/null +++ b/old/ogFSHlnk/old/initramfs-tools-OG/initramfs.conf @@ -0,0 +1,72 @@ +# +# initramfs.conf +# Configuration file for mkinitramfs(8). See initramfs.conf(5). +# + +# +# MODULES: [ most | netboot | dep | list ] +# +# most - Add all framebuffer, acpi, filesystem, and harddrive drivers. +# +# dep - Try and guess which modules to load. +# +# netboot - Add the base modules, network modules, but skip block devices. +# +# list - Only include modules from the 'additional modules' list +# + +MODULES=most + +# +# BUSYBOX: [ y | n ] +# +# Use busybox if available. +# + +BUSYBOX=y + +# +# COMPCACHE_SIZE: [ "x K" | "x M" | "x G" | "x %" ] +# +# Amount of RAM to use for RAM-based compressed swap space. +# +# An empty value - compcache isn't used, or added to the initramfs at all. +# An integer and K (e.g. 65536 K) - use a number of kilobytes. +# An integer and M (e.g. 256 M) - use a number of megabytes. +# An integer and G (e.g. 1 G) - use a number of gigabytes. +# An integer and % (e.g. 50 %) - use a percentage of the amount of RAM. +# +# You can optionally install the compcache package to configure this setting +# via debconf and have userspace scripts to load and unload compcache. +# + +COMPCACHE_SIZE="" + +# +# NFS Section of the config. +# + +# +# BOOT: [ local | nfs ] +# +# local - Boot off of local media (harddrive, USB stick). +# +# nfs - Boot using an NFS drive as the root of the drive. +# + +BOOT=local + +# +# DEVICE: ... +# +# Specify the network interface, like eth0 +# + +DEVICE=eth0 + +# +# NFSROOT: [ auto | HOST:MOUNT ] +# + +NFSROOT=auto + diff --git a/old/ogFSHlnk/old/initramfs-tools-OG/modules b/old/ogFSHlnk/old/initramfs-tools-OG/modules new file mode 100644 index 0000000..484ef71 --- /dev/null +++ b/old/ogFSHlnk/old/initramfs-tools-OG/modules @@ -0,0 +1,13 @@ +# List of modules that you want to include in your initramfs. +# +# Syntax: module_name [args ...] +# +# You must run update-initramfs(8) to effect this change. +# +# Examples: +# +# raid1 +# sd_mod +fbcon +vesafb +vga16b diff --git a/old/ogFSHlnk/old/initramfs-tools-OG/scripts/og b/old/ogFSHlnk/old/initramfs-tools-OG/scripts/og new file mode 100755 index 0000000..6408eda --- /dev/null +++ b/old/ogFSHlnk/old/initramfs-tools-OG/scripts/og @@ -0,0 +1,140 @@ +# OpenGnsys Local filesystem mounting -*- shell-script -*- + +ogLinkBusybox () +{ +for n in `busybox | tail -19 | tr "," "\\n" | sed -e "s/ \|\t//"|grep .` ; do + ln -f /bin/busybox /bin/$n +done +ln -f /bin/busybox /bin/sh +} + +ogConfigureRamfs () +{ +mkdir -p /tmp/og2ndFStmp/ +touch /tmp/og2ndFStmp/modules.dep.temp +touch /tmp/og2ndFStmp/modules.dep +} + + +ogExportKernelParameters () +{ +GLOBAL="cat /proc/cmdline" +for i in `${GLOBAL}` +do + echo $i | grep "=" > /dev/null && export $i +done +} + +ogCheckPointBreak () +{ +# firstshell=0 SH para Arranque en modo depuracion para el cliente intrd +if [ "$firstshell" = "0" ] +then + echo "entrando en sh antes de configurar la red" + sh +fi + + if [ "$firstshell" = "1" ] +then + echo "entrando en sh despues de configurar la red" + sh +fi +# firstrunt=sh Arranque en modo depuracion para el cliente intrd +if [ "$firstrun" = "9" ] +then + sh +fi + +} + +ogLoadNetModule () +{ +#cargando netmodule +if [ -n "$netmodule" ] +then + echo "Cargando modulo de red $netmodule" + insmod `find /lib/modules/ -name ${netmodule}*` +fi +} + + +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=[:][,] + 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 +} + +ogConectROOTSERVER () +{ +echo Preparando conexión con el Repositorio \$ROOTSERVER \$BOOTMODE \$MOUNTOPTS + ## Montamos el resto de cosas necesarias + #printf "$MSG_MOUNTREPO\n" $BOOTMODE; + + mount -t nfs -onolock,ro $ROOTSERVER:/opt/opengnsys/client /opt/opengnsys; + mount -t nfs -o nolock $ROOTSERVER:/opt/opengnsys/log/clients /opt/opengnsys/log; + #mount -t nfs -o "\$MOUNTOPTS" \$SERVERNFS:/opt/opengnsys/images /opt/opengnsys/images; + #mount -t tmpfs none /opt/opengnsys/images -o size=5m +} + + + +# Parameter: Where to mount the filesystem +mountroot () +{ + [ "$quiet" != "y" ] && log_begin_msg "Running OpenGnsys /scripts/og-top" + 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 + + +ogConfigureRamfs +ogExportKernelParameters +ogCheckPointBreak +ogLoadNetModule + + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/og-premount" + run_scripts /scripts/og-premount + [ "$quiet" != "y" ] && log_end_msg + +configure_networking +ogGetROOTSERVER +ogCheckPointBreak + +ogConectROOTSERVER +# ogConectROOTMEDIA +ogCheckPointBreak + +set -a +trap "mount | grep loop && /opt/og2fs/bin/bash" 1 2 3 9 15 +/opt/opengnsys/etc/preinit/default.sh + + + + + + + [ "$quiet" != "y" ] && log_begin_msg "Running /scripts/og-bottom" + run_scripts /scripts/og-bottom + [ "$quiet" != "y" ] && log_end_msg +} diff --git a/old/ogFSHlnk/old/initramfs-tools-OG/update-initramfs.conf b/old/ogFSHlnk/old/initramfs-tools-OG/update-initramfs.conf new file mode 100644 index 0000000..3c27473 --- /dev/null +++ b/old/ogFSHlnk/old/initramfs-tools-OG/update-initramfs.conf @@ -0,0 +1,20 @@ +# +# Configuration file for update-initramfs(8) +# + +# +# update_initramfs [ yes | all | no ] +# +# Default is yes +# If set to all update-initramfs will update all initramfs +# If set to no disables any update to initramfs beside kernel upgrade + +update_initramfs=yes + +# +# backup_initramfs [ yes | no ] +# +# Default is no +# If set to no leaves no .bak backup files. + +backup_initramfs=no diff --git a/old/serverstructure/etc/exports.txt b/old/serverstructure/etc/exports.txt new file mode 100644 index 0000000..d505353 --- /dev/null +++ b/old/serverstructure/etc/exports.txt @@ -0,0 +1 @@ +/var/lib/tftpboot/ *(ro,no_subtree_check,no_root_squash,sync) diff --git a/old/serverstructure/etc/samba/smb.conf.txt b/old/serverstructure/etc/samba/smb.conf.txt new file mode 100644 index 0000000..e47df3d --- /dev/null +++ b/old/serverstructure/etc/samba/smb.conf.txt @@ -0,0 +1,29 @@ +[tftpboot] + comment = el directorio fisico ogclient debe estar como escritura + writeable = no + read only = yes + #locking = no + path = /var/lib/tftpboot + guest ok = no + +[ogclient] + comment = client + read only = yes + locking = no + path = /opt/opengnsys/client + guest ok = no + +[oglog] + comment = log + read only = yes + locking = no + path = /opt/opengnsys/log/clients + guest ok = no + +[ogimages] + comment = images + read only = no + writeable = yes + locking = no + path = /opt/opengnsys/images + guest ok = no \ No newline at end of file diff --git a/old/serverstructure/init/defaultTESTING.sh b/old/serverstructure/init/defaultTESTING.sh new file mode 100755 index 0000000..07c10bc --- /dev/null +++ b/old/serverstructure/init/defaultTESTING.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +/etc/init.d/ssh restart +#setterm -blank 0 -powersave off -powerdown 0 < /dev/console > /dev/console 2>&1 + + +# Fichero de registro de incidencias (en el servidor; si no, en local). +OPENGNSYS=${OPENGNSYS:-/opt/opengnsys} +OGLOGFILE=${OGLOGFILE:-$OPENGNSYS/log/${ogGetIpAdderss},log} +if ! touch $OGLOGFILE 2>/dev/null; then + OGLOGFILE=/var/log/opengnsys.log +fi + + +#TODO => activacion de modo escritura en REPO +ActiveAdmin=true +if [ $ActiveAdmin == "true" ] +then + export boot=admin + umount /opt/opengnsys/images + + if [ "$ogprotocol" == "nfs" ] + then + mount.nfs ${ROOTSERVER}:/opt/opengnsys/images /opt/opengnsys/images -o nolock + fi + + if [ "$ogprotocol" == "smb" ] + then + echo "montando smb" + mount.cifs //${ROOTSERVER}/ogimages /opt/opengnsys/images -o user=opengnsys,pass=og + echo mount.cifs //${ROOTSERVER}/ogimages /opt/opengnsys/images -o user=opengnsys,pass=og + + fi +fi +# Arranque de OpenGnSys Client. +if [ -x "$OPENGNSYS/bin/ogAdmClient" ]; then + + + echo "$MSG_LAUNCHCLIENT modo cliente full" + $OPENGNSYS/bin/ogAdmClient -f $OPENGNSYS/etc/ogAdmClient.cfg -l $OGLOGFILE -d 5 +fi + +# Si fallo en cliente y modo "admin", cargar shell; si no, salir. +#if [ "$boot" == "admin" ]; then + bash +#fi diff --git a/old/serverstructure/preinit/defaultTESTING.sh b/old/serverstructure/preinit/defaultTESTING.sh new file mode 100755 index 0000000..3d291cc --- /dev/null +++ b/old/serverstructure/preinit/defaultTESTING.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Para que no haya problemas con el interprete +#ln -fs /opt/opengnsys/bin/bash /bin/bash + +set -a + +#source /opt/opengnsys/etc/preinit/loadenviron.sh +source /opt/opengnsys/etc/preinit/loadenvironTESTING.sh +#for f in fileslinks.sh loadudeb.sh loadmodules.sh metadevs.sh; do +for f in loadmodulesTESTING.sh; do + $OGETC/preinit/$f +done + +if [ -f $OGETC/init/$OG_IP.sh ]; then + $OGETC/init/$OG_IP.sh + +elif [ -f $OGETC/init/$OGGROUP.sh ]; then + $OGETC/init/$OGGROUP.sh + +elif [ -f $OGETC/init/defaultTESTING.sh ]; then + $OGETC/init/defaultTESTING.sh + +else + echo "No se ha encontrado script de inicio" + halt +fi diff --git a/old/serverstructure/preinit/loadenvironTESTING.sh b/old/serverstructure/preinit/loadenvironTESTING.sh new file mode 100755 index 0000000..1273db7 --- /dev/null +++ b/old/serverstructure/preinit/loadenvironTESTING.sh @@ -0,0 +1,95 @@ +#!/bin/bash +#/** +#@file loadenviron.sh +#@brief Script de carga de la API de funciones de OpenGNSys. +#@warning License: GNU GPLv3+ +#@version 0.9 +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2009-10-10 +#*/ + +# Idioma por defecto. +export LANG="${LANG:-es_ES}" + +# Directorios del projecto OpenGnSys. +export OPENGNSYS="${OPENGNSYS:-/opt/opengnsys}" +if [ -d $OPENGNSYS ]; then + export OGBIN=$OPENGNSYS/bin/testing + #export OGBIN=$OPENGNSYS/bin + export OGETC=$OPENGNSYS/etc + export OGLIB=$OPENGNSYS/lib + export OGAPI=$OGLIB/engine/bin + export OGSCRIPTS=$OPENGNSYS/scripts + export OGIMG=$OPENGNSYS/images + export OGCAC=$OPENGNSYS/cache + export OGLOG=$OPENGNSYS/log + + #export PATH=$OGBIN:$OGAPI:$OGSCRIPTS:$PATH + #export LD_LIBRARY_PATH=$OGLIB:$LD_LIBRARY_PATH + + # Cargar fichero de idioma. + LANGFILE=$OGETC/lang.$LANG.conf + if [ -f $LANGFILE ]; then + source $LANGFILE + for i in $(awk -F= '{if (NF==2) print $1}' $LANGFILE); do + export $i + done + fi + echo "$MSG_LOADAPI" + # Cargar mapa de teclado. + loadkeys ${LANG%_*} >/dev/null + # Cargar API de funciones. + for i in $OGAPI/*.lib; do + source $i + done + for i in $(typeset -F | cut -f3 -d" "); do + export -f $i + done + + # Añadir dependencia de arquitectura + ARCH=$(ogGetArch) +# if [ -n "$ARCH" ]; then + # export PATH=$OGBIN/$ARCH:$PATH + # export LD_LIBRARY_PATH=$OGLIB/$ARCH:$LD_LIBRARY_PATH + # fi + export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin:/opt/og2fs/2ndfs/opt/drbl/sbin + export PATH=$OGSCRIPTS:$PATH:$OGAPI:$OGBIN:$OGBIN/$ARCH + GLOBAL="cat /proc/cmdline" + for i in `${GLOBAL}` + do + echo $i | grep "=" > /dev/null && export $i + done + + + GLOBAL="cat /proc/cmdline" + for i in `${GLOBAL}` + do + echo $i | grep "=" > /dev/null && export $i + done + + + # Carga de las API testing + if [ "$engine" = "testing" ] + then + for i in $OGAPI/*.testing; do + source $i + done + #export PATH=$PATH:$OGBIN/$ARCH-testing + fi + + # Fichero de registros. + export OGLOGFILE="$OGLOG/$(ogGetIpAddress).log" + # FIXME Pruebas para grupos de ordenadores + #export OGGROUP=$(ogGetGroup) + export OGGROUP="$group" +fi + +# Declaración de códigos de error. +export OG_ERR_FORMAT=1 # Formato de ejecución incorrecto. +export OG_ERR_NOTFOUND=2 # Fichero o dispositivo no encontrado. +export OG_ERR_PARTITION=3 # Error en partición de disco. +export OG_ERR_LOCKED=4 # Partición o fichero bloqueado. +export OG_ERR_IMAGE=5 # Error al crear o restaurar una imagen. +export OG_ERR_NOTOS=6 # Sin sistema operativo. +export OG_ERR_NOTEXEC=7 # Programa o función no ejecutable. + diff --git a/old/serverstructure/preinit/loadmodulesTESTING.sh b/old/serverstructure/preinit/loadmodulesTESTING.sh new file mode 100755 index 0000000..cea7d53 --- /dev/null +++ b/old/serverstructure/preinit/loadmodulesTESTING.sh @@ -0,0 +1,28 @@ +#!/bin/bash +#/** +#@file loadmodules.sh +#@brief Script de inicio para cargar módulos complementarios del kernel. +#@version 1.0 +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2010-01-26 +#*/ + + +MSG_LOADMODULES=${MSG_LOADMODULES:-"."} +echo "$MSG_LOADMODULES para cliente full" + +# Directorio principal de módulos del kernel. +MODULESDIR=/lib/modules/$(uname -r)/kernel + +# Módulo del ratón. +insmod $MODULESDIR/drivers/input/mouse/psmouse.ko 2>/dev/null +# Módulos de discos. +#for m in $MODULESDIR/drivers/ata/*.ko; do + # insmod $m 2>/dev/null +#done +# Módulos de sistemas de archivos. +#for f in reiserfs jfs xfs hfs hfsplus; do +#for f in reiserfs xfs hfs hfsplus; do +# insmod $MODULESDIR/fs/$f/$f.ko 2>/dev/null +#done + diff --git a/old/serverstructure/var/lib/tftpboot/defaultFULL b/old/serverstructure/var/lib/tftpboot/defaultFULL new file mode 100644 index 0000000..b7f81d0 --- /dev/null +++ b/old/serverstructure/var/lib/tftpboot/defaultFULL @@ -0,0 +1,18 @@ +DEFAULT pxe-2.6.32-21-generic-pae + +LABEL pxe +KERNEL linux +APPEND initrd=initrd.gz ip=dhcp ro vga=788 irqpoll acpi=on boot=admin + +LABEL pxe-2.6.32-21-generic-pae +KERNEL ogclient/vmlinuz-2.6.32-21-generic-pae +APPEND initrd=ogclient/initrd.img-2.6.32-21-generic-pae ip=dhcp ro boot=oginit vga=788 irqpoll acpi=on og2nd=sqfs ogprotocol=nfs engine=testing + + +#NOTA: parametro boot: reservado para oginit INCOMPATIBLE CON BOOT=ADMIN +#NOTA: reposerver=$IPREPO correspondería a tu servidor Repositorio OG +#ogrepo=172.17.32.242 +#ip: +#og2nd=sqfs =>sqfs, img +#ogprotocol=nfs => nfs, smb +#engine=testing => activa las libreias testing de cada universidad.