El proyecto GNU/ FME Distribuci´onLibre para la Facultad de Matem´aticasy Estad´ıstica

Samuel Casanova Romero

Mayo de 2004 2 ´Indice general

1. Introducci´on 9

1.1. Motivaci´on...... 9

1.2. Objetivos ...... 11

1.3. Entorno de trabajo ...... 13

1.4. Costes Totales ...... 14

2. GNU/Linux y las Live-CDs 15

2.1. GNU/Linux y sus distribuciones ...... 15

2.1.1. El origen ...... 15

2.1.2. El software libre ...... 15

2.1.3. Linux y el software libre ...... 16

2.1.4. Las distribuciones Linux ...... 17

2.2. Linux Live-CD ...... 19

3. Conceptos previos 21

3.1. Ramdisk o disco virtual ...... 21

3.2. Isolinux ...... 22

3.3. Compressed loop ...... 22

3.4. Kudzu ...... 23

3 3.5. Llamada de sistema pivot root ...... 23

3.6. El dispositivo initrd (/dev/initrd)...... 24

3.7. Devfs ...... 25

4. Estudio de las Live-CDs Linux 27

4.1. Knoppix ...... 27

4.1.1. Introducci´on...... 27

4.1.2. Motivaci´on ...... 27

4.1.3. Descripci´ony funcionamiento ...... 28

4.1.4. Conclusiones ...... 29

4.2. Morphix ...... 30

4.2.1. Introducci´on...... 30

4.2.2. Motivaci´on ...... 30

4.2.3. Descripci´ony funcionamiento ...... 30

4.2.4. Conclusiones ...... 32

4.3. Metadistros ...... 32

4.3.1. Introducci´on...... 32

4.3.2. Motivaci´on ...... 33

4.3.3. Descripci´ony funcionamiento ...... 33

4.3.4. Conclusiones ...... 34

4.4. Otros sistemas Linux Live-CD ...... 34

4.4.1. Gnoppix ...... 34

4.4.2. Quantian ...... 35

4.4.3. ACM-λux...... 35

4.4.4. gKnx ...... 35

4.4.5. OverClockix ...... 36

4 4.4.6. Gnome2Live ...... 36

4.4.7. “. . . and more.” ...... 36

5. ¿C´omose crea una Live-CD? 37

5.1. Introducci´on...... 37

5.2. Configuraci´ondel n´ucleo ...... 39

5.3. Cambios en la estructura del sistema de ficheros de la distribuci´on source ...... 41

5.4. Configuraci´onde fstab ...... 42

5.5. Configuraci´onde ramdisk ...... 42

5.6. Instalaci´onde Isolinux ...... 44

5.7. Configuraci´onde initrd ...... 46

5.8. Imagen final ...... 51

5.9. Conclusi´on...... 52

6. Estructura y funcionamiento de Metadistros 53

6.1. Introducci´on...... 53

6.2. Esquema de Metadistros ...... 54

6.2.1. El calzador ...... 54

6.3. La Distribuci´onLive-CD ...... 59

6.4. Isolinux: Configuraci´ony funcionamiento ...... 60

6.5. Detecci´onde hardware: Kudzu ...... 61

6.5.1. Archivos de Kudzu ...... 62

6.5.2. Funcionamiento ...... 62

6.6. El arranque de Linux ...... 63

6.6.1. Arranque est´andardel n´ucleoLinux ...... 63

5 6.6.2. Arranque de Metadistros ...... 64

6.7. El proceso INIT ...... 64

6.8. Conclusi´on...... 65

7. Un ejemplo: GNU/Linux FME 67

7.1. Dise˜nodel entorno de trabajo ...... 67

7.2. Instalaci´onde Debian Woody ...... 70

7.3. El entorno de escritorio ...... 73

7.4. Contenido de la distribuci´on ...... 74

7.5. La documentaci´ondel software de GNU/Linux FME ...... 78

7.6. Contenido de las titulaciones ...... 79

7.7. El sistema de men´us ...... 80

7.8. La pantalla de bienvenida ...... 83

7.9. Web de ayuda ...... 84

7.10. Configuraci´ondel calzador ...... 87

7.10.1. Scripts de inicio ...... 87

7.10.2. La instalaci´onde GNU/Linux FME ...... 88

7.11. Ultimos´ pasos ...... 89

7.12. Conclusi´on:Futuro de GNU/Linux FME ...... 92

A. C´odigodel script /linuxrc 95

B. Diagramas y Figuras 99

6 ´Indice de figuras

2.1. CD Business-card de Sun Microsystems ...... 19

4.1. Escritorio KDE de Knoppix 3.3 ...... 29

4.2. Morphix con el m´odulodel escritorio IceWm ...... 32

7.1. Escritorio de GNU/Linux FME ...... 74

7.2. Varias aplicaciones ejecutandose en GNU/Linux FME ...... 77

7.3. El men´ude la Web del proyecto ...... 85

B.1. Calzador de Metadistros (1a parte) ...... 100

B.2. Calzador de Metadistros (2a parte) ...... 101

B.3. Flujo del script /linuxrc (1o parte) ...... 102

B.4. Flujo del script /linuxrc (2o parte) ...... 103

B.5. Flujo del script /linuxrc (3o parte) ...... 104

B.6. Flujo del proceso init (1o parte) ...... 105

B.7. Flujo del proceso init (2o parte) ...... 106

B.8. Flujo del script hwdetect.sh llamado desde init ...... 107

7 8 Cap´ıtulo1

Introducci´on

EL cap´ıtulode introducci´ontrata de ser una presentaci´ondel entorno que ha motivado este proyecto, la Facultad de Matem´asticas y Estad´ıstica, as´ıcomo la motivaci´onconcreta del proyecto, su especificaci´on,estructura y finalmente valorar el trabajo realizado y comparar los objetivos iniciales con los objetivos alcanzados.

1.1. Motivaci´on

Este proyecto surge de la necesidad de un colectivo de estudiantes y profesores, de la Facul- tad de Matem´aticas y Estad´ıstica de la Universidad Polit´ecnica de Catalu˜na. El entorno en que todos ellos trabajan es normalmente en las aulas de la facultad, un conjunto de orde- nadores personales conectados a una red y que ejecutan una imagen de sistema operativo que es la misma para todos.

Este sistema operativo contiene una serie de software instalado que es el que utilizan tanto alumnos como profesores para desarrollar pr´acticasde laboratorio, consulta de informaci´on en internet, impresi´onde problemas y ex´amenes,etc. . .

Puesto que estas aulas est´anf´ısicamente en la facultad, los alumnos y profesores s´olotienen acceso a ellas en el horario en que la facultad permanece abierta, esto es, los d´ıaslectivos en horario de clases. Las aulas se utilizan adem´aspara impartir docencia utilizando los equipos durante las clases, por lo que los alumnos que no pertenezcan al grupo que est´adando clase en ese momento no tienen acceso a los equipos de esa aula.

Todo esto conlleva que el tiempo real de disponibilidad de los equipos no es muy alto. Existen algunas soluciones de urgencia, a veces puestas en pr´actica,como por ejemplo aperturas extraordinarias de las aulas por la noche o incluso los fines de semana.

9 No es muy dif´ıcilimaginar que para los alumnos no es muy agradable desplazarse a la facultad en horarios intempestivos como consecuencia de los recursos siempre limitados de la facultad.

Por otro lado tenemos que tanto alumnos como profesores tienen en su casa equipos in- form´aticos,muy semejantes a los de las aulas inform´aticaso incluso superiores en pres- taciones. ¿Es posible realizar el trabajo que se realiza en la facultad en el ordenador de casa? Claro que s´ı,salvo contad´ısimasocasiones, el software ejecutado en las aulas puede ser ejecutado en cualquier ordenador de sobremesa. ¿Porqu´eno los utilizan entonces para desarrollar su trabajo c´omodamente en casa? Hay b´asicamente dos razones por las que no es posible:

1. Tanto el sistema operativo instalado en las aulas como el software de desarrollo son de licencia propietaria. Esto quiere decir que cualquier persona que quiera hacer uso de ´eldebe pagar, en ocasiones grandes cantidades, por la licencia de ese producto. Por poner un ejemplo, las licencias de Microsoft° Windows°R 98 m´asMicrosoft°R Office°R 2000 Pro ya ascienden a m´asde 300 e. De todos es sabido que los alumnos suelen ingeni´arselaspara conseguir este software mediante m´etodos m´asecon´omicos y menos legales, pero est´aclaro que la facultad no puede incitar a los alumnos a actividades de pirater´ıainform´atica. 2. Aun en el caso de conseguir las licencias de software, los usuarios carecen de avan- zados conocimientos inform´aticospara instalar y mantener el sistema en ´optimas condiciones. La facultad cuenta con un equipo de profesionales inform´aticosque dan soporte t´ecnicoen todo momento a los alumnos y profesores, pero extender este servicio a los usuarios dom´esticosresultar´ıacompletamente inviable.

El segundo problema parece de dif´ıcilsoluci´on,pero el primer problema no lo es tal. Como ya hemos visto en la secci´on2.1.2 existe una alternativa al software propietario, el software libre. ¿Esto quiere decir que todo el software de las aulas est´adisponible como software libre? Evidentemente no, pero existen alternativas a software propietario que tienen ca- racter´ısticassemejantes y en ocasiones incluso superiores. ¿Cu´anto me cuesta entonces la soluci´onlibre? La gran mayor´ıadel software libre, adem´asde libre es gratis, por lo que el coste total no ser´ıam´asque el tiempo de conexi´onpara descargar el sistema por Internet o el precio del soporte f´ısicodonde se almacene el software, por ejemplo un CD-R. Estoy hablando de unos c´entimos de euro, por lo que la diferencia resulta aplastante.

El usuario puede tener acceso al software libre pero todav´ıanos queda el segundo problema planteado. ¿C´omoun estudiante de matem´aticasva a ser capaz de instalar y administrar un sistema operativo libre? Este es el problema al que se le busca soluci´onen el proyecto GNU/Linux FME.

Para ello se elimina el concepto de instalaci´ony administraci´oncomo hasta ahora la conoce- mos. Para empezar el sistema no necesita instalaci´onya que se ejecuta desde un CD-ROM

10 utilizando la memoria RAM del ordenador. Este hecho no priva al usuario de instalar el sistema a su disco duro, con apenas dos clics de rat´ony en 20 minutos aproximadamente. La administraci´ondel sistema tampoco es necesaria. El sistema se ejecuta desde el CD- ROM por lo que si surge alg´unproblema no hay m´asque reiniciar y el sistema volver´aa quedar intacto. Si se trata de una instalaci´ona disco, es cuesti´onde reinstalar el sistema y en pocos minutos el problema habr´aterminado.

Debido al colectivo al que va dirigida la distribuci´on,´estadebe estar dise˜nadacon la facilidad, la usabilidad y la estabilidad como principal objetivo. El usuario no deber´ıa adquirir ning´unconocimiento adicional para poder utilizar el sistema, deber´ıaser capaz de empezar a utilizar el software equivalente desde el primer momento, y debemos asegurar el trabajo de los usuarios bajo un sistema estable y no propenso a bloqueos del sistema o del software.

Adem´asel sistema debe soportar un amplio conjunto de hardware compatible, ya que la distribuci´onla utilizar´aun n´umeroamplio de personas en un n´umeroamplio de equipos diferentes. No servir´ıade nada un sistema operativo ´utilque s´olofunciona en un conjunto reducido de ordenadores.

Por ´ultimo,el sistema debe ser actualizable, preferentemente v´ıaweb. Los alumnos deben ser capaces desde la distribuci´onde descargar la ´ultimaversi´onde la documentaci´onoficial de las asignaturas, o los cambios de software de laboratorio que se podr´ıanproducir durante el curso.

1.2. Objetivos

Comenzar´edescribiendo los objetivos para este proyecto, en una planificaci´onde lo que deber´ıanser los plazos de entrega del proyecto en una primera estimaci´on:

1. Crear una documentaci´onsobre c´omose crea y c´omofunciona una Linux Live-CD, con gran profundidad de detalle en la parte t´ecnicay funcional para futuras creaciones similares a este proyecto. (una semana) 2. Estudiar las distintas metadistribuciones GNU/Linux basadas en Debian, observando las ventajas e inconvenientes que poseen y, finalmente decidir cual de ellas se ajusta m´asa nuestras necesidades. (una semana) 3. Estudiar el software que se utiliza en la Facultad de Matem´aticasy Estad´ısticay averiguar sus equivalencias free-software. (uno o dos d´ıas) 4. Construcci´ondel sistema operativo Debian Woody y el n´ucleoestable. Posteriormente adaptar este sistema a las especificaciones que debe cumplir para funcionar bajo el formato de metadistribuciones elegido en el primer punto. (entre una y dos semanas)

11 5. Instalaci´ondel entorno de escritorio. Tambi´enprecisar´ıade modificaciones y opti- mizaciones para adaptarlo a nuestras necesidades. (indefinido, iremos adaptando a medida que vayamos implementando)

6. Instalaci´on,optimizaci´ony test del software espec´ıficopara las titulaciones de ma- tem´aticasy estad´ıstica,adem´asde alg´unsoftware de prop´ositogeneral. (una semana)

7. Creaci´onde rutinas de automatizaci´onde tareas mediante scripts. (indefinido, se har´ana medida que se precisen)

8. Dise˜noe implementaci´onde un sistema de ayuda. (una semana)

9. Creaci´ony optimizaci´onde la estructura necesaria para crear el CD-R con el sistema operativo resultante siguiendo las especificaciones de la metadistribuci´onelegida. (entre una y dos semanas)

10. Una vez conseguida la distribuci´ondebemos someterla a tests y corregir posibles fallos. (una semanas)

11. Finalmente, crear la memoria y la presentaci´ondel proyecto. (entre dos y tres sema- nas)

El total de la previsi´onestima el tiempo total para desarrollar el proyecto inferior a cuatro meses a media jornada. Una vez el proyecto se ha terminado me doy cuenta de lo optimistas que fueron algunas estimaciones, como por ejemplo la relacionada con la documentaci´on, ya que tanto la web de ayuda como la memoria han supuesto un gran volumen de trabajo. Estos son los tiempos definitivos de desarrollo:

1. Estudiar las distintas metadistribuciones GNU/Linux basadas en Debian, observando las ventajas e inconvenientes que poseen y, finalmente decidir cual de ellas se ajusta m´asa nuestras necesidades. (dos semanas)

2. Estudiar el software que se utiliza en la Facultad de Matem´aticasy Estad´ısticay averiguar sus equivalencias free-software1. (cuatro d´ıas)

3. Construcci´ondel sistema operativo Debian Woody y el n´ucleoestable. Posteriormente adaptar este sistema a las especificaciones que debe cumplir para funcionar bajo el formato de metadistribuciones elegido en el primer punto. (una semana)

4. Instalaci´ondel entorno de escritorio y dise˜noe implementaci´ondel sistema de men´us. (una semana)

5. Instalaci´on,optimizaci´ony test del software espec´ıficopara las titulaciones de ma- tem´aticasy estad´ıstica,adem´asde alg´unsoftware de prop´ositogeneral. (dos semanas)

1free-software: Software libre y gratuito, publicado normalmente bajo la licencia General Public License

12 6. Creaci´onde rutinas de automatizaci´onde tareas mediante scripts. (tres d´ıas)

7. Dise˜noe implementaci´onde la aplicaci´onweb de bienvenida y ayuda. (dos semanas)

8. Creaci´ony optimizaci´onde la estructura necesaria para crear el CD-R con Metadis- tros. (dos d´ıas)

9. Una vez conseguida la distribuci´ondebemos someterla a tests y corregir posibles fallos. (Dif´ıcilde concretar, ya que el proceso generaba errores durante toda la fase de desarrollo y se correg´ıandin´amicamente)

10. Estudio exhaustivo del entorno final, crear la documentaci´on,memoria y la presen- taci´ondel proyecto. (m´asde cinco semanas)

Como se puede comprobar en ocasiones las estimaciones eran optimistas y en otras se han superado los plazos establecidos a priori. Finalmente el trabajo total del proyecto queda estimado entre 4 y 5 meses a media jornada, unas 360 horas.

1.3. Entorno de trabajo

El proyecto lo he desarrollado ´ıntegramente en mi domicilio particular, ya que las especi- ficaciones no requieren m´asde un equipo dom´esticoy una conexi´ona Internet. Este es el equipo con el que ha sido desarrollado GNU/Linux FME:

AMD Athlon 800 Mhz

Memoria RAM de 256 Mb a 133 Mhz

Dos discos duros, uno de 20 Gb (hda) y otro de 80 Gb (hdd)

Grabadora CD-RW + Ethernet 10/100

Es dif´ıcilestimar el coste actual de un equipo de estas caracter´ısticasen el mercado actual, ya que no se encuentra entre los cat´alogosde ninguno de los proveedores de hardware principales, por lo que establecer´eun precio de 300 e.

Durante el desarrollo del proyecto se ha utilizado un acceso a Internet consistente en una l´ıneab´asicade conexi´on ADSL 256/1282 a trav´esde un router ADSL / Ethernet de dos puertos. El coste de esta l´ıneaes de 45 e al mes.

2Asymethric Digital Subscriber Line, acceso de banda ancha m´asextendido en la actualidad, los n´umeros son la capacidad de la l´ınea,256 Kbps de ancho de banda de bajada y 128 Kbps de subida

13 1.4. Costes Totales

Para valorar las horas de trabajo he tomado como referencia el sueldo de un t´ecnicode pro- gramaci´onde la UPC, perteneciente al grupo 2 del personal de administraci´ony servicios, con un sueldo bruto de aprox. 11,25 e la hora.

El empleo del software libre no va a suponer coste alguno, ya que no es necesario adquirir licencias propietarias para hacer uso de ´el. Unicamente´ se podr´ıaestimar su coste en las horas de conexi´ona Internet necesarias para descargarlo, que se han omitido en la tabla debido a que la l´ınea ADSL contratada se factura por meses y no por horas de conexi´on.

Cuadro 1.1: Costes del proyecto Final de Carrera

Concepto Unidades Coste por unidad Subtotal Equipo de trabajo 1 300,00 e 300,00 e Sistema Operativo Debian Woody 1 0,00 e 0,00 e Software necesario 1 0,00 e 0,00 e Tiempo de conexi´on(en meses) 4 45,00 e 180,00 e Tiempo de programaci´on(en horas) 360 11,25 e 4050,00 e Total 4530,00 e

14 Cap´ıtulo2

GNU/Linux y las Live-CDs

Comenzaremos con una breve rese˜nahist´oricay conceptual sobre lo que es GNU/Linux y el software libre, la filosof´ıay el entorno que lo rodea y las posibilidades que ofrece este tipo de software para desarrollar este proyecto. Finalmente repasaremos las distribuciones existentes de GNU/Linux y descubriremos las Live-CDs o distribuciones Live-CD.

2.1. GNU/Linux y sus distribuciones

2.1.1. El origen

En 1984 fund´ola “ Foundation” [17] para promover la idea del software libre [6]. Con la fundaci´oncre´ola licencia GPL (General Public License) que permite distribuir c´odigolibre. Aunque GNU trabajaba en un n´ucleopropio (HURD), muy pronto uni´osutrabajo con el n´ucleode Linux.

En 1991 Linus Torvalds cre´oel sistema operativo Linux. Estaba basado en un clon de [50] llamado Minix [49], y pronto comenz´oa evolucionar r´apidamente consiguiendo una buena estabilidad y un rendimiento superior. Se compon´ıaprincipalmente de un n´ucleo (kernel) y un reducido conjunto de aplicaciones.

2.1.2. El software libre

La definici´onde software libre [6] no es trivial y a menudo se presta a confusi´on.Hay cuatro reglas b´asicaspara que un software se pueda considerar libre:

15 1. El usuario es libre de utilizar el programa sin ninguna condici´on

2. El usuario tiene acceso al c´odigofuente del programa

3. El usuario es libre de distribuir copias del software

4. El usuario puede modificar el c´odigofuente y redistribuirlo

La idea principal es que todos los programas distribuidos como software libre tienen la obligaci´onde facilitar el c´odigofuente del programa, y adem´aspermiten a cualquiera modificar este c´odigoa su antojo y redistribuir el software nuevamente. Este modelo de distribuci´onde software tiene muchas ventajas de cara a los usuarios:

Coste inferior del software, ya que normalmente todo el software libre tambi´enes gratis, y el usuario s´olopaga el coste de la conexi´ono el precio del soporte f´ısico donde se almacena el software.

Al disponer del c´odigofuente, puede modificarlo para a˜nadirlenuevas funcionalidades o para corregir posibles errores de programaci´on.Una vez modificado puede volver a distribuirlo para que el resto de la comunidad se beneficie de estas modificaciones. De esta forma la calidad del producto aumenta a medida que los programadores revisan y modifican el c´odigo.

2.1.3. Linux y el software libre

M´asde una d´ecadadespu´esde su nacimiento, GNU/Linux es un sistema operativo muy extendido, gracias a la idea del software libre. Existen miles de aplicaciones para GNU/Linux y la mayor´ıason software libre. Linux se distribuye con licencia GPL, pero el responsable de las actualizaciones del n´ucleoLinux sigue siendo exclusivamente Linus Torvalds. Esto no quiere decir que cualquiera pueda modificar las fuentes del n´ucleopara adaptarlo a sus necesidades, sino que hoy en d´ıael resto de programadores se centran en programar software para este n´ucleo,mientras que ´estesigue bajo la tutela de su creador.

Si GNU/Linux ha llegado tan lejos ha sido incuestionablemente gracias a la comunidad del software libre, y cada d´ıahay m´asgente que se interesa por este sistema operativo y su entorno de libertad y globalidad.

16 2.1.4. Las distribuciones Linux

A medida que GNU/Linux crec´ıay la gente lo iba adoptando cada vez m´ascomo su sis- tema operativo el volumen de software disponible tambi´encrec´ıa.Algunos programadores se dedicaron a utilizar un subconjunto de este software y definieron una estructura para integrar todo este software en lo que se conoce como distribuciones [9].

Estas distribuciones, como el resto del software libre, han ido evolucionando con el tiem- po. Algunas de ellas incluso se ha separado y desmarcado de las otras desarrollando en muchos casos software propio, aunque todas conservan siempre el mismo eje central, el n´ucleoLinux [63].

El software que hace diferentes a unas distribuciones respecto a otras suelen ser mejores interfaces gr´aficasde instalaci´on,herramientas de configuraci´ono aplicaciones de detecci´on autom´aticade hardware.

Algunas distribuciones conocidas son:

Red Hat

Es la distribuci´onm´asfamosa sin duda en todo el mundo, gracias a sus esfuerzos por desarrollar software de c´odigoabierto. Al contar con una estructura organizativa como la empresa Red Hat [60], con sedes en m´asde 15 pa´ıses,la respaldan un grupo de desarro- lladores profesionales.

Es muy f´acilde utilizar e instalar. Adem´ascuenta con un sistema de empaquetamiento de software propio que hace de la instalaci´onde nuevo software una tarea muy sencilla. Existen varias distribuciones Red Hat, algunas de ellas dirigidas a grandes empresas que pagan por recibir soporte t´ecnicosobre la distribuci´on.

Linux-Mandrake

Desarrollada a partir de una Red Hat. La estructura es pr´acticamente id´entica, pero la opini´onpopular define a Mandrake [59] como la m´asf´acilde utilizar. Por eso es la distri- buci´onpreferida por los usuarios que quieren tener un primer contacto con GNU/Linux.

Se caracteriza adem´aspor tener un n´umeroimportante de desarrolladores que mantienen el software de la distribuci´onsiempre actualizado.

17 SuSE

Tambi´encuenta con Red Hat como base, es tambi´enuna distribuci´oncomercial con un conjunto de software muy completo, parte del mismo desarrollado por los programadores de SuSE [62]. Se caracteriza tambi´enpor su facilidad de uso e instalaci´ongracias al uso de asistentes gr´aficos.

