43 | | fstab |
44 | | rc.local |
| 43 | |
| 44 | == fstab == |
| 45 | |
| 46 | La raíz del sistema de ficheros es un dispositivo nfs que montamos con permiso de sólo lectura. El sistema operativo necesita poder escribir en determinados directorios para funcionar. |
| 47 | |
| 48 | Montamos una serie de dipositivos ramdisk en los directorios que necesitemos escribir. Lo que escribamos en ellos se situará en la memoria, perdiéndose al apagar el sistema. |
| 49 | |
| 50 | {{{ |
| 51 | # /etc/fstab: static file system information. |
| 52 | # |
| 53 | # <file system> <mount point> <type> <options> <dump> <pass> |
| 54 | proc /proc proc defaults 0 0 |
| 55 | /dev/nfs / nfs defaults 1 1 |
| 56 | none /root tmpfs defaults 0 0 |
| 57 | none /mnt tmpfs defaults 0 0 |
| 58 | none /tmp tmpfs defaults 0 0 |
| 59 | none /dev/shm tmpfs defaults 0 0 |
| 60 | none /var/run tmpfs defaults 0 0 |
| 61 | none /var/lock tmpfs defaults 0 0 |
| 62 | none /var/tmp tmpfs defaults 0 0 |
| 63 | none /var/log tmpfs defaults 0 0 |
| 64 | none /var/state tmpfs defaults 0 0 |
| 65 | none /var/lib/nfs tmpfs defaults 0 0 |
| 66 | none /var/lib/xkb tmpfs defaults 0 0 |
| 67 | none /var/EAC tmpfs defaults 0 0 |
| 68 | }}} |
| 69 | |
| 70 | |
| 71 | == rc.local == |
| 72 | |
| 73 | Copiamos el rc.local que trae la distribución de EAC. |
| 74 | |
| 75 | Explicamos un par de cosas: |
| 76 | |
| 77 | * /etc/mtab -> como no tenemos permiso de lectura en /etc lo situamos en /var/tmp y hacemos enlace simbólico. |
| 78 | * Montamos los directorios de las librerías, las imágenes y la información de los hosts por nfs (antes hemos creado los puntos de monjate) |
| 79 | * Cargamos las librerías para tener disponible sus funciones: source ... |
| 80 | |
| 81 | {{{ |
| 82 | #!/bin/bash |
| 83 | # |
| 84 | # rc.local |
| 85 | # |
| 86 | # This script is executed at the end of each multiuser runlevel. |
| 87 | # Make sure that the script will "exit 0" on success or any other |
| 88 | # value on error. |
| 89 | # |
| 90 | # In order to enable or disable this script just change the execution |
| 91 | # bits. |
| 92 | # |
| 93 | # By default this script does nothing. |
| 94 | |
| 95 | ###exit 0 |
| 96 | ### personalizando el entorno etc |
| 97 | |
| 98 | export PATH=$PATH:/sbin/:/bin/:/opt/drbl/sbin/:/usr/local/sbin/:/usr/local/bin/:/usr/sbin/:/usr/bin/:/var/EAC/admin/procedimientos |
| 99 | |
| 100 | ntpdate hora.alumnos.uma.es |
| 101 | |
| 102 | touch /var/tmp/mtab |
| 103 | if [ `find /etc/ -type l -name mtab | grep mtab` ] |
| 104 | then |
| 105 | echo "personalizando mtab" |
| 106 | else |
| 107 | rm /etc/mtab |
| 108 | ln -s /var/tmp/mtab /etc/mtab |
| 109 | fi |
| 110 | cp /proc/mounts /var/tmp/mtab |
| 111 | |
| 112 | |
| 113 | touch /var/tmp/export |
| 114 | echo "##### export ####" > /var/tmp/exports |
| 115 | if [ `find /etc/ -type l -name exports | grep exports` ] |
| 116 | then |
| 117 | echo "personalizando fichero exports" |
| 118 | else |
| 119 | rm /etc/exports |
| 120 | ln -s /var/tmp/export /etc/exports |
| 121 | fi |
| 122 | #iniciando el lighttpd ############### |
| 123 | mkdir -p /var/log/lighttpd |
| 124 | chmod -R 777 /var/log/ |
| 125 | /etc/init.d/lighttpd start |
| 126 | |
| 127 | echo "personalizando la estructura EAC" |
| 128 | mkdir -p /var/EAC/admin 1>/dev/null 2>&1 |
| 129 | mkdir -p /var/EAC/hdimages 1>/dev/null 2>&1 |
| 130 | mkdir -p /var/EAC/hosts 1>/dev/null 2>&1 |
| 131 | ################################## CLIENTE PXE ####################### |
| 132 | if `cat /proc/cmdline | grep nfs > /dev/null` |
| 133 | then |
| 134 | IPservidor=$(cat /proc/cmdline | awk ' BEGIN { FS="nfsroot=" } ; {print $2}' | awk -F: '{print $1}') |
| 135 | echo "iniciando EAC Boot Agent pxe-nfs" |
| 136 | mount -t nfs ${IPservidor}:/var/EAC/hdimages /var/EAC/hdimages |
| 137 | mount -t nfs ${IPservidor}:/var/EAC/admin /var/EAC/admin |
| 138 | mount -t nfs ${IPservidor}:/var/EAC/hosts /var/EAC/hosts |
| 139 | else |
| 140 | echo "iniciando EAC Boot Agent desde USB/CDROM/DVD" |
| 141 | dhclient -1 || ifconfig eth0 192.168.1.1 netmask 255.255.255.0 |
| 142 | fi |
| 143 | |
| 144 | echo "cargando las librerias especificas de EAC" |
| 145 | source /var/EAC/admin/librerias/Settings.lib |
| 146 | source /var/EAC/admin/librerias/ATA.lib |
| 147 | source /var/EAC/admin/librerias/FileSystem.lib |
| 148 | source /var/EAC/admin/librerias/Deploy.lib |
| 149 | source /var/EAC/admin/librerias/Boot.lib |
| 150 | source /var/EAC/admin/librerias/PostConf.lib |
| 151 | # |
| 152 | InfoHardware |
| 153 | |
| 154 | touch /var/tmp/hostname |
| 155 | if [ `find /etc/ -type l -name hostname` ] |
| 156 | then |
| 157 | echo "personalizando fichero hostname" |
| 158 | else |
| 159 | rm /etc/hostname |
| 160 | ln -s /var/tmp/hostname /etc/hostname |
| 161 | fi |
| 162 | |
| 163 | NameCompany > /var/tmp/namecompany |
| 164 | |
| 165 | |
| 166 | echo "buscando el equipo en el servidor EAC" |
| 167 | source /var/EAC/admin/librerias/Settings.lib |
| 168 | |
| 169 | #cat /etc/hostname | wc -l |
| 170 | |
| 171 | #while `hostname` |
| 172 | #do |
| 173 | /var/EAC/admin/procedimientos/EACclient IsHostRegistry |
| 174 | #done |
| 175 | |
| 176 | echo "`hostname`" >> /var/tmp/hostname |
| 177 | |
| 178 | |
| 179 | #hostname adi${IPcuatro}-xp |
| 180 | |
| 181 | touch /var/tmp/hosts |
| 182 | if [ `find /etc/ -type l -name hosts | grep hosts` ] |
| 183 | then |
| 184 | echo "personalizando hosts" |
| 185 | else |
| 186 | rm /etc/hosts |
| 187 | ln -s /var/tmp/hosts /etc/hosts |
| 188 | fi |
| 189 | echo "127.0.0.1 localhost" > /var/tmp/hosts |
| 190 | echo "127.0.0.1 `hostname`" >> /var/tmp/hosts |
| 191 | echo "`echo $IP` `hostname`" >> /var/tmp/hosts |
| 192 | |
| 193 | touch /var/EAC/hosts/${IP}-InfoHardware && chmod 777 /var/EAC/hosts/${IP}-InfoHardware |
| 194 | touch /var/EAC/hosts/${IP}-Log && chmod 777 /var/EAC/hosts/${IP}-Log |
| 195 | touch /var/EAC/hosts/${IP}-InfoCache && chmod 777 /var/EAC/hosts/${IP}-InfoCache |
| 196 | |
| 197 | SetDefaultBoot 11 $IP |
| 198 | |
| 199 | # Activamos modo Wake On Lan |
| 200 | ethtool -s eth0 wol g |
| 201 | |
| 202 | #cat /proc/cmdline | grep nfs > /dev/null && |
| 203 | /var/EAC/admin/procedimientos/EACclient RunStartPage |
| 204 | |
| 205 | startpage=$(find /var/tmp/ -name *.sh) && echo $startpage && $startpage && rm $startpage |
| 206 | }}} |
| 207 | |
| 208 | == etc/network/interfaces == |
| 209 | |
| 210 | Al iniciarse el equipo obtenemos una ip del dhcp, luego por pxe monto el sistema de ficheros nfs. Al arrancar el sistema operativo con la configuración normal va a volver a pedir la ip al dhcp, desconectandonos de la red y del servicio nfs, De forma que nos deja sin sistema de ficheros raíz. Para que funcione bien hemos de modificar el archivo de configuración de las tarjetas de red del cliente, quedando de la siguiente forma: |
| 211 | |
| 212 | {{{ |
| 213 | # This file describes the network interfaces available on your system |
| 214 | # and how to activate them. For more information, see interfaces(5). |
| 215 | |
| 216 | # The loopback network interface |
| 217 | auto lo |
| 218 | iface lo inet loopback |
| 219 | |
| 220 | # The primary network interface |
| 221 | iface eth0 inet manual |
| 222 | }}} |
| 223 | |
| 224 | Nota: En el script de creación de cliente BuildEACOSBase se borra el fichero etc/udev/rules.d/70-persistent-net.rules. Hemos probado a dejarlo un no ha dado problema. Este fichero se encarga de que los nombres de las tarjetas de red sean persistentes al reiniciar el sistema |
| 225 | |
| 226 | |