git-svn-id: https://opengnsys.es/svn/branches/version1.0@2250 a21b9725-9963-47de-94b9-378ad31fedc9remotes/github/master
|
@ -0,0 +1,497 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#/**
|
||||||
|
#@file boottoolsfunctions.lib
|
||||||
|
#@brief Librería o clase Boot-Tools
|
||||||
|
#@class Boot-Tools
|
||||||
|
#@brief Funciones para generar un sistema operativo cliente para opengnsys
|
||||||
|
#@version 0.9
|
||||||
|
#@warning License: GNU GPLv3+
|
||||||
|
#*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# btGetVariables: define las constantes a utilizar
|
||||||
|
# Autor: Antonio J. Doblas Viso. Universidad de Málaga.
|
||||||
|
btogGetVar()
|
||||||
|
{
|
||||||
|
export BTSVNBOOTTOOLS=/tmp/opengnsys_installer/opengnsys/client/boot-tools
|
||||||
|
export BTSVNSHARE=/tmp/opengnsys_installer/opengnsys/client/shared
|
||||||
|
export BTSVNENGINE=/tmp/opengnsys_installer/opengnsys/client/engine
|
||||||
|
|
||||||
|
export BTSVNOG2=/tmp/opengnsys_installer/opengnsys2
|
||||||
|
|
||||||
|
export BTTARGETDIR=/var/lib/tftpboot/ogclient/
|
||||||
|
export BTROOTFSIMG=${BTTARGETDIR}ogclient.img
|
||||||
|
export BTROOTFSMNT=${BTTARGETDIR}ogclientmount
|
||||||
|
# tamaño maximo limitado por schroot 2GB
|
||||||
|
export BTVIRTUALDISKSIZE=1000
|
||||||
|
export BTROOTFSIMGLABEL=ogClient
|
||||||
|
|
||||||
|
export LOG_FILE=/tmp/boot-tools_installation.log
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# btGetOsInfo: detecta la version del host, para tenerla de referencia en el boot-tools a generar.
|
||||||
|
#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2010/05/24
|
||||||
|
#@version 1.0 - Compatibilidad OpengGnsys X.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2011/08/03
|
||||||
|
function btogGetOsInfo ()
|
||||||
|
{
|
||||||
|
case $1 in
|
||||||
|
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/ "
|
||||||
|
;;
|
||||||
|
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/ "
|
||||||
|
;;
|
||||||
|
host | HOST | *)
|
||||||
|
export OSDISTRIB=$(lsb_release -i | 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/"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
echo $OSDISTRIB:$OSCODENAME:$OSRELEASE:$OSARCH:$OSHTTP
|
||||||
|
}
|
||||||
|
|
||||||
|
# btogSetFsVirtual: Crea y formatea el fichero - disco duro virtual
|
||||||
|
#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2010/05/24
|
||||||
|
#@version 1.0 - Compatibilidad OpengGnsys X.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2011/08/03
|
||||||
|
# error code return 2
|
||||||
|
btogSetFsVirtual ()
|
||||||
|
{
|
||||||
|
|
||||||
|
local RERROR DISKLOOP PARTLOOP #return code error
|
||||||
|
|
||||||
|
#Dependencias.
|
||||||
|
[ -z "$BTROOTFSIMG" ] && btogGetVar
|
||||||
|
|
||||||
|
echoAndLog "$FUNCNAME(): Creación y formateo del disco virtual $BTVIRTUALDISKSIZE MB "
|
||||||
|
|
||||||
|
#Desmontamos el dispositivo virtual
|
||||||
|
mount | grep $BTROOTFSMNT && umount $BTROOTFSMNT
|
||||||
|
mount | grep $BTROOTFSMNTT && umount $BTROOTFSMNT
|
||||||
|
|
||||||
|
#echo "$FUNCNAME(): Creando el directorio donde se montará el disco virtual $BTROOTFSMNT"
|
||||||
|
mkdir -p $BTROOTFSMNT
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
errorAndLog "$FUNCNAME(): Creando directorio $BTROOTFSMNT : ERROR"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Permisos para el usuario opengnsys.
|
||||||
|
chown -R root:opengnsys $BTTARGETDIR
|
||||||
|
|
||||||
|
#echo "$FUNCNAME(): Creando el disco virtual con tamaño máximo de $BTVIRTUALDISKSIZE MB"
|
||||||
|
dd if=/dev/zero of=$BTROOTFSIMG bs=1048576 count=$BTVIRTUALDISKSIZE
|
||||||
|
#qemu-img create $BTROOTFSIMG 3G
|
||||||
|
#dd if=/dev/zero of=$BTROOTFSIMG bs=1k count=$OGCLIENTSIZEKB # necesita 500MB
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
errorAndLog "$FUNCNAME(): Creando el disco virtual con tamaño maxima $BTVIRTUALDISKSIZE MB : ERROR"
|
||||||
|
return 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Particionamos el disco virtual con una sola particion primaria.
|
||||||
|
DISKLOOP=$(losetup -f)
|
||||||
|
#TODO: si no DISKLOOP error
|
||||||
|
losetup $DISKLOOP $BTROOTFSIMG
|
||||||
|
#echo "$FUNCNAME(): particiondo el disco virtual - $DISKLOOP - con una particion primaria"
|
||||||
|
echo -e "n\np\n1\n\n\nt\n83\nw" | fdisk $DISKLOOP
|
||||||
|
|
||||||
|
|
||||||
|
#echoAndLog "$FUNCNAME(): Liberamos Desmontando $DISKLOOP despues del particionado "
|
||||||
|
losetup -d $DISKLOOP
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
errorAndLog "$FUNCNAME(): Liberando disco virtual despues del particionado: ERROR"
|
||||||
|
return 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
PARTLOOP=$(losetup -f)
|
||||||
|
#echo "$FUNCNAME(): Formateando la particion principal $PARTLOOP"
|
||||||
|
losetup -o 32256 $PARTLOOP $BTROOTFSIMG && mkfs.ext3 -b 4096 -L $BTROOTFSIMGLABEL $PARTLOOP
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
errorAndLog "$FUNCNAME(): Formateando la particion principal del disco virtual: ERROR"
|
||||||
|
return 2
|
||||||
|
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 2
|
||||||
|
else
|
||||||
|
echoAndLog "$FUNCNAME(): $BTROOTFSIMG $BTVIRTUALDISKSIZE MB : OK"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# btogSetfsBase: Genera el sistema root base con debootstrap
|
||||||
|
#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2010/05/24
|
||||||
|
#@version 1.0 - Compatibilidad OpengGnsys X.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2011/08/03
|
||||||
|
# error code return 3
|
||||||
|
btogSetFsBase ()
|
||||||
|
{
|
||||||
|
|
||||||
|
# Dependencias
|
||||||
|
[ -z "$OSCODENAME" ] && btogGetOsInfo
|
||||||
|
|
||||||
|
echoAndLog "$FUNCNAME: Iniciando la generación del sistema de archivos "
|
||||||
|
|
||||||
|
#Montamos el dispositivo virtual en su punto de montaje.
|
||||||
|
mount | grep $BTROOTFSMNT || mount $BTROOTFSIMG $BTROOTFSMNT -o loop,offset=32256
|
||||||
|
mount | grep $BTROOTFSMNT && echoAndLog "$FUNCNAME: mount $BTROOTFSIMG $BTROOTFSMNT -o loop,offset=32256 OK " || errorAndLog "$FUNCNAME: mount $BTROOTFSIMG $BTROOTFSMNT -o loop,offset=32256 : FAILURE "
|
||||||
|
|
||||||
|
debootstrap --arch=$OSARCH --components=main,universe ${OSCODENAME} ${BTROOTFSMNT} ${OSHTTP}
|
||||||
|
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
errorAndLog "$FUNCNAME: debootstrap --include=linux-image-${OSRELEASE},linux-headers-${OSRELEASE} --arch=$OSARCH --components=main,universe $OSCODENAME $BTROOTFSMNT $OSHTTP : ha fallado!"
|
||||||
|
mount | grep $BTROOTFSMNT && umount $BTROOTFSMNT
|
||||||
|
return 3
|
||||||
|
else
|
||||||
|
echoAndLog "$FUNCNAME: debootstrap --include=linux-image-${OSRELEASE},linux-headers-${OSRELEASE} --arch=$OSARCH --components=main,universe $OSCODENAME $BTROOTFSMNT $OSHTTP : ok"
|
||||||
|
mount | grep $BTROOTFSMNT && umount $BTROOTFSMNT
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
##preubas revisar OSRELEASE
|
||||||
|
#debootstrap --include=linux-image-${OSRELEASE},linux-headers-${OSRELEASE} --arch=$OSARCH --components=main,universe ${OSCODENAME} ${OGCLIENTMOUNT} ${OSHTTP}
|
||||||
|
#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/
|
||||||
|
}
|
||||||
|
|
||||||
|
#btogSetFsAcces: habilita el acceso al sistema root del cliente con schroot
|
||||||
|
#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2010/05/24
|
||||||
|
#@version 1.0 - Compatibilidad OpengGnsys X.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2011/08/03
|
||||||
|
btogSetFsAccess()
|
||||||
|
{
|
||||||
|
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
|
||||||
|
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)
|
||||||
|
#
|
||||||
|
# <file system> <mount point> <type> <options> <dump> <pass>
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#btogFsInitr genera un initrd.
|
||||||
|
#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2010/05/24
|
||||||
|
#@version 1.0 - Compatibilidad OpengGnsys X.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2011/08/03
|
||||||
|
btogFsInitrd ()
|
||||||
|
{
|
||||||
|
#DEPENDENCIAS
|
||||||
|
ogClientVar
|
||||||
|
ogClientOsInfo
|
||||||
|
# $1
|
||||||
|
#TODO generara md5 del kernel y del initrd.
|
||||||
|
|
||||||
|
cd /
|
||||||
|
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 -
|
||||||
|
chmod -R 755 $OGCLIENTBASEDIR
|
||||||
|
}
|
||||||
|
|
||||||
|
#btogFsToSqfs convierte el sistema root en sqfs
|
||||||
|
#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2010/05/24
|
||||||
|
#@version 1.0 - Compatibilidad OpengGnsys X.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2011/08/03
|
||||||
|
btogFsSqfs ()
|
||||||
|
{
|
||||||
|
#Dependencias.
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# btogIsoGenerator genera la iso del cliente
|
||||||
|
#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2010/05/24
|
||||||
|
#@version 1.0 - Compatibilidad OpengGnsys X.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2011/08/03
|
||||||
|
function btogIsoGenerator {
|
||||||
|
apt-get install syslinux genisoimage
|
||||||
|
#TODO: deb http://free.nchc.org.tw/drbl-core drbl stable
|
||||||
|
#apt-get install gpxe
|
||||||
|
mkdir -p /tmp/iso/isolinux
|
||||||
|
#cd tmp/iso/
|
||||||
|
cp -prv /usr/lib/syslinux/* /tmp/iso/isolinux/
|
||||||
|
cp -prv /usr/share/gpxe/* /tmp/iso/isolinux/
|
||||||
|
mkdir -p /tmp/iso/ogclient
|
||||||
|
#el ogclienteToISO debe tener una copia del ogvmlinuz como linuxISO
|
||||||
|
cp -prv /var/lib/tftpboot/ogclientToIso/* /tmp/iso/ogclient
|
||||||
|
|
||||||
|
|
||||||
|
cat << FIN > /tmp/iso/isolinux/isolinux.cfg
|
||||||
|
DEFAULT menu.c32
|
||||||
|
PROMPT 0
|
||||||
|
ALLOWOPTIONS 1
|
||||||
|
|
||||||
|
MENU TITLE OpenGnsys 1.0.1 v00
|
||||||
|
|
||||||
|
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 vga irqpool acpi ogdebug ip:none
|
||||||
|
KERNEL /ogclient/linuxISO
|
||||||
|
APPEND initrd=/ogclient/oginitrd.img ro vga=788 irqpoll acpi=on boot=oginit og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=true ip=none
|
||||||
|
|
||||||
|
LABEL 1
|
||||||
|
MENU LABEL ogClient irqpoll acpi ip:none
|
||||||
|
KERNEL /ogclient/linuxISO
|
||||||
|
APPEND initrd=/ogclient/oginitrd.img ro irqpoll acpi=on boot=oginit og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=false ip=none
|
||||||
|
|
||||||
|
LABEL 2
|
||||||
|
MENU LABEL ogClient acpi debug ip=dhcp
|
||||||
|
KERNEL /ogclient/linuxISO
|
||||||
|
APPEND initrd=/ogclient/oginitrd.img ro acpi=on boot=oginit og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=true ip=dhcp
|
||||||
|
|
||||||
|
LABEL 3
|
||||||
|
MENU LABEL ogClient ip=dhcp
|
||||||
|
KERNEL /ogclient/linuxISO
|
||||||
|
APPEND initrd=/ogclient/oginitrd.img ro acpi=off boot=oginit og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=false ip=dhcp
|
||||||
|
|
||||||
|
|
||||||
|
#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
|
||||||
|
|
||||||
|
### vi /etc/grub.d/40_custom
|
||||||
|
##
|
||||||
|
#menuentry "og cache " {
|
||||||
|
#set root=(hd0,4)
|
||||||
|
#linux /ogvmlinuz ro vga=788 irqpoll acpi=on boot=oginit og2nd=sqfs ogprotocol=local ogactiveadmin=true ogdebug=true ip=none
|
||||||
|
#initrd /oginitrd.img
|
||||||
|
#}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2010/05/24
|
||||||
|
#@version 1.0 - Compatibilidad OpengGnsys X.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2011/08/03
|
||||||
|
function btogIsoTest {
|
||||||
|
#/tmp/iso
|
||||||
|
qemu -m 256 -boot d -cdrom ogClient.iso
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
############### 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
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,158 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#@file boottoolsgenerator.sh
|
||||||
|
#@brief Script generación del sistema opertativo cliente OpenGnSys
|
||||||
|
#@warning
|
||||||
|
#@version 0.9 - Prototipo de sistema operativo multiarranque de opengnsys.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2010/05/24
|
||||||
|
#@version 1.0 - Compatibilidad OpengGnsys X.
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Malaga.
|
||||||
|
#@date 2011/08/03
|
||||||
|
#*/
|
||||||
|
|
||||||
|
|
||||||
|
#Variables
|
||||||
|
TYPECLIENT=host
|
||||||
|
WORKDIR=/tmp/opengnsys_installer
|
||||||
|
INSTALL_TARGET=/opt/opengnsys
|
||||||
|
PROGRAMDIR=$(readlink -e $(dirname "$0"))
|
||||||
|
|
||||||
|
# Solo ejecutable por usuario root
|
||||||
|
if [ "$(whoami)" != 'root' ]
|
||||||
|
then
|
||||||
|
echo "ERROR: this program must run under root privileges!!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#funciones especificas del cliente.
|
||||||
|
source $PROGRAMDIR/boottoolsfunctions.lib
|
||||||
|
|
||||||
|
|
||||||
|
echoAndLog "OpenGnSys CLIENT installation begins at $(date)"
|
||||||
|
|
||||||
|
##########################################################################
|
||||||
|
## FASE 1 - Instalación de software adicional.
|
||||||
|
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 FASE 1
|
||||||
|
|
||||||
|
##### FASE 2 - Asignación de variables
|
||||||
|
#obtenemos las variables necesarias.
|
||||||
|
btogGetVar
|
||||||
|
#obtenemos la información del host.
|
||||||
|
btogGetOsInfo
|
||||||
|
##### FIN fase 2
|
||||||
|
|
||||||
|
############# FASE 3: Creación del Sistema Root (Segundo Sistema archivos (img))
|
||||||
|
##3.1 creación y formateo del disco virtual. generamos el dispositivo loop.
|
||||||
|
file $BTROOTFSIMG | grep "partition 1: ID=0x83"
|
||||||
|
if [ $? == 1 ]
|
||||||
|
then
|
||||||
|
btogSetFsVirtual || exit 2
|
||||||
|
fi
|
||||||
|
#3.2 generamos el Sistema de archivos con debootstrap
|
||||||
|
schroot -p -c IMGogclient -- touch /tmp/ogclientOK
|
||||||
|
if [ -f /tmp/ogclientOK ]
|
||||||
|
then
|
||||||
|
rm /tmp/ogclientOK
|
||||||
|
else
|
||||||
|
btogSetFsBase || exit 3
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
############### FASE 4: Configuración el acceso al Segundo Sistema de archivos (img), para schroot
|
||||||
|
cat /etc/schroot/schroot.conf | grep $BTROOTFSIMG || btogSetFsAccess
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
############### FASE 5: Configuración del Segundo Sistema de archivos (img) con la estructura especial de OpenGnsys
|
||||||
|
cp ${BTSVNBOOTTOOLS}/includes/root/* /tmp/
|
||||||
|
chmod 777 /tmp/*.sh
|
||||||
|
schroot -p -c IMGogclient -- /tmp/importSVNboot-tools.sh
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
############# 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
|
||||||
|
|
||||||
|
exit 99
|
||||||
|
################## FIN fase 6. Fin de comfiguración del segundo sistema de archivos (img)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
################## FASE 7. Generamos el 1er sistema de archivos. INITRD
|
||||||
|
btogFsInitrd
|
||||||
|
|
||||||
|
|
||||||
|
################## 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)"
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1,4 @@
|
||||||
|
LC_TYPE=es_ES@euro
|
||||||
|
LC_ALL=es_ES@euro
|
||||||
|
LANG=es_ES@euro
|
||||||
|
LANGUAGE=es_ES@euro
|
|
@ -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).
|
||||||
|
#
|
||||||
|
# <file system> <mount point> <type> <options> <dump> <pass>
|
||||||
|
proc /proc proc 0 0
|
||||||
|
/dev/sda1 ext3 errors=remount-ro 0 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
#!/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
|
||||||
|
copy_exec /sbin/mount.smbfs
|
||||||
|
copy_exec /bin/lsmod
|
||||||
|
|
||||||
|
|
||||||
|
# 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
|
||||||
|
manual_add_modules md4
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -0,0 +1,631 @@
|
||||||
|
#@file ogfunctions.lib
|
||||||
|
#@brief Librería o clase para la generación del 1erFS
|
||||||
|
#@class client
|
||||||
|
#@brief Funciones para la generación del primers sistema (initrd)
|
||||||
|
#@version 0.91
|
||||||
|
#@warning License: GNU GPLv3+
|
||||||
|
|
||||||
|
|
||||||
|
ogExportKernelParameters ()
|
||||||
|
{
|
||||||
|
GLOBAL="cat /proc/cmdline"
|
||||||
|
for i in `${GLOBAL}`
|
||||||
|
do
|
||||||
|
echo $i | grep "=" > /dev/null && export $i
|
||||||
|
done
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
ogExportVarEnvironment ()
|
||||||
|
{
|
||||||
|
export CFGINITRD="/tmp/initrd.cfg"
|
||||||
|
OGPROTOCOL="${ogprotocol:-smb}"
|
||||||
|
case "$OGPROTOCOL" in
|
||||||
|
nfs|NFS)
|
||||||
|
#export NFSROOTBOOT="/var/lib/tftpboot"
|
||||||
|
export SRCOGLIVE="/var/lib/tftpboot" && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD
|
||||||
|
#export NFSCLIENTDIR="/opt/opengnsys/client"
|
||||||
|
export SRCOGSHARE="/opt/opengnsys/client" && echo "SRCOGSHARE=$SRCOGSHARE" >> $CFGINITRD
|
||||||
|
#export NFSLOGDIR="/opt/opengnsys/log/clients"
|
||||||
|
export SRCOGLOG="/opt/opengnsys/log/clients" && echo "SRCOGLOG=$SRCOGLOG" >> $CFGINITRD
|
||||||
|
#export NFSIMGDIR="/opt/opengnsys/images"
|
||||||
|
export SRCOGIMAGES="/opt/opengnsys/images" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD
|
||||||
|
;;
|
||||||
|
smb|SMB|cifs|CIFS|samba|SAMBA)
|
||||||
|
export OPTIONS=" -o user=opengnsys,pass=og"
|
||||||
|
#export SMBROOTBOOT="tftpboot" && echo "SMBROOTBOOT=$SMBROOTBOOT" >> $CFGINITRD
|
||||||
|
export SRCOGLIVE="tftpboot" && echo "SRCOGLIVE=$SRCOGLIVE" >> $CFGINITRD
|
||||||
|
#export SMBCLIENTDIR="ogclient" && echo "SMBCLIENTDIR=$SMBCLIENTDIR" >> $CFGINITRD
|
||||||
|
export SRCOGSHARE="ogclient" && echo "SRCOGSHARE=$SRCOGSHARE" >> $CFGINITRD
|
||||||
|
#export SMBLOGDIR="oglog" && echo "SMBLOGDIR=$SMBLOGDIR" >> $CFGINITRD
|
||||||
|
export SRCOGLOG="oglog" && echo "SRCOGLOG=$SRCOGLOG" >> $CFGINITRD
|
||||||
|
#export SMBIMGDIR="ogimages" && echo "SMBIMGDIR=$SMBIMGDIR" >> $CFGINITRD
|
||||||
|
export SRCOGIMAGES="ogimages" && echo "SRCOGIMAGES=$SRCOGIMAGES" >> $CFGINITRD
|
||||||
|
;;
|
||||||
|
local|LOCAL)
|
||||||
|
export SRCOGLIVE="local"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
#punto de acceso al boot-tools live
|
||||||
|
#export LOCALROOTBOOT="/opt/og2fs/tftpboot" && echo "LOCALROOTBOOT=$LOCALROOTBOOT" >> $CFGINITRD
|
||||||
|
export DSTOGLIVE="/opt/oglive/tftpboot"
|
||||||
|
#punto de montaje para unionfs
|
||||||
|
#export LOCALROOTRAM="/opt/og2fs/1stfs" && echo "LOCALROOTRAM=$LOCALROOTRAM" >> $CFGINITRD
|
||||||
|
export OGLIVERAMFS="/opt/oglive/ramfs" && echo "OGLIVERAMFS=$OGLIVERAMFS" >> $CFGINITRD
|
||||||
|
#punto de montaje donde se accede al 2nd FS mediante loop
|
||||||
|
#export LOCALROOTIMG="/opt/og2fs/2ndfs" && echo "LOCALROOTIMG=$LOCALROOTIMG" >> $CFGINITRD
|
||||||
|
export OGLIVEROOTFS="/opt/oglive/rootfs" && echo "OGLIVEROOTFS=$OGLIVEROOTFS" >> $CFGINITRD
|
||||||
|
#punto de union entre LOCALROOTIMG y LOCALROOTRAM
|
||||||
|
#export LOCALROOTUNION="/opt/og2fs/unionfs" && echo "LOCALROOTUNION=$LOCALROOTUNION" >> $CFGINITRD
|
||||||
|
export OGLIVEUNIONFS="/opt/oglive/unionfs" && echo "OGLIVEUNIONFS=$OGLIVEUNIONFS" >> $CFGINITRD
|
||||||
|
#etiquta para los dispositivos offline
|
||||||
|
export OGLIVELABEL="ogClient"
|
||||||
|
|
||||||
|
#echo "puntos de montajes para los demas accesos"
|
||||||
|
#echo "acceso al client, engine, scritps, interfaz"
|
||||||
|
#export LOCALCLIENTDIR="/opt/opengnsys" && echo "LOCALCLIENTDIR=$LOCALCLIENTDIR" >> $CFGINITRD
|
||||||
|
export DSTOGSHARE="/opt/opengnsys" && echo "DSTOGSHARE=$DSTOGSHARE" >> $CFGINITRD
|
||||||
|
#export LOCALLOGDIR="/opt/opengnsys/log" && echo "LOCALLOGDIR=$LOCALLOGDIR" >> $CFGINITRD
|
||||||
|
export DSTOGLOG="/opt/opengnsys/log" && echo "DSTOGLOG=$DSTOGLOG" >> $CFGINITRD
|
||||||
|
#export LOCALIMGDIR="/opt/opengnsys/images" && echo "LOCALIMGDIR=$LOCALIMGDIR" >> $CFGINITRD
|
||||||
|
export DSTOGIMAGES="/opt/opengnsys/images" && echo "DSTOGIMAGES=$DSTOGIMAGES" >> $CFGINITRD
|
||||||
|
|
||||||
|
##INFORMACION DE OTRAS VARIABLES OBTENDIAS EN OTRAS FUNCIONES ogConfigureNetwork.
|
||||||
|
#DEVICE
|
||||||
|
#IPV4DDR
|
||||||
|
#IPV4BROADCAST
|
||||||
|
#IPV4NETMASK
|
||||||
|
#IPV4GATEWAY
|
||||||
|
#HOSTNAME
|
||||||
|
#INFORMACION de otras variasbles obteneidas desde ogGetROOTSERVER
|
||||||
|
#ROOTSERVER si ip=dhcp -> ROOTSERVER=NEXT-SERVER; si ip=host:rootserver:gw:mask:hostname:interfaz -> ROOTSERVER=rootserver
|
||||||
|
#BOOTIF -> si el gestor remoto es pxelinux.0 y se añade una linea más tipo "IPAPPEND 2" esta variable tendrá la mac de la interfaz.
|
||||||
|
#$OGSERVERLIVE
|
||||||
|
#$OGSERVERSHARE
|
||||||
|
#$OGSERVERLOG
|
||||||
|
#$OGSERVERIMAGES
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
ogConfigureRamfs ()
|
||||||
|
{
|
||||||
|
#mkdir -p $LOCALROOTBOOT
|
||||||
|
mkdir -p $DSTOGLIVE
|
||||||
|
#mkdir -p $LOCALROOTRAM
|
||||||
|
mkdir -p $OGLIVERAMFS
|
||||||
|
#mkdir -p $LOCALROOTIMG
|
||||||
|
mkdir -p $OGLIVEROOTFS
|
||||||
|
#mkdir -p $LOCALROOTUNION
|
||||||
|
mkdir -p $OGLIVEUNIONFS
|
||||||
|
}
|
||||||
|
|
||||||
|
ogLoadNetModule ()
|
||||||
|
{
|
||||||
|
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 dns
|
||||||
|
echo "nameserver $ogdns" > /etc/resolv.conf
|
||||||
|
|
||||||
|
|
||||||
|
# configuramos el /etc/networks
|
||||||
|
#read -e NETIP NETDEFAULT <<<$(route -n | grep eth0 | awk -F" " '{print $1}')
|
||||||
|
NETIP=$(route -n | grep eth0 | awk -F" " '{print $1}') && NETIP=$(echo $NETIP | cut -f1 -d" ")
|
||||||
|
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
|
||||||
|
|
||||||
|
echo "ogLive1.0.2" > /etc/debian_chroot
|
||||||
|
|
||||||
|
#enlace si iniciamos desde ogprotocolo=local { cdrom, usb, cache } .
|
||||||
|
# monta el raiz del dispositivo local en /opt/og2fs/tftpboot - acceso al fichero .sqfs
|
||||||
|
# y monta el sistema root sqfs en /opt/og2fs/2ndfs
|
||||||
|
#[ "$LOCALMEDIA" == "CACHE" ] && ln -s /opt/oglive/tftpboot /opt/opengnsys/cache
|
||||||
|
#[ "$ogprotocol" == "local" ] && ln -s /opt/oglive/2ndfs/opt/opengnsys/* /opt/opengnsys/
|
||||||
|
[ "$LOCALMEDIA" == "CACHE" ] && ln -s $DSTOGLIVE /opt/opengnsys/cache
|
||||||
|
[ "$ogprotocol" == "local" ] && ln -s ${OGLIVEROOTFS}/opt/opengnsys/* /opt/opengnsys/
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#Requiere ogConfigureNetworking.
|
||||||
|
#Exporta ROOTSERVER
|
||||||
|
# si la red ha sido configurada con dhcp el valor de ROOTSERVER será el valor de next-server del dhcp
|
||||||
|
# si la red ha sido configurada con el parametro de kernel ip, será el segundo valor.
|
||||||
|
## ip=iphost:ipnext-server:ipgateway:netmask:hostname:iface:none
|
||||||
|
## ip=172.17.36.21:62.36.225.150:172.17.36.254:255.255.255.0:prueba1:eth0:none
|
||||||
|
ogGetROOTSERVER ()
|
||||||
|
{
|
||||||
|
# get nfs root from dhcp
|
||||||
|
if [ "x${NFSROOT}" = "xauto" ]; then
|
||||||
|
# check if server ip is part of dhcp root-path
|
||||||
|
if [ "${ROOTPATH#*:}" = "${ROOTPATH}" ]; then
|
||||||
|
NFSROOT=${ROOTSERVER}:${ROOTPATH}
|
||||||
|
else
|
||||||
|
NFSROOT=${ROOTPATH}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
|
||||||
|
elif [ -n "${NFSROOT}" ]; then
|
||||||
|
# nfs options are an optional arg
|
||||||
|
if [ "${NFSROOT#*,}" != "${NFSROOT}" ]; then
|
||||||
|
NFSOPTS="-o ${NFSROOT#*,}"
|
||||||
|
fi
|
||||||
|
NFSROOT=${NFSROOT%%,*}
|
||||||
|
if [ "${NFSROOT#*:}" = "$NFSROOT" ]; then
|
||||||
|
NFSROOT=${ROOTSERVER}:${NFSROOT}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
export ROOTSERVER
|
||||||
|
echo "ROOTSERVER=$ROOTSERVER" >> $CFGINITRD
|
||||||
|
|
||||||
|
#si oglive no oglive=R
|
||||||
|
export OGSERVERIMAGES="${ogrepo:-$ROOTSERVER}"
|
||||||
|
export OGSERVERSHARE="${ogshare:-$ROOTSERVER}"
|
||||||
|
export OGSERVERLOG="${oglog:-$ROOTSERVER}"
|
||||||
|
export OGSERVERLIVE="${oglive:-$OGSERVERIMAGES}"
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
#ogConnect
|
||||||
|
# parm 1 ip servidor TODO:dns
|
||||||
|
# parm 2 protocolo
|
||||||
|
# parm 3 punto de acceso remoto
|
||||||
|
# parm 4 punto de montaje local
|
||||||
|
# parm 5 acceso de lectura tipo ",ro"
|
||||||
|
ogConnect ()
|
||||||
|
{
|
||||||
|
SERVER=$1
|
||||||
|
PROTOCOL=$2
|
||||||
|
SRC=$3
|
||||||
|
DST=$4
|
||||||
|
READONLY=$5
|
||||||
|
|
||||||
|
case "$PROTOCOL" in
|
||||||
|
nfs)
|
||||||
|
nfsmount -o nolock${READONLY} ${SERVER}:${SRC} ${DST}
|
||||||
|
;;
|
||||||
|
smb)
|
||||||
|
mount.cifs //${SERVER}/${SRC} ${DST} ${OPTIONS}${READONLY}
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
ogConnectOgLive ()
|
||||||
|
{
|
||||||
|
# Si ogprotocol=local, la funcion ogExportVar => SRCOGLIVE=local
|
||||||
|
if [ "$SRCOGLIVE" == "local" ]
|
||||||
|
then
|
||||||
|
echo "Montar imagen del sistema root desde dispositivo local"
|
||||||
|
for i in $(blkid /dev/s* | grep $OGLIVELABEL | awk -F: '{print $2}' | tr -d \"); do export $i; done
|
||||||
|
mount -t $TYPE LABEL=$LABEL $DSTOGLIVE
|
||||||
|
if [ $? != 0 ]
|
||||||
|
then
|
||||||
|
mount -t reiserfs LABEL=CACHE $DSTOGLIVE
|
||||||
|
export LOCALMEDIA=CACHE
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# Si ogprotocol es remoto. TODO en smb rw y en nfs ro??
|
||||||
|
ogConnect $OGSERVERLIVE $OGPROTOCOL $SRCOGLIVE $DSTOGLIVE
|
||||||
|
fi
|
||||||
|
# Si el montaje ha sido correcto, tanto en local como en remoto. Procedemos con la union
|
||||||
|
ogMergeLive
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ogMergeLive()
|
||||||
|
{
|
||||||
|
#Si existe en el punto de acceso del del oglive el fichero ogclient.sqfs
|
||||||
|
if [ -f $DSTOGLIVE/ogclient/ogclient.sqfs ]
|
||||||
|
then
|
||||||
|
cat /proc/mounts > /tmp/mtab.preunion
|
||||||
|
if [ "$og2nd" == "img" ]
|
||||||
|
then
|
||||||
|
#Montamos el ROOTFS tipo img, para desarrolladores
|
||||||
|
losetup /dev/loop0 $DSTOGLIVE/ogclient/ogclient.img -o 32256
|
||||||
|
mount /dev/loop0 $OGLIVEROOTFS
|
||||||
|
else
|
||||||
|
## Montamos el ROOTFS tipo squashfs
|
||||||
|
mount $DSTOGLIVE/ogclient/ogclient.sqfs $OGLIVEROOTFS -t squashfs -o loop
|
||||||
|
fi
|
||||||
|
# Realizamos la union entre el ogliveram(initrd) y el ogliverootfs(ogclient.sqfs)
|
||||||
|
for i in etc var lib bin sbin usr root boot; do
|
||||||
|
ogUnionLiveDir $i
|
||||||
|
done
|
||||||
|
cat /tmp/mtab.preunion > /etc/mtab
|
||||||
|
else
|
||||||
|
echo "Fichero imagen del cliente no encontrado"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ogUnionLiveDir
|
||||||
|
#par 1 el directorio a unir.
|
||||||
|
# para el parmetro 1 (directorio),
|
||||||
|
ogUnionLiveDir()
|
||||||
|
{
|
||||||
|
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"
|
||||||
|
|
||||||
|
mkdir -p $OGLIVERAMFS$TMPDIR
|
||||||
|
U1STDIR="${OGLIVERAMFS}${TMPDIR}=RW"
|
||||||
|
U2NDDIR="${OGLIVEROOTFS}${TMPDIR}=RO"
|
||||||
|
UNIONDIR=${OGLIVEUNIONFS}${TMPDIR}
|
||||||
|
mkdir -p $UNIONDIR
|
||||||
|
$UBIN $FUSE_OPT $UNION_OPT ${U1STDIR}:${U2NDDIR} $UNIONDIR
|
||||||
|
mount --bind $UNIONDIR $TMPDIR
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ogConfigureLoopback()
|
||||||
|
{
|
||||||
|
# for the portmapper we need localhost
|
||||||
|
ifconfig lo 127.0.0.1
|
||||||
|
#/etc/init.d/portmap start
|
||||||
|
}
|
||||||
|
|
||||||
|
ogConfigureNetworking()
|
||||||
|
{
|
||||||
|
#echo "ogConfigureNetworking: Buscando interfaz a configurar DEVICE"
|
||||||
|
if [ -n "${BOOTIF}" ]
|
||||||
|
then
|
||||||
|
#echo " variable BOOTIF exportada con pxelinux.0 con valor $BOOTIF"
|
||||||
|
IP=$IPOPTS
|
||||||
|
temp_mac=${BOOTIF#*-}
|
||||||
|
# convert to typical mac address format by replacing "-" with ":"
|
||||||
|
bootif_mac=""
|
||||||
|
IFS='-'
|
||||||
|
for x in $temp_mac ; do
|
||||||
|
if [ -z "$bootif_mac" ]; then
|
||||||
|
bootif_mac="$x"
|
||||||
|
else
|
||||||
|
bootif_mac="$x:$bootif_mac"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
unset IFS
|
||||||
|
# look for devices with matching mac address, and set DEVICE to
|
||||||
|
# appropriate value if match is found.
|
||||||
|
for device in /sys/class/net/* ; do
|
||||||
|
if [ -f "$device/address" ]; then
|
||||||
|
current_mac=$(cat "$device/address")
|
||||||
|
if [ "$bootif_mac" = "$current_mac" ]; then
|
||||||
|
DEVICE=${device##*/}
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
#echo "variable BOOTIF no exportada, intentamos detectar que interfaz se ha iniciado"
|
||||||
|
IP=$ip
|
||||||
|
#TODO Detectar que interfaz se ha iniciado
|
||||||
|
case ${IP} in
|
||||||
|
none|off)
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
""|on|any)
|
||||||
|
# Bring up device
|
||||||
|
DEVICE=eth0
|
||||||
|
;;
|
||||||
|
dhcp|bootp|rarp|both)
|
||||||
|
DEVICE=eth0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
DEVICE=`echo $IP | cut -f6 -d:`
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if [ -z "${DEVICE}" ]; then
|
||||||
|
echo "variable DEVICE con valor $DEVICE no encontrada, llamamos de nuevo a ogconfigure_networking"
|
||||||
|
ogConfigureNetworking
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ] && return 0
|
||||||
|
#if [ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ]; then
|
||||||
|
# echo "variable DEVICE con valor $DEVICE y fichero /tmp/net-$DEVICE encontrados"
|
||||||
|
# return 0
|
||||||
|
#else
|
||||||
|
# echo "variable DEVICE con valor $DEVICE encontrada, procedemos a configurala y a crear el fichero /tmp/net-$DEVICE"
|
||||||
|
#fi
|
||||||
|
|
||||||
|
# Activamos la interfaz antes de configurar.
|
||||||
|
ip address flush $DEVICE
|
||||||
|
ip link set dev $DEVICE up
|
||||||
|
# Si no se detecta señal portadora volver a configurar.
|
||||||
|
sleep 1
|
||||||
|
CARRIER=$(cat /sys/class/net/${DEVICE}/carrier)
|
||||||
|
if [ "$CARRIER" != "1" ]
|
||||||
|
then
|
||||||
|
ogConfigureNetworking
|
||||||
|
fi
|
||||||
|
|
||||||
|
# support ip options see linux sources
|
||||||
|
# Documentation/filesystems/nfsroot.txt
|
||||||
|
# Documentation/frv/booting.txt
|
||||||
|
for ROUNDTTT in 2 3 4 6 9 16 25 36 64 100; do
|
||||||
|
# The NIC is to be configured if this file does not exist.
|
||||||
|
# Ip-Config tries to create this file and when it succeds
|
||||||
|
# creating the file, ipconfig is not run again.
|
||||||
|
if [ -e /tmp/net-"${DEVICE}".conf ]; then
|
||||||
|
break;
|
||||||
|
fi
|
||||||
|
case ${IP} in
|
||||||
|
none|off)
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
""|on|any)
|
||||||
|
# Bring up device
|
||||||
|
echo "Setting $DEVICE with option:on|any and Variable IP= $IP: ipconfig -t ${ROUNDTTT} ${DEVICE} "
|
||||||
|
ipconfig -t ${ROUNDTTT} ${DEVICE}
|
||||||
|
;;
|
||||||
|
dhcp|bootp|rarp|both)
|
||||||
|
echo "Setting $DEVICE with option:dhcp|bootp|rarp|both and Variable IP= $IP: ipconfig -t ${ROUNDTTT} -c ${IP} -d ${DEVICE} "
|
||||||
|
ipconfig -t ${ROUNDTTT} -c ${IP} -d ${DEVICE}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Setting $DEVICE with option * and Variable IP= $IP: ipconfig -t ${ROUNDTTT} -d $IP "
|
||||||
|
ipconfig -t ${ROUNDTTT} -d $IP
|
||||||
|
# grab device entry from ip option
|
||||||
|
NEW_DEVICE=${IP#*:*:*:*:*:*}
|
||||||
|
if [ "${NEW_DEVICE}" != "${IP}" ]; then
|
||||||
|
NEW_DEVICE=${NEW_DEVICE%:*}
|
||||||
|
else
|
||||||
|
# wrong parse, possibly only a partial string
|
||||||
|
NEW_DEVICE=
|
||||||
|
fi
|
||||||
|
if [ -n "${NEW_DEVICE}" ]; then
|
||||||
|
DEVICE="${NEW_DEVICE}"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# source ipconfig output
|
||||||
|
if [ -n "${DEVICE}" ]; then
|
||||||
|
. /tmp/net-${DEVICE}.conf
|
||||||
|
DEVICECFG="/tmp/net-${DEVICE}.conf"
|
||||||
|
export DEVICECFG
|
||||||
|
export DEVICE
|
||||||
|
echo "DEVICE=$DEVICE" >> $CFGINITRD
|
||||||
|
echo "DEVICECFG=$DEVICECFG" >> $CFGINITRD
|
||||||
|
echo "exportando variable DEVICE con valor = $DEVICE y el DEVICECFG con valor $DEVICECFG"
|
||||||
|
else
|
||||||
|
# source any interface as not exaclty specified
|
||||||
|
. /tmp/net-*.conf
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
# Ask yesno question.
|
||||||
|
#
|
||||||
|
# Usage: yesno OPTIONS QUESTION
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# --timeout N Timeout if no input seen in N seconds.
|
||||||
|
# --default ANS Use ANS as the default answer on timeout or
|
||||||
|
# if an empty answer is provided.
|
||||||
|
#
|
||||||
|
# Exit status is the answer. 0=yes 1=no
|
||||||
|
|
||||||
|
ogYesNo()
|
||||||
|
{
|
||||||
|
local ans
|
||||||
|
local ok=0
|
||||||
|
local timeout=0
|
||||||
|
local default
|
||||||
|
local t
|
||||||
|
|
||||||
|
while [[ "$1" ]]
|
||||||
|
do
|
||||||
|
case "$1" in
|
||||||
|
--default)
|
||||||
|
shift
|
||||||
|
default=$1
|
||||||
|
if [[ ! "$default" ]]; then error "Missing default value"; fi
|
||||||
|
t=$(echo $default | tr '[:upper:]' '[:lower:]')
|
||||||
|
|
||||||
|
if [[ "$t" != 'y' && "$t" != 'yes' && "$t" != 'n' && "$t" != 'no' ]]; then
|
||||||
|
error "Illegal default answer: $default"
|
||||||
|
fi
|
||||||
|
default=$t
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
|
||||||
|
--timeout)
|
||||||
|
shift
|
||||||
|
timeout=$1
|
||||||
|
if [[ ! "$timeout" ]]; then error "Missing timeout value"; fi
|
||||||
|
#if [[ ! "$timeout" =~ ^[0-9][0-9]*$ ]]; then error "Illegal timeout value: $timeout"; fi
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
|
||||||
|
-*)
|
||||||
|
error "Unrecognized option: $1"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ $timeout -ne 0 && ! "$default" ]]; then
|
||||||
|
error "Non-zero timeout requires a default answer"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! "$*" ]]; then error "Missing question"; fi
|
||||||
|
|
||||||
|
while [[ $ok -eq 0 ]]
|
||||||
|
do
|
||||||
|
if [[ $timeout -ne 0 ]]; then
|
||||||
|
if ! read -t $timeout -p "$*" ans; then
|
||||||
|
ans=$default
|
||||||
|
else
|
||||||
|
# Turn off timeout if answer entered.
|
||||||
|
timeout=0
|
||||||
|
if [[ ! "$ans" ]]; then ans=$default; fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
read -p "$*" ans
|
||||||
|
if [[ ! "$ans" ]]; then
|
||||||
|
ans=$default
|
||||||
|
else
|
||||||
|
ans=$(echo $ans | tr '[:upper:]' '[:lower:]')
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$ans" == 'y' || "$ans" == 'yes' || "$ans" == 'n' || "$ans" == 'no' ]]; then
|
||||||
|
ok=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $ok -eq 0 ]]; then warning "Valid answers are: yes y no n"; fi
|
||||||
|
done
|
||||||
|
[[ "$ans" = "y" || "$ans" == "yes" ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
### # borrar
|
||||||
|
|
||||||
|
ogConectROOTSERVER ()
|
||||||
|
{
|
||||||
|
local OPTIONS
|
||||||
|
#params a detectar
|
||||||
|
if [ $ogrepo ]
|
||||||
|
then
|
||||||
|
# Validar si la ip es correcta
|
||||||
|
ROOTREPO=$ogrepo
|
||||||
|
else
|
||||||
|
ROOTREPO=$ROOTSERVER
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$ogprotocol" in
|
||||||
|
local)
|
||||||
|
echo "Montar imagen del sistema root desde dispositivo local"
|
||||||
|
for i in $(blkid /dev/s* | grep ogClient | awk -F: '{print $2}' | tr -d \"); do export $i; done
|
||||||
|
mount -t $TYPE LABEL=$LABEL $LOCALROOTBOOT
|
||||||
|
if [ $? != 0 ]
|
||||||
|
then
|
||||||
|
mount -t reiserfs LABEL=CACHE $LOCALROOTBOOT
|
||||||
|
export LOCALMEDIA=CACHE
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
httfs)
|
||||||
|
echo "protocolo httfs aun no soportado"
|
||||||
|
;;
|
||||||
|
sshfs)
|
||||||
|
echo "protocolo sshfs aun no soportado"
|
||||||
|
;;
|
||||||
|
smb)
|
||||||
|
echo "Preparando conexión con el Repositorio $ROOTSERVER por $ogprotocol"
|
||||||
|
OPTIONS=" -o user=opengnsys,pass=og"
|
||||||
|
mount.cifs //${ROOTSERVER}/${SMBROOTBOOT} $LOCALROOTBOOT $OPTIONS
|
||||||
|
mount.cifs //${ROOTSERVER}/${SMBCLIENTDIR} $LOCALCLIENTDIR $OPTIONS
|
||||||
|
mount.cifs //${ROOTSERVER}/${SMBLOGDIR} $LOCALLOGDIR $OPTIONS
|
||||||
|
|
||||||
|
mount.cifs //${ROOTREPO}/${SMBIMGDIR} $LOCALIMGDIR ${OPTIONS},ro
|
||||||
|
;;
|
||||||
|
nfs)
|
||||||
|
echo "Preparando conexión con el Repositorio $ROOTSERVER por $ogprotocol"
|
||||||
|
nfsmount -o nolock $ROOTSERVER:$NFSROOTBOOT $LOCALROOTBOOT
|
||||||
|
nfsmount -o nolock,ro $ROOTSERVER:$NFSCLIENTDIR $LOCALCLIENTDIR
|
||||||
|
nfsmount -o nolock $ROOTSERVER:$NFSLOGDIR $LOCALLOGDIR
|
||||||
|
|
||||||
|
nfsmount -o nolock,ro $ROOTREPO:$NFSIMGDIR $LOCALIMGDIR
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
ogMerge2ndFile()
|
||||||
|
{
|
||||||
|
if [ -f $LOCALROOTBOOT/ogclient/ogclient.sqfs ]
|
||||||
|
then
|
||||||
|
cat /proc/mounts > /tmp/mtab.preunion
|
||||||
|
if [ "$og2nd" == "img" ]
|
||||||
|
then
|
||||||
|
#para acceder al img
|
||||||
|
losetup /dev/loop0 $LOCALROOTBOOT/ogclient/ogclient.img -o 32256
|
||||||
|
mount /dev/loop0 $LOCALROOTIMG
|
||||||
|
else
|
||||||
|
## para acceder al squashfs
|
||||||
|
mount $LOCALROOTBOOT/ogclient/ogclient.sqfs $LOCALROOTIMG -t squashfs -o loop
|
||||||
|
fi
|
||||||
|
for i in etc var lib bin sbin usr root boot; do
|
||||||
|
unionmount $i
|
||||||
|
done
|
||||||
|
cat /tmp/mtab.preunion > /etc/mtab
|
||||||
|
else
|
||||||
|
echo "Fichero imagen del cliente no encontrado"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
unionmount()
|
||||||
|
{
|
||||||
|
tmpdir=/$1 #dir
|
||||||
|
FUSE_OPT="-o default_permissions -o allow_other -o use_ino -o nonempty -o suid"
|
||||||
|
UNION_OPT="-o cow -o noinitgroups"
|
||||||
|
UBIN="unionfs-fuse"
|
||||||
|
#UPATH="/unionfs"
|
||||||
|
#LOCALROOTIMG="/opt/og2fs/2ndfs"
|
||||||
|
#LOCALROOTRAM="/opt/og2fs/1stfs" #/unionfs/host #punto de montaje para unionfs
|
||||||
|
#LOCALROOTUNION=/opt/og2fs/unionfs/" #/unionfs/union #punto de union entreo LOCALROOTIMG y LOCALROOTRAM
|
||||||
|
#mkdir -p $LOCALROOTRAM #/unionfs/host
|
||||||
|
#mkdir -p $LOCALROOTUNION #/unionfs/union
|
||||||
|
mkdir -p $LOCALROOTRAM$tmpdir
|
||||||
|
#mount --bind /$tmpdir $LOCALROOTRAM$tmpdir
|
||||||
|
U1STDIR="${LOCALROOTRAM}${tmpdir}=RW"
|
||||||
|
U2NDDIR="${LOCALROOTIMG}${tmpdir}=RO"
|
||||||
|
UNIONDIR=$LOCALROOTUNION$tmpdir
|
||||||
|
mkdir -p $UNIONDIR
|
||||||
|
$UBIN $FUSE_OPT $UNION_OPT ${U1STDIR}:${U2NDDIR} $UNIONDIR
|
||||||
|
mount --bind $UNIONDIR $tmpdir
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
unionmountOLD()
|
||||||
|
{
|
||||||
|
FUSE_OPT="-o default_permissions -o allow_other -o use_ino -o nonempty -o suid"
|
||||||
|
UNION_OPT="-o cow -o noinitgroups"
|
||||||
|
UPATH="/unionfs"
|
||||||
|
UBIN="unionfs-fuse"
|
||||||
|
mkdir -p /unionfs/host
|
||||||
|
mkdir -p /unionfs/union
|
||||||
|
dir=$1
|
||||||
|
mkdir -p /unionfs/host/$dir
|
||||||
|
#mount --bind /$dir /unionfs/host/$dir
|
||||||
|
mkdir -p /unionfs/union/$dir
|
||||||
|
host="/unionfs/host/${dir}=RW"
|
||||||
|
common="/opt/og2fs/${dir}=RO"
|
||||||
|
$UBIN $FUSE_OPT $UNION_OPT ${host}:${common} /unionfs/union/$dir
|
||||||
|
mount --bind /unionfs/union/$dir /$dir
|
||||||
|
}
|
|
@ -0,0 +1,133 @@
|
||||||
|
# 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
|
||||||
|
#@version 1.0. - Adaptacion variables. Corrección enlace red
|
||||||
|
#@author Antonio J. Doblas Viso. Universidad de Málaga. EVLT.
|
||||||
|
#@date 2011/06/16
|
||||||
|
#*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
sleep 2
|
||||||
|
|
||||||
|
[ "$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 " "
|
||||||
|
ogConfigureNetworking
|
||||||
|
log_success_msg "config networking"
|
||||||
|
ogConfigureLoopback
|
||||||
|
log_success_msg "config loopback"
|
||||||
|
|
||||||
|
|
||||||
|
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before detect rootserver: y/N "
|
||||||
|
[ $? == 0 ] && sh || echo " "
|
||||||
|
ogGetROOTSERVER && log_success_msg "Get Info from pxe server and ckeck distribuited OG services "
|
||||||
|
|
||||||
|
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before connect and merging the rootfs -ogLive- : y/N "
|
||||||
|
[ $? == 0 ] && sh || echo " "
|
||||||
|
ogConnectOgLive && log_success_msg "Merge the initrd with the remote rootfs -ogLive-" || sh
|
||||||
|
# si es necesario realiza ogConnect $OGSERVERLIVE $OGPROTOCOL $SRCOGLIVE $DSTOGLIVE
|
||||||
|
|
||||||
|
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before connect with client dir SHARE -engine,scripts,interface, -share- : y/N "
|
||||||
|
[ $? == 0 ] && sh || echo " "
|
||||||
|
ogConnect $OGSERVERSHARE $OGPROTOCOL $SRCOGSHARE $DSTOGSHARE
|
||||||
|
|
||||||
|
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before connect with client dir LOG STORAGE : y/N "
|
||||||
|
[ $? == 0 ] && sh || echo " "
|
||||||
|
ogConnect $OGSERVERLOG $OGPROTOCOL $SRCOGLOG $DSTOGLOG
|
||||||
|
|
||||||
|
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before connect with REPOSITORY STORAGE : y/N "
|
||||||
|
[ $? == 0 ] && sh || echo " "
|
||||||
|
ogConnect $OGSERVERIMAGES $OGPROTOCOL $SRCOGIMAGES $DSTOGIMAGES
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before conect with og Services : y/N "
|
||||||
|
#[ $? == 0 ] && sh || echo " "
|
||||||
|
#ogConectROOTSERVER && log_success_msg "Conecting with og services" || sh
|
||||||
|
|
||||||
|
|
||||||
|
#[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before merge the Second File System with initrd (First File System) : y/N "
|
||||||
|
#[ $? == 0 ] && sh || echo " "
|
||||||
|
#ogMerge2ndFile && log_success_msg "Merge onto Second File System"
|
||||||
|
|
||||||
|
|
||||||
|
####[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/og-bottom"
|
||||||
|
####run_scripts /scripts/og-bottom
|
||||||
|
####[ "$quiet" != "y" ] && log_end_msg
|
||||||
|
|
||||||
|
|
||||||
|
[ "$ogdebug" == "true" ] && ogYesNo --timeout 5 --default no "Stop before doing the postconfiguration: y/N "
|
||||||
|
[ $? == 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -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/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
|
|
@ -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
|
|
@ -0,0 +1,4 @@
|
||||||
|
auto lo
|
||||||
|
iface lo inet loopback
|
||||||
|
auto eth0
|
||||||
|
iface eth0 inet dhcp
|
|
@ -0,0 +1,93 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
### NOTA este archivo se sobreescribe al conectarse con el ogSHARE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#/**
|
||||||
|
#@file loadenviron.sh
|
||||||
|
#@brief Script de carga de la API de funciones de OpenGNSys.
|
||||||
|
#@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
|
||||||
|
|
||||||
|
source /tmp/net-eth* 2>/dev/null
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 no
|
||||||
|
|
||||||
|
# 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
|
After Width: | Height: | Size: 870 B |
After Width: | Height: | Size: 296 B |
After Width: | Height: | Size: 350 B |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 13 KiB |
|
@ -0,0 +1,11 @@
|
||||||
|
[Plymouth Theme]
|
||||||
|
Name=Script
|
||||||
|
Description=Script example plugin.
|
||||||
|
ModuleName=script
|
||||||
|
|
||||||
|
[script]
|
||||||
|
ImageDir=/lib/plymouth/themes/opengnsys
|
||||||
|
ScriptFile=/lib/plymouth/themes/opengnsys/opengnsys.script
|
||||||
|
|
||||||
|
[script-env-vars]
|
||||||
|
example_env_var=example env var value
|
After Width: | Height: | Size: 13 KiB |
|
@ -0,0 +1,203 @@
|
||||||
|
# This is an example plymouth plugin script
|
||||||
|
|
||||||
|
Window.SetBackgroundTopColor(0, 0, 0);
|
||||||
|
Window.SetBackgroundBottomColor(0, 0, 0);
|
||||||
|
|
||||||
|
#logo.image = Image("special://logo");
|
||||||
|
logo.image = Image ("opengnsys.png");
|
||||||
|
logo.sprite = Sprite(logo.image);
|
||||||
|
logo.opacity_angle = 0;
|
||||||
|
|
||||||
|
fun refresh_callback ()
|
||||||
|
{
|
||||||
|
if (status == "normal")
|
||||||
|
{
|
||||||
|
logo.opacity_angle += ((2 * 3.14) / 50) * 0.5; # 0.5 HZ
|
||||||
|
min_opacity = 0.3;
|
||||||
|
opacity = (Math.Cos(logo.opacity_angle) + 1) / 2;
|
||||||
|
opacity *= 1 - min_opacity;
|
||||||
|
opacity += min_opacity;
|
||||||
|
logo.sprite.SetX (Window.GetX() + Window.GetWidth() / 2 - logo.image.GetWidth() / 2);
|
||||||
|
logo.sprite.SetY (Window.GetY() + Window.GetHeight() / 2 - logo.image.GetHeight() / 2);
|
||||||
|
logo.sprite.SetOpacity (opacity);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logo.sprite.SetX (0);
|
||||||
|
logo.sprite.SetY (0);
|
||||||
|
logo.sprite.SetOpacity (1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Plymouth.SetRefreshFunction (refresh_callback);
|
||||||
|
|
||||||
|
#----------------------------------------- Dialogue --------------------------------
|
||||||
|
|
||||||
|
status = "normal";
|
||||||
|
|
||||||
|
fun dialog_setup()
|
||||||
|
{
|
||||||
|
local.box;
|
||||||
|
local.lock;
|
||||||
|
local.entry;
|
||||||
|
|
||||||
|
box.image = Image("box.png");
|
||||||
|
lock.image = Image("lock.png");
|
||||||
|
entry.image = Image("entry.png");
|
||||||
|
|
||||||
|
box.sprite = Sprite(box.image);
|
||||||
|
box.x = Window.GetX() + Window.GetWidth() / 2 - box.image.GetWidth ()/2;
|
||||||
|
box.y = Window.GetY() + Window.GetHeight() / 2 - box.image.GetHeight()/2;
|
||||||
|
box.z = 10000;
|
||||||
|
box.sprite.SetPosition(box.x, box.y, box.z);
|
||||||
|
|
||||||
|
lock.sprite = Sprite(lock.image);
|
||||||
|
lock.x = box.x + box.image.GetWidth()/2 - (lock.image.GetWidth() + entry.image.GetWidth()) / 2;
|
||||||
|
lock.y = box.y + box.image.GetHeight()/2 - lock.image.GetHeight()/2;
|
||||||
|
lock.z = box.z + 1;
|
||||||
|
lock.sprite.SetPosition(lock.x, lock.y, lock.z);
|
||||||
|
|
||||||
|
entry.sprite = Sprite(entry.image);
|
||||||
|
entry.x = lock.x + lock.image.GetWidth();
|
||||||
|
entry.y = box.y + box.image.GetHeight()/2 - entry.image.GetHeight()/2;
|
||||||
|
entry.z = box.z + 1;
|
||||||
|
entry.sprite.SetPosition(entry.x, entry.y, entry.z);
|
||||||
|
|
||||||
|
global.dialog.box = box;
|
||||||
|
global.dialog.lock = lock;
|
||||||
|
global.dialog.entry = entry;
|
||||||
|
global.dialog.bullet_image = Image("bullet.png");
|
||||||
|
dialog_opacity (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
fun dialog_opacity(opacity)
|
||||||
|
{
|
||||||
|
dialog.box.sprite.SetOpacity (opacity);
|
||||||
|
dialog.lock.sprite.SetOpacity (opacity);
|
||||||
|
dialog.entry.sprite.SetOpacity (opacity);
|
||||||
|
for (index = 0; dialog.bullet[index]; index++)
|
||||||
|
{
|
||||||
|
dialog.bullet[index].sprite.SetOpacity(opacity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun display_normal_callback ()
|
||||||
|
{
|
||||||
|
global.status = "normal";
|
||||||
|
if (global.dialog)
|
||||||
|
dialog_opacity (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
fun display_password_callback (prompt, bullets)
|
||||||
|
{
|
||||||
|
global.status = "password";
|
||||||
|
if (!global.dialog)
|
||||||
|
dialog_setup();
|
||||||
|
else
|
||||||
|
dialog_opacity(1);
|
||||||
|
for (index = 0; dialog.bullet[index] || index < bullets; index++)
|
||||||
|
{
|
||||||
|
if (!dialog.bullet[index])
|
||||||
|
{
|
||||||
|
dialog.bullet[index].sprite = Sprite(dialog.bullet_image);
|
||||||
|
dialog.bullet[index].x = dialog.entry.x + index * dialog.bullet_image.GetWidth();
|
||||||
|
dialog.bullet[index].y = dialog.entry.y + dialog.entry.image.GetHeight() / 2 - dialog.bullet_image.GetHeight() / 2;
|
||||||
|
dialog.bullet[index].z = dialog.entry.z + 1;
|
||||||
|
dialog.bullet[index].sprite.SetPosition(dialog.bullet[index].x, dialog.bullet[index].y, dialog.bullet[index].z);
|
||||||
|
}
|
||||||
|
if (index < bullets)
|
||||||
|
dialog.bullet[index].sprite.SetOpacity(1);
|
||||||
|
else
|
||||||
|
dialog.bullet[index].sprite.SetOpacity(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Plymouth.SetDisplayNormalFunction(display_normal_callback);
|
||||||
|
Plymouth.SetDisplayPasswordFunction(display_password_callback);
|
||||||
|
|
||||||
|
#----------------------------------------- Progress Bar --------------------------------
|
||||||
|
|
||||||
|
progress_box.original_image = Image("progress_box.png");
|
||||||
|
progress_box.image = progress_box.original_image.Scale(Window.GetWidth (), progress_box.original_image.GetHeight());
|
||||||
|
progress_box.sprite = Sprite(progress_box.image);
|
||||||
|
|
||||||
|
progress_box.x = Window.GetX() + Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2;
|
||||||
|
progress_box.y = Window.GetY() + Window.GetHeight() - progress_box.image.GetHeight();
|
||||||
|
progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0);
|
||||||
|
|
||||||
|
progress_bar.original_image = Image("progress_bar.png");
|
||||||
|
progress_bar.image = progress_bar.original_image.Scale(0, progress_box.image.GetHeight());
|
||||||
|
progress_bar.sprite = Sprite();
|
||||||
|
|
||||||
|
progress_bar.x = Window.GetX() + Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2;
|
||||||
|
progress_bar.y = Window.GetY() + Window.GetHeight() - progress_box.image.GetHeight();
|
||||||
|
progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1);
|
||||||
|
|
||||||
|
fun progress_callback (duration, progress)
|
||||||
|
{
|
||||||
|
if (progress_bar.image.GetWidth () != Math.Int (progress_bar.original_image.GetWidth () * progress))
|
||||||
|
{
|
||||||
|
progress_bar.image = progress_bar.original_image.Scale(progress_box.image.GetWidth(progress_box.image) * progress, progress_box.image.GetHeight());
|
||||||
|
progress_bar.sprite.SetImage (progress_bar.image);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Plymouth.SetBootProgressFunction(progress_callback);
|
||||||
|
|
||||||
|
#----------------------------------------- Quit --------------------------------
|
||||||
|
|
||||||
|
fun quit_callback ()
|
||||||
|
{
|
||||||
|
logo.sprite.SetOpacity (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
Plymouth.SetQuitFunction(quit_callback);
|
||||||
|
|
||||||
|
#----------------------------------------- Message --------------------------------
|
||||||
|
|
||||||
|
message_sprite = Sprite();
|
||||||
|
message_sprite.SetPosition(10, 10, 10000);
|
||||||
|
|
||||||
|
fun message_callback (text)
|
||||||
|
{
|
||||||
|
my_image = Image.Text(text, 0.6, 0.6, 0.6);
|
||||||
|
message_sprite.SetImage(my_image);
|
||||||
|
message_sprite.SetX(Window.GetWidth () / 2 - my_image.GetWidth() / 2);
|
||||||
|
message_sprite.SetY((Window.GetHeight () * 0.7) - (2 * my_image.GetHeight()));
|
||||||
|
message.sprite.SetZ(11);
|
||||||
|
}
|
||||||
|
|
||||||
|
Plymouth.SetMessageFunction(message_callback);
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------- Status Update --------------------------------
|
||||||
|
|
||||||
|
statusupdate_sprite = Sprite();
|
||||||
|
|
||||||
|
fun StringLength(string) {
|
||||||
|
|
||||||
|
index = 0;
|
||||||
|
str = String(string);
|
||||||
|
while(str.CharAt(index)) index++;
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
|
||||||
|
fun status_callback (text)
|
||||||
|
{
|
||||||
|
// Truncate the message if too long
|
||||||
|
if (StringLength(text) > (Window.GetHeight () / 4 )) {
|
||||||
|
text = text.SubString(0, (Window.GetHeight () / 4 ) - 3);
|
||||||
|
text += "...";
|
||||||
|
}
|
||||||
|
|
||||||
|
my_image = Image.Text(text, 0.4, 0.4, 0.4);
|
||||||
|
statusupdate_sprite.SetPosition(10, 10 + (i * 20), 10000);
|
||||||
|
statusupdate_sprite.SetImage(my_image);
|
||||||
|
statusupdate_sprite.SetX(Window.GetWidth () / 2 - my_image.GetWidth() / 2);
|
||||||
|
statusupdate_sprite.SetY((Window.GetHeight () * 0.7) - my_image.GetHeight());
|
||||||
|
statusupdate.sprite.SetZ(11);
|
||||||
|
}
|
||||||
|
|
||||||
|
Plymouth.SetUpdateStatusFunction(status_callback);
|
||||||
|
|
||||||
|
|
After Width: | Height: | Size: 285 B |
After Width: | Height: | Size: 285 B |
|
@ -0,0 +1,40 @@
|
||||||
|
#!/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
|
||||||
|
|
||||||
|
#TODO: comprobar si esta instalado.
|
||||||
|
ctorrent install
|
||||||
|
|
||||||
|
#TODO: comprobar si esta instalado.
|
||||||
|
udpcast install
|
||||||
|
|
||||||
|
#ntfs-3g install
|
||||||
|
|
||||||
|
#TODO: comprobar si esta instalado.
|
||||||
|
ms-sys install
|
||||||
|
|
||||||
|
#TODO: comprobar si esta instalado.
|
||||||
|
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
|
||||||
|
|
||||||
|
#TODO: comprobar si esta instalado.
|
||||||
|
cd /tmp
|
||||||
|
wget http://damien.guibouret.free.fr/savepart.zip
|
||||||
|
unzip savepart.zip -d /sbin/
|
||||||
|
|
||||||
|
|
||||||
|
#apt-get remove build-essential libattr* attr make m4 gettext libmhash-dev gdebi-core gawk
|
||||||
|
|
|
@ -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
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#TODO Comprobar si esta los source.
|
||||||
|
|
||||||
|
#svn checkout http://www.opengnsys.es/svn/branches/version1.0/client /tmp/opengnsys_installer/opengnsys/client/;
|
||||||
|
#svn checkout http://www.opengnsys.es/svn/branches/version2/ /tmp/opengnsys_installer/opengnsys2
|
||||||
|
find /tmp/opengnsys_installer/ -name .svn -type d -exec rm -fr {} \; 2>/dev/null;
|
||||||
|
|
||||||
|
#plymouth
|
||||||
|
apt-get install plymouth plymouth-theme-script
|
||||||
|
|
||||||
|
|
||||||
|
#plymoutyh
|
||||||
|
update-alternatives --install /lib/plymouth/themes/default.plymouth default.plymouth /lib/plymouth/themes/opengnsys/opengnsys.plymouth 100
|
||||||
|
update-alternatives --set default.plymouth /lib/plymouth/themes/opengnsys/opengnsys.plymouth
|
||||||
|
|
||||||
|
mkdir -p /etc/initramfs-tools/conf.d
|
||||||
|
echo "FRAMEBUFFER=y" > /etc/initramfs-tools/conf.d/splash
|
|
@ -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
|
|
@ -0,0 +1,80 @@
|
||||||
|
#!/bin/bash
|
||||||
|
################################################################
|
||||||
|
##################### SOFTWARE #####################
|
||||||
|
################################################################
|
||||||
|
export LANGUAGE=C
|
||||||
|
export LC_ALL=C
|
||||||
|
export LANG=C
|
||||||
|
|
||||||
|
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/"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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 lighttpd
|
||||||
|
|
||||||
|
# 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 hfsplus hfsprogs hfsutils nilfs-tools reiser4progs ufsutils
|
||||||
|
|
||||||
|
#btrfs-tools
|
||||||
|
|
||||||
|
# software cloning
|
||||||
|
apt-get -y --force-yes install drbl-partimage fsarchiver pv kexec-tools
|
||||||
|
apt-get -y --force-yes install mbuffer
|
||||||
|
|
||||||
|
#monitor
|
||||||
|
apt-get install bwbar bmon iftop ifstat dstat hdparm sdparm blktool testdisk ssmping mii-diag
|
||||||
|
|
||||||
|
## software postconf
|
||||||
|
apt-get -y --force-yes install drbl-chntpw chntpw ethtool lshw gawk subversion
|
||||||
|
|
||||||
|
# software compressor
|
||||||
|
apt-get -y --force-yes install lzma zip unzip gzip lzop drbl-lzop pigz pbzip2 lbzip2 rzip p7zip-full unzip
|
||||||
|
|
||||||
|
|
||||||
|
#compatibilidad og2
|
||||||
|
apt-get install python-openssl python
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/bash
|
||||||
|
dpkg-reconfigure console-data
|
||||||
|
dpkg-reconfigure console-setup
|
||||||
|
dpkg-reconfigure locales
|
|
@ -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
|
|
@ -0,0 +1,118 @@
|
||||||
|
#!/bin/bash
|
||||||
|
#TODO Comprobar si esta los source.
|
||||||
|
|
||||||
|
#svn checkout http://www.opengnsys.es/svn/branches/version1.0/client /tmp/opengnsys_installer/opengnsys/client/;
|
||||||
|
#svn checkout http://www.opengnsys.es/svn/branches/version2/ /tmp/opengnsys_installer/opengnsys2
|
||||||
|
find /tmp/opengnsys_installer/ -name .svn -type d -exec rm -fr {} \; 2>/dev/null;
|
||||||
|
|
||||||
|
|
||||||
|
SVNCLIENTDIR=/tmp/opengnsys_installer/opengnsys/client/boot-tools
|
||||||
|
SVNCLIENTSTRUCTURE=/tmp/opengnsys_installer/opengnsys/client/shared
|
||||||
|
SVNCLIENTENGINE=/tmp/opengnsys_installer/opengnsys/client/engine
|
||||||
|
SVNOG2=/tmp/opengnsys_installer/opengnsys2
|
||||||
|
|
||||||
|
OGCLIENTMOUNT=""
|
||||||
|
|
||||||
|
|
||||||
|
OSDISTRIB=$(lsb_release -i | awk -F: '{sub(/\t/,""); print $2}') 2>/dev/null
|
||||||
|
OSCODENAME=$(cat /etc/lsb-release | grep CODENAME | awk -F= '{print $NF}')
|
||||||
|
OSRELEASE=$(uname -a | awk '{print $3}')
|
||||||
|
uname -a | grep x86_64 > /dev/null && export OSARCH=amd64 || export OSARCH=i386
|
||||||
|
OSHTTP="http://es.archive.ubuntu.com/ubuntu/"
|
||||||
|
echo $OSDISTRIB:$OSCODENAME:$OSRELEASE:$OSARCH:$OSHTTP
|
||||||
|
|
||||||
|
LERROR=TRUE
|
||||||
|
|
||||||
|
echo "$FUNCNAME: Iniciando la personalización con datos del SVN "
|
||||||
|
|
||||||
|
# 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
|
||||||
|
echo "$FUNCNAME(): Parsing apt.sources : ERROR"
|
||||||
|
exit 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
|
||||||
|
# echo "$FUNCNAME(): Parsing GenerateInitrd.sh : ERROR"
|
||||||
|
# exit 1
|
||||||
|
#else
|
||||||
|
# rm /root/GenerateInitrd.generic.sh
|
||||||
|
#fi
|
||||||
|
|
||||||
|
#damos permiso al directorio de scripts
|
||||||
|
chmod 775 ${SVNCLIENTDIR}/clientstructure/root/*
|
||||||
|
|
||||||
|
# los copiamos
|
||||||
|
cp -prv ${SVNCLIENTDIR}/includes/* /
|
||||||
|
mkdir -p ${OGCLIENTMOUNT}/opt/opengnsys/
|
||||||
|
cp -prv ${SVNCLIENTSTRUCTURE}/* ${OGCLIENTMOUNT}/opt/opengnsys/
|
||||||
|
cp -prv ${SVNCLIENTENGINE}/* ${OGCLIENTMOUNT}/opt/opengnsys/lib/engine/bin/
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
echo "$FUNCNAME(): Copying client data : ERROR"
|
||||||
|
exit 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/
|
||||||
|
cp -pr ${SVNCLIENTSTRUCTURE}/lib/fonts $OGCLIENTMOUNT/usr/local/Trolltech/QtEmbedded-4.5.1/lib/fonts
|
||||||
|
cp -pr ${SVNCLIENTSTRUCTURE}/lib/fonts $OGCLIENTMOUNT/usr/local/QtEmbedded-4.6.2/lib/fonts
|
||||||
|
cp -pr ${SVNCLIENTSTRUCTURE}/lib/fonts $OGCLIENTMOUNT/usr/local/QtEmbedded-4.6.3/lib/fonts
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
echo "$FUNCNAME(): Linking Browser fonts : ERROR"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#########################################################
|
||||||
|
cp -pr ${SVNCLIENTSTRUCTURE}/lib/pci.ids $OGCLIENTMOUNT/etc
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
echo "$FUNCNAME(): Copying pci.ids : ERROR"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
####### Browsser
|
||||||
|
cp ${SVNCLIENTSTRUCTURE}/bin/browser $OGCLIENTMOUNT/bin
|
||||||
|
if [ $? -ne 0 ]
|
||||||
|
then
|
||||||
|
echo "$FUNCNAME(): Copying Browser : ERROR"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
#Compatiblidad con og2
|
||||||
|
cp ${SVNCLIENTSTRUCTURE}/bin/browser2 $OGCLIENTMOUNT/bin
|
||||||
|
|
||||||
|
cp -prv ${SVNOG2}/ogr/ogr $OGCLIENTMOUNT/opt/opengnsys/bin/
|
||||||
|
|
||||||
|
cp -prv ${SVNOG2}/ogr/libogr.py $OGCLIENTMOUNT/usr/lib/python2.7/libogr.py
|
||||||
|
cp -prv ${SVNOG2}/ogr/libogr.py $OGCLIENTMOUNT/usr/lib/python2.6/libogr.py
|
||||||
|
cp -prv ${SVNOG2}/ogr/libogr.py $OGCLIENTMOUNT/opt/opengnsys/lib/python
|
||||||
|
|
||||||
|
|
||||||
|
echo "mkdir -p /opt/opengnsys/lib/engine/"
|
||||||
|
mkdir -p /opt/opengnsys/lib/engine/
|
||||||
|
echo "cp -prv ${SVNOG2}/engine/2.0/* $OGCLIENTMOUNT/opt/opengnsys/lib/engine/"
|
||||||
|
cp -prv ${SVNOG2}/engine/2.0/* $OGCLIENTMOUNT/opt/opengnsys/lib/engine/
|
||||||
|
|
||||||
|
|
||||||
|
cp -prv ${SVNOG2}/job_executer $OGCLIENTMOUNT/opt/opengnsys/bin/
|
||||||
|
|
||||||
|
|
||||||
|
cp ${SVNCLIENTSTRUCTURE}/bin/ogAdmClient $OGCLIENTMOUNT/bin
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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
|
|
@ -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
|