Slackware Linux

Una de las m´asantiguas. Su evoluci´onno ha ido al mismo ritmo que el resto de distribu- ciones, debido en parte a su meta inicial, ser la distribuci´onde Linux que m´asse parezca a UNIX. Por eso algunos piensan que la estructura de esta distribuci´on [61] ha quedado obsoleta.

No obstante es una buena opci´onpara experimentar en profundidad con Linux, ya que la estructura del sistema es muy f´acilde interpretar.

Debian GNU/Linux

Es la distribuci´onpreferida por los hackers1 de Linux. Es muy f´acilde instalar y mantener gracias a su sistema de instalaci´onde software mediante paquetes, para muchos, el mejor del mundo. Se trata de un sistema en continua evoluci´onya que cuenta con miles de desa- rrolladores por todo el mundo que trabajan en perfecta conjunci´onde forma desinteresada, por eso se considera la distribuci´onm´ascomprometida con el desarrollo de software libre. Su estructura y funcionamiento son algo m´ascomplejo que el resto de distribuciones, pero esta estructura garantiza un sistema robusto y eficaz.

Debian [56] se caracteriza tambi´enpor ser una distribuci´onque puedes utilizar como base a otras nuevas distribuciones, gracias a su dise˜nomodular y definido. Por todo esto es la distribuci´onelegida como base en este proyecto.

Otras distribuciones

Existen muchas otras distribuciones de GNU/Linux [9], no tan conocidas como las an- teriores. Entre ellas podemos destacar Caldera OpenLinux [54], Corel Linux [22], Storm- Linux [45] o TurboLinux [42], la mayor´ıabasadas en Debian.

1hacker: Me refiero a los programadores de sistemas GNU/Linux, no con la connotaci´onpopular de delincuentes inform´aticos

18 2.2. Linux Live-CD

Un sistema Linux Live-CD [36] es un sistema basado en GNU/Linux (cualquiera de sus distribuciones) que es capaz de arrancar desde un CD sin utilizar el disco duro para instalar software. La finalidad inicial de estos sistemas era ofrecer un sistema operativo completo para hacer demostraciones o como medio para efectuar el rescate de otro sistema instalado en el equipo.

Las primeras distribuciones eran sistemas reducidos con un peque˜non´umerode aplica- ciones instaladas. Su tama˜noera ideal para grabarlos en las CD business-cards2. A medida que iban evolucionando el tama˜node los sistemas era cada vez mayor.

Figura 2.1: CD Business-card de Sun Microsystems

Finalmente se han convertido en sistemas completos y totalmente operativos. Son capaces de almacenar casi 2 Gb de software en un solo CD-R de 700 Mb mediante t´ecnicasde compresi´on/descompresi´ontransparente al usuario. La estructura de estas distribuciones es m´assencilla de lo que en principio pueda parecer.

Existen muchas Live-CDs distintas, pero todas est´anbasadas en el modelo de la distribu- ci´on Knoppix [58]. En este proyecto se dedica un cap´ıtulocompleto a estas distribuciones. Por eso, si el lector desea m´asinformaci´onsobre estas Live-CDs ´unicamente debe consultar el cap´ıtulo4.

2CD business-card: CD-R de radio menor al est´andarde CD y con cierta forma ovalada. Permite almacenar entre 50-180 Mb

19 20 Cap´ıtulo3

Conceptos previos

En este cap´ıtulodescribir´econ detalle algunos t´erminosy conceptos que deber´ıanconocer los lectores para poder comprender correctamente c´omofuncionan y de qu´ese componen algunas partes del proyecto.

3.1. Ramdisk o disco virtual

Es un ´areade la memoria RAM que se asigna al sistema operativo para que se utilice a modo de partici´onde disco [10, 19]. B´asicamente, consiste en reservar cierta cantidad de memoria y acceder a ella como si fuese una unidad de disco. Se utiliza principalmente para ubicar archivos que reciben un gran n´umerode accesos. La memoria RAM es unas 1000 veces m´asr´apidaque un disco duro, por lo tanto si podemos predecir que algunos archivos van a ser consultados con frecuencia, podemos ganar eficiencia ubicando ´estos en la memoria RAM en lugar de en el disco duro. Por ejemplo, si estamos ejecutando un servidor web podr´ıamosganar eficiencia ubicando las p´aginasprincipales en memoria en lugar de en disco. De esta forma el servidor no deber´ıahacer accesos a disco cuando recibiera una visita de alg´uninternauta, ya que tiene las p´aginascargadas en disco.

La t´ecnicade Ramdisk o disco virtual no tiene nada que ver con las caches de disco [64] o la memoria virtual [65].

Las caches de disco son ´areasde memoria que reserva el sistema operativo para guardar temporalmente espacios contiguos de disco duro que se han accedido en alg´unmomento, de forma que si se vuelve a acceder a ese espacio el sistema operativo no debe acceder nuevamente a disco sino que lo har´ıaal espacio de la cach´e.El sistema operativo gestiona su propio espacio de cach´ede disco, mientras que los discos virtuales se configuran por programadores o usuarios avanzados.

21 La memoria virtual, memoria de intercambio o swap es un espacio del disco duro que se utiliza para almacenar espacios de memoria RAM en disco, de forma que conseguimos aumentar el tama˜node la memoria (podemos tener m´asaplicaciones ejecutando a la vez) sacrificando el rendimiento general del sistema (la velocidad general del sistema se reduce).

En el caso de las Live-CDs la utilizaci´onde la Ramdisk es algo diferente. El espacio que definimos lo utilizamos para ubicar nuestro sistema de ficheros principal, ya que la Live-CD no puede acceder en un principio a disco. Puede encontrarse una explicaci´ondetallada del funcionamiento de la Ramdisk en GNU/Linux en el cap´ıtulo6.

3.2. Isolinux

ISOLINUX [48] es un gestor de arranque (“boot loader”) para Linux que opera en sis- temas de ficheros ISO9660/El Torito CD-ROMs [24]. En otras palabras, ISOLINUX es un software creado para poder arrancar sistemas Linux desde un CD-ROM grabado con el est´andarde sistemas de ficheros ISO9660 [25]. Es un gestor de arranque muy limita- do, ya que no puede operar con otros sistemas operativos como por ejemplo Microsoft°R Windows°R , aunque esta limitaci´oncarece de importancia cuando lo que queremos conse- guir es precisamente un programa ligero que permita arrancar Linux desde un CD-ROM.

La mayor´ıade las Live-CDs estudiadas utilizan ISOLINUX como gestor de arranque con una gran eficiencia. Algunas Live-CDs como por ejemplo las primeras versiones de Knoppix utilizan el gestor Lilo [30], m´ascompleta que ISOLINUX, con soporte para arranque de otros sistemas operativos diferentes de Linux. Metadistros utiliza isolinux, y como nuestras necesidades no van m´asall´ade arrancar nuestra distribuci´onGNU/Linux FME desde el CD-ROM, utilizaremos ISOLINUX y descartaremos las dem´asposibilidades.

3.3. Compressed loop

Dispositivo comprimido dise˜nadopara sistemas independientes en CD-ROM [2]. Fue creado por Paul Rusty para utilizarlo con sistemas Linux de rescate en CD-Business Cards (ver p´ag.19). Permite utilizar sistemas de ficheros de hasta 1,6 Gb de contenido en un solo CD-ROM de 650 Mb.

Al contrario de lo que puede parecer al principio, Cloop NO es un sistema de ficheros. Es un fichero de dispositivo de bloques que contiene un sistema de ficheros. Este sistema de ficheros contenido es independiente del sistema cloop, por lo que puede ser cualquier sistema de ficheros que el usuario quiera utilizar. En nuestro caso utilizamos el sistema de ficheros Extended2.

22 Cloop es un dispositivo de s´ololectura, por lo que el contenido no se puede modificar. El dispositivo utiliza las librer´ıas zlib/ [68] para comprimir el sistema de ficheros contenido. Esta compresi´ondel sistema es transparente al usuario, el dispositivo se encarga de descomprimir din´amicamente los bloques del sistema de ficheros contenido en ´el. Cloop contiene un ´ındicede bloques que mantiene en memoria por cuestiones de eficiencia, y utiliza el mecanismo de buffering de bloques del n´ucleopara aumentar el rendimiento.

El dise˜node este dispositivo est´aenfocado a su uso en CD-ROMs. Utiliza t´ecnicasde caching y agrupaci´onde bloques para minimizar el movimiento del cabezal del CD-ROM al acceder a los bloques del dispositivo.

Los bloques no se descomprimen hasta que el usuario accede a ellos, esto es, la descom- presi´ondel sistema de ficheros se produce en-demanda.

3.4. Kudzu

Se trata de una librer´ıade detecci´onde hardware [28], creada por los ingenieros de Red Hat (ver secci´on2.1.4). La librer´ıase completa con varios programas que utilizan esta librer´ıapara detectar el hardware, cargar los m´odulosnecesarios para que este hardware funcione en nuestro sistema, y finalmente generar los ficheros de configuraci´onque los dispositivos necesiten para su correcto funcionamiento.

Al comenzar su ejecuci´on, Kudzu detecta el hardware presente en el sistema, lo identifica y consulta una base de datos propia. Si encuentra el dispositivo en su base de datos, sigue las instrucciones indicadas para configurar con ´exitoel dispositivo.

Para profundizar en el funcionamiento del sistema Kudzu, podemos consultar el cap´ıtu- lo 6.

3.5. Llamada de sistema pivot root

Permite cambiar el sistema de ficheros ra´ız(root file system) del proceso actual (old root) a un sistema de ficheros determinado (new root) y dejar el sistema de ficheros ra´ızactual montado en un directorio del nuevo sistema de ficheros. No hay que confundir con la llamada de sistema chroot que cambia el directorio ra´ız(root directory) pero siempre en el mismo sistema de ficheros. Para poder utilizar pivot root hay que tener en cuenta lo siguiente:

23 Los dos sistemas de ficheros deben estar montados en el sistema de ficheros del proceso desde el que se hace la llamada a sistema

new root ha de ser un punto de montaje de un sistema de ficheros diferente al de old root

No puede haber ning´unsistema de ficheros diferente de new root montado en el sistema de ficheros de old root.

Es importante tener en cuenta que la llamada pivot root no garantiza el cambio de directorio ra´ızdel sistema (depende de la versi´onde pivot root), por lo que generalmente ser´anecesario despu´esde la llamada a pivot root llamar tambi´ena chroot.

El ejemplo siguiente ilustra c´omodeber´ıamosutilizar estas dos herramientas para hacer el cambio:

fme:/# cd /mnt fme:/# pivot_root . mnt fme:/# chroot . umount /mnt

La llamada pivot root cambia de forma autom´aticalos apuntadores de los procesos en ejecuci´onhacia new root, de forma que old root se puede desmontar de new root una vez hecho el cambio de directorio ra´ız.

3.6. El dispositivo initrd (/dev/initrd)

Se trata de un dispositivo de bloques de solo-lectura [4, 70]. El gestor de arranque carga el sistema de ficheros contenido en este dispositivo antes de arrancar el n´ucleodel sistema. De esta forma el arranque se efect´uaen dos fases, primero monta el dispositivo initrd en RAM y ejecuta instrucciones contenidas en ´el,y despu´escarga el sistema de ficheros ra´ız.

Para activar este dispositivo es necesario que el n´ucleotenga soporte para ramdisk (ver secci´on3.1) ya que al iniciar el sistema se copia el contenido de /dev/initrd a /dev/ram0, donde adquiere permisos de lectura-escritura.

Despu´esel sistema busca el fichero linuxrc y si lo encuentra lo ejecuta (siempre que tenga permisos de ejecuci´on)como root. Despu´esde la ejecuci´onde linuxrc el sistema carga el sistema de ficheros ra´ız,y si ´estecontiene un directorio llamado /initrd se monta el dispositivo /dev/ram a este directorio. En caso contrario simplemente se desmonta y se pasa el control al proceso /sbin/init.

24 Inicialmente el dispositivo /dev/initrd se cre´opara iniciar sistemas m´ınimosdesde un disquet o CD-ROM para efectuar procesos de instalaci´on.El disquet iniciaba un n´ucleo con controladores m´ınimosy determinaba los m´odulosnecesarios para arrancar el sistema completo bien detect´andolo´elmismo o bien preguntando al usuario. Este m´etodo se sigue utilizando en la actualidad.

3.7. Devfs

Es un sistema de aplicaci´onde dispositivos f´ısicosen el sistema de ficheros ra´ız.La forma habitual de registrar un dispositivo en el sistema es creando un dispositivo virtual en el sistema de ficheros. Estos ficheros de encuentran en el directorio /dev, y su nombre depende de la ubicaci´onf´ısicadel dispositivo. DEVFS propone una manera m´assencilla de registrar estos dispositivos, y es agrup´andolosseg´unel tipo de dispositivos al que pertenecen y no por su ubicaci´onf´ısica.

Por ejemplo, la unidad de CD-ROM con DEVFS siempre se sit´uadirectamente en /dev/cdrom mientras que con el sistema tradicional su ubicaci´ondepende del bus IDE don- de se conecte. Esta nueva forma de agrupar dispositivos facilita la labor de las aplicaciones que no tienen que preocuparse de la configuraci´onhardware y acceder a los dispositivos de forma m´astransparente.

El incremento en el tama˜noy el rendimiento del n´ucleoes tan peque˜noque pr´acticamente todos los sistemas Linux utilizan DEVFS.

25 26 Cap´ıtulo4

Estudio de las Live-CDs Linux

Existen muchas y muy diversas Live-CDs [36] en las que basar este proyecto. En este cap´ıtulo el lector descubrir´alas capacidades y caracter´ısticas de las Live-CDs m´asim- portantes, las diferencias entre ellas, y comparar´elas caracter´ısticasde cada una con las caracter´ısticasque deber´atener el proyecto para decidir qu´esistema se ajusta m´asa la especificaci´onde GNU/Linux FME.

4.1. Knoppix

4.1.1. Introducci´on

Es el pionero de los sistemas Linux CD-Live, el sistema en qu´ese basan el resto de Live-CDs estudiadas [58]. Su paquete de software es muy amplio y diverso, se trata de un entorno KDE [57] basado en Debian [56], con las suites ofim´aticasm´aspopulares (OpenOffice [46], StarOffice [47], KOffice [26]), GIMP [12], XMMS y Netscape [38] entre otros. Adem´asde los anteriores, contiene un gran n´umerode utilidades de rescate de sistemas.

4.1.2. Motivaci´on

Fue creado por Klauss Knopper en Alemania el a˜no2000. Eran muchos los usuarios que necesitaban constantemente sistemas robustos y estables con software para probar equipos y sistemas de ficheros corruptos. Adem´asestaban los usuarios que simplemente quer´ıan

27 probar Linux pero que no estaban dispuestos a modificar sus sistemas operativos propios para instalar una distribuci´onLinux convencional.

Knopper quiso responder esta demanda de soluciones y cre´oKnoppix, un sistema Linux auto-arrancable y auto-configurable que satisfizo las necesidades de estos usuarios.

El sistema se completa con una gran cantidad de software muy diverso. Actualmente est´abasado en la distribuci´ontesting de Debian, y utiliza un n´ucleo2.6 muy modular, con el fin de conseguir la mayor compatibilidad con el hardware de sus usuarios. Como ya hemos apuntado antes, utiliza el entorno de escritorio KDE, completado con un conjunto de software libre muy amplio en el que podemos destacar GIMP, Konqueror, XMMS, Star- Office, OpenOffice, Netscape y algunas herramientas de test y rescate.

4.1.3. Descripci´ony funcionamiento

Knoppix combina el est´andarde CD-ROMs auto-arrancables El Torito [24], el dispositivo loop comprimido (ver Secci´on3.3) y el software de detecci´onde hardware Kudzu de Red Hat 3.4.

El CD-ROM al arrancar, carga un archivo de inicio con un sistema de ficheros con un kernel comprimido y unos guiones para detectar los dispositivos de la m´aquina.Antes de la detecci´onde hardware se monta una partici´on ramdisk [10] para proyectar los direc- torios que necesitan escritura. La aplicaci´ona medida que detecta el hardware consulta una librer´ıa(Kudzu) donde guarda b´asicamente el hardware soportado y los m´odulosque deber´acargar. Tras arrancar el kernel y ejecutar estos scripts se carga el m´odulo cloop (ver Secci´on3.3) para cargar el sistema de ficheros principal, que se encuentra en un fichero comprimido con el driver cloop.

Cloop utiliza compresi´on zlib/gzip [68] para comprimir por bloques independientemente del tipo de sistema de ficheros. El sistema es de s´olo-lectura,y para una mayor efectividad mantiene el ´ındice de bloques en memoria y el resto de bloques se carga en-demanda. Adem´asla informaci´onse guarda de forma que minimiza el movimiento del cabezal del CD-ROM en los accesos.

Finalmente mediante soft-links se enlazan los directorios que necesitan escritura con los creados en el ramdisk por el script de arranque del CD-ROM, y arranca el servidor de X y el entorno de escritorio (KDE).

Para desarrollar distribuciones tomando Knoppix como base es necesario instalar en primer lugar Knoppix en el disco duro. A continuaci´onel desarrollador desinstalar´ıa e instalar´ıa software en la distribuci´oninstalada mediante herramientas como APT [71]. Una vez tuvi´eramosla distro adaptada a nuestras necesidades, deber´ıamosarrancar un sistema Linux propio e instalar las herramientas necesarias para manejar ficheros cloop en nuestro sistema. Con estas herramientas crear´ıamosde nuevo el dispositivo cloop con el

28 sistema de ficheros de nuestra distribuci´onpersonalizada. Finalmente crear´ıamosel CD- ROM incluyendo las herramientas de Knoppix de detecci´onde hardware, el gestor de arranque, los m´odulosdel n´ucleode Knoppix, etc...

4.1.4. Conclusiones

Knoppix por ser el primero es tambi´enel m´asmaduro y estable de las Live-CDs, pero no fue pensado inicialmente para crear distribuciones que no fuesen la propia Knoppix. Para crear una Live-CD Knoppix es necesario instalar Knoppix en el disco duro, para despu´es instalar y desinstalar aplicaciones que el usuario crea conveniente sobre esta instalaci´on. Por tanto, no es posible a priori crear una distribuci´oncon base de Knoppix que contenga una distribuci´onque no sea la propia Knoppix.

La distribuci´oncontenida en Knoppix est´abasada en Debian Sid (testing). Esta distribu- ci´onse compone de paquetes de software que han sido probados durante un breve periodo de tiempo y que no se han encontrado fallos importantes. Un paquete testing puede con- tener fallos notables de programaci´on.La especificaci´onde GNU/Linux FME requiere un sistema estable por lo que deber´ıaestar basado en la distribuci´on Debian Woody (estable).

Figura 4.1: Escritorio KDE de Knoppix 3.3

Como consecuencia, Knoppix no parece la mejor soluci´onpara desarrollar un sistema estable y robusto, por lo que descartaremos esta Live-CD para desarrollar el proyecto GNU/Linux FME.

29 4.2. Morphix

4.2.1. Introducci´on

Debido a que est´abasado directamente en Knoppix, la idea es la misma, conseguir una Live-CD que quepa en un CD-ROM y que pueda ser ejecutada sin necesidad de hacer una instalaci´onen el equipo del usuario, con una cantidad de software instalado y listo para ser usado [37].

La estructura de esta Live-CD es algo diferente. Se compone de diversos m´odulos,los cuales pueden ser modificados para personalizar una distribuci´on.Este dise˜noen m´odulos permite a los desarrolladores tener mucha versatilidad a la hora de hacer cambios sobre una distro Morphix, aunque todas parten de un m´odulobase que es una copia del coraz´on de Knoppix.

4.2.2. Motivaci´on

Los creadores de Morphix buscaban un producto mejor que Knoppix. Recordemos que Knoppix es una imagen ISO [25] que se graba en un CD-ROM y que cuando queremos modificar esta distro es condici´on sine qua non una base Knoppix. Por eso crearon Morphix con un dise˜nomodular. La idea es que el usuario descarga un m´odulobase (unos 180 Mb) y lo completa a su gusto con los m´odulosque contengan los paquetes de software que el usuario necesite en su distribuci´on.

En Morphix encontramos una lista de software disponible m´asextensa y mejor ordenada (al estar agrupados en m´odulos).El usuario debe elegir de entre este software para crear su distribuci´onya que todo el conjunto no cabe en un CD-ROM de 700 Mb.

4.2.3. Descripci´ony funcionamiento

El funcionamiento es muy parecido al de Knoppix. Al arrancar el CD el m´odulobase se carga y se ejecuta para configurar el hardware. A continuaci´onse mira si existe alg´unmini- m´oduloque deba cargarse con el m´oduloprincipal, en caso afirmativo se carga y se ejecutan los scripts de configuraci´onde los mismos. Finalmente se carga el m´oduloprincipal y se ejecutan todos los scripts de inicio propios del m´odulopara generar el entorno de usuario.

30 Una distribuci´on Morphix cuenta con:

Un m´odulobase, que contiene un kernel b´asico,m´odulospara este kernel y un sistema de detecci´onde hardware autom´atico.Es la parte del proyecto que se ha tomado de Knoppix.

Un m´oduloprincipal donde se encuentra el sistema de ficheros de la distribuci´ony todo el entorno de usuario junto con el software ya instalado (X11 [66], window manager 1, aplicaciones, etc...). Es independiente del m´odulobase.

Uno o varios mini-m´odulos,cada uno de ellos es un sistema de ficheros comprimido con scripts de inicializaci´on.Est´anrelacionados con uno o varios m´odulosprincipales. Se utilizan para modificar los entornos de usuario.

A parte de estos 3 tipos de m´odulos,la Live-CD al arrancar comprueba adem´asestos 3 directorios:

El directorio /deb : Los paquetes Debian [51] que se incluyen en este directorio se instalan en la distribuci´onen tiempo de arranque del sistema.

El directorio /exec : Podemos incluir programas y scripts para que sean ejecutados en el momento del arranque por el sistema. Los programas deben estar basados en consola, ya que se ejecutan antes de levantar el servidor X.

El directorio /copy : Todos los ficheros y directorios que contenga esta carpeta se copiar´anen el sistema de ficheros ra´ızen el arranque del sistema. Los ficheros que ya existan ser´anmodificados.

Esta estructura en partes independientes permiten una gran versatilidad a la hora de crear entornos, pero debemos tener varias cosas en cuenta, y es que todo lo que no est´een los m´odulosprincipales se instala en tiempo de arranque. Por tanto si explot´aramosesta opci´onde construir el sistema a partir de m´odulosen tiempo de carga, podemos conseguir unos tiempos de arranque prohibitivos. Si prescindimos de estas caracter´ısticasnos encon- tramos con un sistema muy parecido a Knoppix [58], donde debemos modificar un m´odulo principal configurado de una determinada manera.

1Un gestor de ventanas es un servidor que se encarga de construir las ventanas del sistema X11

31 4.2.4. Conclusiones

Morphix es un proyecto muy ambicioso, aparentemente permite a los desarrolladores mucha flexibilidad a la hora de crear las distribuciones gracias al sistema de m´odulos. Su sistema de instalaci´onmediante una GUI permite a los usuarios inexpertos en Linux instalar la distribuciones con algunos clicks de rat´on.

Figura 4.2: Morphix con el m´odulodel escritorio IceWm

Uno de los inconvenientes de Morphix es la falta de documentaci´ont´ecnicasobre el pro- yecto y su estructura. Adem´asal estar muy arraigado a Knoppix, tampoco est´apensado para partir de un sistema GNU/Linux propio. Para desarrollar un sistema basado en Morp- hix siempre hay que partir de una distribuci´on Morphix, y no es lo que buscamos para el proyecto.

4.3. Metadistros

4.3.1. Introducci´on

