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 | #===================================================== |
---|
13 | carpeta=$(pwd) |
---|
14 | rm ./ClienteMac -R 2>/dev/null |
---|
15 | #===================================================== |
---|
16 | # 1. Crear directorios root , squash y clienteMac |
---|
17 | #===================================================== |
---|
18 | mkdir root 2>/dev/null # para initrd |
---|
19 | mkdir squash 2>/dev/null # para el squashfs |
---|
20 | mkdir ClienteMac 2>/dev/null |
---|
21 | mkdir tmp 2>/dev/null |
---|
22 | #===================================================== |
---|
23 | # 2. Montar archivos en las carpetas |
---|
24 | #===================================================== |
---|
25 | sudo mount ./ogclient.sqfs ./squash -o loop -t squashfs >/dev/null |
---|
26 | cp ./oginitrd.img ./tmp/oginitrd.img.gz |
---|
27 | gunzip ./tmp/oginitrd.img.gz |
---|
28 | cd ./root |
---|
29 | cpio -id < ../tmp/oginitrd.img |
---|
30 | cd .. |
---|
31 | cp ./pxe ./root/script/panic/ |
---|
32 | #==================================================== |
---|
33 | # 3. copiar .ko necesarios |
---|
34 | #==================================================== |
---|
35 | cd ./squash |
---|
36 | Lista="" |
---|
37 | date > ../log # reset del log |
---|
38 | |
---|
39 | Lista=`cat ../modulos` |
---|
40 | j=0 |
---|
41 | for i in $Lista |
---|
42 | do |
---|
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 |
---|
51 | done |
---|
52 | echo "Se han copiado $j Archivos" |
---|
53 | |
---|
54 | 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" |
---|
55 | |
---|
56 | for i in $ListaModulos |
---|
57 | do |
---|
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 |
---|
66 | done |
---|
67 | echo "Se han copiado $j Archivos" |
---|
68 | |
---|
69 | cd .. |
---|
70 | #==================================================== |
---|
71 | # 4. Se copian aplicaciones y dependencias necesarias |
---|
72 | #==================================================== |
---|
73 | cd root |
---|
74 | ListaApp=`cat ../aplicaciones` |
---|
75 | for k in $ListaApp |
---|
76 | do |
---|
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" |
---|
90 | done |
---|
91 | cd .. |
---|
92 | #===================================================== |
---|
93 | # 5. Crear initrd |
---|
94 | #===================================================== |
---|
95 | cd root |
---|
96 | chmod 777 ./ -R |
---|
97 | find ./ | cpio --create --format='newc' > ../ClienteMac/oginitrd.img |
---|
98 | gzip ../ClienteMac/oginitrd.img |
---|
99 | mv ../ClienteMac/oginitrd.img.gz ../ClienteMac/oginitrd.img |
---|
100 | cd .. |
---|
101 | #===================================================== |
---|
102 | # 6. desmontar y Borrar archivos y carpetas temporales |
---|
103 | #===================================================== |
---|
104 | sudo umount ./squash |
---|
105 | rm ./root -R 2> /dev/null # para initrd |
---|
106 | rm ./squash -R 2> /dev/null # para el squashfs |
---|
107 | rm ./tmp -R 2> /dev/null |
---|
108 | sudo chmod 777 ./ClienteMac -R |
---|