InitrdPxeMac: crea_initrd.sh

File crea_initrd.sh, 3.4 KB (added by juanfran, 11 years ago)
Line 
1#!/bin/bash
2#crea un cliente para imac de forma automatica
3#es necesario en la carpeta:
4#ogclient.sqfs
5#oginitrd.img
6#ogvmlinuz
7#modulos -- Listado de  modulos a incluir
8#aplicaciones --lista de aplicaciones a copiar en el initrd con sus dependencias
9
10#=====================================================
11# 0.Borrado de datos anteriores
12#=====================================================
13carpeta=$(pwd)
14rm ./ClienteMac -R 2>/dev/null
15#=====================================================
16# 1. Crear directorios root , squash y clienteMac
17#=====================================================
18mkdir root 2>/dev/null # para initrd
19mkdir squash 2>/dev/null # para el squashfs
20mkdir ClienteMac 2>/dev/null
21mkdir tmp 2>/dev/null
22#=====================================================
23# 2. Montar archivos en las carpetas
24#=====================================================
25sudo mount ./ogclient.sqfs ./squash -o loop -t squashfs >/dev/null
26cp ./oginitrd.img ./tmp/oginitrd.img.gz
27gunzip ./tmp/oginitrd.img.gz
28cd ./root
29cpio -id < ../tmp/oginitrd.img
30cd ..
31cp ./pxe ./root/script/panic/
32#====================================================
33# 3. copiar .ko necesarios
34#====================================================
35cd ./squash
36Lista=""
37date > ../log # reset del log
38
39Lista=`cat ../modulos`
40j=0
41for i in $Lista
42do             
43        ruta=$(find ./lib/modules/ | grep /${i}.ko )
44        if [ "$ruta" != "" ]; then
45                #echo " cp --parents $ruta ../root/"
46                cp --parents $ruta ../root/
47                [ -z $? ] || echo "Se copia $i " >> ../log; j=$(($j + 1))               
48        else
49                echo " Modulo ${i}.ko no encontrado"   
50        fi
51done
52echo "Se han copiado $j Archivos"
53
54ListaModulos="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"
55
56for i in $ListaModulos
57do             
58        ruta=$(find ./lib/modules/ | grep /${i} )
59        if [ "$ruta" != "" ]; then
60                #echo " cp --parents $ruta ../root/"
61                cp --parents $ruta ../root/
62                [ -z $? ] || echo "Se copia $i " >> ../log; j=$(($j + 1))               
63        else
64                echo " Archivo ${i} no encontrado"     
65        fi
66done
67echo "Se han copiado $j Archivos"
68
69cd ..
70#====================================================
71# 4. Se copian aplicaciones y dependencias necesarias
72#====================================================
73cd root
74ListaApp=`cat ../aplicaciones`
75for k in $ListaApp
76do
77        ruta=$(whereis "$k" |cut -d" " -f 2)
78        Lista=$(ldd  $ruta | cut -d " " -f3)
79        j=0
80        for i in $Lista
81        do
82                echo $i         
83                cp $i ./lib
84                [ -z $? ] || echo "Se copia $i " >> ../log; j=$(($j + 1))               
85        done
86        cp $ruta ./sbin
87        echo "Se copia $ruta " >> ../log
88        j=$(($j + 1))
89        echo "Se han copiado $j Archivos"
90done
91cd ..
92#=====================================================
93# 5. Crear initrd
94#=====================================================
95cd root
96chmod 777 ./ -R
97find ./ | cpio --create --format='newc' > ../ClienteMac/oginitrd.img
98gzip ../ClienteMac/oginitrd.img
99mv ../ClienteMac/oginitrd.img.gz ../ClienteMac/oginitrd.img
100cd ..
101#=====================================================
102# 6. desmontar y Borrar archivos y carpetas temporales 
103#=====================================================
104sudo umount ./squash
105rm ./root -R 2> /dev/null # para initrd
106rm ./squash -R 2> /dev/null # para el squashfs
107rm ./tmp -R 2> /dev/null
108sudo chmod 777 ./ClienteMac -R