A diferencia de los dos sistemas anteriores, no se trata de una distribuci´on.Es un proyecto de Hispalinux [18], una comunidad de desarrolladores hispanos sobre GNU/Linux. La idea es crear una infraestructura para crear Linux Live-CDs [36] a partir de cualquier instalaci´onde Linux, ya sea partiendo de una distribuci´onhecha o una distribuci´onpropia que el usuario quiera convertir a Live-CD. Aunque la idea es un poco diferente, su base sigue siendo Knoppix [58].

32 El conjunto de herramientas de Metadistros [53] permiten un potencial creador muy por encima del resto de estructuras Live-CD. Seg´unlas especificaciones se puede convertir cualquier instalaci´on,incluso las no basadas en Debian, en un Live-CD con Metadistros. El proyecto se encuentra en continuo desarrollo y surgen nuevas herramientas y mejoras con mucha frecuencia.

4.3.2. Motivaci´on

Los creadores de Metadistros tienen una meta clara: generar una estructura que nos permita en un momento determinado crear a partir de una instalaci´onde Linux cualquiera un Live-CD de gran fiabilidad y estabilidad. Esta especificaci´ongenera un producto muy ´util.Cualquier desarrollador puede generar un entorno personalizado y transportarlo a otro equipo s´olocon un CD-R, y las posibilidades de ese entorno son ilimitadas, ya que el usuario puede crear un Live-CD de cualquier distribuci´onLinux.

Por eso no tiene sentido hablar de listas de software incluido, m´odulosdisponibles, etc. . . Podemos construir un Live-CD con cualquier distribuci´onLinux, siempre y cuan- do comprimida nos quepa en el CD-R. Actualmente podemos tener distibuciones de hasta 2 Gb en un solo CD-R de 700 Mb.

4.3.3. Descripci´ony funcionamiento

El funcionamiento de esta distribuci´onse explicar´acon detenimiento posteriormente en esta memoria, ya que este proyecto est´abasado en Metadistros. B´asicamente lo que hace Metadistros para arrancar el sistema desde un Live-CD es cargar un peque˜nosistema muy b´asicocon isolinux (ver Secci´on3.2) llamado calzador [1], que se encarga de efectuar la de- tecci´ony configuraci´ondel hardware, generar los scripts necesarios para el funcionamiento de GNU/Linux y montar la distribuci´oncomprimida con cloop [2]. Finalmente se enlazan los directorios que necesitan escritura con un sistema de ficheros montado en la RAM, y se pasa el control al proceso init para que inicie el sistema contenido en la Live-CD.

La estructura se separa en dos partes perfectamente diferenciadas e independientes:

La distribuci´on que queremos convertir en Live-CD, que se guarda en un archivo comprimido con el driver cloop (ver Secci´on3.3), al igual que Knoppix [58]. A diferencia de Knoppix, esta distribuci´onpuede ser cualquier sistema GNU/Linux (no tiene porque ser Debian [56]), aunque como veremos m´asadelante debe cumplir con alguna caracter´ısticaespecial y deberemos modificar algunas cosas para que sea Live-CD.

33 La otra parte de la estructura es lo que se llama el calzador [1]. Se trata de un conjunto de herramientas que hace que el CD sea auto-arrancable y se encarga de preparar el sistema para iniciar la distribuci´oncontenida en el archivo cloop. En este calzador encontramos el cargador Isolinux (ver Secci´on3.2) y un conjunto de scripts que b´asicamente se encargan de detectar el hardware de la m´aquinay configurarlo, recoger informaci´onsobre el usuario si es necesario, y generar los scripts en funci´on del hardware encontrado para que la distribuci´onpueda iniciarse con ´exito.

M´asadelante veremos como la distribuci´onno es totalmente independiente del calzador y que debe cumplir con unas especificaciones para que el calzador sea capaz de iniciarla correctamente.

4.3.4. Conclusiones

El proyecto Metadistros cuenta con un gran n´umerode desarrolladores voluntarios que mantienen el proyecto en constante evoluci´on.Adem´ascuenta con un gran volumen de informaci´onsobre el proyecto. Por esto y debido a su especificaci´ontan adaptada a nues- tras necesidades, Metadistros ser´ael candidato elegido finalmente para desarrollar nuestro prop´osito,el proyecto GNU/Linux FME.

4.4. Otros sistemas Linux Live-CD

Existen multitud de proyectos Linux Live-CD, algunos m´ascompletos y desarrollados que otros, pero todos ellos con Knoppix como base de la estructura principal de la distro. Todos los ejemplos indicados a continuaci´onson modificaciones de alguna de las Live-CDs explicadas hasta ahora, por lo tanto me limitar´ea describir brevemente lo que tienen de especial cada una sin entrar en gran detalle.

4.4.1. Gnoppix

Est´abasado directamente en Knoppix [58]. La diferencia principal es que Gnoppix [15] utiliza Gnome [13] como entorno de escritorio en lugar de KDE [57]. Est´abasado en la distribuci´onestable de Debian [56], aunque toma muchas aplicaciones de la versi´on testing, por lo que no se puede considerar del todo estable.

Integra una aplicaci´ondiferente de detecci´onde hardware. Se trata de Discover [7], una aplicaci´onindependiente m´asconfiable que Kudzu (ver Secci´on 3.4). De esta forma,

34 Gnoppix puede que sea capaz de detectar y configurar hardware mientras Knoppix no sea capaz, aunque tambi´enpuede darse el caso contrario.

El paquete de software que incluye Gnoppix es tan variado como el de Knoppix, con programas de prop´ositogeneral, de testeo y configuraci´onde equipos, software de oficina, entornos de desarrollo, etc. . .

4.4.2. Quantian

Quantian [44] es una modificaci´onde Knoppix [58] con el fin de crear una distribuci´on para el colectivo cient´ıfico,esto es, matem´aticos,f´ısicos,estadistas, etc. . . En un principio parece una buena base para desarrollar el proyecto GNU/Linux FME pero al ser una modificaci´onmuy b´asicade Knoppix no podemos asegurar la estabilidad de la distribuci´on.

Incluye algunas de las aplicaciones incluidas en GNU/Linux FME como por ejemplo Octave [39], Maxima [35], GNUPlot [40] o PSPP [43]. Adem´asincluye software de informaci´ongeogr´afica,librer´ıas de c´alculofinanciero, m´oduloscient´ıficos para Python, as´ıhasta cerca de 500 Mb de programario espec´ıfico.

4.4.3. ACM-λux

Se trata de una distribuci´on Lux modificada por los estudiantes de la Universidad Rey Juan Carlos de Madrid, y la finalidad es la misma que la que persigue este proyecto, que los alumnos tengan un sistema con el que desarrollar sus pr´acticasen un entorno libre.

El proyecto [8] est´aen fase de desarrollo y todav´ıano ha sido liberada ninguna distri- buci´onoficial.

4.4.4. gKnx

Se trata de un sistema GNU/Linux muy b´asicoque ´unicamente ocupa 39 Mb [36]. Es una instalaci´onb´asicade Debian con el instalador de Knoppix incorporado. El proyecto est´apensado para hacer demostraciones en CD Business-Cards (ver p´agina19) e instala- ciones m´ınimasde Debian.

35 4.4.5. OverClockix

Es una distribuci´onbasada en Knoppix [58] que contiene una infinidad de herramien- tas de testeo de hardware (tests de memoria y de CPUs), seguridad en redes, software antivirus (incluso para Windows°c ), etc. . . Contiene, a parte de los incluidos con Knoppix, controladores adicionales de tarjetas de v´ıdeoy winmodems [41].

4.4.6. Gnome2Live

Basado en Metadistros [53], contiene una las ´ultimasversiones de software para Debian [56] y Gnome [13]. Est´abasado en Ximian Desktop [67], un entorno de escritorio muy potente y vanguardista. Est´apensado para los usuarios que nunca han visto Linux. El en- torno es muy visual y contiene un gran conjunto de aplicaciones multimedia (reproductores de v´ıdeo,MP3, im´agenes.. . ) que la convierten en una distro muy espectacular y completa [14].

4.4.7. “. . . and more.”

Existen muchas otras Live-CDs muy parecidas a las estudiadas anteriormente (Knoppix- Jr, Kix, Knoppix-Lite, MEPIS, Oralux, Freeduc, GNUMed, Gentoo [11], MediaLinux, Zope, etc. . . ). Como el objetivo del proyecto no es profundizar en la diversidad de todas estas distribuciones, no continuaremos su estudio y si el lector desea seguir profundizando en el tema, puede encontrar mucha m´asinformaci´onen [36].

36 Cap´ıtulo5

¿C´omose crea una Live-CD?

En este cap´ıtuloel lector descubrir´ac´omoes posible conseguir un sistema Linux auto- arrancable en un s´oloCD-ROM. Profundizar´een la estructura de estas distribuciones para conocer el entorno y comprender su funcionamiento. Mi objetivo es ofrecer una soluci´on al problema de conseguir que una distribuci´onLinux [55] pueda ser arrancada desde un CD-ROM. Por eso explicar´eun m´etodo gen´ericode conseguir el objetivo, sin detenerme en explicar todas las posibles variantes y alternativas de dise˜no.Todo el cap´ıtuloest´abasado en la documentaci´onde [3]

5.1. Introducci´on

El objetivo es conseguir que nuestra distribuci´onLinux arranque desde un CD-ROM sin necesidad de disco duro. Una vez s´e cual es mi objetivo me propongo a saber c´omo voy a conseguirlo. Para empezar me plantear´equ´ees lo que necesito para crear un trabajo como el descrito:

1. Si deseo conseguir una distribuci´onLinux en un CD-ROM lo primero que necesito es una distribuci´onLinux instalada y configurada en mi PC. En principio esta distribu- ci´onpodr´ıaser cualquiera, pero m´asadelante averiguaremos que el n´ucleoque debe utilizar esta distribuci´ondebe cumplir ciertas especificaciones. A esta distribuci´onla llamaremos de aqu´ıen adelante la distribuci´on source.

2. Necesitaremos otra distribuci´onLinux instalada para crear las im´agenes ISO [25] de la Live-CD y para grabar los CD-ROM con nuestro sistema (distribuci´on host).

37 3. Nuestro PC debe ir equipado con una grabadora de CDs, adem´asdebemos tener va- rios CD-R para poder grabar las im´agenes.Es muy recomendable empezar grabando las Live-CDs en CD-RW, y una vez que funcionen grabar la versi´ondefinitiva en un CD-R. Durante el proyecto se han utilizado varios CD-RW para las pruebas, y CD-R para las versiones definitivas.

4. Necesitaremos un software que permita arrancar el n´ucleode nuestra Live-CD desde el CD-ROM. Un sistema ideal para este fin es ISOLINUX (ver Secci´on3.2).

Una vez conseguidos los ingredientes debemos combinarlos para que el resultado sea el esperado. La idea principal es modificar el n´ucleode la distribuci´on source para crear una ramdisk (ver Secci´on3.1) en la RAM, de forma que podamos tener espacio donde realizar escritura. La ramdisk arrancar´acon una estructura de directorios com´una todos los sistemas Linux. El directorio ra´ızcontiene un directorio adicional, /meta, que contiene todos los directorios del sistema de ficheros ra´ızque necesitan permisos de escritura. Utilizo enlaces simb´olicosde los directorios de mi sistema que necesiten escritura a los directorios contenidos en /meta. Adem´asde este directorio tengo otro, /ramdisk, que me servir´apara montar el dispositivo ramdisk y poder operar con ´el.Este es el aspecto del directorio ra´ız:

/ |---> /bin |---> /boot |---> /cdrom |---> /dev -> /meta/dev |---> /etc -> /meta/etc |---> /home -> /meta/home |---> /lib |---> /linuxrc |---> /mnt |---> /meta | |---> dev | |---> etc | |---> home | |---> root | |---> tmp | ‘---> var |---> /ramdisk |---> /root -> /meta/root |---> /sbin |---> /tmp -> /meta/tmp ‘---> /var -> /meta/var

38 Seguidamente se ejecutar´ael gui´on linuxrc, que se encargar´ade buscar la unidad de CD- ROM que contiene la distribuci´on.Despu´esde encontrarla, la monta en un directorio del sistema de ficheros actual y ejecuta un pivot root (ver Secci´on3.5) a el directorio donde est´amontada la distribuci´on.Finalmente linuxrc invocar´aal proceso init del sistema para comenzar la inicializaci´onde nuestra distribuci´on.

Una vez presentado el funcionamiento general de nuestro sistema debemos establecer un gui´onpara conseguir nuestro objetivo. A continuaci´onpasar´ea detallar los pasos que se deben completar para conseguir el objetivo final.

5.2. Configuraci´ondel n´ucleo

Debemos proveer al n´ucleode soporte para disco virtual en memoria (ramdisk) y de sistemas de ficheros ISO 9660 [25], el sistema de ficheros que utilizaremos para grabar el CD-R. Para ello debemos compilar un nuevo n´ucleo [27], con las herramientas habituales (gcc, make. . . ). Ejecutamos el comando:

fme:/# make menuconfig y en el men´ude configuraci´ondel n´ucleodebemos activar las siguientes opciones:

Block devices ---> <*> RAM disk support (4096) Default RAM disk size [*] Initial RAM disk (initrd) support para activar la ramdisk, con un tama˜node 4 Mb y soporte para initrd [4]. El tama˜no por defecto lo fijamos a 4Mb, si despu´esquisi´eramosm´asespacio de disco virtual podemos modificar este valor pas´andoleel par´ametroal n´ucleoen el momento de la carga. El soporte para initrd lo utilizaremos para arranque con el sistema de ficheros contenido en el fichero initrd.

Como ya hemos dicho necesitar´eactivar la compatibilidad con el sistema de ficheros ISO 9660, de modo que activo la siguiente opci´on:

File systems ---> <*> ISO 9660 CDROM file system support

Debo activar adem´aslos controladores que necesita el equipo donde se va a ejecutar la distribuci´on.Si activamos un gran n´umerode controladores, deber´ıamospensar en cargar

39 algunos de estos como m´odulos,ya que no es conveniente que el tama˜nodel n´ucleocrezca excesivamente.

Finalmente creo el nuevo n´ucleocon las instrucciones habituales:

fme:/# make dep fme:/# make bzImage fme:/# make modules fme:/# make modules_install

y lo copio al directorio /boot:

fme:/# cp /usr/src/linux/arch/i386/boot/bzImage /boot/metaKernel fme:/# cp /usr/src/linux/System.map /boot

Tambi´enhe copiado el fichero del mapping de s´ımbolos del n´ucleo,por si el n´ucleotiene problemas para resolver alg´uns´ımbolo en tiempo de ejecuci´onque pueda consultarlo en este fichero.

Una vez conseguido es conveniente probar que el n´ucleoes capaz de arrancar la ramdisk [10]. Para ello debo configurar nuestro gestor de arranque (Lilo [30], GRUB [16]. . . ) para que seleccione el n´ucleoque he creado. Tras reiniciar mi sistema, creo un sistema de ficheros en la ramdisk con la instrucci´on:

fme:/# mke2fs /dev/ram0

Este comando intentar´acrear un sistema de ficheros en el primer ramdisk del sistema. Para probar su funcionamiento podr´ıamontar el nuevo sistema de ficheros en un directorio de nuestro sistema, por ejemplo:

fme:/# mount /dev/ram0 /mnt

Una vez que tengamos el dispositivo funcionando, podemos continuar con el siguiente apartado. En caso contrario, debemos revisar de nuevo el procedimiento de creaci´onde la ramdisk. Debemos tener en cuenta que el dispositivo s´oloest´adisponible en versiones del n´ucleosuperiores a la 1.3.73. Lo m´assencillo ser´ıarevisar los mensajes generados por la compilaci´ondel nuevo n´ucleopara buscar posibles fallos de compilaci´on,o bien revisar los archivos log del inicio del sistema en /var/log/messages.

40 5.3. Cambios en la estructura del sistema de ficheros de la distribuci´on source

Necesitar´emover los directorios que necesiten permisos de escritura al directorio /meta. La idea es la siguiente: una vez iniciado ramdisk [10], necesito tener permisos de escritura en algunos directorios antes de iniciar la ejecuci´ondel proceso de inicializaci´ondel sistema. Necesito mover estos directorios al dispositivo ramdisk. Lo m´assencillo es tener todos estos directorios que necesitan escritura ubicados en un mismo directorio del sistema de ficheros de forma que pueda copiar todos estos directorios al dispositivo ramdisk y, una vez copiados, montar el dispositivo ramdisk sobre el directorio que conten´ıalos directorios copiados. De esta forma, conseguir´ıatener permisos de lectura/escritura sobre todos los directorios que la necesitaran.

Para conseguir crear esta estructura de directorios y enlaces simb´olicosdebo arrancar mi PC con otro sistema Linux diferente (host) al que pretendo convertir en Live-CD (source). Una vez arrancado el sistema debo montar el sistema de ficheros de la distribuci´onque quiero modificar (source) a un directorio de mi sistema Linux que he arrancado. Suponiendo que source se encuentra en la primera partici´ondel primer disco, operar´ıade la siguiente forma:

fme:/# mount /dev/hda1 /mnt

Una vez montado el sistema source paso a crear el directorio donde finalmente se montar´ael espacio ramdisk y despu´esa mover los directorios que necesitan escritura al directorio creado:

fme:/# mkdir /mnt/meta fme:/# cd /mnt fme:/# mv dev etc home root tmp var meta

Con esta estructura el sistema no podr´ıaarrancar correctamente, ya que hemos movido directorios importantes del sistema. Ahora creamos enlaces simb´olicosa la nueva ubicaci´on de estos directorios para que el sistema pueda arrancar de forma correcta:

fme:/# ln -s /mnt/meta/dev /mnt/dev fme:/# ln -s /mnt/meta/etc /mnt/etc fme:/# ln -s /mnt/meta/home /mnt/home fme:/# ln -s /mnt/meta/root /mnt/root fme:/# ln -s /mnt/meta/tmp /mnt/tmp fme:/# ln -s /mnt/meta/var /mnt/var

41 Finalmente he de crear el directorio donde posteriormente se montar´aen un principio el dispositivo ramdisk [10, 19]:

fme:/# mkdir /mnt/ramdisk

Con esta instrucci´onhe acabado de configurar el sistema de ficheros de mi distribuci´on source. Ahora que he conseguido la estructura necesaria, necesito proveer al sistema del gui´onapropiado para realizar todas las operaciones necesarias para que el sistema pueda arrancar aprovechando la estructura creada.

5.4. Configuraci´onde fstab

El fichero de configuraci´on /etc/fstab es consultado por el n´ucleopara montar el sistema de ficheros [31]. El fichero consta de varias entradas, donde indica las particiones que se montar´ansobre el sistema de ficheros ra´ızy el punto de montaje. El punto de montaje es el directorio sobre el que se montar´ala partici´ondentro de el sistema de ficheros ra´ız. Dejar´e´unicamente la entrada correspondiente a proc:

proc /proc proc defaults

El primer par´ametroes el dispositivo que monto, proc. No se trata de un dispositivo f´ısico, sino de un sistema de ficheros virtual, que permite mantener la informaci´ondel n´ucleoen una estructura de ficheros y directorios que puede ser montada en el sistema de ficheros principal. El segundo par´ametrome sirve para indicar al n´ucleoque debe montar proc en el directorio /proc. El tercer par´ametroindica al n´ucleoque el dispositivo que estoy montando es del tipo sistema de ficheros virtual proc. Finalmente le indico en el cuarto par´ametro que monte el sistema con las opciones por defecto.

5.5. Configuraci´onde ramdisk

Cuando el sistema arranca ejecuta una serie de guiones (scripts) de sistema para configu- rarse de forma correcta. Una de las cosas que debe hacer mi sistema al iniciar es configurar correctamente el dispositivo ramdisk de forma que los directorios que necesiten escritura est´enubicados en mi espacio de disco virtual en RAM. Como ya hemos apuntado, lo que har´aeste gui´onser´amontar el disco virtual en el sistema de ficheros, copiar los directo- rios que necesiten permisos de escritura en el espacio creado y finalmente volver a montar el ramdisk donde est´anapuntados los directorios copiados. Un ejemplo de gui´oncon las caracter´ısticasindicadas es el siguiente:

42 #!/bin/sh

dev_ram=/dev/ram0 dir_ramdisk=/ramdisk dir_needwrite=/meta

source /etc/init.d/functions

