summaryrefslogtreecommitdiffstats
path: root/client/boot/initrd-generator
diff options
context:
space:
mode:
Diffstat (limited to 'client/boot/initrd-generator')
-rwxr-xr-xclient/boot/initrd-generator314
1 files changed, 0 insertions, 314 deletions
diff --git a/client/boot/initrd-generator b/client/boot/initrd-generator
deleted file mode 100755
index 7ec1be9d..00000000
--- a/client/boot/initrd-generator
+++ /dev/null
@@ -1,314 +0,0 @@
-#!/bin/bash
-# Generador de ficheros "kernel" e "initrd.gz" para arranque de cliente OpenGnSys
-
-test "$(lsb_release -is 2>/dev/null)" == "Ubuntu" && DIST="$(lsb_release -cs)"
-DIST=${DIST:-"lucid"} # Si no se detecta, distribución Ubuntu por defecto.
-ARCH=$(arch) # Arquitectura del sistema: i386 (32 bits), amd64 (64 bits).
-ARCH=${ARCH:-"$(uname -m)"} # Corrección para Ubuntu Jaunty.
-ARCH=${ARCH/i[4-6]86/i386}
-ARCH=${ARCH/x86_64/amd64}
-URL=http://archive.ubuntu.com/ubuntu/dists/$DIST-updates/main/installer-$ARCH/current/images/netboot/ubuntu-installer/$ARCH
-if [ "$TMP" = "" ] ; then TMP=/tmp ; fi
-TMPINITRD=$TMP/initrd
-NEWROOT=$TMPINITRD/newroot
-ANTERIORPWD=$PWD
-DEST=$PWD
-LINUX=1
-CHROOTINITSCRIPT=/oginit
-INITSCRIPT=$NEWROOT$CHROOTINITSCRIPT
-
-# Comprueba los argumentos pasados para modificar los valores por defecto
-function parsearParametros
-{
- while [ $# -ne 0 ];do
- case $1 in
- ("-d")
- shift
- #URL=http://people.debian.org/~joeyh/d-i/images/daily/netboot/debian-installer/i386/
- URL=http://ftp.nl.debian.org/debian/dists/testing/main/installer-$ARCH/current/images/netboot/debian-installer/$ARCH/
- ;;
- ("-v")
- shift
- if [ $# -eq 0 ];then
- echo "Error en los argumentos"
- return -1
- else
- DIST=$1
- URL=http://archive.ubuntu.com/ubuntu/dists/$DIST-updates/main/installer-$ARCH/current/images/netboot/ubuntu-installer/$ARCH
- shift
- fi
- ;;
- ("-l")
- shift
- ;;
- ("-t")
- shift
- if [ $# -eq 0 ];then
- echo "Error en los argumentos"
- return -1
- else
- DEST=$1
- shift
- fi
- ;;
- esac
- done
-}
-
-function descargar
-{
- # Borramos si existe el directorio temporal
- if [ -d $TMPINITRD ]; then
- rm -r $TMPINITRD
- fi
- # Creamos directorio temporal y nos vamos alli
- mkdir -p $TMPINITRD
- cd $TMPINITRD
-
- # Ficheros a descargar: Initrd y Kernel (si está habilitado).
- FILES="initrd.gz"
- [ $LINUX ] && FILES="$FILES linux"
-
- for f in $FILES; do
- # Borrar fichero anterior
- [ -f "$f" ] && rm -f $f
- # Descargar fichero (intentar primero actualizaciones).
- wget $URL/$f || wget ${URL/-updates/}/$f
- if [ $? != 0 ]; then
- echo "Error no se ha podido descargar el fichero $f"
- exit 1
- fi
- done
-}
-
-# Descomprimimos el initrd
-function descomprimir
-{
- if [ ! -f $TMPINITRD/initrd.gz ]; then
- echo No se encuentra el initrd.gz
- exit -1
- fi
-
- if [ -f $NEWROOT ];then
- rm -rf $NEWROOT
- fi
-
- mkdir -p $NEWROOT
- cd $NEWROOT
-
- gzip -dc $TMPINITRD/initrd.gz | cpio -id
-}
-
-# Borrar todos los scripts del directorio actual
-function borrarScripts
-{
- # Primero los hacemos con los enlaces para que no se produzcan errores si borramos a lo que apunta primero
- for i in `ls -F -1 | grep @ | awk -F @ '{print $1}'`; do
- if [ $(file $i -L | grep "shell script" | wc -l) -gt 0 ]; then
- rm $i
- fi
- done
-
- # Ahora lo hacemos con todos los ejecutables
- for i in `ls`; do
- if [ $(file $i | grep "shell script" | wc -l) -gt 0 ]; then
- rm $i
- fi
- done
-}
-
-# Borra todos los ejecutables que enlacen con la libreria debian-installer
-function borrarEjecutablesDebinstall
-{
- # Primero lo hacemos con los enlaces para que no se produzcan errores si borramos a lo que apunta primero
- for i in `ls -F -1 | grep @ | awk -F @ '{print $1}'`; do
- if [ $(ldd $i | grep -e libdebian-installer -e libdebconf | wc -l) -gt 0 ]; then
- rm $i
- fi
- done
-
- # Ahora lo hacemos con todos los ejecutables
- for i in `ls`; do
- if [ $(ldd $i | grep -e libdebian-installer -e libdebconf | wc -l) -gt 0 ]; then
- rm $i
- fi
- done
-}
-
-# Elimina todos los fichero innecesarios del initrd
-function purgarFicherosDebian
-{
- mkdir -p $NEWROOT
- cd $NEWROOT
-
- rm init
-
- # Pasamos por todos los directorios y vamos borrando lo innecesario
- cd bin/
- borrarScripts
- borrarEjecutablesDebinstall
-
- cd ../etc/
- rm -rf cdebconf.conf default-release lsb-release preseed_aliases udebs-source
-
- cd ../lib/
- rm -rf chroot-setup.sh debian-installer* kickseed main-menu.d preseed libdebian-installer*
-
- cd ../sbin/
- borrarScripts
- borrarEjecutablesDebinstall
-
- cd ../usr/bin/
- borrarScripts
- borrarEjecutablesDebinstall
-
- cd ../lib/
- rm -rf base-installer.d debian-installer finish-install.d libdebconfclient* cdebconf fetch-url net-retriever post-base-installer.d
-
- # Solo queda un enlace simbolico que ya no apunta a nada
- cd ../sbin/
- rm -rf *
-
- cd ../share/
- rm -rf debconf keyrings save-logs
-
- cd ../../var/
- rm -rf cache/anna/ spool/kickseed/
-
- cd lib/
- rm -rf apt-install cdebconf dpkg
-
- cd ../..
-}
-
-# Le agrega los archivos necesarios para que arranque de otra manera
-function agregarNuevoArranque
-{
- cd $NEWROOT
-
- cd etc/
- # Script de arranque de OpenGnSys Client.
- perl -i -p -e "s/\/sbin\/debian-installer\$/${CHROOTINITSCRIPT//\//\/}/" inittab
- # Impedir usar shell en terminales 2 y 3
- # (NOTA: comentar la siguiente línea para sistemas en pruebas).
- #perl -n -i -e "print unless /^tty[23]/" inittab
-
- # Script inicial que ejecuta el resto de scripts de /etc/rcS.d/
- #echo "#! /bin/sh" >> rc
- #echo "for script in /etc/rcS.d/S[0-9][0-9]*; do if [ -x $script ]; then $script fi done" >> rc
- #chmod +x rc
-
- # Agregamos para que ejecute el script anterior lo primero
- #echo "::sysinit:/etc/init.d/rc" > inittab
- # Que ejecute el fichero /init cuando se reinicio el proceso init
- #echo "::restart:/sbin/init" >> inittab
- # Que funciona el control alt supr
- #echo "::ctrlaltdel:/sbin/reboot" >> inittab
-
- # Cosas que hacer si se apaga
- #echo "::shutdown:/bin/umount -a -r" >> inittab
- #echo "::shutdown:/sbin/swapoff -a" >> inittab
-
- # Primero ejecutamos el dhcp
- VERSION=$(cat /opt/opengnsys/doc/VERSION.txt 2>/dev/null)
- VERSION=${VERSION:-"OpenGnSys"}
- cat << FIN > $INITSCRIPT
-#! /bin/sh
-echo
-echo "Arranque cliente $VERSION"
-echo
-set -e
-# Exportando variables
-for i in \$(cat /proc/cmdline);
-do
- echo \$i | grep -q "=" && export \$i
-done
-# Configurar la red
-if [ "\$ip" == "dhcp" ]; then
- echo "Configurando red por DHCP"
- mkdir -p /var/state/dhcp
- /sbin/dhclient 2>/dev/null
-fi
-# Modo de trabajo del cliente: on-line/off-line
-status="\${status:-online}"
-echo "Comprobando modo de trabajo \$status"
-case "\$status" in
- online)
- if [ -z "\$repo" ]
- then
- SERVERIP=\$(grep -h dhcp-server-identifier /var/lib/dhcp3/dhclient.* | sed 's/[^0-9]*\(.*\);/\1/' | head -1)
- else
- SERVERIP="\$repo"
- fi
- echo "Preparando conexión con el Repositorio \$SERVERIP"
- # determinar el paramtro de boot para los permisos de los montajes de imagenes.
- BOOTMODE=\${boot:-"user"}
- case "\$BOOTMODE" in
- admin) MOUNTOPTS="rw" ;;
- user) MOUNTOPTS="ro" ;;
- *) echo "Aviso: Modo de arranque desconocido."
- BOOTMODE="user"
- MOUNTOPTS="ro" ;;
- esac
- # Montamos el resto de cosas necesarias
- echo "Montar repo en modo \$BOOTMODE"
- mkdir -p /opt/opengnsys
- DEFAULTOPTS="nolock,proto=tcp"
- if \$(mount | grep -q " /opt/opengnsys "); then
- DEFAULTOPTS="remount,\$DEFAULTOPTS"
- fi
- mount -t nfs -o "\$DEFAULTOPTS,ro" \$SERVERIP:/opt/opengnsys/client /opt/opengnsys
- mount -t nfs -o "\$DEFAULTOPTS,rw" \$SERVERIP:/opt/opengnsys/log/clients /opt/opengnsys/log
- mount -t nfs -o "\$DEFAULTOPTS,\$MOUNTOPTS" \$SERVERIP:/opt/opengnsys/images /opt/opengnsys/images
- ;;
- offline)
- echo "Off-line mode."
- ;;
-esac
-/opt/opengnsys/etc/preinit/default.sh
-FIN
- chmod +x $INITSCRIPT
-}
-
-# Función para corregir problemas detectados con módulos del kernel.
-function configurarModulos
-{
- cd $NEWROOT/lib/modules/*
-
- case "$DIST" in
- lucid) # Corregir problema de frame-buffer en Lucid.
- perl -p -i -e 's/vga16fb/vesafb/g' modules.alias ;;
- *) ;;
- esac
-}
-
-function comprimir
-{
- cd $NEWROOT
-
- if [ $? = 1 ] ; then
- exit -1
- fi
-
- find ./ | cpio -H newc -o > $TMPINITRD/new-initrd
- cd $TMPINITRD
- gzip -9 new-initrd
-}
-
-function finalizar
-{
- cd $ANTERIORPWD
- mv $TMPINITRD/new-initrd.gz $DEST/initrd.gz
- if [ $LINUX ] ; then
- mv $TMPINITRD/linux $DEST/linux
- fi
-}
-
-parsearParametros $@
-descargar
-descomprimir
-#purgarFicherosDebian
-agregarNuevoArranque
-configurarModulos
-comprimir
-finalizar