#!/bin/bash
#crea un cliente para imac de forma automatica
#es necesario en la carpeta:
#ogclient.sqfs
#oginitrd.img
#ogvmlinuz
#modulos -- Listado de  modulos a incluir
#aplicaciones --lista de aplicaciones a copiar en el initrd con sus dependencias

#=====================================================
# 0.Borrado de datos anteriores
#=====================================================
carpeta=$(pwd)
rm ./ClienteMac -R 2>/dev/null
#=====================================================
# 1. Crear directorios root , squash y clienteMac
#=====================================================
mkdir root 2>/dev/null # para initrd
mkdir squash 2>/dev/null # para el squashfs
mkdir ClienteMac 2>/dev/null
mkdir tmp 2>/dev/null
#=====================================================
# 2. Montar archivos en las carpetas
#=====================================================
sudo mount ./ogclient.sqfs ./squash -o loop -t squashfs >/dev/null
cp ./oginitrd.img ./tmp/oginitrd.img.gz
gunzip ./tmp/oginitrd.img.gz
cd ./root
cpio -id < ../tmp/oginitrd.img
cd ..
cp ./pxe ./root/script/panic/
#====================================================
# 3. copiar .ko necesarios
#====================================================
cd ./squash
Lista=""
date > ../log # reset del log

Lista=`cat ../modulos`
j=0
for i in $Lista
do		
	ruta=$(find ./lib/modules/ | grep /${i}.ko )
	if [ "$ruta" != "" ]; then 
		#echo "	cp --parents $ruta ../root/"
		cp --parents $ruta ../root/
		[ -z $? ] || echo "Se copia $i " >> ../log; j=$(($j + 1))		
	else
		echo " Modulo ${i}.ko no encontrado"	
	fi
done
echo "Se han copiado $j Archivos"

ListaModulos="modules.alias modules.alias.bin modules.builtin modules.builtin.bin modules.ccwmap modules.dep modules.dep.bin modules.devname modules.ieee1394map modules.inputmap modules.isapnpmap modules.ofmap modules.order modules.pcimap modules.seriomap modules.softdep modules.symbols modules.symbols.bin modules.usbmap"

for i in $ListaModulos
do		
	ruta=$(find ./lib/modules/ | grep /${i} )
	if [ "$ruta" != "" ]; then 
		#echo "	cp --parents $ruta ../root/"
		cp --parents $ruta ../root/
		[ -z $? ] || echo "Se copia $i " >> ../log; j=$(($j + 1))		
	else
		echo " Archivo ${i} no encontrado"	
	fi
done
echo "Se han copiado $j Archivos"

cd ..
#====================================================
# 4. Se copian aplicaciones y dependencias necesarias
#====================================================
cd root
ListaApp=`cat ../aplicaciones`
for k in $ListaApp
do
	ruta=$(whereis "$k" |cut -d" " -f 2)
	Lista=$(ldd  $ruta | cut -d " " -f3)
	j=0
	for i in $Lista
	do
		echo $i 	
		cp $i ./lib
		[ -z $? ] || echo "Se copia $i " >> ../log; j=$(($j + 1))		
	done
	cp $ruta ./sbin
	echo "Se copia $ruta " >> ../log
	j=$(($j + 1))
	echo "Se han copiado $j Archivos"
done
cd ..
#=====================================================
# 5. Crear initrd
#=====================================================
cd root
chmod 777 ./ -R
find ./ | cpio --create --format='newc' > ../ClienteMac/oginitrd.img
gzip ../ClienteMac/oginitrd.img
mv ../ClienteMac/oginitrd.img.gz ../ClienteMac/oginitrd.img
cd ..
#=====================================================
# 6. desmontar y Borrar archivos y carpetas temporales  
#=====================================================
sudo umount ./squash
rm ./root -R 2> /dev/null # para initrd
rm ./squash -R 2> /dev/null # para el squashfs
rm ./tmp -R 2> /dev/null
sudo chmod 777 ./ClienteMac -R