case "$1" in start) echo -n "Creando ext2fs en $dev_ram ..." /sbin/mke2fs -m 0 -i 1024 -q $dev_ram > /dev/null 2>&1 evaluate_retval sleep 1 echo -n "Montando ramdisk en $dir_ramdisk ..." mount -n $dev_ram $dir_ramdisk evaluate_retval sleep 1 echo -n "Copiando archivos al disco virtual en memoria ..." cp -dpR $dir_needwrite/* $dir_ramdisk > /dev/null 2>&1 evaluate_retval sleep 1 echo -n "Montando de nuevo ramdisk en $dir_needwrite ..." umount -n $dir_ramdisk > /dev/null 2>&1 sleep 1 mount -n $dev_ram $dir_needwrite sleep 1 ;; *) echo "Uso: $0 {start}" exit 1 ;; esac

En primer lugar se definen variables para dispositivos y directorios. El script utiliza fun- ciones externas, por lo que se˜nalamosla ubicaci´ondel script que las contiene (“/etc/init.d/functions”). Este fichero no existe en Debian, pero podemos conseguirlo f´acil- mente de la distribuci´on Linux from Scratch [52].

El script mira si el par´ametroes start (Condici´onde iniciar el servicio). Si es as´ıda formato al dispositivo ramdisk $dev ram, lo monta en $dir ramdisk, copia los ficheros y directorios que necesitan escritura en el directorio $dir needwrite y monta $dev ram en $dir needwrite. En caso contrario finaliza la ejecuci´ondel script con un valor de error.

43 El gui´onlo guardo en el directorio donde se encuentran el resto de scripts de sistema, en /etc/init.d 1. Para que el sistema ejecute el script que acabamos de crear debemos darle permisos de ejecuci´on:

fme:/# chmod 755 /etc/init.d/create_ramdisk

En mi caso, Debian [56], adem´asdebo enlazar este script con el directorio rcS.d, que contiene los links a los scripts que se ejecutan en caso de iniciar el sistema en modo monousuario (“Single User”):

fme:/# ln -s /etc/init.d/create_ramdisk /etc/rcS.d/S00create_ramdisk

El nombre S00create ramdisk es debido a que se trata de un servicio que debemos iniciar (“Start”), y que debe ser ejecutado antes que ning´unotro servicio (n´umerode orden 00) ya que los dem´asservicios necesitar´anlos directorios montados para realizar escrituras.

5.6. Instalaci´onde Isolinux

Como hemos visto en la secci´on3.2 Isolinux es un gestor de arranque para sistemas de ficheros ISO 9660 [25]. Utilizar´eesta herramienta tan ´utilpara controlar el arranque de mi distribuci´on.La idea es que Isolinux comience su ejecuci´oninicializando el dispositivo /dev/initrd (ver Secci´on3.6). De esta forma se carga en memoria el sistema de ficheros contenido por initrd, y se ejecuta el fichero linuxrc, donde puedo colocar un script que sea capaz de encontrar la ubicaci´onde la unidad de CD-ROM donde se encuentra mi sistema Live-CD, y posteriormente arrancar el sistema encontrado debidamente.

Empecemos por el principio. Para utilizar Isolinux en mi distribuci´ondebo instalar esta herramienta en mi sistema diferente a la distribuci´onque intento convertir en autoejecuta- ble (host). Para instalar Isolinux s´olonecesito descargar de la p´aginaweb de SYSLINUX [48].

1En el caso de Debian los scripts de sistema se encuentran en este directorio, pero puede cambiar si la distribuci´ona convertir no es Debian. Puede consultar la documentaci´onde la distribuci´onsi desea convertir una distro diferente a Debian

44 Una vez descargado el fichero lo descomprimimos en un directorio temporal, por ejemplo:

fme:/# tar -xvzf isolinux.tgz /tmp

Para arrancar nuestro sistema no ser´anecesario instalar todo el sistema Isolinux en nuestra distribuci´on source. Tan s´olonecesito copiar el fichero isolinux.bin que es el fichero que se ejecuta cuando el CD-ROM comienza su ejecuci´on.Isolinux busca un directorio /isolinux, m´asconcretamente un fichero de configuraci´onllamado isolinux.cfg, donde tiene las ins- trucciones para iniciar el sistema. Como la configuraci´onde nuestro sistema es muy sencilla editar´eeste fichero manualmente:

fme:/# cp /tmp/isolinux/isolinux.bin /isolinux

Ahora edito el fichero isolinux.cfg de la siguiente forma: default meta label meta kernel metaKernel append initrd=initrd.gz root=/dev/ram0 init=/linuxrc ramdisk_size=16384

El fichero de configuraci´ones muy sencillo de entender. Le indico a Isolinux que el n´ucleo se encuentra en /isolinux/metaKernel. La instrucci´on append permite pasar par´ametrosal n´ucleo,de manera que la ´ultimal´ıneaindica al n´ucleoque debe arrancar en modo initrd, que debe montar la ramdisk en el dispositivo /dev/ram0, que el primer proceso que debe ejecutar es linuxrc, y finalmente indicamos que queremos aumentar el tama˜node la ramdisk hasta los 16 Mb.

El fichero de configuraci´ondebe ir tambi´enubicado en /isolinux, al igual que todos los archivos que se necesitan para arrancar el n´ucleo.Por lo tanto haremos una nueva modificaci´ona nuestro sistema de ficheros source, copiando los ficheros de /boot a /isolinux, y creando el enlace pertinente:

fme:/# mv isolinux.cfg /isolinux fme:/# cp -R /boot/* /isolinux fme:/# rm -R /boot fme:/# ln -s /isolinux /boot

45 Esto es todo lo que necesito de Isolinux para arrancar mi sistema desde el CD-ROM. Para terminar borro los ficheros temporales creados al descomprimir Isolinux.

fme:/# rm -R /tmp/isolinux

Ya tenemos las herramientas para que el CD-ROM arranque el n´ucleocon la opci´on initrd, lo que necesitamos para completar nuestro Live-CD es precisamente el fichero initrd con el sistema de ficheros que se montar´aal inicio.

5.7. Configuraci´onde initrd

Necesito crear un sistema de ficheros en un fichero initrd [4] para que ´estesea montado al iniciar mi Live-CD. La idea es que el n´ucleomonte en primer lugar, este sistema de ficheros como ra´ız,e inicie la ejecuci´ondel fichero linuxrc que se encuentra dentro de este sistema de ficheros. Este ejecutable debe configurar el sistema para que nuestra distribuci´onLive-CD pueda iniciarse correctamente. Para conseguir un fichero de este tipo, arrancar´emi sistema Linux source y proceder´ede la siguiente forma:

fme:/# dd if=/dev/zero of=/isolinux/initrd bs=1024 count=6144

El comando dd me permite copiar datos bit a bit desde la entrada est´andarhacia la salida est´andar.En mi caso modifico tanto la entrada como la salida. Utilizo el fichero especial /dev/zero, se trata de un dispositio virtual de solo-lectura, y que devuelve tanto ceros como se le indiquen en la operaci´onde lectura. De esta forma consigo un fichero lleno de ceros, de un determinado tama˜no.Este tama˜nose determina con los dos par´ametrossiguientes. Indico que quiero leer 6144 bloques de 1024 bytes cada uno, en total 6Mb. Una vez creado debo construir el sistema de ficheros:

fme:/# mke2fs -m 0 -i 1024 -F /isolinux/initrd

La instrucci´onda formato al sistema de ficheros [23] dentro del archivo initrd [4]. Indico con los par´ametrosque no quiero reservar ning´unporcentaje de espacio para el usuario root en el sistema de ficheros y que el tama˜node los inodes debe ser de 1024 bytes (1 Kb). Finalmente le indico el nombre del fichero que debe formatear. Una vez formateado, debo crear la estructura de directorios y ficheros que necesito para iniciar un sistema m´ınimoque configure el inicio de mi distribuci´onLive-CD. Para operar dentro de initrd debo montarlo en mi sistema de ficheros:

fme:/# mount -o loop /isolinux/initrd /mnt

46 La estructura de directorios que debe contener initrd no debe ser tan completa como la de un sistema Linux corriente. Debemos tener en cuenta que no se va a iniciar ning´unn´ucleo ni se validar´anusuarios, por tanto prescindir´ede directorios como /boot, /home, /etc, /tmp o /var. Los directorios que necesito son los siguientes:

fme:/# mkdir /mnt/bin /mnt/dev /mnt/lib /mnt/mnt /mnt/proc

La idea es crear el gui´on linuxrc para que detecte y configure la distribuci´onLive-CD contenida en el CD-ROM. Este gui´onnecesitar´aalgunas herramientas de Linux disponibles en el sistema para poder ejecutarse, por lo tanto debo copiar estas herramientas a el nuevo sistema de ficheros. En el caso de Debian estas herramientas son:

fme:/# cp /bin/{,echo,grep,mount,umount} /mnt/bin fme:/# cp /usr/sbin/chroot /mnt/bin fme:/# cp /usr/bin/test /mnt/bin fme:/# cp /sbin/pivot_root /mnt/bin

Debemos copiar adem´aslas librer´ıas de sistema y los dispositivos que se utilizar´anen linuxrc:

fme:/# cp /lib/{libncurses.so.5,libdl.so.2,libc.so.6,ld-linux.so.2} /mnt/lib fme:/# cp -dR /dev/{console,hd?,scd*,null,ram*} /mnt/dev

La opci´on -dR indica a cp que debe hacer una copia recursiva de ficheros y directorios, pero no debe seguir los enlaces simb´olicos,simplemente copiarlos como si fueran ficheros ordinarios. Ahora ya disponemos de las herramientas necesarias, tan s´oloqueda un par de detalles:

fme:/# ln -s /bin/bash /bin/sh fme:/# ln -s /bin/test /bin/[

Estos dos enlaces simb´olicosnos permitir´anutilizar el lenguaje de programaci´onshell-script [32] para crear el gui´onde inicio del sistema, el fichero linuxrc.

47 As´ıes como queda el sistema de ficheros initrd:

/ |---> /bin | |---> [ -> /bin/test | |---> bash | |---> chroot | |---> echo | |---> grep | |---> mount | |---> pivot_root | |---> sh -> /bin/bash | |---> test | ‘---> umount |---> /dev | |---> cdrom | ‘ ... (Depende de cada sistema) |---> /lib | |---> libncurses.so.5 | |---> libdl.so.2 | |---> libc.so.6 | ‘---> ld-linux.so.2 |---> /linuxrc |---> /mnt ‘---> /proc

El gui´ondebe encontrar la unidad de CD-ROM que contiene la imagen de la distribuci´on Live-CD, montarla y pasar el control al proceso init de dicha distribuci´on.El c´odigoentero de linuxrc se puede consultar ´ıntegro en Ap´endiceA. A continuaci´onexplicar´ecuales son sus pasos e instrucciones m´asrelevantes:

El gui´oncomienza definiendo variables. La primera variable es la etiqueta que identifica a mi distribuci´onLive-CD. La utilizar´em´asadelante cuando encuentre un CD-ROM y quiera asegurarme de que se trata de mi distribuci´on.La variable $TMP MOUNT la utilizo para indicar al proceso donde debe montar la distribuci´onantes de montarla como ra´ız. La variable $PATH indica la ubicaci´onde los ejecutables que se utilizan en el gui´on.

Para continuar la ejecuci´ondel script, debemos tener montado el directorio /proc, ya que algunas de las utilidades que usamos durante el script accede a este sistema de ficheros virtual. El paso 0 se encarga de ello comprobando si est´amontado, y mont´andolosi es necesario.

48 El primer paso es buscar las diferentes unidades de CD-ROM que se encuentran en la PC en que se est´aejecutando la Live-CD. El procedimiento var´ıasi utilizamos DEVFS (ver Secci´on3.7) o no. En el script se contemplan las dos posibilidades. El script comprueba que exista el nombre de la unidad en el sistema de ficheros. Si existe la a˜nadea una variable $CDROM LIST y contin´uabuscando unidades. Cuando no quedan m´asdispositivos por escanear el bucle termina y pasa al siguiente paso.

En el paso 2 utilizo la lista de unidades de CD-ROM en la variable $CDROM LIST para encontrar la unidad de CD-ROM donde se encuentra mi Live-CD. Creo un nuevo bucle que recorrer´ala lista comparando el ID del CD-ROM que se encuentra en la unidad con el ID de mi distribuci´on.El ID es un nombre que se le da al CD-ROM, en mi caso lo tengo en la variable $ID y debe coincidir con el identificador que se le asigna al CD- ROM cuando se graba la imagen de la Live-CD (veremos en la secci´onsiguiente c´omo le asignamos este identificador al CD-R). El bucle recorre la lista hasta que encuentra el CD-ROM de la Live-CD, guarda la ubicaci´onde la unidad de CD-ROM en la variable $META CDROM DEVICE y se avanza al paso 3.

Una vez he hallado donde se encuentra el CD-ROM con la distribuci´onLive-CD pasamos a la parte m´asinteresante del script. La explicaci´onla realizar´epaso a paso:

mount -n -o ro -t iso9660 $META_CDROM_DEVICE $TMP_MOUNT

Montamos el sistema de ficheros de la Live-CD con las siguientes opciones. La opci´on -n se utiliza para evitar actualizar el fichero mtab, que mantiene el control de las unidades montadas en el sistema de ficheros, y que en mi estructura de directorios no existe (re- cordemos que estamos en el sistema de ficheros de initrd). La opci´on -o ro indica que el sistema debe ser montado como s´olo-lectura.Seguidamente indico el tipo del sistema de ficheros que queremos montar, en nuestro caso es el ISO9660 [25]. Finalmente le pasamos el dispositivo donde se encuentra la distro y el directorio del sistema de ficheros ra´ızdonde quiero montarlo.

cd $TMP_MOUNT pivot_root . mnt

Me posiciono en el directorio donde acabo de montar mi distribuci´onLive-CD y seguida- mente ejecuto el comando pivot root (ver Secci´on3.5), que me cambia la ubicaci´ondel directorio ra´ızde mi sistema. Al acabar la sentencia la ra´ızdel sistema en memoria apunta al ´arbol de directorios de mi distribuci´on,y el anterior ´arbol de directorios queda montado en la ubicaci´onque le paso como segundo par´ametro,el directorio tmp. De esta forma ya tengo el sistema de ficheros que necesito para arrancar mi distribuci´on.

umount -n /mnt/proc >/dev/null 2>&1

49 Con este comando desmonto el sistema de ficheros virtual que mapea los procesos en ejecuci´ondel n´ucleo.De esta forma cuando arranque la distribuci´onLive-CD y lea su fichero /etc/fstab podr´amontar su propio espacio virtual en su sistema de ficheros. La opci´on -n indica que no se debe modificar el fichero /etc/mtab. En este caso el fichero si existe, ya que nos encontramos dentro del ´arbol de directorios de la distribuci´onLive-CD, pero no modificaremos ese archivo ya que no es consciente todav´ıade que exist´ıaun sistema de ficheros proc montado.

exec chroot . sh -c umount -n /mnt >/dev/null 2>&1; \ exec -a init.new /sbin/init 3’ /dev/console 2>&1

Estas dos l´ıneasse ejecutan como una ´unicasentencia, ya que el backslash que hay al final une las dos l´ıneasal pasarlas a la shell [32]. El comando exec ejecuta la siguiente instrucci´on reemplazando el proceso de la shell en ejecuci´onhasta ahora. La instrucci´on chroot hace el cambio definitivo al directorio ra´ız,por si no lo hab´ıahecho ya la instrucci´on pivot root (ver Secci´on3.5). A la vez desmonto el sistema de ficheros de initrd. Al desmontar no modifico el fichero /etc/mtab ya que no tiene consciencia de la existencia de este sistema de ficheros ramdisk, redireccionando la salida est´andary el error est´andarhacia /dev/null, de forma que si hay alg´unmensaje al desmontar lo ignoramos. La instrucci´onvuelve a hacer un cambio de contexto del proceso actual, esta vez para arrancar definitivamente el proceso init, el padre de todos los procesos de un sistema Linux. Todos los canales los direccionamos hacia el dispositivo consola /dev/console de la distro Live-CD para poder interactuar posteriormente con la shell que se ejecuta.

Para que este script se ejecute cuando arranque el n´ucleocon initrd debo dar permisos de ejecuci´onen el archivo.

fme:/# chmod 755 /mnt/linuxrc

Finalmente desmonto el sistema de ficheros y lo comprimimos en zip [68] para reducir el espacio.

fme:/# cd / fme:/# umount /mnt fme:/# gzip /isolinux/initrd

Ya tengo todo lo necesario para crear un CD-R con mi sistema operativo Linux convertido en un Live-CD. Lo ´unicoque me queda es grabar el CD auto-arrancable.

50 5.8. Imagen final

Es conveniente que primero utilice soportes de CD-ROM re-grabables, esto es, CD-RW. Es posible que deba hacer alguna modificaci´onadicional no especificada en las instrucciones gen´ericas,o simplemente, que haya cometido alg´unerror. Por eso es mejor crear primero la Live-CD en un CD-RW y cuando me haya asegurado que el resultado es el esperado, entonces grabar la versi´ondefinitiva en un CD-R.

El software m´asutilizado de grabaci´onde CDs en GNU/Linux es cdrecord. Para grabar CDs con GNU/Linux y cdrecord es necesario modificar las opciones del n´ucleoLinux si, como en mi caso, la grabadora es IDE. El n´ucleodebe tener activada la emulaci´onSCSI de unidades IDE CD-ROM, por lo que tengo que recompilar un nuevo n´ucleopara crear mi sistema Live-CD.

El m´etodo para crear el CD-R final ser´acrear una im´agenISO [25] de todo el sistema. Despu´escon la ayuda de cdrecord grabar´eesta imagen en el CD. Para crear la imagen necesito el software mkisofs, por lo que debo instalarlo en mi sistema. Lo primero que arrancar con mi sistema host y montar la partici´ondonde tengo el sistema source en un directorio, como por ejemplo, en /mnt. Si tengo el sistema en la segunda partici´ondel primer disco duro, la instrucci´onqueda:

fme:/# mount /dev/hda2 /mnt

Despu´escreo la imagen con mkisofs y la grabo al CD:

fme:/# mkisofs -R -l -L -D -b isolinux/isolinux.bin -c \ isolinux/boot.cat -no-emul-boot -boot-load-size 4 \ -boot-info-table -V "META" /mnt | cdrecord -v dev=0,0,0 speed=10

Algunas opciones importantes del comando son, por ejemplo, -l, -L y -D para permitir nombres de ficheros y directorios que no cumplan el est´andarISO9660 [25], y sobre todo -b que indica a mkisofs que se trata de un CD-ROM que cumple con el est´andar El Torito [24] para CD auto-arrancables. -no-emul-boot indica que no se trata de una imagen que debe cargarse directamente sin utilizar emulaci´onde arranque desde disquet. La opci´onm´as importante es -V, que me permite especificar un Volume ID para el CD-ROM, esto es, un nombre identificador para la Live-CD. Este identificador debe coincidir con el identificador que indiqu´eal gui´on /linuxrc dentro del archivo de initrd, ya que es el nombre con el que el gui´onidentifica donde se encuentra ubicado el CD-ROM de la Live-CD.

51 El comando cdrecord no merece tantos comentarios. La opci´on -v ´unicamente se utiliza para que la aplicaci´onmuestre el progreso de la grabaci´onen pantalla. Con dev indico al programa qu´edispositivo SCSI debe utilizar para realizar la grabaci´on,y finalmente le indico la velocidad de grabaci´oncon el par´ametro speed.

Una vez he creado el CD-ROM, Unicamente debo reiniciar el ordenador y configurar mi Basic Input Output System (BIOS) para que arranque desde el CD-ROM. Al reiniciar, si todo ha ido bien, puedo contemplar mi sistema iniciando desde la unidad de CD-ROM.

5.9. Conclusi´on

Este sistema de crear Live-CDs es el m´assencillo y el que ofrece m´ascontrol al desa- rrollador, sin embargo no ofrece las prestaciones que un proyecto como GNU/Linux FME pretende ofrecer.

La distribuci´onGNU/Linux FME pretende llegar a todos los estudiantes y profesores de la Facultad de Matem´aticasy Estad´ıstica.Por este motivo, la distribuci´ondebe estar preparada para ejecutarse en cualquier conjunto de hardware.

En este cap´ıtulohe desarrollado una distribuci´oncon un n´ucleoque contiene controlado- res para mi ordenador, sin tener en cuenta las distintas configuraciones que puedan tener un colectivo tan grande con es una facultad.

Se podr´ıacrear un n´ucleoque cargara todos los controladores disponibles, pero enton- ces tendriamos un n´ucleomuy pesado, que ocupar´ıauna cantidad inmensa de recursos y ofrecer´ıaun rendimiento muy pobre.

La distribuci´onobtenida es ´utilpara crear copias de seguridad “vivas”, y es una ayuda magnifica para entender como funcionan los sistemas de Linux Live-CD [36], ya que todos ofrecen una estructura muy semejante a la distribuci´onque acabo de describir.

52 Cap´ıtulo6

Estructura y funcionamiento de Metadistros

Es hora de estudiar en profundidad c´omofunciona una Live-CD hecha con Metadistros [53]. En este cap´ıtulodescribir´een profundidad cada una de las partes de que se compone una metadistro, c´omofuncionan estas partes, c´omose podr´ıanmejorar, c´omose puede modificar el comportamiento de algunos componentes, etc. . .

Adem´asdar´epistas sobre los posibles problemas con los que un desarrollador de Me- tadistros se puede encontrar, y as´ıfacilitar´eel camino a los osados lectores que quieran probar la creaci´onde su propia metadistro. El cap´ıtuloest´abasada en el documento [70].

6.1. Introducci´on

En el cap´ıtuloanterior he mostrado c´omodesde una distribuci´onest´andarde GNU/Linux se puede crear una Live-CD. El proceso no requiere grandes conocimientos de programa- ci´onni se compone de innumerables componentes software adicionales para conseguir este objetivo, sino que se ha optado por una estructura muy sencilla y f´acilde entender.

Pues bien, tanto Metadistros como el resto de Live-CDs que existen actualmente tienen un esquema muy similar al del anterior cap´ıtulo.Es una estructura muy sencilla y simple, que se puede completar con algunos componentes adicionales pero que siempre se basa en el mismo modelo.

Se trata de conseguir un arranque en dos fases, el primero carga un sistema muy peque˜no en la memoria RAM con instrucciones b´asicaspara configurar el segundo sistema, que ser´ael m´ascompleto y el que m´asse diferencia de unas Live-CDs a otras.

53 En Metadistros han dividido toda la estructura en dos partes fundamentales. De alguna manera estas dos partes se corresponden con cada uno de los dos sistemas que se cargan en memoria cuando se ejecuta la metadistro, y son (casi) independientes entre s´ı.Por un lado est´ael calzador [1], que se encarga de inicializar la ramdisk (ver Secci´on3.1), el n´ucleo y la configuraci´onde los m´odulosy scripts de arranque del n´ucleo(el primer sistema), y por otro lado tengo la distribuci´on.

6.2. Esquema de Metadistros

Como ya hemos dicho antes, una metadistro se divide en dos partes diferenciadas y casi independientes. Voy a ver qu´easpecto tienen estos dos componentes y como interact´uan entre ellos para arrancar la metadistro.

6.2.1. El calzador

El calzador se describe en [1] como sigue:

“El calzador es un conjunto de scripts que se encargan junto con el sistema Isolinux [48] de arrancar el CD, detectar el hardware de la m´aquina,configurarlo, recoger la informaci´on del usuario o de la distro y levantar un sistema live con la Distribuci´on que se le indique, o instalarla”

El calzador es capaz de arrancar un sistema GNU/Linux ordinario desde el CD-ROM. En [1] encontramos las caracter´ısticasdeseadas que deber´ıatener el calzador, entre las cuales destaco las siguientes:

1. Debe ser modular, modificable y configurable 2. Sencillo de cara al usuario (se utilizan scripts con interfaz gr´aficapara interaccionar con el usuario) 3. Debe poder tanto arrancar el sistema como instalarlo (la instalaci´ontodav´ıaes un tema por mejorar) 4. Debe detectar todo el hardware y configurarlo

Para implementar el calzador se utiliza el gestor de arranque ISOLINUX [48].

Los CD-ROM que cumplen con el st´andar El Torito [24] contienen un directorio llama- do /isolinux. Este directorio contiene todos los componentes del calzador. Para empezar describir´etodos los ficheros de Metadistros que son espec´ıficosde Isolinux [5]:

54 isolinux.bin: Es el c´odigoque se ejecuta cuando la BIOS arranca desde el CD- ROM. Contiene instrucciones b´asicaspara iniciar el sistema utilizando los archivos de configuraci´ony brinda al usuario un prompt 1 donde ejecutar comandos.

boot.cat: Contiene informaci´onsobre el sistema de ficheros contenido en el CD- ROM.

isolinux.cfg: Archivo de configuraci´onde Isolinux. Permite entre otras cosas elegir el n´ucleoque se arrancar´apor defecto, configurar el aspecto que muestra Isolinux al arrancar, cambiar el mapa de teclado o establecer un timeout para el arranque del sistema.

greeting: Contiene el mensaje con el que se recibe al usuario al arrancar el sistema con el CD-ROM. Permite cargar im´agenesde extensi´on LSS para mostrarlas al inicio.

logo.16: Imagen en formato LSS de 16 colores.

vmlinuz: N´ucleoLinux [63] de la metadistro.

initrd: Imagen del sistema que se carga en la ramdisk (ver Secci´on3.1).

Los archivos m´asimportantes del calzador son isolinux.bin, el n´ucleo vmlinuz y el fichero initrd.

Dentro del directorio /isolinux existen dos subdirectorios, que son cdroot y conf.

El subdirectorio cdroot

El subdirectorio /isolinux/cdroot contiene las herramientas que utilizar´ael proceso que se encarga de detectar el hardware y configurar el entorno. Se compone de otros cuatro subdirectorios:

En /isolinux/cdroot/hwdata puedo encontrar las librerias que utilizan las rutinas de Kudzu (ver Secci´on3.4) para la detecci´onde hardware.

En /isolinux/cdroot/locale est´anlos directorios y fcheros de configuraci´ondel idioma de la metadistro.

El directorio m´asimportante es /isolinux/cdroot/sbin, que contiene varias aplicacio- nes y scripts que se utilizan durante la ejecuci´onde Metadistros (NOTA: el contenido de este directorio cambia de una versi´ondel calzador a otra, en este apartado se describe la versi´onde GNU/Linux FME):

1Int´erpretede comandos que permite al usuario utilizar la consola para introducir ´ordenesal software

55 busybox es un ejecutable que permite utilizar algunos comandos de Linux con las opciones m´asutilizadas, de forma que en un ´unicoejecutable de espacio reducido obtenemos un completo conjunto de comandos b´asicosde Linux. Se utiliza cuando se carga el sistema initrd para minimizar el tama˜node la ramdisk. cfdisk es un software para formatear discos, con una interfaz gr´aficamuy intuitiva para los usuarios. dialog permite a los scripts construir interfaces gr´aficaspara interactuar con el usua- rio, por ejemplo, para mostrar mensajes en el proceso de carga de Metadistros o para hacer preguntas a los usuarios. eject sirve para expulsar el CD-ROM de la unidad. grub-config.sh es llamado por el script de instalaci´onde Metadistros para confi- gurar el fichero de configuraci´ondel gestor de arranque que se instala junto con la metadistro, GRUB [16]. hacks.sh configura el escritorio de Gnome [13]. En GNU/Linux FME en lugar de Gnome se utiliza KDE [57] por lo que este script no se utiliza. hw-detect.sh es el script que se encarga de detectar el hardware de la m´aquinay de crear los archivos de configuraci´onde estos dispositivos para que el sistema pueda interactuar con ellos. hwsetup es el ejecutable binario que detecta todo el hardware de la PC utilizando las rutinas de Kudzu [28]. Se llama desde el script anterior hw-detect.sh. init.sh es el script que se ejecuta al comenzar el arranque de la distribuci´onLive- CD. Cuando el sistema initrd hace el pivot root (ver Secci´on3.5) a la distribuci´on Live-CD, el proceso init ejecuta el script /etc/init.d/rc.S, que en Metadistros es un enlace simb´olicoa init.sh. install.sh es el script que contiene las instrucciones de instalaci´onde la metadistro al disco duro de la PC. Utiliza variables que deben ser inicializadas antes de su ejecuci´on. Estas variables se encuentran descritas en el fichero /isolinux/conf/var.conf. install-x.sh es el interfaz gr´aficocreado para instalaciones de Metadistros en disco, en entornos X11. Utiliza una aplicaci´oncomo dialog, que se llama xdialog y que genera ventanas en entornos X11 para interaccionar con los usuarios. live.sh es el script que se ejecuta cuando arrancamos la metadistro en modo Live- CD, esto es, siempre ya que no se puede arrancar en modo install a menos que se le pasen par´ametrosal n´ucleodesde Isolinux (ver Secci´on3.2).

56 login.sh en el proceso de instalaci´onnos permite configurar los nombres de usuario y passwords de la metadistro instalada. En GNU/Linux FME la opci´onest´adeshabi- litada para facilitar la instalaci´on.La aplicaci´onde instalaci´oninstala la metadistro con todos los valores por defecto.

ltsp.sh [33] se utiliza para iniciar los servicios de un terminal configurado con Linux Terminal Server Project. Se utiliza en terminales que no tienen disco duro y que deben arrancar desde una tarjeta de red.

make-user.sh es el script encargado de generar las configuraciones de los usuarios del sistema, tanto en modo Live-CD como en instalaciones. Al arrancar Metadistros no tiene creado ning´unusuario creado, para dar opci´ona la persona que arranca la metadistro a entrar su nombre y password. Esta opci´onest´adeshabilitada en GNU/Linux FME para acelerar el proceso de carga y facilitar la tarea a los usuarios.

mawk es un ejecutable binario que se utiliza para manipular ficheros de datos y para procesamiento de textos. B´asicamente se llama desde los scripts de sistema para consultar los ficheros de configuraci´on.

mdetect es una herramienta de detecci´ondel rat´onen Linux. Se utiliza para escribir los ficheros de configuraci´ondel servidor de X.

mkxf86config.sh genera los ficheros de configuraci´ondel servidor de X. Utiliza la informaci´ondel proceso de detecci´onde hardware para configurar los parametros del entorno como por ejemplo la resoluci´onde pantalla, la profundidad en bits, etc. . .

netconfig.sh es un script que interacciona con el usuario para recoger la informaci´on de la red donde est´aubicado el equipo. En GNU/Linux FME la opci´onest´adesha- bilitada para acelerar el proceso de arranque y facilitar la tarea al usuario, aunque se puede activar la opci´onmediante par´ametrosal n´ucleodesde Isolinux [48].

pump es un cliente de Dinamic Host Configuration Protocol (DHCP), protocolo que permite configurar din´amicamente los par´ametrosde red de un equipo sin interven- ci´ondel usuario. Se encarga de interaccionar con el servidor DHCP si se arranca con la opci´on DHCP activada. En GNU/Linux FME est´aactivado el DHCP para que el usuario no tenga que introducir los par´ametrosmanualmente.

x-detect.sh deber´ıacontener instrucciones para detectar par´ametrosdel servidor de X, pero actualmente es un fichero vac´ıoy toda la detecci´onla hace mkxf86config.sh.

Por ´ultimo,el directorio /isolinux/cdroot/templates contiene ficheros de plantillas de ejemplos para desarrolladores. Se utilizan, por ejemplo, para crear accesos directos en el escritorio.

57 El subdirectorio conf

Contiene ficheros de configuraci´on.Dentro de estos ficheros de texto se escriben los par´ametrosque se deben pasar al n´ucleocon que arranca Isolinux.

En Metadistros existen tres ficheros de configuraci´on:

var.conf es el primero en ejecutarse. Contiene los siguientes par´ametros: DISTRO es el nombre de la Metadistro USERNAME es el nombre del usuario que arranca por defecto UPASSWORD es la contrase˜nadel usuario USERNAME RPASSWORD es la contrase˜nade root HOSTNAME es el nombre del host que ejecuta la metadistro LANGUAGE es el c´odigodel idioma INSTALL si es “Y” instala la distro ROOT si es “Y” arranca con el usuario root y no crea ning´unotro usuario EXPERT permite especificar opciones adicionales (a´unno implementado) XCONF se utiliza con monitores y tarjetas gr´aficasantiguas DHCP permite ejecutar el cliente DHCP para configurar la red STARTUSER es el usuario con que arranca la metadistro STARTX arranca Metadistros con el servidor de X QNEW permite desactivar el resto de variable en la instalaci´on.

q.conf permite configurar qu´edatos se van a preguntar al usuario al arrancar la me- tadistro. De esta forma podemos dar opci´onal usuario de configurar la red al iniciar, cambiar el nombre del host, etc. . . Los par´ametrosson los siguientes: QSPLASH permite ense˜naral inicio una ventana con un mensaje personalizado QLANGUAGE pregunta al usuario el idioma que prefiere QPASS pide que el usuario le facilite una password QUSER pide un nombre para el usuario creado al inicio QHOST pregunta al usuario el nombre del host QINSTALL permite elegir entre arrancar en modo Live-CD o instalaci´on QX permite elegir el script de detecci´onde las X (no se utiliza) QEXPERT permite elegir entre el modo convencional o experto (no se utiliza) QNET pregunta al usuario si desea configurar la red

lang.conf contiene los par´ametrosdel n´ucleoque tienen que ver con el idioma. Se establecen en funci´ondel par´ametro LANGUAGE del fichero var.conf. Los par´ame- tros son: LANG permite establecer el idioma y la regi´ondel entorno KEYTABLE es el mapa de teclado utilizado por el sistema

58 XKEYBOARD es el mapa de teclado que utiliza el servidor de X KDEKEYBOARD es el mapa de teclado que utiliza KDE [57] CHARSET es el formato de codificaci´onde texto utilizado por el sistema

Para una visi´onglobal del arranque del calzador de Metadistros el lector puede encontrar un diagrama del proceso en la figura de la p´agina 100.

6.3. La Distribuci´onLive-CD

Seg´un [20], “La distribuci´onno es m´asque aquel sistema Linux que se ha instalado y configurado (de la manera tradicional) pensando en las necesidades de un grupo de usuarios. Esto es, que se habr´aninstalado los programas que estos usuarios necesitar´an, para su trabajo diario.”

La idea de Metadistros es que cualquier sistema GNU/Linux se pueda convertir en Me- tadistros mediante el calzador. En realidad, el calzador ha sido creado teniendo en mente la estructura de Debian [56], por lo que si alguien pretende convertir una distribuci´on diferente a Debian, seguramente deber´arealizar algunas modificaciones en el calzador.

La Distribuci´on se guarda en un archivo comprimido con las herramientas de cloop (ver Secci´on3.3), en el directorio /META del CD-ROM. En Metadistros el fichero se llama META.cloop.

En principio la distribuci´ones independiente del calzador, aunque no es del todo cierto. En el sistema de ficheros de la Distribuci´on deben estar los m´odulosque utiliza el n´ucleo con que arranca Metadistros. La raz´ones que estos m´odulosse cargan cuando ya se ha realizado en cambio del sistema de ficheros initrd [4] al de la Distribuci´on, por lo que el n´ucleobuscar´alos m´odulosen el directorio /etc del sistema de ficheros de la distribuci´on.

Otra caracter´ıstica importante que debe tener la distribuci´ones que no puede tener ning´unusuario creado en el sistema que se llame igual a un usuario que intente arrancar la metadistro. El motivo es que el calzador crea un usuario cada vez que arranca el sistema con el nombre indicado. Si existe ese usuario el script devuelve un error y el sistema aborta el proceso de arranque.

Estas condiciones son uno de los temas principales en los que el equipo de Metadis- tros est´atrabajando, con el fin de conseguir la independencia total entre el calzador y la distribuci´onen versiones posteriores del calzador.

59 6.4. Isolinux: Configuraci´ony funcionamiento

Como he explicado en la Secci´on3.2, Isolinux es un gestor de arranque. Es el primer c´odigoque se ejecuta al iniciar la m´aquina.Se encargar´ade leer un fichero de configuraci´on con instrucciones sobre c´omodebe iniciar la PC.

En la secci´onanterior he explicado los diferentes ficheros que utiliza Isolinux. Todos ellos vienen incluidos en el calzador de Metadistros, y pr´acticamente no hay que modificarlos salvo contadas ocasiones. El fichero m´asimportante es /isolinux/isolinux.cfg, que contiene las instrucciones para arrancar el sistema. Para mostrar c´omofunciona voy a mostrar el fichero de configuraci´onde GNU/Linux FME:

DEFAULT vmlinuz APPEND ramdisk_size=100000 init=/sbin/init noapic apm=power-off hda=scsi hdb=scsi hdc=scsi hdd=scsi hde=scsi hdf=scsi hdg=scsi hdh=scsi vga=normal splash=silent initrd=initrd quiet TIMEOUT 50 PROMPT 1 DISPLAY greeting F1 greeting

LABEL linux KERNEL vmlinuz APPEND ramdisk_size=100000 init=/sbin/init noapic apm=power-off hda=scsi hdb=scsi hdc=scsi hdd=scsi hde=scsi hdf=scsi hdg=scsi hdh=scsi vga=normal splash=silent initrd=initrd quiet

LABEL splash KERNEL vmlinuz APPEND ramdisk_size=100000 init=/sbin/init noapic apm=power-off hda=scsi hdb=scsi hdc=scsi hdd=scsi hde=scsi hdf=scsi hdg=scsi hdh=scsi vga=771 splash=silent initrd=initrd quiet

El primer bloque comienza con un DEFAULT, que indica que es la configuraci´onpor defecto. Si no se modifica el arranque mediante el prompt la imagen que se iniciar´aser´aesta. Todo lo que le sigue a la opci´on APPEND son par´ametrosque se le pasan al n´ucleode Linux.

La opci´on TIMEOUT me permite establecer el tiempo que Isolinux espera una inter- venci´ondel usuario (un evento de teclado) antes de arrancar la imagen que tiene como DEFAULT. El tiempo se expresa en decisegundos, por lo que como vemos en el ejemplo, el prompt de Metadistros espera 5 segundos antes de arrancar la imagen vmlinuz.

60 La opci´on PROMPT permite mostrar directamente el prompt de Isolinux en el inicio. Si la opci´onest´adeshabilitada el usuario puede activarla con las teclas [Shift] o [Alt].

La opci´on DISPLAY me permite especificar un fichero para mostrar un mensaje por pantalla en el inicio de Isolinux. En este mensaje podemos incorporar una imagen en formato LSS. En el siguiente cap´ıtuloveremos c´omo.

La opci´on F1 permite programar la tecla [F1] del teclado para mostrar un mensaje personalizado cuando el usuario pulsa esta tecla. En este caso se muestra el mismo mensaje que al iniciar la aplicaci´on. Isolinux permite programar de la misma manera las teclas [F2] y [F3].

El resto del archivo son dos configuraciones adicionales para el mismo n´ucleo vmlinuz, variando los par´ametrosdel n´ucleo.Para activar alguna de estas configuraciones deberiamos teclear en el prompt el nombre que aparece a la derecha de la opci´on LABEL.

El resto de ficheros que utiliza Isolinux no se utilizan directamente por el programa de arranque. En fichero boot.cat es un archivo de “cat´alogode ficheros de arranque”. Se genera al ejecutar la instrucci´on mkisofs (ver p´ag.51) para crear la imagen del CD-ROM, y contiene informaci´onsobre el sistema de ficheros contenido en el CD-ROM. El fichero initrd (ver Secci´on3.6) contiene el sistema de ficheros que se carga en ramdisk [10].

6.5. Detecci´onde hardware: Kudzu

Kudzu [28] [70] es un paquete de software desarrollado por Red Hat (ver Secci´on2.1.4) para la detecci´ony configuraci´onde hardware. Se compone de una serie de librer´ıasacom- pa˜nadasde varios ejecutables. Esta herramienta es usada a la vez por otras herramientas de Linux para detectar hardware, como por ejemplo Anaconda o HwBrowser.

Seg´unsus creadores, Kudzu puede detectar los siguientes dispositivos:

tarjetas PCI

tarjetas SBUS

Dispositivos Serie (dispositivos PnP, ratones, modems)

Dispositivos de puerto paralelo (impresoras)

dispositivos SCSI

dispositivos IDE (DVD-ROMs, ZIPs)

ratones PS/2

61 teclados en plataformas SPARC

6.5.1. Archivos de Kudzu

Kudzu est´arepartido en varios ficheros, para facilitar su uso e interoperabilidad:

kudzu es el ejecutable de detecci´onde hardware. Lee los buses de la m´aquinay compara los datos que ha leido con las bases de datos apropiadas. updfstab se encarga de actualizar el fichero de montaje /etc/fstab [31] con las particiones detectadas por kudzu. module upgrade actualiza las entradas obsoletas del fichero modules.conf. kudzu-dev es un paquete de cabeceras y librer´ıas para programar software que necesite utilizar las rutinas y librer´ıasde Kudzu. kudzu-vesa es un conjunto de cuatro ejecutables: • dccprobe prueba configuraciones del monitor • dccxinfo comprueba la informaci´ondel monitor • modetest y svgamodes identifican el modo del monitor hwdata es la base de datos que utiliza Kudzu para guardar la configuraci´ondel equipo y comprobar los cambios en nuevos arranques.

6.5.2. Funcionamiento

Kudzu act´uaen tiempo de arranque. Se llama desde el proceso init para que detecte y configure todo el hardware de la PC en la que se ejecuta. Es el encargado de a˜nadirlos dispositivos virtuales del directorio /dev.

Empieza detectando todo el hardware conectado a los buses de la PC, y seguidamente los compara con el fichero /etc/sysconfig/hwconf, si existe. Se trata de una base de datos de dispositivos instalados por Kudzu. De esta manera es capaz de averiguar si ha sido a˜nadido alg´undispositivo desde la ´ultimavez que se ejecut´ola aplicaci´on.Si es as´ı permite al usuario a˜nadiry configurar el nuevo hardware encontrado. De la misma manera se encarga de eliminar aquellos dispositivos que han sido configurados en alg´unmomento y que ya no existen en el equipo.

Si el fichero /etc/sysconfig/hwconf no existe, crea uno analizando el hardware encontrado con los ficheros /etc/modutils/kudzu, /etc/sysconfig/network-scripts/* y /etc/X11/XF86Config.

62 6.6. El arranque de Linux

En esta secci´onvoy a describir el proceso de arranque del sistema operativo Linux, desde que la PC se enciende hasta que el sistema se carga. Explicar´eel proceso muy por encima, ya que una descripci´onminuciosa de todo el proceso ser´ıamotivo para un libro entero. Si el lector desea profundizar m´assobre el proceso o cualquiera de sus etapas puede consultar [69].

6.6.1. Arranque est´andardel n´ucleoLinux

Cuando presionamos el bot´onde encendido del ordenador esto es lo que sucede:

1. La fuente de alimentaci´oninicia el generador de reloj del procesador, inicializa la tabla de vectores de interrupci´on,llama a la funci´onde la BIOS para que compruebe el primer dispositivo de arranque v´alido,y carga el primer sector de este dispositivo en memoria.

2. El sector de arranque puede ser tanto el c´odigode un cargador de arranque como ISOLINUX [5], LILO [30], GRUB [16] o Loadlin [34], o tambi´enel sector de arranque que se genera al compilar un n´ucleode Linux (el fichero /usr/src/linux/arch/i386/boot/bootsect.S).

3. El sector de arranque carga la configuraci´on,las rutinas de descompresi´ony la imagen del n´ucleocomprimida. Si la carga falla se entra en un bucle de infinitos reintentos.

4. Se inicializa la pila y se llama a la rutina decompress kernel() que descomprime el n´ucleoen modo protegido y salta a la primera instrucci´ondel mismo.

5. Inicializa los valores de varios segmentos del procesador, inicializa la tabla de p´aginas, habilita el paginamiento, copia los par´ametrosdel n´ucleoen memoria y comprueba los tipos de las CPUs del equipo.

6. La primera CPU llama a start kernel() y se inicializan el resto de CPUs. La rutina start kernel() es la primera escrita en C. Entre otras cosas, realiza configuraciones espec´ıficasde la arquitectura, inicializa TRAPS, IRQs, el planificador de la CPU, inicializa la consola y la carga de m´odulos,habilita las interrupciones, inicializa el sistema de ficheros proc y establece el l´ımitede procesos e hilos del sistema, crea an- tememorias para VFS, VM, memoria intermedia, quoteFS, y finalmente crea el hilo que ejecuta el par´ametrode n´ucleo“init=”, o en su defecto, /sbin/init, /etc/init, /bin/init o /bin/sh. Si fallan todos se produce una situaci´onde kernel panic. Final- mente el proceso se va a un bucle infinito con PID=0.

63 6.6.2. Arranque de Metadistros

En el caso de Metadistros arrancamos desde CD-ROM. El primer sector del CD-ROM se copia a memoria. Se ejecuta el cargador de arranque Isolinux, que copia el n´ucleoy el contenido del dispositivo /dev/initrd en memoria. Cuando el n´ucleocomienza su ejecuci´on, descomprime y copia el contenido de /dev/initrd en el dispositivo /dev/ram0 y libera la memoria utilizada por /dev/initrd.

El n´ucleomonta como sistema de ficheros ra´ız /dev/ram0 y ejecuta el fichero /linuxrc, que detecta y configura el arranque desde el CD-ROM de Metadistros y finalmente cambia al sistema de ficheros ra´ızdefinitivo, ubicado en un dispositivo ramdisk [19], pasando, ahora s´ı,a la ejecuci´ondel proceso init.

Para ver el proceso en detalle el lector puede consultar el diagrama que se encuentra en la p´agina102.

6.7. El proceso INIT

Una vez que el script /linuxrc acaba su ejecuci´on,el n´ucleopasa a ejecutar el proceso init. Lo primero que hace es mirar el fichero /etc/inittab y buscar la l´ıneaque contiene la cadena sysinit. Esta cadena contiene el nombre del script que se ejecuta en primer lugar. En metadistros este fichero es /etc/init.d/rcS, y se trata de un enlace simb´olicoque apunta al script /cdrom/isolinux/cdroot/sbin/init.sh. De esta forma el primer script que se ejecuta despu´esde linuxrc es init.sh.

Al comenzar la ejecuci´onde init.sh se comprueban y se exportan las variables contenidas en los ficheros de configuraci´onde Isolinux (ver Secci´on6.2.1) /cdrom/isolinux/conf/q.conf, /cdrom/isolinux/conf/var.conf, /cdrom/isolinux/conf/lang.conf.

Posteriormente se comprueba que ninguna de estas variables se haya modificado mediante el prompt de Isolinux.

Despu´esel script mira el contenido de la variable KEYTABLE, contenida en el fichero /cdrom/isolinux/conf/lang.conf para configurar debidamente la tabla del teclado.

Seguidamente establece la variable PATH, que contendr´alos directorios donde tendr´aque buscar los binarios para ejecutar los comandos que le indicar´ala shell [32]. En metadis- tros la variable PATH incluye las rutas est´andarde los sistemas GNU/Linux adem´asdel directorio que contiene los scripts de Isolinux. La l´ıneaqueda as´ı:

PATH="/cdrom/isolinux/cdroot/sbin:/bin:/usr/bin:/sbin:/usr/sbin"

64 El siguiente paso es lanzar un nuevo hilo de ejecuci´onpara el script que se encarga de detectar el hardware de la m´aquina:

hw-detect.sh > /tmp/hw.log 2>&1 &

El resultado de la detecci´ondel hardware se guarda en un fichero de texto /tmp/hw.log para que el usuario pueda consultarlo en busca de posibles errores una vez arrancado el sistema. El s´ımbolo & significa que el proceso se ejecuta en segundo plano mientras contin´ua la ejecuci´ondel script que hace la llamada.

El script contin´uaprocesando las variables de configuraci´onde Metadistros. Si es ne- cesario, interact´uacon el usuario mediante la interfaz de xdialog (ver p´agina6.2.1) para preguntar opciones tales como el lenguaje que prefiere en el sistema, su nombre de usuario o el nombre de la m´aquinaen la red. Si la variable QNET est´aactivada se ejecuta el script netconfig.sh que permite al usuario configurar los par´ametrosde la red manualmente. Tam- bi´enlanza el script mkxf86config.sh para detectar la configuraci´on´optimapara el servidor de X.

Posteriormente se crean los usuarios del sistema, que ser´anprincipalmente dos, el usuario root y el indicado en la variable USERNAME. make-user.sh, que es el script que se utiliza a la hora de crear estos usuarios, a su vez llama a las aplicaciones de sistema useradd y adduser.

Despu´esse establece el nombre de equipo indicado en la variable HOSTNAME escri- biendo el fichero /etc/hosts.

A continuaci´oninicia el servicio Common UNIX Printing System (CUPS), que es el sistema que se encarga de la impresi´onen Metadistros.

Finalmente se comprueba si est´aactivada la variable STARTX. En caso afirmativo se modifica la variable PATH para incluir los directorios donde est´anlos ejecutables del servidor de X, y se ejecuta el comando xinit con los par´ametrosadecuados, para iniciar la sesi´onde X. Si STARTX no est´aactivada se inicia una sesi´onen la consola.

El lector encontrar´adetallados diagramas tanto de init.sh como de hwdetect.sh en el Ap´endiceB.

6.8. Conclusi´on

Pese a que el proyecto Metadistros no fue concebido para crear Live-CDs exclusivamente, es una de las car´acter´ısticasm´asinteresantes y explotadas del proyecto. Se trata de un

65 sistema muy sencillo de implementar y de configurar. Permite tanto al desarrollador como al usuario una gran flexibilidad a la hora de trabajar con este tipo de distribuciones.

Por ejemplo, el desarrollador puede trabajar en las caracter´ısticasdel arranque de la Live-CD sin temer que la distribuci´onsufra alguna incompatibilidad debida a cambios de configuraci´onen el calzador, ya que estos dos componentes son (casi) independientes.

Por otra parte, al usuario final le permite ejecutar la Live-CD en m´ultiplesequipos con cierto control sobre la ejecuci´on.Por ejemplo, permite modificar el camino est´andardel inicio del sistema pasando los par´ametroscorrectos al n´ucleo,o configurando el entorno mediante interfaces gr´aficasa la hora de instalar en disco la distribuci´on.

Actualmente, los desarrolladores del proyecto Metadistros est´antrabajando en un nuevo calzador, completamente independiente de la distribuci´on(sea cual sea) y escrito ´ıntegra- mente en lenguaje python, un lenguaje de script muy potente. Se espera dar soporte al n´ucleoLinux 2.6 e incorporar una nueva interfaz gr´aficam´asintuitiva y vistosa.

66 Cap´ıtulo7

Un ejemplo: GNU/Linux FME

Despu´esde saber c´omofunciona Metadistros voy a explicar c´omose hizo este proyecto. Empezar´epor el entorno de trabajo y la elecci´ondel software, para continuar con la parte t´ecnicadescribiendo paso a paso todo el proceso de creaci´onde GNU/Linux FME desde cero.

7.1. Dise˜nodel entorno de trabajo

Como ya he indicado anteriormente, he utilizado las herramientas del proyecto Meta- distros para desarrollar la parte de autoarranque del sistema desde el CD-ROM y de instalaci´onen disco. Las razones por las cuales he seleccionado esta opci´onfrente a las dem´asalternativas Live-CD son las siguientes:

1. Es (casi) independiente la parte de configuraci´ondel sistema de la parte de la dis- tribuc´on.Este hecho permite hacer cualquier cambio en alguna de las partes sin preocuparse por consecuencias en la parte no implicada.

2. Los dem´assistemas no aceptan incorporar una distribuci´onestable como base

3. El proyecto est´amuy bien documentado (bueno para m´ıcomo desarrollador y para los usuarios)

4. Es un proyecto muy activo y en continuo desarrollo

Para garantizar la estabilidad y eficiencia del sistema sin sacrificar usabilidad he utilizado Debian Woody [56] como la distribuci´onbase de la Live-CD. Los paquetes de software que

67 contiene esta distribuci´onhan sido probados durante un largo tiempo por los desarrollado- res y han corregido los errores de programaci´onque han encontrado. Debian incorpora la herramienta APT [71], que permite que el software del sistema se actualice con gran faci- lidad. APT tambi´enpermitir´ıaen un futuro montar repositorios de paquetes en servidores de la facultad para que los usuarios pudieran actualizar su software r´apiday eficazmente.

Debemos tener en cuenta que los usuarios est´anacostumbrados a utilizar exclusivamente Microsoft°R Windows°R ya que hasta este ´ultimocuatrimestre no se ha habilitado la imagen de GNU/Linux en las aulas. Por este motivo creo imprescindible instalar en la distribuci´on un entorno de escritorio que facilite el acceso a los programas instalados, los ficheros, dispositivos, etc. . .

He incorporado el entorno de escritorio KDE [57]. Tambi´enpodr´ıa haber instalado Gnome [13], pero creo que KDE es m´asf´acilde utilizar, sobre todo para usuarios que nunca han tenido contacto con GNU/Linux (es una opini´onpersonal), como es nuestro caso.

El men´ude KDE es una excelente herramienta para dise˜narun sistema de men´uspropio de GNU/Linux FME para que los usuarios tengan acceso al software espec´ıfico de su titulaci´oninstalado en la distribuci´on.De esta manera puedo ofrecer a los usuarios un espacio de trabajo ordenado y centralizado para maximizar el rendimiento de la distribuci´on como herramienta de trabajo.

La distribuci´onrecibe al usuario con una aplicaci´onweb que explica que es GNU/Linux y como puede un usuario aprovechar todas sus caracter´ısticas.La web tambi´enaparece cuan- do se introduce el CD-ROM en una unidad lectora con Microsoft°R Windows°R . Contiene una secci´onde ayuda muy ´utilpara los usuarios noveles de GNU/Linux para procesos como por ejemplo la instalaci´onde nuevo software o la instalaci´onen disco de la distribuci´on.

Una vez he dise˜nadolo que va a ser la distribuci´ones momento de estudiar los requeri- mientos que tiene una Metadistro, es decir ¿Qu´enecesito para crear una distribuci´oncon Metadistros? Para ello consulto [20]. Para crear una distribuci´onbasada en Metadistros se necesita:

1. Un sistema linux anfitri´on(host, ver p´agina41) ya instalado y configurado con las herramientas de desarrollo habituales (editor, compilador, software de grabaci´onde CDs, etc. . . )

2. Espacio libre en el disco duro, unos 2 Gb para la distribuci´on(fuente) y otros 2 Gb para las im´agenestemporales que se crean hasta grabar el CD-ROM

3. mkisofs (ver p´agina51) para crear las im´agenesde la distribuci´ony del CD-ROM

4. Un espacio de memoria RAM amplio o, en su defecto, un area de Swap extensa, de 1 a 2 Gb en total

68 5. El conjunto de herramientas cloop (ver Secci´on3.3) para permitir que la distribuci´on quepa en el CD-ROM

6. El software del calzador [1] de Metadistros y los m´odulosdel n´ucleocompilados

Todo parece bastante sencillo de conseguir. Adem´aspor supuesto se necesita un ordenador donde ejecutar todas estas herramientas. El equipo que he utilizado durante el proyecto para la realizaci´onde GNU/Linux FME tiene las siguientes caracter´ısticas:

AMD Athlon 800 Mhz

Memoria RAM de 256 Mb a 133 Mhz

Dos discos duros, uno de 20 Gb (hda) y otro de 80 Gb (hdd)

Grabadora CD-RW

Conexi´onADSL 256/128

Es conveniente utilizar un equipo m´aspotente que el descrito aqu´ı, ya que el proceso de generaci´onde la imagen comprimida de la distribuci´onrequiere un gran c´omputoy consumo de CPU y RAM. Con mi equipo las ´ultimasim´agenes(con todo el software instalado) tardaban cerca de 30 minutos en generarse. Tambi´enes aconsejable tener una grabadora de gran velocidad, para crear las copias con m´asrapidez.

Antes de comenzar a instalar el software adquir´ıel disco duro de 80 Gb y particion´emis discos de esta forma (s´olomuestro las particiones necesarias para el proyecto):

1o DISCO (hda)

hda6 7 Gb Linux ext2 Sistema Debian host hda7 200 Mb Linux SWAP Area de memoria SWAP

2o DISCO (hdd)

hdd1 5 Gb Linux ext2 Partici´onde las im´agenes ISO hdd2 2 Gb Linux ext2 Distribuci´on source hdd3 1,5 Gb Linux SWAP Area de memoria SWAP hdd7 3 Gb FAT 32 Partici´ontemporal de desarrollo

69 7.2. Instalaci´onde Debian Woody

Para instalar Debian [72] [21] necesito una partici´oncon suficiente espacio de disco, en mi caso no deber´ıasobrepasar los 2 Gb ya que sino no cabr´ıadespu´esen el CD (como vimos con cloop en la p´agina 22 la capacidad m´aximade la distribuci´ondebe estar entre 1,8 Gb y 2 Gb).

Debian Woody puede adquirirse al completo en 7 CDs. Como no voy a instalar todo el software sino que instalar´es´ololos programas indicados a mis necesidades, no es necesario adquirir los 7 CDs. Como poseo una l´ınea ADSL, lo que har´eser´adescargar el primer CD, para instalar el sistema base y cuando est´einstalado descargar´elos programas que necesite de cualquier servidor de paquetes de Internet mediante APT [71].

Una vez he descargado la imagen ISO [25] del primer CD la copio en un CD-R. Reinicio mi PC y configuro mi BIOS para arrancar desde la unidad de CD-ROM1. Al salvar los cambios y volver a reiniciar me aparece la pantalla de bienvenida del instalador:

‘‘Welcome to Debian GNU/Linux 3.0!’’

Presiono [Return] para continuar la instalaci´on,y el programa de instalaci´oncomienza a cargar. La primera opci´onque aparece debemos escoger el idioma. En mi caso escojo la opci´on“espa˜nol”y presiono de nuevo la tecla [Return] para aceptar la opci´on.Me aparece una pantalla con informaci´onsobre la versi´on,acepto pulsando nuevamente [Return] para acceder al men´uprincipal de instalaci´on.

Para no saltarme ning´unpaso seguir´eel orden l´ogicode configuraci´onque me brinda el instalador, aunque si lo deseo me da la posibilidad de volver atr´aspara cambiar alguna opci´on.El primer paso es el de configurar el teclado. Con las flechas me sit´uoencima de la distribuci´onde mi teclado, que es Querty/ES, y acepto con [Return].

El siguiente paso es la partici´ondel disco duro. Como ya tengo mis discos particionados saltar´eeste paso. El lector intr´epidoencontrar´aabundante informaci´onsobre el proceso de particionado de discos en la aplicaci´onweb que acompa˜naa la distribuci´oncreada en este proyecto.

Contin´uola instalaci´onactivando mis dos particiones SWAP con la opci´on Dar formato y activar una partici´onde intercambio. Con las flechas y la tecla [Return] selecciono mis dos particiones de intercambio, hda6 y hdd3. Antes de formatear la partici´onel programa me da la opci´onde buscar bloques de disco defectuosos. Yo selecciono No ya que lleva mucho tiempo y tengo la certeza de que mi disco se encuentra en buenas condiciones.

1la configuraci´onde la BIOS para este prop´ositoest´adetalladamente explicada en la aplicaci´onweb que acompa˜naa la distribuci´oncreada en este proyecto

70 Seguidamente debo identificar mi partici´onra´ız,selecciono la opci´on Iniciar una par- tici´onde Linux. De la lista de particiones escojo hdd2. Me da la opci´onnuevamente de buscar bloques defectosos a lo que respondo negativamente. Tras formatear la partici´onla aplicaci´onpregunta el punto de montaje de la partici´on.Como es la partici´onra´ızse lo indico de la siguiente manera:

Selecciona el Punto de Montaje: /

El siguiente paso es la configuraci´onde dispositivos adicionales. Como s´eque el programa de instalaci´onno detecta mi tarjeta de red entro en la opci´ondel men´u Configurar M´odulos de Controladores de Dispositivos. Mi tarjeta de red utiliza el controlador tulip, as´ıque selecciono el controlador adecuado de la lista y salgo de nuevo al men´ude instalaci´on.

Ahora es tiempo de configurar mi red. Selecciono la opci´on Configurar la red. En pri- mer lugar introduzco el nombre de mi m´aquinaen la red (hostname). Debian permite la configuraci´onautom´aticasi el proveedor de Internet lo permite, mediante Dinamic Host Configuration Protocol (DHCP). En mi caso la configuro manualmente, as´ıque elijo no e introduzco mis datos de conexi´on:Direcci´onIP, m´ascarade red, puerta de enlace, dominio y servidores DNS. Todos estos datos me los da mi proveedor de Internet.

Despu´esde configurar la red voy a indico que quiero instalar la base del sistema opera- tivo Debian, unos 70 Mb. Selecciono la opci´on Instalar el sistema base. La aplicaci´onme pregunta desde qu´emedio se instalar´anlos programas, selecciono cdrom, y me aparece una pantalla que me pide que inserte el CD-ROM de instalaci´onde Debian. Como ya lo tengo dentro de la unidad presiono [Return]. Me pide la ubicaci´onde los ficheros en el CD-ROM de instalaci´on,dejo la opci´onpor defecto /instmnt y acepto de nuevo.

El siguiente paso es la configuraci´ondel gestor de arranque LILO [30]. En mi caso no necesito instalar ning´ungestor de arranque ya que mi BIOS no permite arrancar sistemas instalados en el segundo disco directamente, por lo que necesitar´ecrear un disquet de arranque, precisamente el siguiente paso de la instalaci´on.

Selecciono la opci´on Crear un disquet de arranque, inserto un disquet en la disquetera y pulso [Return]. Tras unos segundos se crea el disquet de arranque y vuelvo al men´uprincipal de la instalaci´on.

Ahora es necesario reiniciar el sistema, as´ıque elijo la opci´on Reiniciar el sistema y saco el CD-ROM de la unidad y dejo el disquet en la disquetera para que arranque con el sistema reci´encreado.

71 Tras reiniciar, reviso mi BIOS para que arranque el sistema desde el disquet. El siste- ma tarda un poco en cargar pero tras unos segundos puedo ver la primera pantalla de configuraci´onde Debian, que me permite configurar la informaci´onhoraria. Le indico que el sistema debe consultar la hora local del hardware y no la hora Greenwich Mean Time (GMT ), que es la hora que se toma de referencia en todo el mundo, y selecciono la zona horaria correcta de Espa˜na.

La siguiente pantalla me da la opci´onde utilizar contrase˜nas MD5. Es un sistema que permite almacenar las contrase˜nasencriptadas con m´asseguridad que la funci´ontradi- cional crypt, adem´asde permitir longitudes de m´asde 8 caracteres, as´ı que acepto la propuesta. Tambi´enaceptar´ela propuesta de usar Shadow Passwords, que permite alma- cenar informaci´onadicional adem´asde la contrase˜naencriptada en un archivo diferente a /etc/passwd.

Introduzco la contrase˜nadel usuario root por duplicado, y creo un nuevo usuario que es el que iniciar´asesi´onen el sistema una vez arranque. El usuario creado es “fme”. En GNU/Linux FME las contrase˜nascoinciden con los nombres de usuario, queda como opci´on para la persona que quiera instalarla en su disco el cambiarla para garantizar la seguridad del equipo.

Despu´esde introducir los datos de los usuarios del sistema, el asistente de instalaci´on me pregunta si deseo instalar el software Personal Computer Memory Card International Association (PCMCIA), el est´andarpara fabricar tarjetas de dispositivos para ordenadores port´atiles.Como estoy en una PC de sobremesa le indico que no deseo que lo instale. Igualmente le indico que no deseo configurar Point-to-Point Protocol (PPP), que es el protocolo utilizado para establecer conexiones punto a punto entre dos nodos, como por ejemplo un modem que se conecta a trav´esde la l´ıneatelef´onicacon un proveedor. Como me conecto a trav´esde un router ADSL, no necesitar´eeste protocolo.

La siguiente opci´onde configuraci´ones la de APT [71]. Escojo el m´etodo http frente al ftp ya que es m´asr´apido.Me pregunta si deseo tener acceso al software Non-US, que es el software no disponible en EEUU debido a su pol´ıtica de prohibici´onde material criptogr´afico.Acepto la proposici´on,y las dos siguientes tambi´en, Non-Free, que seg´un Debian no es software libre, pero es gratis, y contrib, que es software libre pero que depende de software Non-Free.

La lista de servidores con repositorios de paquetes Debian me muestra los servidores desde donde me puedo descargar el software que quiera instalar en mi sistema. Elijo la ubicaci´onm´ascercana y pulso [Return]. Tambi´enacepto la proposici´onde actualizaciones de seguridad.

En el siguiente paso me preguntan qu´epaquetes deseo incorporar al sistema base. Elijo utilizar la aplicaci´on tasksel para seleccionar los paquetes que necesito para mi sistema.

72 Marco los siguientes paquetes para que se me instalen en el sistema:

sistema X Window aplicaciones cient´ıficas C y C++ Tcl/Tk entorno Tex/LaTeX

Esto es todo lo que necesito de momento, m´asadelante a˜nadir´eel software que precise mediante APT. Despu´esde este paso APT instala todos los paquetes que le he indicado y cuando termina me pregunta si deseo eliminar los ficheros .deb descargados, le digo que S´ı debe eliminarlos y el proceso de instalaci´onde software termina.

En ´ultimot´erminoel instalador nos pregunta por la configuraci´onde alg´unsoftware, como por ejemplo Exim y la configuraci´ondel servidor X. No entrar´een detalle en esta configuraci´onya que depende mucho del equipo de cada uno, y en el caso de una Metadistro no es relevante ya que la configuraci´onla har´aautom´aticamente el proceso de detecci´on de hardware del calzador. Si alguien quiere profundizar m´assobre la instalaci´onde Debian puede leer [72] y [21].

Una vez termino de configurar todo el software, me encuentro delante de la pantalla de login. Introduzco mi nombre de usuario (fme) y contrase˜na(fme), y ya estoy dentro del sistema.

7.3. El entorno de escritorio

En este momento me encuentro en un entorno de consola. Puedo hacer muchas cosas desde la shell [32] pero es m´asc´omodo utilizar un entorno X, esto es, el entorno GUI de Unix/Linux. Tengo instalado el entorno X ya que lo marqu´een la lista de tasks que deb´ıa instalar Tasksel (ver Secci´onanterior). A´unas´ıes dif´ıciltrabajar con comodidad.

Podr´ıainstalar un gestor de ventanas. Se trata de un software que controla la apariencia y el comportamiento de las ventanas y gr´aficosgenerados por el servidor X. Genera una interfaz mucho m´asagradable y intuitiva que la del servidor X, pero a´unsigue siendo un entorno muy limitado.

Es mucho mejor instalar un entorno de escritorio, que no es m´asque un gestor de ventanas acompa˜nadode software adicional que ofrece un entorno gr´aficomuy potente y ´util.En GNU/Linux FME instalo KDE [57], que viene con un gestor de ventanas propio llamado KDE Window Manager o KWM.

73 Figura 7.1: Escritorio de GNU/Linux FME

Para instalar KDE utilizo APT de la siguiente forma (se necesita ser root):

fme:/# apt-get install kde

Es todo lo que necesito para instalar el entorno, ¿f´acilverdad?. Tras aproximadamente media hora se ha descargado, configurado e instalado en mi distribuci´on.Despu´esde la instalaci´onse ejecuta la aplicaci´on debconf que me pregunta si deseo que KWM sea mi gestor de ventanas por defecto en las sesiones X, a lo que respondo con S´ı. La pr´oximavez que inicie mi sistema la ventana de login de KWM me recibir´aesperando que ingrese mi nombre de usuario y contrase˜na.

Una vez dentro puedo comprobar lo acogedor que es el entorno KDE. Si miro el men´upue- do comprobar como el entorno est´adotado con un gran conjunto de herramientas propias, un software de configuraci´onde sistema y hasta un entorno de oficina. Veremos durante esta gu´ıade Metadistros c´omosacarle partido a este entorno.

7.4. Contenido de la distribuci´on

Tengo el sistema base instalado y el entorno de escritorio, ya es un entorno productivo pero pretendo crear un sistema espec´ıficopara matem´aticosy estad´ısticosas´ıque debo proveer a la distribuci´onde m´asherramientas de desarrollo.

Lo primero que hago es estudiar el entorno de trabajo de las aulas inform´aticasde la facultad. A trav´esdel laboratorio de c´alculode la FME consigo un listado del software instalado en la imagen de Microsoft°R Windows°R que se cargan en las aulas:

74 Software Estad´ıstico Software Matem´atico ITSM 7.0 Student Maple 8 Minitab 13 Mathematica 2.2 for DOS Premium Solver for Excel Mathematica 2.2 for Windows R 1.5.1 Matlab 6.1 + Statistics Toolbox Seats Tramo for DOS OmegaAthens Seats Tramo Windows Pari-GP Spad 4.5 SPlus 2000 SPSS 11 SAS 8 WinASTSA Witness 9 Educational

Mirando [29] puedo obtener una idea de los programas que pueden ser equivalentes en Linux al software instalado de las aulas. Existen en algunos casos programas que tienen versiones en ambos sistemas operativos, aunque algunos, como por ejemplo el caso de Maple o Minitab no son software libre. En esta distribuc´ons´olohay sitio para el software libre, ya que la idea es que los usuarios que adquieran una copia de GNU/Linux FME no deban pagar por ninguna licencia.

La siguiente lista es la del software instalado en la distribuci´onGNU/Linux FME que podemos consultar tanto en la web como en el men´ude KDE. Como se puede ver, hay muchos m´asprogramas de los que cab´ıaesperar y algunos de ellos son equivalentes al 100 % con el software propietario instalado en las aulas, esto es, las pr´acticasque actualmente se hacen en la titulaci´onse podr´ıanrealizar sin ninguna modificaci´oncon el software libre instalado en GNU/Linux FME. Tamb´ıen se observa que hay aplicaciones repetidas en ambos listados. Significa que la aplicaci´onpuede ser ´utiltanto para los estad´ısticoscomo para los matem´aticos(no que la aplicaci´onha sido instalado dos veces). Entre [corchetes] las aplicaciones a las que son equivalentes:

Software Estad´ıstico Software Matem´atico GNUPlot Euler [Matlab] KCalc GAP Macanova KCalc OpenStat [SPSS] Mathomatic PSPP [SPSS] Mupad [Mathematica] [Maple] R [R] Octave [Matlab] Scilab Rlab [Matlab] Stat Scilab [Matlab] XCalc Xcalc

75 Software Estad´ıstico Software Matem´atico Calc Xmaxima [Mathematica] [Maple] Kchart Yacas [Matlab] Kformula Yorick [Matlab] Kspread [Excel] Calc Math Kformula Kspread Pari-GP [Pari-GP] Math

Aunque realmente algun software no sea 100 % equivalente no significa que no sea ´util para la titulaci´on,s´olosignifica que el formato de las pr´acticasdeber´ıacambiar levemente para ser usado por el nuevo software. El conjunto de aplicaciones que est´ainstalado en GNU/Linux FME tiene el mismo potencial de c´alculoque las aplicaciones de las aulas, y cuenta con la ventaja de que es de c´odigoabierto, por lo tanto los alumnos y profe- sores podr´ıandisfrutar del c´odigofuente y de las librer´ıasde estas aplicaciones e incluso mejorarlo.

Adem´asdel software matem´aticoel sistema necesita m´asherramientas para que sea del todo productivo. Es conveniente dotar de aplicaciones de edici´onde textos, correo electr´oni- co, mensajer´ıainstant´anea,entornos de programaci´on,etc. . . La lista de equivalentes del software de prop´ositogeneral es:

Software de Prop´ositoGeneral Internet Explorer/Netscape Communicator Konqueror/Mozilla Outlook/Netscape Messenger Evolution/Mozilla Messenger/KMail CuteFTP/WSFTP Konqueror ICQ/MSN Messenger AMSN Vdialer Kppp WinZip Ark Notepad/WordPad Kedit/GVIM MS Word Abiword/OpenOffice Writter Adobe PageMaker/MS Publisher Scribus Acrobat Reader XPDF Outlook Organizer KOrganizer CD Player/Winamp XMMS Adobe PhotoShop GIMP CorelDraw OpenOffice Draw MS Office OpenOffice/KOffice Visual Studio .NET KDevelop DBCase (Diagramas) Dia

76 En la siguiente figura el lector puede ver algunas de estas aplicaciones en ejecuci´onen el sistema operativo GNU/Linux FME. Adem´asde todas estas aplicaciones la distribuci´on cuenta con software propio de GNU/Linux y Debian como por ejemplo el potente editor de textos E-macs o el gestor de paquetes de software Synaptic.

Figura 7.2: Varias aplicaciones ejecutandose en GNU/Linux FME

La gran mayor´ıade software, sobre todo el de prop´ositogeneral, est´adisponible como paquetes Debian Woody y su instalaci´ones muy sencilla. Por ejemplo, para instalar el editor de textos Abiword, ´unicamente debemos utilizar la herramienta APT [71] de la siguiente forma:

fme:/# apt-get install abiword

Pero no todo el software est´adisponible para la versi´onestable de Debian. Muchos pa- quetes pertenecen a la distribuci´on testing o incluso inestable, esto no quiere decir que el software no funcione correctamente, sino que algunos errores de programaci´onhan tenido que solucionarse desde su creaci´ono simplemente es un software muy reciente y todav´ıa no exist´ıaantes de la liberaci´onde la versi´on estable de Debian. Muchos de los programas espec´ıficosde las titulaciones de Matem´aticasy Estad´ısticacumplen con este perfil, por lo que es necesario instalar software que no es del todo estable en GNU/Linux FME si quiero tener una distribuci´oncompleta y ´util.

Para instalar este software con APT necesito modificar el fichero /etc/apt/sources.list e incorporar en este archivo la ubicaci´onde los paquetes no estables en cualquiera de los servidores de paquetes Debian ofifiales. En [56] puedo encontrar una amplia lista de servidores as´ıcomo la instrucci´onque debo incorporar al fichero /etc/apt/sources.list. Tras actualizar el fichero de fuentes debo actualizar la lista de paquetes disponibles en el sistema y a continuaci´onya podr´ıainstalar cualquiera de estos paquetes:

77 fme:/# apt-get update fme:/# apt-get install pari-gp

En las listas de software equivalente encuentro adem´asprogramas que no se encuentran entre los paquetes disponibles para Debian. En este caso no es posible utilizar la herramien- ta APT para instalarlos. Lo que obtengo en estos casos es el c´odigofuente del programa comprimido en un fichero [68]. Tras descomprimir es necesario compilar este c´odigofuente en el sistema, mediante los scripts que incorporan estos ficheros para la instalaci´ony la he- rramienta make. Por ejemplo, para instalar la aplicaci´onde computaci´onde ´algebra Yacas, fue necesario descargar del web el c´odigofuente y ejecutar las siguientes instrucciones:

fme:/# tar -xvzf yacas-1.0.56.tar.gz fme:/# cd yacas-1.0.56 fme:/# .configure fme:/# make fme:/# make install

Lo primero que hago es descomprimir el fichero comprimido. Me posiciono en el directorio creado por tar y ejecuto el script .configure que comprueba que el sistema tenga instaladas el software y las librer´ıasnecesarias para que la ejecuci´ondel programa instalado tenga ´exito.En caso de no cumplir los requisitos el script avisa al usuario del error. Despu´es ejecuto la instrucci´on make que utiliza el fichero de configuraci´on Makefile para compilar el c´odigofuente de la aplicaci´ony generar los ficheros binarios. Una vez generados ejecuto make install para instalar los binarios en el directorio adecuado (normalmente /usr/bin), cambiar o crear variables de entorno, etc. . .

7.5. La documentaci´ondel software de GNU/Linux FME

GNU/Linux FME se ha creado para que sea una herramienta de productividad. Es necesario que los usuarios tengan todas las herramientas a mano para que el sistema sea ´util.Adem´asde las herramientas el usuario necesita un medio donde consultar c´omoutilizar estas herramientas de un modo adecuado.

En GNU/Linux FME he incorporado toda clase de manuales, tutoriales, gu´ıas,etc. . . sobre el software instalado. Hay que tener en cuenta que la documentaci´onnecesita un software adecuado para ser consultada. La distribuci´onya contiene software de este tipo:

78 Xpdf para visualizar los manuales y libros en formato Portable Document Format

Konqueror y Mozilla para abrir los manuales y gu´ıasen formato de web

Abiword y OpenOffice Writer para abrir los documentos en formato Microsoft°R Word°R

GVIM y KWrite para visualizar las ayudas en formato de texto plano

7.6. Contenido de las titulaciones

Cuando el usuario quiere, por ejemplo, realizar una pr´acticade una asignatura en las aulas de la facultad, normalmente accede a los PCs de las aulas, descarga la documentaci´on de la pr´acticay la imprime, y finalmente sigue los pasos descritos con el software adecuado. En GNU/Linux FME tambi´endebe estar disponible la documentaci´onde las asignaturas en la distribuci´on,ya que la idea del proyecto es que los usuarios puedan desarrollar su trabajo sin m´asherramienta que un PC y GNU/Linux FME. Adem´asdebemos tener en cuenta que no todos los alumnos tienen una conexi´ona Internet en casa para descargar la documentaci´onde las asignaturas.

Un dise˜noideal ser´ıaincorporar esta documentaci´onal sistema por medio de paquetes Debian. La idea ser´ıaque los profesores al iniciar el curso acad´emicogeneraran los paquetes .deb para ser incorporados a la distribuci´on.De esta manera ser´ıatambi´enposible actualizar la documentaci´onde las asignaturas durante el curso, ya que se pueden generar varias versiones de los paquetes. As´ılos alumnos podr´ıanutilizar las herramientas de APT para actualizar la documentaci´onde las asignaturas que sufrieran modificaciones durante el curso. Adem´aseste modo de empaquetar el contenido de las asignaturas permitir´ıaa los usuarios que tuvieran una distribuci´ondiferente a GNU/Linux FME pero compatible con el sofware APT instalar los paquetes en sus sistemas.

En GNU/Linux FME han sido instaladas 3 asignaturas como ejemplo. He decidido ins- talar el contenido de estas asignaturas en el directorio /usr/local/share/fme. Existe un subdirectorio para cada una de las titulaciones de la facultad, y dentro de estos subdirec- torios existe un subdirectorio para cada asignatura. Esta ubicaci´ondeber´ıaser la tomada por todos los creadores de paquetes para GNU/Linux FME, con el fin de tener la docu- mentaci´onagrupada y ordenada dentro del sistema operativo.

Como ya he apuntado en secciones anteriores, los profesores de Matem´atcasy Estad´ıstica no tienen porqu´eser grandes conocedores de GNU/Linux y mucho menos de Debian, por lo que resultar´ıadif´ıcilque pudieran generar paquetes Debian sin alguna ayuda. Existe una aplicaci´onde GNU/Linux que es capaz de generar paquetes Debian de distintos tipos de fuentes. Esta aplicaci´onse llama Alien y ha sido instalada en GNU/Linux FME.

79 Para facilitar la tarea de los profesores a la hora de crear estos paquetes he creado un script muy sencillo que facilita en gran medida la tarea de crear paquetes de esta forma:

#!/bin/sh

cd $2

echo "Empaquetando..." tar -zcvf $1.tar.gz * > /dev/null

echo "Construyendo el paquete..." alien -k $1.tar.gz

echo "borramos temporales y renombramos paquete..." rm $1.tar.gz > /dev/null mv $1_1-1_all.deb $1.deb

echo "¡¡¡ HECHO !!!"

El funcionamiento es muy simple. En un directorio cualquiera, llamemosle sources, se copia todo lo que debe ir en el paquete. Debemos crear la estructura de directorios para ubicar los ficheros en el directorio de destino que queramos, por ejemplo, si quiero guardar un fichero manual.ps en el directorio /usr/local/share/fme debemos crear esta estructura: ./sources/usr/local/share/fme. De esta forma es muy f´acilhacer cosas como crear accesos directos en el men´ude KDE (/usr/share/applnk/* ).

El script comienza posicionando la shell en el directorio de trabajo, pasado como primer par´ametrodel script. Seguidamente comprime mediante gzip/zlib [68] todos los directorios que encuentra en el directorio activo, o sea todos los directorios que se instalar´anen el sistema donde se instale el paquete. Seguidamente se ejecuta la aplicaci´on alien que se encarga de procesar el fichero comprimido y genera el paquete Debian con el nombre que le hemos pasado como segundo par´ametroal script. Finalmente borramos el fichero comprimido y renombramos el paquete creado al nombre original, ya que alien concatena informaci´onde la versi´onen el nombre del paquete sin que se lo ordenen.

7.7. El sistema de men´us

La interfaz de GNU/Linux FME debe servir para que tanto la documentaci´oncomo el software de la distribuci´onest´edisponible con facilidad para el usuario. El sistema de men´us de KDE es una excelente herramienta para dise˜naruna interfaz donde est´edisponible todo lo necesario para desarrollar los trabajos.

80 Existe una herramienta para crear entradas en el men´ude KDE de una forma f´acily r´apida, KMenu, pero no la utilizar´e.El motivo es que necesito un sistema para incorporar las entradas al men´ude forma autom´aticacuando se instala, por ejemplo, un paquete Debian de una asignatura.

Estudiando el sistema de men´usde KDE puedo dise˜narf´acilmente un m´etodo pa- ra conseguir este fin. Los elementos del men´ude KDE se encuentran en el directorio /usr/share/applnk (elementos comunes a todos los usuarios) y en /home/$USER/.kde/share/applnk. Cualquier subdirectorio que se encuentre se convierte autom´aticamente en una secci´onnueva en el men´u,la cual puede contener a su vez m´as secciones o accesos directos a cualquier archivo del sistema de ficheros.

Los accesos directos son representados en el directorio applnk por ficheros .desktop. Se trata de ficheros de texto plano que describen con sintaxis similar al lenguaje eXtensible Markup Language (XML) la informaci´ondel acceso directo. En los subdirectorios adem´as se encuentran ficheros .directory con id´entica estructura que contienen la informaci´onde la secci´ondel men´u.Este es el aspecto del contenido de un fichero .desktop:

[Desktop Entry] Type=Application Name=XMupad Coment=Mupad Mathematic Software Exec=/usr/local/bin/mupad/share/bin/xmupad Icon=/usr/share/icons/hicolor/32x32/apps/kcalc.png Path= Terminal=0

Como se puede comprobar la sintaxis es muy f´acilde comprender, se trata de asignar valores a determidadas variables. Con Type indicamos el tipo de acceso directo (un eje cutable, un directorio, etc. . . ). Name es el nombre que aparece en KDE, por ejemplo en el men´uo en el escritorio, seg´unla ubicaci´ondel fichero. El texto contenido en Comment es el que aparece al situarte encima del acceso directo en KDE. Exec contiene la ruta hacia el fichero al que se refiere el acceso directo. Icon contiene la ruta hasta una imagen que hace de icono para todas las referencias en KDE del acceso directo. Finalmente podemos indicar si la aplicaci´onse ejecutar´aen una consola o como una aplicaci´ongr´aficaseg´unel valor de la variable Terminal.

La estructura de secciones del men´uest´adise˜nadapara que sea lo m´asf´acilposible para los usuarios encontrar todas las herramientas que necesiten en el momento de ponerse a trabajar. Todo el contenido est´aagrupado por titulaci´ony el tipo de contenido.

81 A continuaci´onpresento un listado del aspecto de alguno de los directorios que pertenecen al men´ude GNU/Linux FME:

Directorio /home/fme/.kde/share/applnk/FME/Estad´ıstica/Software: GNUPlot.desktop KCalc.desktop Macanova.desktop OpenStat.desktop PSPP.desktop R.desktop Scilab.desktop Stat.desktop XCalc.desktop calc.desktop kchart.desktop kformula.desktop kspread.desktop math.desktop

Directorio /home/fme/.kde/share/applnk/FME/Matem´aticas/Documentaci´onSoft: Euler Mathomatic Mupad Octave XMaxima Yacas

El primer directorio contiene los accesos directos a los programaas espec´ıficos para las titulaciones de Estad´ıstica.Cada fichero .desktop genera una entrada en el men´ude KDE que el usuario puede utilizar para arrancar el programa indicado en el fichero .desktop. El segundo directorio contiene varios directorios. Cada uno de ellos contiene ficheros .desktop que se convierten en accesos directos en el men´ua la documentaci´ondel software indicado en el nombre del subdirectorio.

El lector observar´aque las entradas de men´uen GNU/Linux FME han sido creadas en el entorno del usuario fme. Es una decisi´onde dise˜nosin mucha relevancia, el motivo es que el usuario debe acostumbrarse a trabajar en un entorno de usuario y no como super- usuario (root). El usuario fme se crea precisamente para definir un entorno de trabajo para el usuario. El uso de root s´olodebe existir para tareas de mantenimiento de sistema, como por ejemplo instalaci´onde nuevos paquetes o cambios en el sistema de ficheros, por esto se prescinde del men´ude usuario en el entorno de root. El usuario que quiera instalar la distribuci´onpuede estar tranquilo si desea cambiar el nombre del usuario fme en el

82 momento de la instalaci´onya que el instalador contempla el cambio de nombre e instalar´ıa el entorno correcto en la imagen instalada en disco.

7.8. La pantalla de bienvenida

Es posible configurar el software del calzador Isolinux [5] para que antes de arrancar la Live-CD nos muestre una pantalla de bienvenida. Isolinux permite incluir una imagen como presentaci´on,y en GNU/Linux he dise˜nadouna imagen personalizada para ofrecer un comienzo m´asespectacular de la Live-CD.

La imagen debe cumplir unas especificaciones determinadas para que se muestre correc- tamente. La imagen debe ser como m´aximode 640 por 480 p´ıxelesde tama˜noy 16 colores. Isolinux viene con una herramienta para generar este tipo de im´agenes.Se trata de ppm- tolss16, un script escrito en Perl , un lenguaje de programaci´onde scripts para GNU/Linux muy potente, que genera la imagen .lss partiendo de una imagen en formato Portable Pix- Map File Format (PPM ), formato de imagen con una estructura muy simple de interpretar.

Para el dise˜noy la edici´onde la imagen de presentaci´onhe utilizado el sofwtare GIMP [12], capaz de crear imagenes en formato PPM. Sin embargo, las im´agenesgeneradas por GIMP deben tratarse con otro software de tratamiento de imagenes para cumplir los requisitos que Isolinux especifica. Despu´esde varias pruebas, llego a la conclusi´onque el mejor resultado lo obtengo guardando la imagen en formato Portable Network Graphics (PNG), formato de imagen comprimida con una m´ınimap´erdidade calidad. Posteriormente esta imagen se trata con Imagemagic, un conjunto de herramientas de consola para tratar ficheros de im´agenes.

Para generar la imagen final e instalarla en el calzador de Metadistros lo mejor es crear un script como el siguiente:

#!/bin/bash

ISOLINUXDIR=/mnt/cd/master/isolinux PNG=./png/screen.png PPM=./ppm/screen.ppm LSS=./lss/screen.lss convert -depth 8 -colors 16 ${PNG} ${PPM} ./ppmtolss16 < ${PPM} > ${LSS} cp ${LSS} ${ISOLINUXDIR}

83 Se trata de un script siguiendo la sintaxis de bash [32]. Lo primero que hago es crear tres variables, una para definir el directorio donde tengo el calzador, otra para indicar la ubicaci´onde la imagen PPM que ya tengo generada con GIMP y la ´ultimapara indicar la ubicaci´onde la imagen LSS generada. Mi script simplemente llama al script que viene con Isolinux pasandole la imagen PPM por la entrada est´andary recogiendo la imagen LSS generada por la salida est´andaren el fichero indicado en la variable $LSS. Finalmente copio la imagen generada en el calzador.

Para que esta imagen se muestre cuando la Live-CD de GNU/Linux FME inicie su ejecuci´on,adem´asdebo editar el fichero isolinux.msg que es el fichero que consulta Isolinux para mostrar el mensaje de bienvenida. Este es el contenido de este fichero en GNU/Linux FME:

^O17^L^Xscreen.lss

La instrucci´on O17 indica a Isolinux que debe establecer el color de fondo a un azul oscuro (1), y de color de fuente el gris claro (7). La instrucci´on L borra la pantalla y establece las configuraciones indicadas en la instrucci´onanterior, y finalmente Xscreen.lss le indica la imagen que debe cargar.

7.9. Web de ayuda

Acompa˜nandoal proyecto se ofrece una web de apoyo que contiene informaci´onsobre todo el proyecto. El prop´ositode esta web es el de ofrecer al usuario una ayuda de lo que es el proyecto GNU/Linux FME, lo que contiene, de las posibilidades que ofrece al usuario y de c´omopuede utilizarse. La web est´aprogramada en lenguaje HyperText Markup Language (HTML), combin´andolocon la tecnolog´ıa Cascading Style Sheet (CSS), tecnolog´ıapara aplicar estilos a p´aginasWeb, y agregando algunas funciones de JavaScript, que es un lenguaje de script para el Web basado en Java.

La web aparece autom´aticamente cada vez que se inicia el escritorio de KDE en GNU/Linux FME. Para lograr este efecto utilizo un acceso directo .desktop del mismo estilo que los utilizados para las entradas del men´u(ver Secci´on7.7). Todo lo que tengo que hacer es mover el acceso directo al directorio /home/$USER/.kde/Autostart/ para que KDE lo ejecute al iniciar sesi´onel usuario $USER. En mi caso muevo web.desktop al directorio /home/fme/.kde/Autostart.

En cuanto al contenido de la web, la p´aginade inicio contiene una breve descripci´onde lo que es GNU/Linux FME y para quien va dirigida la distribuci´on.En esta p´aginahay un link para que el usuario acceda al men´ude la aplicaci´onweb. El contenido del men´upuede apreciarse en la siguiente figura:

84 Figura 7.3: El men´ude la Web del proyecto

Las distintas secciones de la web son:

1. Introducci´on contiene una descripci´ondel proyecto: su contenido, sus aplicaciones, c´omofunciona, etc. . . 2. Software instalado es una lista de todo el software instalado en la distribuci´on agrupado por su aplicaci´on. 3. Capturas de pantalla es una selecci´onde capturas del escritorio de GNU/Linux FME en diferentes situaciones para mostrar las posibilidades de las herramientas de la distribuci´on. 4. Ayuda de la distribuci´on,contiene enlaces a las p´aginasde ayuda del proyecto: a) Arranque desde el CD-ROM explica al usuario c´omoconfigurar la BIOS para que arranque desde el CD-ROM. b) Instalaci´ondel nuevo software indica las instrucciones b´asicaspara utilizar la herramienta APT [71] de instalaci´onde software Debian. c) Instalaci´onen el disco duro explica al usuario los pasos a seguir para instalar GNU/Linux FME en el disco duro. Contiene a su vez tres enlaces a p´aginasde ayuda seg´unla situaci´onen la que se encuentre el usuario: 1) Instalaci´onde GNU/Linux FME en una PC como ´unicosistema 2) Instalaci´onde GNU/Linux FME en una PC con Windows instalado 3) Instalaci´onde GNU/Linux FME en una PC junto con Windows d) Creaci´onde paquetes Debian es una ayuda para los profesores de la facultad a la hora de construir los paquetes de documentaci´onde las asignaturas. 5. Links es una lista de enlaces a p´aginasweb de Internet relacionadas de alguna forma con GNU/Linux FME

85 Esta web se encuentra f´ısicamente fuera del sistema de ficheros de la distribuci´on(re- cordemos que la distribuci´onse encuentra comprimida en el fichero /META/meta.cloop). Cuando se inicia la distribuci´onel escritorio de KDE busca la web para cargarla en el directorio /usr/local/share/fme/web, que no es m´asque un enlace simb´olicoal directorio /cdrom/web.

La raz´onde por qu´ehe separado de la distribuci´onla web del proyecto es la siguiente. En la ra´ızdel CD-ROM puedo encontrar tres ficheros:

autorun.inf browsercall.exe fmelinux.png

El cometido de estos tres ficheros es el siguiente. En un entorno Microsoft°R Windows°R , al introducir el CD-ROM de GNU/Linux FME en la unidad el sistema operativo busca un fichero llamado autorun.inf, que contiene informaci´ondel contenido del CD-ROM. Entre otras cosas busca un icono por defecto para mostrar en el Explorador de Windows y si existe alguna aplicaci´ondentro del CD-ROM que se deber´ıaejecutar. Este es el contenido del fichero autorun.inf de GNU/Linux FME.

[autorun] icon=fmelinux.gif label=GNULinuxFME open=browsercall.exe web/index.htm

La sintaxis es muy clara. El icono que debe mostrar para el CD-ROM es la imagen fmeli- nux.gif, que es el icono de GNU/Linux FME. El nombre del CD-ROM que debe mostrar lo toma del par´ametro label. El par´ametro open indica al sistema la aplicaci´onque debe ejecutar desde el CD-ROM cada vez que este se introduzca en la unidad. Cada vez que se introduce el CD-ROM el sistema ejecuta la aplicaci´on browsercall.exe, que recibe como par´ametrola ubicaci´onde la p´aginaprincipal de la web de GNU/Linux FME. El fichero browsercall.exe se trata de un ejecutable que invoca al navegador por defecto para que cargue la p´aginaweb indicada como par´ametro.

Como consecuencia, cada vez que el CD-ROM de GNU/Linux FME se introduce en una unidad de CD-ROM bajo un sistema operativo Microsoft°R Windows°R , se inicia un navegador con la web de GNU/Linux FME.

Est´aclaro que para lograr esta caracter´ısticanecesito tener la web copiada fuera del sistema de ficheros de la distribuci´on.Creando un enlace simb´olicoen /usr/local/share/fme hacia la ubicaci´onen el CD-ROM, no es necesario duplicar la web en el sistema de ficheros del CD-ROM y en el de la distribuci´on.Cuando GNU/Linux FME se instala en el disco duro, se elimina el enlace al CD-ROM y se copia el contenido del directorio /cdrom/web a /usr/local/share/fme/web para que pueda ser consultada sin necesidad del CD-ROM.

86 7.10. Configuraci´ondel calzador

Los scripts del calzador vienen configurados por los desarrolladores de Metadistros. Su funcionamiento est´aprobado y pr´acticamente sin hacer cambios la distribuci´onse inicia correctamente. Pero en GNU/Linux FME es necesario hacer algunos cambios para acabar de personalizar del todo la Live-CD.

7.10.1. Scripts de inicio

Todos los scripts de inicio del calzador estan ubicados en /isolinux/cdroot/sbin/. Estos scripts var´ıansu funcionamiento en funci´ondel valor de las variables de los ficheros de configuraci´onde Isolinux [5].

Los valores por defecto de todas estas variables provocan que la Live-CD pregunte una serie de datos al usuario en el momento del inicio, como por ejemplo el nombre de usuario, el password de usuario, el password de root, el nombre de la m´aquina,etc. . .

No es muy conveniente que el usuario tenga que entretenerse en introducir todos estos datos cada vez que inicie GNU/Linux FME, lo mejor es que establezca valores por defecto para estos par´ametrosy que el usuario los cambie si lo estima preciso. Como ya expliqu´e, todos estos valores por defecto son f´acilesde modificar mediante la consola de Isolinux (ver Secci´on3.2). Las variables quedan configuradas de la siguiente manera:

Fichero var.conf Fichero q.conf DISTRO=GNULinuxFME QSPLASH=N USERNAME=fme QLANGUAGE=N UPASSWORD=fme QPASS=N RPASSWORD=root QUSER=N HOSTNAME=fmelinux QHOST=N LANGUAGE=es QINSTALL=N INSTALL=N QX=N ROOT=N QEXPERT=N EXPERT=N QNET=N XCONF=Y DHCP=Y STARTUSER=fme STARTX=Y QNEW=N

87 El significado de cada una de las variables est´aexplicado en la secci´on6.2.1. Lo que hago es definir valores para usernames, passwords, hostnames, etc. . . por defecto y evitar mediante las variables $Q* que la aplicaci´onpregunte al usuario. De esta manera se llega hasta el escritorio de KDE del sistema sin ninguna intervenci´onrequerida por parte del usuario.

7.10.2. La instalaci´onde GNU/Linux FME

En el escritorio se encuentra un acceso directo a la aplicaci´onque instala GNU/Linux FME en el disco duro de la PC donde se est´eejecutando. Se trata tan s´olode un acceso directo al script del calzador /isolinux/cdroot/sbin/install-x.sh. Se trata de un script que utiliza la aplicaci´on x-dialog, una aplicaci´onque genera una interf´ıcie gr´aficaX11 para interaccionar con el usuario, para permitir al usuario introducir algunos par´ametrosde instalaci´on.Se ha modificado el script original para evitar al m´aximola intervenci´ondel usuario estableciendo par´ametrospor defecto como los utilizados en la secci´onanterior.

Este shellscript [32] primero consulta la tabla de particiones de los discos duros instalados en el equipo. Si no encuentra ninguna partici´onde Linux ejecuta el gestor de particiones cfdisk para permitir al usuario crear la partici´onnecesaria para instalar GNU/Linux FME. Cuando cfdisk finaliza su ejecuci´on,se vuelven a buscar particiones Linux, y cuando se encuentran se listan en un men´uejecuta el script /isolinux/cdroot/sbin/install.sh, que instala la Metadistro en el disco duro.

Tras la instalaci´onde la distribuci´onen el disco se ejecuta el script grub-config.sh, que busca los sistemas operativos instalados en los discos del ordenador (incluido GNU/Linux FME) y los incluye a su archivo de configuraci´onpara ejecutar el instalador de GRUB [16], y finaliza el proceso de instalaci´on.De esta forma al reiniciar el ordenador y tras extraer el CD-ROM de GNU/Linux FME, la BIOS arrancar´a GRUB, el cual mostrar´auna lista de todos los sistemas operativos disponibles en el equipo para permitir al usuario elegir el que prefiera.

Finalmente se elimina el enlace simb´olico /usr/local/share/fme/web de la distribuci´on instalada (ver p´agina86), copia el contenido de la web desde el CD-ROM hasta el directorio /usr/local/share/fme/web, y elimina el acceso directo al programa de instalaci´onen la distribuci´oninstalada (/home/fme/Desktop/install.desktop), que carece de utilidad en la distribuci´onya instalada.

88 7.11. Ultimos´ pasos

Ya tengo la distribuci´onlista instalada en mi partici´on sources (ver Secci´on7.2), el calzador instalado y configurado (ver Secci´onanterior) y mi sistema GNU/Linux host con las herramientas necesarias para crear la Metadistro (ver Secci´on7.2).

Es momento de generar el CD-ROM de GNU/Linux FME. Para ello inicio el ordenador con mi sistema host, que est´aequipado con todo el software necesario para crear una Me- tadistro. Lo primero que debo hacer es utilizar las herramientas de cloop (ver Secci´on3.3) para generar la imagen de la distribuci´oncomprimida. Pero antes de generar la imagen comprimida necesito la distribuci´onen un fichero como imagen ISO [25]. Todo este pro- cedimiento est´abien explicado en el documento [20]. Como indican en el documento, ya que este proceso se repetir´acada vez que se genere una nueva versi´onde la Live-CD, lo mejor es escribir un script que lo haga todo autom´aticamente:

#!/bin/bash

SOURCES=/mnt/sources MASTER=/mnt/cd/master ISODIR=/mnt/cd/iso

META=GNULinuxUPC

LFSISO=meta.iso CDISO=final.iso cp -R $SOURCES/home/fme/.* $SOURCES/etc/skel/ cp -R $SOURCES/home/fme/* $SOURCES/etc/skel/ cp ./passwd.sin $SOURCES/etc/passwd rm -R $SOURCES/tmp/* rm -R $SOURCES/var/tmp/* rm -R $SOURCES/var/log/* rm $SOURCES/var/cache/apt/archives/* rm -R $SOURCES/var/spool/* mkisofs -R -L -allow-multidot -l -V "${META}" \ -o $ISODIR/$LFSISO -hide-rr-moved -v $SOURCES cp ./passwd.con $SOURCES/etc/passwd rm -R $SOURCES/etc/skel/* rm -R $SOURCES/etc/skel/.*

89 /usr/src/modules/cloop/create_compressed_fs $ISODIR/$LFSISO \ 65536 > $MASTER/META/META.cloop

mkisofs -l -r -J -V "${META}" -hide-rr-moved -v -b isolinux/isolinux.bin \ -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table \ -o $ISODIR/$CDISO $MASTER

Comienzo definiendo algunas variables para referirme a los distintos directorios donde trabajar´aeste script: $SOURCES contiene el directorio donde est´amontada la partici´on donde he instalado la distribuci´on source, es decir la distribuci´onde GNU/Linux FME. $MASTER es el directorio donde se guarda el calzador y todo el contenido del CD-ROM final excepto la distribuci´on source. $ISODIR es el directorio donde se guardan las im´agenes ISO generadas para crear la Metadistro.

La variable $META contiene el nombre de la Metadistro y es m´asimportante de lo que parece. Este nombre se utiliza de identificador para encontrar la unidad de CD-ROM donde se ha introducido GNU/Linux FME (ver Secci´on6.2.1), y debe coincidir con el valor de la variable $DISTRO del fichero /isolinux/conf/var.conf del calzador.

Los ficheros que el script genera son $LFSISO, que es la imagen ISO del sistema de ficheros a comprimir (Linux File System ISO, esto es, del sistema de ficheros del sistema sources. La imagen final que se grabar´aal CD-ROM ser´a $CDISO.

El script comienza copiando la configuraci´ondel usuario est´andardel sistema fme al directorio /etc/skel. De esta forma cualquier usuario que se crea en el sistema comienza con el entorno creado para el usuario fme. Se copia una version del fichero de usuarios del sistema que no contiene el usuario fme. Recuerdo al lector que los usuarios se crean en Metadistros en tiempo de carga del sistema, y si el usuario existe en este fichero el proceso init detiene el arranque y apaga la PC.

Tras realizar estas copias, el script limpia de informaci´onno necesaria la distribuci´on source. Los ficheros temporales de /tmp, /var/tmp, los mensajes del sistema /var/log, los paquetes descargados temporalmente por APT [71] y los trabajos de impresi´onpendientes de /var/spool se eliminan del sistema de ficheros a comprimir.

Comienza el quid de la creaci´onde la Metadistro. La instrucci´on mkisofs genera la primera imagen, la del sistema de ficheros source sin comprimir. La opci´on -R habilita informaci´on adicional de los ficheros en el CD-ROM. La opci´on -L y -allow-multidot permite los puntos . en los nombres de ficheros de la distribuci´on,salt´andoseas´ıla compatibilidad con nombres MS-DOS. La opci´on -l permite los nombres de fichero de hasta 31 caracteres. La opci´on -V como ya hemos indicado anteriormente especifica el Volume ID del CD-ROM, un nombre ´unicopara el CD-ROM creado. Tras -o se indica el fichero con la imagen ISO que se pretende generar. La opci´on -hide-rr-moved cambia los ficheros de informaci´onadicional

90 generados por la opci´on -R y los mantiene ocultos en el CD-ROM. La opci´on -v (verbose) permite que la aplicaci´on mkisofs muestre informaci´ondel proceso de creaci´onde la imagen por pantalla mientras se crea. Finalmente le paso como par´ametroel directorio donde est´amontado el sistema que debe convertir en imagen ISO.

Tras crear la primera imagen restauramos el contenido del fichero /etc/passwd original con la copia guardada y borramos el contenido de /etc/skel que hemos copiado antes desde /home/fme en el sistema de ficheros sources.

Con la herramienta /usr/src/modules/cloop/create compressed fs creamos el fichero com- primido con cloop de la imagen reci´encreada. Le pasamos como par´ametroel nombre del fichero que contiene la imagen ISO, y como segundo par´ametrole pasamos el tama˜node los bloques en bytes del sistema comprimido. Este n´umerodebe ser m´ultiplode 512. La salida est´andarla re-dirijo hacia el fichero comprimido que estar´aen directorio /META del sistema de ficheros del CD-ROM. El nombre de este fichero debe coincidir con el nombre de fichero especificado en el script /linuxrc que esta dentro del sistema de ficheros initrd (ver Secci´on3.6) que arranca la Metadistro.

El script termina creando la imagen ISO final del CD-ROM de GNU/Linux FME nueva- mente con mkisofs. Introduzco las opciones -r para aumentar la informaci´onde los ficheros que se crea en CD-ROM, -J para permitir algunas opciones adicionales en el sistema de ficheros (est´andar Joliet), -b para indicar que el CD-ROM ser´agrabado con el est´andar El-Torito [24] y le indico la imagen de arranque que debe ejecutar al arrancar desde este CD-ROM que vamos a crear. Con la opci´on -c indico el fichero del cat´alogode arranque de Isolinux [5]. La opci´on -no-emul-boot indica que no se trata de una imagen que debe cargarse directamente sin utilizar emulaci´onde arranque desde disquet, mientras que con boot-load-size le indico el tama˜noen sectores virtuales (512 bytes) de la imagen de arran- que. La opci´on -boot-info-table incorpora una peque˜natabla de 56 bytes en la imagen de arranque. Finalmente le indico donde debe dejar el fichero con la imagen generada con la opci´on -o.

Una vez ejecutado este script tengo la imagen generada pero no el CD-ROM de GNU/Linux FME. Para conseguir grabar esta imagen en un CD-R o CD-RW edito otro shellscript:

#!/bin/bash

ISODIR=/mnt/cd/iso

CDISO=final.iso cdrecord -v dev=0,0 blank=fast cdrecord -v speed=10 dev=0,0 $ISODIR/$CDISO

91 Comienzo declarando las variables $ISODIR y $CDISO exactamente como en el script anterior. Para crear los CD-ROMs utilizo la herramienta cd-record, un referente en GNU/Linux en lo que a software de grabaci´onse refiere. Para utilizar este software es necesario tener la opci´onde emulaci´on SCSI activada en el n´ucleode Linux (m´asinformaci´onen la sec- ci´on5.8).

La primera instrucci´onborra el contenido del CD-RW con la opci´on“borrado r´apido”, que tarda del orden de 4 veces menos de lo que podr´ıa tardar el m´etodo de “borrado est´andar”.La opci´on -v (verbose) me proporciona informaci´onsobre el progreso de la gra- baci´onmientras se graba. La opci´on dev identifica mi grabadora entre todos los dispositivos conectados al bus SCSI.

Por ´ultimoutilizo de nuevo cdrecord para grabar la imagen ISO de la Metadistro. Como par´ametroadicional, le indico a cdrecord que mi grabadora es capaz de grabar CD-RWs a una velocidad de hasta 10x. Si no se especifica velocidad cdrecord grabar´aa la m´axima velocidad permitida por la grabadora.

Despu´esde finalizar la grabaci´ones conveniente liberar espacio en el sistema ejecutando un script como el siguiente. Las im´agenesgeneradas por los scripts no tienen ninguna utilidad ahora, ya que ¡¡Ya tengo el CD-ROM de GNU/Linux FME creado!! y puedo hacer tantas copias como desee.

#!/bin/bash

ISODIR=/mnt/cd/iso

LFSISO=meta.iso CDISO=final.iso

rm $ISODIR/$LFSISO rm $ISODIR/$CDISO

7.12. Conclusi´on:Futuro de GNU/Linux FME

Esta distribuci´onla he creado siempre con el pensamiento de estar realizando un trabajo que servir´aa alguien en el futuro. Estoy convencido que este Live-CD ofrece muchas posi- bilidades a las personas de la Facultad de Matem´aticasy Estad´ıstica,tanto a los alumnos como a los profesores, y el modelo de distribuci´onpuede utilizarse como base para realizar otras Live-CDs.

92 Todo el software ha sido probado a conciencia para crear un entorno de desarrollo ope- rativo y productivo que a la vez ofrece estabilidad y seguridad. Con GNU/Linux FME es posible desde el primer minuto de ejecuci´ontrabajar con cualquier herramienta incluida en la distribuci´on.

Cada vez m´as,el mundo del software libre se est´aabriendo camino entre el mundillo universitario. Las directivas de casi todas las instituciones han mostrado un serio inter´es en utilizar software libre en las instituciones p´ublicas,como son las universidades, viendo el gran n´umerode ventajas y posibilidades que ofrece este tipo de software.

GNU/Linux FME por s´ısola es ya una herramienta valios´ısima,pero lo mejor de todo es que ofrece un potencial realmente increible para un futuro nada lejano. Se conoce que cada vez m´asgente se interesa por GNU/Linux y eso se traduce en que cada vez m´asgente trabaja con software libre. Este hecho aumenta la evoluci´ondel software, las versiones de los programas son cada vez m´asperi´odicasy continuamente aumentan las prestaciones y la fiabilidad de las aplicaciones. Por eso no cuesta mucho imaginar qu´epodr´ıasuponer comen- zar a utilizar desde ya una herramienta como GNU/Linux FME y ver c´omolos estudiantes y profesores trabajan con ella, mejoran posibles fallos, ofrecen sugerencias a un posible equipo de trabajo formado por profesionales inform´aticosque estuvieran continuamente mejorando el producto.

Con las herramientas incluidas en GNU/Linux FME es posible desde el primer momento crear paquetes de documentaci´onde asignaturas, documentos cient´ıficosde gran calidad, diagramas y esquemas de apoyo a la asignatura. Con las instalaciones inform´aticasque actualmente se encuentran en cualquier departamento inform´aticode la universidad ser´ıa posible crear un repositorio de paquetes de asignaturas siempre actualizados, creados por profesores, que los alumnos podr´ıandescargar e instalar con gran facilidad para mantener su colecci´onde ex´amenes,ejercicios, apuntes, manuales, etc. . . siempre actualizada.

Estos paquetes de asignaturas se podr´ıancombinar con los paquetes de software que Debian ofrece desde sus repositorios oficiales, con una herramienta llamada metapaquetes. Los metapaquetes son listas de paquetes que se instalan en conjunto mediante el sistema de dependencias de la aplicaci´on APT [71]. Se podr´ıancrear metapaquetes con todo el software y documentaci´onnecesaria para una determinada asignatura, bloque curricular o incluso titulaci´on.

93 94 Ap´endiceA

C´odigodel script /linuxrc

Este es el c´odigofuente del script contenido en el fichero de inicializaci´onde la ramdisk de la Live-CD descrito en el cap´ıtulo 5:

#!/bin/sh

ID="META" TMP_MOUNT="/mnt" PATH="/bin:/sbin:/usr/bin:/usr/sbin"

#PASO 0: MONTAMOS /proc if [ ! -d "/proc/" ]; then mkdir /proc fi mount -n proc /proc -t proc

#PASO 1: DETECCION DE LAS UNIDADES DE CD-ROM CDROM_LIST=""

#devfs if [ -d "/dev/cdrom/" ]; then for cdrom_device in /dev/cdrom/cdrom[0-99] do if [ -e "$cdrom_device" ]; then CDROM_LIST="$CDROM_LIST $cdrom_device" fi done

95 else #no devfs for ide_channel in /proc/ide/ide[0-9] do if [ ! -d "$ide_channel" ]; then break fi for ide_device in hda hdb hdc hdd hde hdf hdg hdh hdi hdj hdk hdl hdm hdn do device_media_file="$ide_channel/$ide_device/media" if [ -e "$device_media_file" ]; then grep -i "cdrom" $device_media_file > /dev/null 2>&1 if [ $? -eq 0 ]; then if [ -e "/dev/$ide_device" ]; then CDROM_LIST="$CDROM_LIST /dev/$ide_device" fi fi fi done done for scsi_cdrom in /dev/scd[0-99] do if [ -e "$scsi_cdrom" ]; then CDROM_LIST="$CDROM_LIST $scsi_cdrom" fi done fi

#PASO 2: BUSQUEDA DEL CD-ROM CON LA LIVE-CD ENTRE TODAS LAS UNIDADES META_CDROM_DEVICE="" echo "Usando $CHECK_TYPE" for cdrom_device in $CDROM_LIST do echo -n "Probando $cdrom_device ... " mount -n -t iso9660 $cdrom_device $TMP_MOUNT > /dev/null 2>&1 media_found=$? if [ $media_found -eq 0 ]; then echo -n "Encontrada unidad de CD-ROM en $cdrom_device" [ -e "$TMP_MOUNT/$ID" ] media_meta=$? umount -n $cdrom_device > /dev/null 2>&1

96 if [ $media_meta -eq 0 ]; then echo ", CD de arranque META encontrado. ¡Listo!" META_CDROM_DEVICE="$cdrom_device" break; else echo ", ningun CD de arranque META en la unidad de CD-ROM." fi else echo "ningun CD-ROM en $cdrom_device " fi done

#PASO 3: MONTA EL CD-ROM EN EL SISTEMA DE FICHEROS RAIZ if [ "$META_CDROM_DEVICE" = "" ]; then echo "¡¡¡Ningun CD-ROM encontrado!!!" exit 1 else echo "Arrancando desde $META_CDROM_DEVICE ..." mount -n -o ro -t iso9660 $META_CDROM_DEVICE $TMP_MOUNT cd $TMP_MOUNT pivot_root . mnt umount -n /mnt/proc >/dev/null 2>&1 exec chroot . sh -c ´umount-n /mnt >/dev/null 2>&1; \ exec -a init.new /sbin/init 3’ < /dev/console > /dev/console 2> &1 fi

97 98 Ap´endiceB

Diagramas y Figuras

99 Inicio Buscar unidad CD-ROM

Sí Cargar módulos SCSI ¿SCSI?

No

montar CD

Buscar imagen del sistema

No Sí Montar con cloop ¿Sistema Comprimido? Montar con loop

Crear sistema en Ramdisk

Crear enlaces al sistema montado

Copiar archivos (plantillas)

Cambiar raíz del sistema (pivot_root)

Arranque del sistema (comienza init.sh)

Figura B.1: Calzador de Metadistros (1a parte)

100 Ejecución de init.sh

Detección y configuración de hardware en 2º plano (hw-detect.sh)

Crea usuario FME (makeuser.sh)

Establece clave de root

Configura hostname

Configurar la red IP y CUPS

Activar la SWAP disponible

Sí No Detectar configuración X ¿Iniciar con X? (X-detect.sh)

Arrancar sesión con X Fin Arrancar sesión sin X

Figura B.2: Calzador de Metadistros (2a parte)

101 Figura B.3: Flujo del script /linuxrc (1o parte)

102 Figura B.4: Flujo del script /linuxrc (2o parte) 103 Figura B.5: Flujo del script /linuxrc (3o parte) 104 Figura B.6: Flujo del proceso init (1o parte) 105 Figura B.7: Flujo del proceso init (2o parte) 106 Figura B.8: Flujo del script hwdetect.sh llamado desde init 107 108 Bibliograf´ıa

[1] Calzador de Metadistros. ”http://metadistros.hispalinux.es/tiki-index.php?page=Calzador”.

[2] Cloop Documentation by Knopper. ”http://www.knoppix.net/docs/index.php/cloop”.

[3] ¿C´omohacer f´acilmente un CD arrancable de tu LFS? ”http://www.escomposlinux.org/lfs-es/recetas/boot-cd easy.html”.

[4] Contenido de initrd. ”http://hidrogeno.unileon.es/mirrors/meta-distros/isolinux/doc/contenido- initrd.html”.

[5] Creando un CD autoarrancable con ISOLINUX. ”http://hidrogeno.unileon.es/mirrors/meta-distros/isolinux/doc/isolinux.html”.

[6] Definici´onde Software Libre. ”http://www.gnu.org/philosophy/free-sw.es.html”.

[7] Discover Hardware Detection System. ”http://alioth.debian.org/projects/pkg- discover/”.

[8] Distribuci´onACM-LUX. ”http://193.147.71.100/ acmlux/documentacion/”.

[9] Distribuciones Linux. ”http://www.alsystems.com.mx”.

[10] Documentaci´onoficial de RAMDISK. /usr/src/linux/Documentation/ramdisk.txt”.

[11] Gentoo Linux. ”http://www.gentoo.org”.

[12] GIMP Official Site. ”http://www.gimp.org”.

[13] Gnome Free Desktop Software Project. ”http://www.gnome.org”.

[14] Gnome2Live. ”http://metadistros.hispalinux.es/tiki-index.php?page=gnome2live”.

[15] Gnoppix Site. ”http://www.gnoppix.org”.

109 [16] GNU GRUB Multiboot Loader. ”http://www.gnu.org/software/grub/”.

[17] GNU y la . ”http://www.gnu.org”.

[18] Hispalinux, Asociaci´onde Usuarios Espa˜nolesde GNU/Linux. ”http://www.hispalinux.es”.

[19] Howto configure a ramdisk in Linux. ”http://www.linuxfocus.org/English/November1999/article124.html”.

[20] Howto Metadistros. ”http://metadistros.hispalinux.es/tiki-index.php?page=HowTo”.

[21] Instalaci´onde Debian GNU/Linux 3.0 para Intel x86. ”http://www.debian.org/releases/stable/i386/install.es.html”.

[22] Introducci´ona Corel Linux. ”http://www.linuxplanet.com/linuxplanet/reviews/1395/1/”.

[23] Introducci´onal sistema de ficheros de Linux. ”http://www.arcride.edu.ar/appei/revistas/r19a3.htm”.

[24] ISO9660 El Torito Standard README. ”http://gd.tuwien.ac.at/utils/schilling/cdrecord/README.eltorito”.

[25] ISO9660 File System Standard for CD-ROMs. ”http://www.iso.ch/iso/en/CatalogueDetailPage.CatalogueDetail? CSNUMBER=17505&ICS1=35&ICS2=220&ICS3=30”.

[26] KDE Office Suite. ”http://www.koffice.org”.

[27] Kernel Rebuild Guide. ”http://www.digitalhermit.com/ kwan/kernel.html”.

[28] Kudzu sistema de detecci´onde hardware de RH Linux. ”http://rhlinux.redhat.com/kudzu”.

[29] La Tabla de equivalencias de software Windows en Linux.

[30] LILO Mini-HOWTO. ”http://www.tldp.org/HOWTO/LILO.html”.

[31] Linux Man Pages - FSTAB.

[32] Linux Shell Scripting Tutorial. ”http://www.freeos.com/guides/lsst/”.

[33] Linux Terminal Server Project. ”http://www.ltsp.org”.

[34] Loadlin Manual. ”http://elserv.ffm.fgan.de/ lermen/manual.txt”.

110 [35] Maxima - A GPL CAS based on DOE-MACSYMA. ”http://maxima.sourceforge.net/”.

[36] Metadistribuciones existentes. ”http://ourproject.org/cgi-bin/moin.cgi/Condorux/PRelacionados”.

[37] Morphix Home. ”http://www.morphix.org”.

[38] Netscape Home. ”http://www.netscape.com”.

[39] Octave Home Page. ”http://www.octave.org”.

[40] Official website for the graph-plotting tool GNUPlot. ”www.gnuplot.info/”.

[41] OverClockix, a Remastered Knoppix. ”http://overclockix.octeams.com/”.

[42] P´aginaOficial de TurboLinux. ”http://www.turbolinux.com”.

[43] PSPP Project. ”www.gnu.org/software/pspp/pspp.html”.

[44] The Quantian Scientific Computing Environment. ”http://dirk.eddelbuettel.com/quantian.html”.

[45] Revisi´onde StormLinux 2000. ”http://www.linuxplanet.com/linuxplanet/reviews/1575/1/”.

[46] Sitio Oficial Open Office. ”http://www.openoffice.org”.

[47] Sun Microsystems Star Office Suite. ”http://wwws.sun.com/software/star/staroffice”.

[48] SYSLINUX Documentation Page. ”http://syslinux.zytor.com”.

[49] Web de informaci´ony recursos para Minix. ”http://www.minix.org”.

[50] Web de Open Group sobre UNIX. ”http://www.unix-systems.org”.

[51] Web de paquetes Debian. ”http://packages.debian.org”.

[52] Web del proyecto Linux From Scratch. ”http://www.linuxfromscratch.org”.

[53] Web del proyecto Metadistros. ”http://metadistros.hispalinux.es”.

[54] Web Oficial de Caldera OpenLinux. ”http://www.caldera.com”.

[55] Web Oficial de GNU/Linux. ”http://www.linux.org”.

[56] Web Oficial de GNU/Linux Debian. ”http://www.debian.org”.

[57] Web Oficial de KDE Desktop Environment. ”http://www.kde.org”.

111 [58] Web Oficial de Knoppix. ”http://www.knoppix.org”.

[59] Web Oficial de Linux Mandrake. ”http://www.mandrake.com”.

[60] Web Oficial de Red Hat Linux. ”http://www.redhat.com”.

[61] Web Oficial de Slackware Linux. ”http://www.slackware.org”.

[62] Web Oficial de Suse Linux. ”http://www.suse.com”.

[63] Web sobre el desarrollo del n´ucleode Linux. ”http://www.kernel.org”.

[64] What is disk cache? ”http://www.webopedia.com/TERM/d/disk cache.html”.

[65] What is virtual memory? ”http://www.webopedia.com/TERM/v/virtual memory.html”.

[66] XFree Home Page. ”http://www.xfree86.org”.

[67] Ximian Desktop Environment. ”http://www.ximian.com”.

[68] Zlib Home Site. ”http://www.gzip.org/zlib”.

[69] Tigran Aivazian. Linux Kernel Inside. Free Software Foundation, 2001.

[70] Rafael Mart´ınde Agar Tirado. Analizando en profundidad el proyecto METADIS- TROS. El proceso de Detecci´onde Hardware. Emergya,S.C.A., Sep 2003.

[71] GustavoNoronha˜ Silva. APT HowTo. Free Software Foundation, 2001. ”Traducci´on de Hugo Mora”.

[72] Clinton De Young. Gu´ıade instalaci´onde Debian 3.0. TLDP-ES, 2002. ”Traducci´on de Manuel Canales Esparcia”.

112