El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto...

112
El proyecto GNU/Linux FME Distribuci´on Libre para la Facultad de Matem´aticas y Estad´ ıstica Samuel Casanova Romero Mayo de 2004

Transcript of El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto...

Page 1: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

El proyecto GNU/Linux FMEDistribucion Libre para la

Facultad de Matematicas y Estadıstica

Samuel Casanova Romero

Mayo de 2004

Page 2: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

2

Page 3: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Indice general

1. Introduccion 9

1.1. Motivacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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

Page 4: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.1.2. Motivacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.1.3. Descripcion y funcionamiento . . . . . . . . . . . . . . . . . . . . . 28

4.1.4. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4.2. Morphix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4.2.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4.2.2. Motivacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

4.2.3. Descripcion y funcionamiento . . . . . . . . . . . . . . . . . . . . . 30

4.2.4. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.3. Metadistros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.3.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.3.2. Motivacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.3.3. Descripcion y 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

Page 5: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

4.4.6. Gnome2Live . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

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

5. ¿Como se crea una Live-CD? 37

5.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

5.2. Configuracion del nucleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

5.3. Cambios en la estructura del sistema deficheros de la distribucion source . . . . . . . . . . . . . . . . . . . . . . . . 41

5.4. Configuracion de fstab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

5.5. Configuracion de ramdisk . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

5.6. Instalacion de Isolinux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

5.7. Configuracion de initrd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

5.8. Imagen final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

5.9. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

6. Estructura y funcionamiento de Metadistros 53

6.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

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

6.2.1. El calzador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

6.3. La Distribucion Live-CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

6.4. Isolinux : Configuracion y funcionamiento . . . . . . . . . . . . . . . . . . . 60

6.5. Deteccion de 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 estandar del nucleo Linux . . . . . . . . . . . . . . . . . . 63

5

Page 6: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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

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

6.8. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

7. Un ejemplo: GNU/Linux FME 67

7.1. Diseno del entorno de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . 67

7.2. Instalacion de Debian Woody . . . . . . . . . . . . . . . . . . . . . . . . . 70

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

7.4. Contenido de la distribucion . . . . . . . . . . . . . . . . . . . . . . . . . . 74

7.5. La documentacion del software de GNU/Linux FME . . . . . . . . . . . . 78

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

7.7. El sistema de menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

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

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

7.10. Configuracion del calzador . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

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

7.10.2. La instalacion de GNU/Linux FME . . . . . . . . . . . . . . . . . . 88

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

7.12. Conclusion: Futuro de GNU/Linux FME . . . . . . . . . . . . . . . . . . . 92

A. Codigo del script /linuxrc 95

B. Diagramas y Figuras 99

6

Page 7: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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 modulo del escritorio IceWm . . . . . . . . . . . . . . . . . 32

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

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

7.3. El menu de 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

Page 8: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

8

Page 9: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Capıtulo 1

Introduccion

EL capıtulo de introduccion trata de ser una presentacion del entorno que ha motivado esteproyecto, la Facultad de Matemasticas y Estadıstica, ası como la motivacion concreta delproyecto, su especificacion, estructura y finalmente valorar el trabajo realizado y compararlos objetivos iniciales con los objetivos alcanzados.

1.1. Motivacion

Este proyecto surge de la necesidad de un colectivo de estudiantes y profesores, de la Facul-tad de Matematicas y Estadıstica de la Universidad Politecnica de Cataluna. El entorno enque 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 operativoque es la misma para todos.

Este sistema operativo contiene una serie de software instalado que es el que utilizan tantoalumnos como profesores para desarrollar practicas de laboratorio, consulta de informacionen internet, impresion de problemas y examenes, etc. . .

Puesto que estas aulas estan fısicamente en la facultad, los alumnos y profesores solo tienenacceso a ellas en el horario en que la facultad permanece abierta, esto es, los dıas lectivos enhorario de clases. Las aulas se utilizan ademas para impartir docencia utilizando los equiposdurante las clases, por lo que los alumnos que no pertenezcan al grupo que esta dando claseen 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 practica, como por ejemploaperturas extraordinarias de las aulas por la noche o incluso los fines de semana.

9

Page 10: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

No es muy difıcil imaginar que para los alumnos no es muy agradable desplazarse a lafacultad en horarios intempestivos como consecuencia de los recursos siempre limitados dela facultad.

Por otro lado tenemos que tanto alumnos como profesores tienen en su casa equipos in-formaticos, muy semejantes a los de las aulas informaticas o incluso superiores en pres-taciones. ¿Es posible realizar el trabajo que se realiza en la facultad en el ordenador decasa? Claro que sı, salvo contadısimas ocasiones, el software ejecutado en las aulas puedeser ejecutado en cualquier ordenador de sobremesa. ¿Porque no los utilizan entonces paradesarrollar su trabajo comodamente en casa? Hay basicamente dos razones por las que noes posible:

1. Tanto el sistema operativo instalado en las aulas como el software de desarrollo sonde licencia propietaria. Esto quiere decir que cualquier persona que quiera hacer usode el debe pagar, en ocasiones grandes cantidades, por la licencia de ese producto.Por poner un ejemplo, las licencias de Microsoft R© Windows R© 98 mas Microsoft R©

Office R© 2000 Pro ya ascienden a mas de 300e. De todos es sabido que los alumnossuelen ingeniarselas para conseguir este software mediante metodos mas economicosy menos legales, pero esta claro que la facultad no puede incitar a los alumnos aactividades de piraterıa informatica.

2. Aun en el caso de conseguir las licencias de software, los usuarios carecen de avan-zados conocimientos informaticos para instalar y mantener el sistema en optimascondiciones. La facultad cuenta con un equipo de profesionales informaticos que dansoporte tecnico en todo momento a los alumnos y profesores, pero extender esteservicio a los usuarios domesticos resultarıa completamente inviable.

El segundo problema parece de difıcil solucion, pero el primer problema no lo es tal. Comoya hemos visto en la seccion 2.1.2 existe una alternativa al software propietario, el softwarelibre. ¿Esto quiere decir que todo el software de las aulas esta disponible como softwarelibre? Evidentemente no, pero existen alternativas a software propietario que tienen ca-racterısticas semejantes y en ocasiones incluso superiores. ¿Cuanto me cuesta entonces lasolucion libre? La gran mayorıa del software libre, ademas de libre es gratis, por lo que elcoste total no serıa mas que el tiempo de conexion para descargar el sistema por Interneto el precio del soporte fısico donde se almacene el software, por ejemplo un CD-R. Estoyhablando de unos centimos de euro, por lo que la diferencia resulta aplastante.

El usuario puede tener acceso al software libre pero todavıa nos queda el segundo problemaplanteado. ¿Como un estudiante de matematicas va a ser capaz de instalar y administrarun sistema operativo libre? Este es el problema al que se le busca solucion en el proyectoGNU/Linux FME.

Para ello se elimina el concepto de instalacion y administracion como hasta ahora la conoce-mos. Para empezar el sistema no necesita instalacion ya que se ejecuta desde un CD-ROM

10

Page 11: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

utilizando la memoria RAM del ordenador. Este hecho no priva al usuario de instalar elsistema a su disco duro, con apenas dos clics de raton y en 20 minutos aproximadamente.La administracion del sistema tampoco es necesaria. El sistema se ejecuta desde el CD-ROM por lo que si surge algun problema no hay mas que reiniciar y el sistema volvera aquedar intacto. Si se trata de una instalacion a disco, es cuestion de reinstalar el sistemay en pocos minutos el problema habra terminado.

Debido al colectivo al que va dirigida la distribucion, esta debe estar disenada con lafacilidad, la usabilidad y la estabilidad como principal objetivo. El usuario no deberıaadquirir ningun conocimiento adicional para poder utilizar el sistema, deberıa ser capaz deempezar a utilizar el software equivalente desde el primer momento, y debemos asegurarel trabajo de los usuarios bajo un sistema estable y no propenso a bloqueos del sistema odel software.

Ademas el sistema debe soportar un amplio conjunto de hardware compatible, ya que ladistribucion la utilizara un numero amplio de personas en un numero amplio de equiposdiferentes. No servirıa de nada un sistema operativo util que solo funciona en un conjuntoreducido de ordenadores.

Por ultimo, el sistema debe ser actualizable, preferentemente vıa web. Los alumnos debenser capaces desde la distribucion de descargar la ultima version de la documentacion oficialde las asignaturas, o los cambios de software de laboratorio que se podrıan producir duranteel curso.

1.2. Objetivos

Comenzare describiendo los objetivos para este proyecto, en una planificacion de lo quedeberıan ser los plazos de entrega del proyecto en una primera estimacion:

1. Crear una documentacion sobre como se crea y como funciona una Linux Live-CD,con gran profundidad de detalle en la parte tecnica y funcional para futuras creacionessimilares a este proyecto. (una semana)

2. Estudiar las distintas metadistribuciones GNU/Linux basadas en Debian, observandolas ventajas e inconvenientes que poseen y, finalmente decidir cual de ellas se ajustamas a nuestras necesidades. (una semana)

3. Estudiar el software que se utiliza en la Facultad de Matematicas y Estadıstica yaveriguar sus equivalencias free-software. (uno o dos dıas)

4. Construccion del sistema operativo Debian Woody y el nucleo estable. Posteriormenteadaptar este sistema a las especificaciones que debe cumplir para funcionar bajo elformato de metadistribuciones elegido en el primer punto. (entre una y dos semanas)

11

Page 12: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

5. Instalacion del entorno de escritorio. Tambien precisarıa de modificaciones y opti-mizaciones para adaptarlo a nuestras necesidades. (indefinido, iremos adaptando amedida que vayamos implementando)

6. Instalacion, optimizacion y test del software especıfico para las titulaciones de ma-tematicas y estadıstica, ademas de algun software de proposito general. (una semana)

7. Creacion de rutinas de automatizacion de tareas mediante scripts. (indefinido, seharan a medida que se precisen)

8. Diseno e implementacion de un sistema de ayuda. (una semana)

9. Creacion y optimizacion de la estructura necesaria para crear el CD-R con el sistemaoperativo resultante siguiendo las especificaciones de la metadistribucion elegida.(entre una y dos semanas)

10. Una vez conseguida la distribucion debemos someterla a tests y corregir posiblesfallos. (una semanas)

11. Finalmente, crear la memoria y la presentacion del proyecto. (entre dos y tres sema-nas)

El total de la prevision estima el tiempo total para desarrollar el proyecto inferior a cuatromeses a media jornada. Una vez el proyecto se ha terminado me doy cuenta de lo optimistasque fueron algunas estimaciones, como por ejemplo la relacionada con la documentacion,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, observandolas ventajas e inconvenientes que poseen y, finalmente decidir cual de ellas se ajustamas a nuestras necesidades. (dos semanas)

2. Estudiar el software que se utiliza en la Facultad de Matematicas y Estadıstica yaveriguar sus equivalencias free-software1. (cuatro dıas)

3. Construccion del sistema operativo Debian Woody y el nucleo estable. Posteriormenteadaptar este sistema a las especificaciones que debe cumplir para funcionar bajo elformato de metadistribuciones elegido en el primer punto. (una semana)

4. Instalacion del entorno de escritorio y diseno e implementacion del sistema de menus.(una semana)

5. Instalacion, optimizacion y test del software especıfico para las titulaciones de ma-tematicas y estadıstica, ademas de algun software de proposito general. (dos semanas)

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

12

Page 13: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

6. Creacion de rutinas de automatizacion de tareas mediante scripts. (tres dıas)

7. Diseno e implementacion de la aplicacion web de bienvenida y ayuda. (dos semanas)

8. Creacion y optimizacion de la estructura necesaria para crear el CD-R con Metadis-tros. (dos dıas)

9. Una vez conseguida la distribucion debemos someterla a tests y corregir posiblesfallos. (Difıcil de concretar, ya que el proceso generaba errores durante toda la fasede desarrollo y se corregıan dinamicamente)

10. Estudio exhaustivo del entorno final, crear la documentacion, memoria y la presen-tacion del proyecto. (mas de cinco semanas)

Como se puede comprobar en ocasiones las estimaciones eran optimistas y en otras se hansuperado los plazos establecidos a priori. Finalmente el trabajo total del proyecto quedaestimado 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 mas de un equipo domestico y una conexion a Internet. Este es elequipo 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ıcil estimar el coste actual de un equipo de estas caracterısticas en el mercado actual,ya que no se encuentra entre los catalogos de ninguno de los proveedores de hardwareprincipales, por lo que establecere un precio de 300e.

Durante el desarrollo del proyecto se ha utilizado un acceso a Internet consistente en unalınea basica de conexion ADSL 256/1282 a traves de un router ADSL / Ethernet de dospuertos. El coste de esta lınea es de 45e al mes.

2Asymethric Digital Subscriber Line, acceso de banda ancha mas extendido en la actualidad, los numerosson la capacidad de la lınea, 256 Kbps de ancho de banda de bajada y 128 Kbps de subida

13

Page 14: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

1.4. Costes Totales

Para valorar las horas de trabajo he tomado como referencia el sueldo de un tecnico de pro-gramacion de la UPC, perteneciente al grupo 2 del personal de administracion y servicios,con un sueldo bruto de aprox. 11,25e la hora.

El empleo del software libre no va a suponer coste alguno, ya que no es necesario adquirirlicencias propietarias para hacer uso de el. Unicamente se podrıa estimar su coste en lashoras de conexion a Internet necesarias para descargarlo, que se han omitido en la tabladebido a que la lınea ADSL contratada se factura por meses y no por horas de conexion.

Cuadro 1.1: Costes del proyecto Final de Carrera

Concepto Unidades Coste por unidad SubtotalEquipo de trabajo 1 300,00e 300,00eSistema Operativo Debian Woody 1 0,00e 0,00eSoftware necesario 1 0,00e 0,00eTiempo de conexion (en meses) 4 45,00e 180,00eTiempo de programacion (en horas) 360 11,25e 4050,00e

Total 4530,00e

14

Page 15: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Capıtulo 2

GNU/Linux y las Live-CDs

Comenzaremos con una breve resena historica y conceptual sobre lo que es GNU/Linuxy el software libre, la filosofıa y el entorno que lo rodea y las posibilidades que ofrece estetipo de software para desarrollar este proyecto. Finalmente repasaremos las distribucionesexistentes 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 Richard Stallman fundo la “Free Software Foundation” [17] para promover laidea del software libre [6]. Con la fundacion creo la licencia GPL (General Public License)que permite distribuir codigo libre. Aunque GNU trabajaba en un nucleo propio (HURD),muy pronto unio sutrabajo con el nucleo de Linux.

En 1991 Linus Torvalds creo el sistema operativo Linux. Estaba basado en un clon deUNIX [50] llamado Minix [49], y pronto comenzo a evolucionar rapidamente consiguiendouna buena estabilidad y un rendimiento superior. Se componıa principalmente de un nucleo(kernel) y un reducido conjunto de aplicaciones.

2.1.2. El software libre

La definicion de software libre [6] no es trivial y a menudo se presta a confusion. Haycuatro reglas basicas para que un software se pueda considerar libre:

15

Page 16: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

1. El usuario es libre de utilizar el programa sin ninguna condicion

2. El usuario tiene acceso al codigo fuente del programa

3. El usuario es libre de distribuir copias del software

4. El usuario puede modificar el codigo fuente y redistribuirlo

La idea principal es que todos los programas distribuidos como software libre tienenla obligacion de facilitar el codigo fuente del programa, y ademas permiten a cualquieramodificar este codigo a su antojo y redistribuir el software nuevamente. Este modelo dedistribucion de software tiene muchas ventajas de cara a los usuarios:

Coste inferior del software, ya que normalmente todo el software libre tambien esgratis, y el usuario solo paga el coste de la conexion o el precio del soporte fısicodonde se almacena el software.

Al disponer del codigo fuente, puede modificarlo para anadirle nuevas funcionalidadeso para corregir posibles errores de programacion. Una vez modificado puede volver adistribuirlo para que el resto de la comunidad se beneficie de estas modificaciones. Deesta forma la calidad del producto aumenta a medida que los programadores revisany modifican el codigo.

2.1.3. Linux y el software libre

Mas de una decada despues de su nacimiento, GNU/Linux es un sistema operativomuy extendido, gracias a la idea del software libre. Existen miles de aplicaciones paraGNU/Linux y la mayorıa son software libre. Linux se distribuye con licencia GPL, peroel responsable de las actualizaciones del nucleo Linux sigue siendo exclusivamente LinusTorvalds. Esto no quiere decir que cualquiera pueda modificar las fuentes del nucleo paraadaptarlo a sus necesidades, sino que hoy en dıa el resto de programadores se centran enprogramar software para este nucleo, mientras que este sigue bajo la tutela de su creador.

Si GNU/Linux ha llegado tan lejos ha sido incuestionablemente gracias a la comunidaddel software libre, y cada dıa hay mas gente que se interesa por este sistema operativo ysu entorno de libertad y globalidad.

16

Page 17: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

2.1.4. Las distribuciones Linux

A medida que GNU/Linux crecıa y la gente lo iba adoptando cada vez mas como su sis-tema operativo el volumen de software disponible tambien crecıa. Algunos programadoresse dedicaron a utilizar un subconjunto de este software y definieron una estructura paraintegrar 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 enmuchos casos software propio, aunque todas conservan siempre el mismo eje central, elnucleo Linux [63].

El software que hace diferentes a unas distribuciones respecto a otras suelen ser mejoresinterfaces graficas de instalacion, herramientas de configuracion o aplicaciones de deteccionautomatica de hardware.

Algunas distribuciones conocidas son:

Red Hat

Es la distribucion mas famosa sin duda en todo el mundo, gracias a sus esfuerzos pordesarrollar software de codigo abierto. Al contar con una estructura organizativa como laempresa Red Hat [60], con sedes en mas de 15 paıses, la respaldan un grupo de desarro-lladores profesionales.

Es muy facil de utilizar e instalar. Ademas cuenta con un sistema de empaquetamientode software propio que hace de la instalacion de nuevo software una tarea muy sencilla.Existen varias distribuciones Red Hat, algunas de ellas dirigidas a grandes empresas quepagan por recibir soporte tecnico sobre la distribucion.

Linux-Mandrake

Desarrollada a partir de una Red Hat. La estructura es practicamente identica, pero laopinion popular define a Mandrake [59] como la mas facil de utilizar. Por eso es la distri-bucion preferida por los usuarios que quieren tener un primer contacto con GNU/Linux.

Se caracteriza ademas por tener un numero importante de desarrolladores que mantienenel software de la distribucion siempre actualizado.

17

Page 18: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

SuSE

Tambien cuenta con Red Hat como base, es tambien una distribucion comercial con unconjunto de software muy completo, parte del mismo desarrollado por los programadoresde SuSE [62]. Se caracteriza tambien por su facilidad de uso e instalacion gracias al usode asistentes graficos.

Slackware Linux

Una de las mas antiguas. Su evolucion no ha ido al mismo ritmo que el resto de distribu-ciones, debido en parte a su meta inicial, ser la distribucion de Linux que mas se parezcaa UNIX. Por eso algunos piensan que la estructura de esta distribucion [61] ha quedadoobsoleta.

No obstante es una buena opcion para experimentar en profundidad con Linux, ya quela estructura del sistema es muy facil de interpretar.

Debian GNU/Linux

Es la distribucion preferida por los hackers1 de Linux. Es muy facil de instalar y mantenergracias a su sistema de instalacion de software mediante paquetes, para muchos, el mejordel mundo. Se trata de un sistema en continua evolucion ya que cuenta con miles de desa-rrolladores por todo el mundo que trabajan en perfecta conjuncion de forma desinteresada,por eso se considera la distribucion mas comprometida con el desarrollo de software libre.Su estructura y funcionamiento son algo mas complejo que el resto de distribuciones, peroesta estructura garantiza un sistema robusto y eficaz.

Debian [56] se caracteriza tambien por ser una distribucion que puedes utilizar comobase a otras nuevas distribuciones, gracias a su diseno modular y definido. Por todo estoes la distribucion elegida 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ıa basadas en Debian.

1hacker: Me refiero a los programadores de sistemas GNU/Linux, no con la connotacion popular dedelincuentes informaticos

18

Page 19: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

2.2. Linux Live-CD

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

Las primeras distribuciones eran sistemas reducidos con un pequeno numero de aplica-ciones instaladas. Su tamano era ideal para grabarlos en las CD business-cards2. A medidaque iban evolucionando el tamano de 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 capacesde almacenar casi 2 Gb de software en un solo CD-R de 700 Mb mediante tecnicas decompresion/descompresion transparente al usuario. La estructura de estas distribucioneses mas sencilla de lo que en principio pueda parecer.

Existen muchas Live-CDs distintas, pero todas estan basadas en el modelo de la distribu-cion Knoppix [58]. En este proyecto se dedica un capıtulo completo a estas distribuciones.Por eso, si el lector desea mas informacion sobre estas Live-CDs unicamente debe consultarel capıtulo 4.

2CD business-card: CD-R de radio menor al estandar de CD y con cierta forma ovalada. Permitealmacenar entre 50-180 Mb

19

Page 20: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

20

Page 21: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Capıtulo 3

Conceptos previos

En este capıtulo describire con detalle algunos terminos y conceptos que deberıan conocerlos lectores para poder comprender correctamente como funcionan y de que se componenalgunas partes del proyecto.

3.1. Ramdisk o disco virtual

Es un area de la memoria RAM que se asigna al sistema operativo para que se utilicea modo de particion de disco [10, 19]. Basicamente, consiste en reservar cierta cantidadde memoria y acceder a ella como si fuese una unidad de disco. Se utiliza principalmentepara ubicar archivos que reciben un gran numero de accesos. La memoria RAM es unas1000 veces mas rapida que un disco duro, por lo tanto si podemos predecir que algunosarchivos van a ser consultados con frecuencia, podemos ganar eficiencia ubicando estosen la memoria RAM en lugar de en el disco duro. Por ejemplo, si estamos ejecutandoun servidor web podrıamos ganar eficiencia ubicando las paginas principales en memoriaen lugar de en disco. De esta forma el servidor no deberıa hacer accesos a disco cuandorecibiera una visita de algun internauta, ya que tiene las paginas cargadas en disco.

La tecnica de 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 areas de memoria que reserva el sistema operativo para guardartemporalmente espacios contiguos de disco duro que se han accedido en algun momento,de forma que si se vuelve a acceder a ese espacio el sistema operativo no debe accedernuevamente a disco sino que lo harıa al espacio de la cache. El sistema operativo gestionasu propio espacio de cache de disco, mientras que los discos virtuales se configuran porprogramadores o usuarios avanzados.

21

Page 22: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

La memoria virtual, memoria de intercambio o swap es un espacio del disco duro quese utiliza para almacenar espacios de memoria RAM en disco, de forma que conseguimosaumentar el tamano de la memoria (podemos tener mas aplicaciones 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 utilizacion de la Ramdisk es algo diferente. El espacio quedefinimos lo utilizamos para ubicar nuestro sistema de ficheros principal, ya que la Live-CDno puede acceder en un principio a disco. Puede encontrarse una explicacion detallada delfuncionamiento de la Ramdisk en GNU/Linux en el capıtulo 6.

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 esun software creado para poder arrancar sistemas Linux desde un CD-ROM grabado conel estandar de 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 limitacion carece de importancia cuando lo que queremos conse-guir es precisamente un programa ligero que permita arrancar Linux desde un CD-ROM.

La mayorıa de las Live-CDs estudiadas utilizan ISOLINUX como gestor de arranque conuna gran eficiencia. Algunas Live-CDs como por ejemplo las primeras versiones de Knoppixutilizan el gestor Lilo [30], mas completa que ISOLINUX, con soporte para arranque deotros sistemas operativos diferentes de Linux. Metadistros utiliza isolinux, y como nuestrasnecesidades no van mas alla de arrancar nuestra distribucion GNU/Linux FME desde elCD-ROM, utilizaremos ISOLINUX y descartaremos las demas posibilidades.

3.3. Compressed loop

Dispositivo comprimido disenado para sistemas independientes en CD-ROM [2]. Fuecreado por Paul Rusty para utilizarlo con sistemas Linux de rescate en CD-Business Cards(ver pag. 19). Permite utilizar sistemas de ficheros de hasta 1,6 Gb de contenido en un soloCD-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 sistemade ficheros contenido es independiente del sistema cloop, por lo que puede ser cualquiersistema de ficheros que el usuario quiera utilizar. En nuestro caso utilizamos el sistema deficheros Extended2.

22

Page 23: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Cloop es un dispositivo de solo lectura, por lo que el contenido no se puede modificar.El dispositivo utiliza las librerıas zlib/gzip [68] para comprimir el sistema de ficheroscontenido. Esta compresion del sistema es transparente al usuario, el dispositivo se encargade descomprimir dinamicamente los bloques del sistema de ficheros contenido en el. Cloopcontiene un ındice de bloques que mantiene en memoria por cuestiones de eficiencia, yutiliza el mecanismo de buffering de bloques del nucleo para aumentar el rendimiento.

El diseno de este dispositivo esta enfocado a su uso en CD-ROMs. Utiliza tecnicas decaching y agrupacion de bloques para minimizar el movimiento del cabezal del CD-ROMal acceder a los bloques del dispositivo.

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

3.4. Kudzu

Se trata de una librerıa de deteccion de hardware [28], creada por los ingenieros deRed Hat (ver seccion 2.1.4). La librerıa se completa con varios programas que utilizan estalibrerıa para detectar el hardware, cargar los modulos necesarios para que este hardwarefuncione en nuestro sistema, y finalmente generar los ficheros de configuracion que losdispositivos necesiten para su correcto funcionamiento.

Al comenzar su ejecucion, Kudzu detecta el hardware presente en el sistema, lo identificay consulta una base de datos propia. Si encuentra el dispositivo en su base de datos, siguelas instrucciones indicadas para configurar con exito el 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ız actualmontado en un directorio del nuevo sistema de ficheros. No hay que confundir con lallamada de sistema chroot que cambia el directorio raız (root directory) pero siempre enel mismo sistema de ficheros. Para poder utilizar pivot root hay que tener en cuenta losiguiente:

23

Page 24: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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

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

No puede haber ningun sistema de ficheros diferente de new root montado en elsistema de ficheros de old root.

Es importante tener en cuenta que la llamada pivot root no garantiza el cambio dedirectorio raız del sistema (depende de la version de pivot root), por lo que generalmentesera necesario despues de la llamada a pivot root llamar tambien a chroot.

El ejemplo siguiente ilustra como deberıamos utilizar estas dos herramientas para hacerel cambio:

fme:/# cd /mnt

fme:/# pivot_root . mnt

fme:/# chroot . umount /mnt

La llamada pivot root cambia de forma automatica los apuntadores de los procesos enejecucion hacia new root, de forma que old root se puede desmontar de new root una vezhecho 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 cargael sistema de ficheros contenido en este dispositivo antes de arrancar el nucleo del sistema.De esta forma el arranque se efectua en dos fases, primero monta el dispositivo initrd enRAM y ejecuta instrucciones contenidas en el, y despues carga el sistema de ficheros raız.

Para activar este dispositivo es necesario que el nucleo tenga soporte para ramdisk (verseccion 3.1) ya que al iniciar el sistema se copia el contenido de /dev/initrd a /dev/ram0,donde adquiere permisos de lectura-escritura.

Despues el sistema busca el fichero linuxrc y si lo encuentra lo ejecuta (siempre quetenga permisos de ejecucion) como root. Despues de la ejecucion de linuxrc el sistemacarga el sistema de ficheros raız, y si este contiene un directorio llamado /initrd se montael dispositivo /dev/ram a este directorio. En caso contrario simplemente se desmonta y sepasa el control al proceso /sbin/init.

24

Page 25: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Inicialmente el dispositivo /dev/initrd se creo para iniciar sistemas mınimos desde undisquet o CD-ROM para efectuar procesos de instalacion. El disquet iniciaba un nucleocon controladores mınimos y determinaba los modulos necesarios para arrancar el sistemacompleto bien detectandolo el mismo o bien preguntando al usuario. Este metodo se sigueutilizando en la actualidad.

3.7. Devfs

Es un sistema de aplicacion de dispositivos fısicos en el sistema de ficheros raız. La formahabitual de registrar un dispositivo en el sistema es creando un dispositivo virtual en elsistema de ficheros. Estos ficheros de encuentran en el directorio /dev, y su nombre dependede la ubicacion fısica del dispositivo. DEVFS propone una manera mas sencilla de registrarestos dispositivos, y es agrupandolos segun el tipo de dispositivos al que pertenecen y nopor su ubicacion fısica.

Por ejemplo, la unidad de CD-ROM con DEVFS siempre se situa directamente en/dev/cdrom mientras que con el sistema tradicional su ubicacion depende del bus IDE don-de se conecte. Esta nueva forma de agrupar dispositivos facilita la labor de las aplicacionesque no tienen que preocuparse de la configuracion hardware y acceder a los dispositivos deforma mas transparente.

El incremento en el tamano y el rendimiento del nucleo es tan pequeno que practicamentetodos los sistemas Linux utilizan DEVFS.

25

Page 26: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

26

Page 27: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Capıtulo 4

Estudio de las Live-CDs Linux

Existen muchas y muy diversas Live-CDs [36] en las que basar este proyecto. En estecapıtulo el lector descubrira las capacidades y caracterısticas de las Live-CDs mas im-portantes, las diferencias entre ellas, y comparare las caracterısticas de cada una con lascaracterısticas que debera tener el proyecto para decidir que sistema se ajusta mas a laespecificacion de GNU/Linux FME.

4.1. Knoppix

4.1.1. Introduccion

Es el pionero de los sistemas Linux CD-Live, el sistema en que se basan el resto deLive-CDs estudiadas [58]. Su paquete de software es muy amplio y diverso, se trata deun entorno KDE [57] basado en Debian [56], con las suites ofimaticas mas populares(OpenOffice [46], StarOffice [47], KOffice [26]), GIMP [12], XMMS y Netscape [38]entre otros. Ademas de los anteriores, contiene un gran numero de utilidades de rescate desistemas.

4.1.2. Motivacion

Fue creado por Klauss Knopper en Alemania el ano 2000. Eran muchos los usuarios quenecesitaban constantemente sistemas robustos y estables con software para probar equiposy sistemas de ficheros corruptos. Ademas estaban los usuarios que simplemente querıan

27

Page 28: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

probar Linux pero que no estaban dispuestos a modificar sus sistemas operativos propiospara instalar una distribucion Linux convencional.

Knopper quiso responder esta demanda de soluciones y creo Knoppix, un sistema Linuxauto-arrancable y auto-configurable que satisfizo las necesidades de estos usuarios.

El sistema se completa con una gran cantidad de software muy diverso. Actualmenteesta basado en la distribucion testing de Debian, y utiliza un nucleo 2.6 muy modular,con el fin de conseguir la mayor compatibilidad con el hardware de sus usuarios. Como yahemos apuntado antes, utiliza el entorno de escritorio KDE, completado con un conjuntode 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. Descripcion y funcionamiento

Knoppix combina el estandar de CD-ROMs auto-arrancables El Torito [24], el dispositivoloop comprimido (ver Seccion 3.3) y el software de deteccion de hardware Kudzu de RedHat 3.4.

El CD-ROM al arrancar, carga un archivo de inicio con un sistema de ficheros con unkernel comprimido y unos guiones para detectar los dispositivos de la maquina. Antes dela deteccion de hardware se monta una particion ramdisk [10] para proyectar los direc-torios que necesitan escritura. La aplicacion a medida que detecta el hardware consultauna librerıa (Kudzu) donde guarda basicamente el hardware soportado y los modulos quedebera cargar. Tras arrancar el kernel y ejecutar estos scripts se carga el modulo cloop (verSeccion 3.3) para cargar el sistema de ficheros principal, que se encuentra en un ficherocomprimido con el driver cloop.

Cloop utiliza compresion zlib/gzip [68] para comprimir por bloques independientementedel tipo de sistema de ficheros. El sistema es de solo-lectura, y para una mayor efectividadmantiene el ındice de bloques en memoria y el resto de bloques se carga en-demanda.Ademas la informacion se guarda de forma que minimiza el movimiento del cabezal delCD-ROM en los accesos.

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

Para desarrollar distribuciones tomando Knoppix como base es necesario instalar enprimer lugar Knoppix en el disco duro. A continuacion el desarrollador desinstalarıa einstalarıa software en la distribucion instalada mediante herramientas como APT [71].Una vez tuvieramos la distro adaptada a nuestras necesidades, deberıamos arrancar unsistema Linux propio e instalar las herramientas necesarias para manejar ficheros cloop ennuestro sistema. Con estas herramientas crearıamos de nuevo el dispositivo cloop con el

28

Page 29: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

sistema de ficheros de nuestra distribucion personalizada. Finalmente crearıamos el CD-ROM incluyendo las herramientas de Knoppix de deteccion de hardware, el gestor dearranque, los modulos del nucleo de Knoppix, etc...

4.1.4. Conclusiones

Knoppix por ser el primero es tambien el mas maduro y estable de las Live-CDs, pero nofue pensado inicialmente para crear distribuciones que no fuesen la propia Knoppix. Paracrear una Live-CD Knoppix es necesario instalar Knoppix en el disco duro, para despuesinstalar y desinstalar aplicaciones que el usuario crea conveniente sobre esta instalacion.Por tanto, no es posible a priori crear una distribucion con base de Knoppix que contengauna distribucion que no sea la propia Knoppix.

La distribucion contenida en Knoppix esta basada en Debian Sid (testing). Esta distribu-cion se compone de paquetes de software que han sido probados durante un breve periodode tiempo y que no se han encontrado fallos importantes. Un paquete testing puede con-tener fallos notables de programacion. La especificacion de GNU/Linux FME requiere unsistema estable por lo que deberıa estar basado en la distribucion Debian Woody (estable).

Figura 4.1: Escritorio KDE de Knoppix 3.3

Como consecuencia, Knoppix no parece la mejor solucion para desarrollar un sistemaestable y robusto, por lo que descartaremos esta Live-CD para desarrollar el proyectoGNU/Linux FME.

29

Page 30: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

4.2. Morphix

4.2.1. Introduccion

Debido a que esta basado directamente en Knoppix, la idea es la misma, conseguir unaLive-CD que quepa en un CD-ROM y que pueda ser ejecutada sin necesidad de hacer unainstalacion en el equipo del usuario, con una cantidad de software instalado y listo paraser usado [37].

La estructura de esta Live-CD es algo diferente. Se compone de diversos modulos, loscuales pueden ser modificados para personalizar una distribucion. Este diseno en modulospermite a los desarrolladores tener mucha versatilidad a la hora de hacer cambios sobreuna distro Morphix, aunque todas parten de un modulo base que es una copia del corazonde Knoppix.

4.2.2. Motivacion

Los creadores de Morphix buscaban un producto mejor que Knoppix. Recordemos queKnoppix es una imagen ISO [25] que se graba en un CD-ROM y que cuando queremosmodificar esta distro es condicion sine qua non una base Knoppix. Por eso crearon Morphixcon un diseno modular. La idea es que el usuario descarga un modulo base (unos 180 Mb)y lo completa a su gusto con los modulos que contengan los paquetes de software que elusuario necesite en su distribucion.

En Morphix encontramos una lista de software disponible mas extensa y mejor ordenada(al estar agrupados en modulos). El usuario debe elegir de entre este software para crearsu distribucion ya que todo el conjunto no cabe en un CD-ROM de 700 Mb.

4.2.3. Descripcion y funcionamiento

El funcionamiento es muy parecido al de Knoppix. Al arrancar el CD el modulo base secarga y se ejecuta para configurar el hardware. A continuacion se mira si existe algun mini-modulo que deba cargarse con el modulo principal, en caso afirmativo se carga y se ejecutanlos scripts de configuracion de los mismos. Finalmente se carga el modulo principal y seejecutan todos los scripts de inicio propios del modulo para generar el entorno de usuario.

30

Page 31: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Una distribucion Morphix cuenta con:

Un modulo base, que contiene un kernel basico, modulos para este kernel y un sistemade deteccion de hardware automatico. Es la parte del proyecto que se ha tomado deKnoppix.

Un modulo principal donde se encuentra el sistema de ficheros de la distribucion ytodo el entorno de usuario junto con el software ya instalado (X11 [66], windowmanager 1, aplicaciones, etc...). Es independiente del modulo base.

Uno o varios mini-modulos, cada uno de ellos es un sistema de ficheros comprimidocon scripts de inicializacion. Estan relacionados con uno o varios modulos principales.Se utilizan para modificar los entornos de usuario.

A parte de estos 3 tipos de modulos, la Live-CD al arrancar comprueba ademas estos 3directorios:

El directorio /deb : Los paquetes Debian [51] que se incluyen en este directorio seinstalan en la distribucion en tiempo de arranque del sistema.

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

El directorio /copy : Todos los ficheros y directorios que contenga esta carpeta secopiaran en el sistema de ficheros raız en el arranque del sistema. Los ficheros que yaexistan seran modificados.

Esta estructura en partes independientes permiten una gran versatilidad a la hora decrear entornos, pero debemos tener varias cosas en cuenta, y es que todo lo que no este enlos modulos principales se instala en tiempo de arranque. Por tanto si explotaramos estaopcion de construir el sistema a partir de modulos en tiempo de carga, podemos conseguirunos tiempos de arranque prohibitivos. Si prescindimos de estas caracterısticas nos encon-tramos con un sistema muy parecido a Knoppix [58], donde debemos modificar un moduloprincipal configurado de una determinada manera.

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

31

Page 32: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

4.2.4. Conclusiones

Morphix es un proyecto muy ambicioso, aparentemente permite a los desarrolladoresmucha flexibilidad a la hora de crear las distribuciones gracias al sistema de modulos.Su sistema de instalacion mediante una GUI permite a los usuarios inexpertos en Linuxinstalar la distribuciones con algunos clicks de raton.

Figura 4.2: Morphix con el modulo del escritorio IceWm

Uno de los inconvenientes de Morphix es la falta de documentacion tecnica sobre el pro-yecto y su estructura. Ademas al estar muy arraigado a Knoppix, tampoco esta pensadopara partir de un sistema GNU/Linux propio. Para desarrollar un sistema basado en Morp-hix siempre hay que partir de una distribucion Morphix, y no es lo que buscamos para elproyecto.

4.3. Metadistros

4.3.1. Introduccion

A diferencia de los dos sistemas anteriores, no se trata de una distribucion. Es un proyectode Hispalinux [18], una comunidad de desarrolladores hispanos sobre GNU/Linux. Laidea es crear una infraestructura para crear Linux Live-CDs [36] a partir de cualquierinstalacion de Linux, ya sea partiendo de una distribucion hecha o una distribucion propiaque el usuario quiera convertir a Live-CD. Aunque la idea es un poco diferente, su basesigue siendo Knoppix [58].

32

Page 33: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

El conjunto de herramientas de Metadistros [53] permiten un potencial creador muypor encima del resto de estructuras Live-CD. Segun las especificaciones se puede convertircualquier instalacion, incluso las no basadas en Debian, en un Live-CD con Metadistros. Elproyecto se encuentra en continuo desarrollo y surgen nuevas herramientas y mejoras conmucha frecuencia.

4.3.2. Motivacion

Los creadores de Metadistros tienen una meta clara: generar una estructura que nospermita en un momento determinado crear a partir de una instalacion de Linux cualquieraun Live-CD de gran fiabilidad y estabilidad. Esta especificacion genera un producto muyutil. Cualquier desarrollador puede generar un entorno personalizado y transportarlo aotro equipo solo con un CD-R, y las posibilidades de ese entorno son ilimitadas, ya que elusuario puede crear un Live-CD de cualquier distribucion Linux.

Por eso no tiene sentido hablar de listas de software incluido, modulos disponibles,etc. . . Podemos construir un Live-CD con cualquier distribucion Linux, siempre y cuan-do comprimida nos quepa en el CD-R. Actualmente podemos tener distibuciones de hasta2 Gb en un solo CD-R de 700 Mb.

4.3.3. Descripcion y funcionamiento

El funcionamiento de esta distribucion se explicara con detenimiento posteriormente enesta memoria, ya que este proyecto esta basado en Metadistros. Basicamente lo que haceMetadistros para arrancar el sistema desde un Live-CD es cargar un pequeno sistema muybasico con isolinux (ver Seccion 3.2) llamado calzador [1], que se encarga de efectuar la de-teccion y configuracion del hardware, generar los scripts necesarios para el funcionamientode GNU/Linux y montar la distribucion comprimida con cloop [2]. Finalmente se enlazanlos directorios que necesitan escritura con un sistema de ficheros montado en la RAM, yse 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 distribucion que queremos convertir en Live-CD, que se guarda en un archivocomprimido con el driver cloop (ver Seccion 3.3), al igual que Knoppix [58]. Adiferencia de Knoppix, esta distribucion puede ser cualquier sistema GNU/Linux (notiene porque ser Debian [56]), aunque como veremos mas adelante debe cumplircon alguna caracterıstica especial y deberemos modificar algunas cosas para que seaLive-CD.

33

Page 34: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

La otra parte de la estructura es lo que se llama el calzador [1]. Se trata de unconjunto de herramientas que hace que el CD sea auto-arrancable y se encarga depreparar el sistema para iniciar la distribucion contenida en el archivo cloop. En estecalzador encontramos el cargador Isolinux (ver Seccion 3.2) y un conjunto de scriptsque basicamente se encargan de detectar el hardware de la maquina y configurarlo,recoger informacion sobre el usuario si es necesario, y generar los scripts en funciondel hardware encontrado para que la distribucion pueda iniciarse con exito.

Mas adelante veremos como la distribucion no es totalmente independiente del calzadory que debe cumplir con unas especificaciones para que el calzador sea capaz de iniciarlacorrectamente.

4.3.4. Conclusiones

El proyecto Metadistros cuenta con un gran numero de desarrolladores voluntarios quemantienen el proyecto en constante evolucion. Ademas cuenta con un gran volumen deinformacion sobre el proyecto. Por esto y debido a su especificacion tan adaptada a nues-tras necesidades, Metadistros sera el candidato elegido finalmente para desarrollar nuestroproposito, el proyecto GNU/Linux FME.

4.4. Otros sistemas Linux Live-CD

Existen multitud de proyectos Linux Live-CD, algunos mas completos y desarrolladosque otros, pero todos ellos con Knoppix como base de la estructura principal de la distro.Todos los ejemplos indicados a continuacion son modificaciones de alguna de las Live-CDsexplicadas hasta ahora, por lo tanto me limitare a describir brevemente lo que tienen deespecial cada una sin entrar en gran detalle.

4.4.1. Gnoppix

Esta basado directamente en Knoppix [58]. La diferencia principal es que Gnoppix [15]utiliza Gnome [13] como entorno de escritorio en lugar de KDE [57]. Esta basado en ladistribucion estable de Debian [56], aunque toma muchas aplicaciones de la version testing,por lo que no se puede considerar del todo estable.

Integra una aplicacion diferente de deteccion de hardware. Se trata de Discover [7],una aplicacion independiente mas confiable que Kudzu (ver Seccion 3.4). De esta forma,

34

Page 35: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Gnoppix puede que sea capaz de detectar y configurar hardware mientras Knoppix no seacapaz, aunque tambien puede darse el caso contrario.

El paquete de software que incluye Gnoppix es tan variado como el de Knoppix, conprogramas de proposito general, de testeo y configuracion de equipos, software de oficina,entornos de desarrollo, etc. . .

4.4.2. Quantian

Quantian [44] es una modificacion de Knoppix [58] con el fin de crear una distribucionpara el colectivo cientıfico, esto es, matematicos, fısicos, estadistas, etc. . . En un principioparece una buena base para desarrollar el proyecto GNU/Linux FME pero al ser unamodificacion muy basica de Knoppix no podemos asegurar la estabilidad de la distribucion.

Incluye algunas de las aplicaciones incluidas en GNU/Linux FME como por ejemploOctave [39], Maxima [35], GNUPlot [40] o PSPP [43]. Ademas incluye software deinformacion geografica, librerıas de calculo financiero, modulos cientıficos para Python,ası hasta cerca de 500 Mb de programario especıfico.

4.4.3. ACM-λux

Se trata de una distribucion Lux modificada por los estudiantes de la Universidad ReyJuan Carlos de Madrid, y la finalidad es la misma que la que persigue este proyecto, quelos alumnos tengan un sistema con el que desarrollar sus practicas en un entorno libre.

El proyecto [8] esta en fase de desarrollo y todavıa no ha sido liberada ninguna distri-bucion oficial.

4.4.4. gKnx

Se trata de un sistema GNU/Linux muy basico que unicamente ocupa 39 Mb [36]. Esuna instalacion basica de Debian con el instalador de Knoppix incorporado. El proyectoesta pensado para hacer demostraciones en CD Business-Cards (ver pagina 19) e instala-ciones mınimas de Debian.

35

Page 36: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

4.4.5. OverClockix

Es una distribucion basada en Knoppix [58] que contiene una infinidad de herramien-tas de testeo de hardware (tests de memoria y de CPUs), seguridad en redes, softwareantivirus (incluso para Windows c©), etc. . . Contiene, a parte de los incluidos con Knoppix,controladores adicionales de tarjetas de vıdeo y winmodems [41].

4.4.6. Gnome2Live

Basado en Metadistros [53], contiene una las ultimas versiones de software para Debian[56] y Gnome [13]. Esta basado en Ximian Desktop [67], un entorno de escritorio muypotente y vanguardista. Esta pensado para los usuarios que nunca han visto Linux. El en-torno es muy visual y contiene un gran conjunto de aplicaciones multimedia (reproductoresde vıdeo, MP3, imagenes. . . ) 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 estasdistribuciones, no continuaremos su estudio y si el lector desea seguir profundizando en eltema, puede encontrar mucha mas informacion en [36].

36

Page 37: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Capıtulo 5

¿Como se crea una Live-CD?

En este capıtulo el lector descubrira como es posible conseguir un sistema Linux auto-arrancable en un solo CD-ROM. Profundizare en la estructura de estas distribuciones paraconocer el entorno y comprender su funcionamiento. Mi objetivo es ofrecer una solucional problema de conseguir que una distribucion Linux [55] pueda ser arrancada desde unCD-ROM. Por eso explicare un metodo generico de conseguir el objetivo, sin detenerme enexplicar todas las posibles variantes y alternativas de diseno. Todo el capıtulo esta basadoen la documentacion de [3]

5.1. Introduccion

El objetivo es conseguir que nuestra distribucion Linux arranque desde un CD-ROM sinnecesidad de disco duro. Una vez se cual es mi objetivo me propongo a saber como voy aconseguirlo. Para empezar me planteare que es lo que necesito para crear un trabajo comoel descrito:

1. Si deseo conseguir una distribucion Linux en un CD-ROM lo primero que necesito esuna distribucion Linux instalada y configurada en mi PC. En principio esta distribu-cion podrıa ser cualquiera, pero mas adelante averiguaremos que el nucleo que debeutilizar esta distribucion debe cumplir ciertas especificaciones. A esta distribucion lallamaremos de aquı en adelante la distribucion source.

2. Necesitaremos otra distribucion Linux instalada para crear las imagenes ISO [25] dela Live-CD y para grabar los CD-ROM con nuestro sistema (distribucion host).

37

Page 38: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

3. Nuestro PC debe ir equipado con una grabadora de CDs, ademas debemos tener va-rios CD-R para poder grabar las imagenes. Es muy recomendable empezar grabandolas Live-CDs en CD-RW, y una vez que funcionen grabar la version definitiva en unCD-R. Durante el proyecto se han utilizado varios CD-RW para las pruebas, y CD-Rpara las versiones definitivas.

4. Necesitaremos un software que permita arrancar el nucleo de nuestra Live-CD desdeel CD-ROM. Un sistema ideal para este fin es ISOLINUX (ver Seccion 3.2).

Una vez conseguidos los ingredientes debemos combinarlos para que el resultado seael esperado. La idea principal es modificar el nucleo de la distribucion source para crearuna ramdisk (ver Seccion 3.1) en la RAM, de forma que podamos tener espacio donderealizar escritura. La ramdisk arrancara con una estructura de directorios comun a todoslos sistemas Linux. El directorio raız contiene un directorio adicional, /meta, que contienetodos los directorios del sistema de ficheros raız que necesitan permisos de escritura. Utilizoenlaces simbolicos de los directorios de mi sistema que necesiten escritura a los directorioscontenidos en /meta. Ademas de este directorio tengo otro, /ramdisk, que me servira paramontar 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

Page 39: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Seguidamente se ejecutara el guion linuxrc, que se encargara de buscar la unidad de CD-ROM que contiene la distribucion. Despues de encontrarla, la monta en un directorio delsistema de ficheros actual y ejecuta un pivot root (ver Seccion 3.5) a el directorio dondeesta montada la distribucion. Finalmente linuxrc invocara al proceso init del sistema paracomenzar la inicializacion de nuestra distribucion.

Una vez presentado el funcionamiento general de nuestro sistema debemos establecer unguion para conseguir nuestro objetivo. A continuacion pasare a detallar los pasos que sedeben completar para conseguir el objetivo final.

5.2. Configuracion del nucleo

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

fme:/# make menuconfig

y en el menu de configuracion del nucleo debemos 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 tamano de 4 Mb y soporte para initrd [4]. El tamanopor defecto lo fijamos a 4Mb, si despues quisieramos mas espacio de disco virtual podemosmodificar este valor pasandole el parametro al nucleo en el momento de la carga. El soportepara initrd lo utilizaremos para arranque con el sistema de ficheros contenido en el ficheroinitrd.

Como ya hemos dicho necesitare activar la compatibilidad con el sistema de ficheros ISO9660, de modo que activo la siguiente opcion:

File systems --->

<*> ISO 9660 CDROM file system support

Debo activar ademas los controladores que necesita el equipo donde se va a ejecutar ladistribucion. Si activamos un gran numero de controladores, deberıamos pensar en cargar

39

Page 40: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

algunos de estos como modulos, ya que no es conveniente que el tamano del nucleo crezcaexcesivamente.

Finalmente creo el nuevo nucleo con 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

Tambien he copiado el fichero del mapping de sımbolos del nucleo, por si el nucleo tieneproblemas para resolver algun sımbolo en tiempo de ejecucion que pueda consultarlo eneste fichero.

Una vez conseguido es conveniente probar que el nucleo es capaz de arrancar la ramdisk[10]. Para ello debo configurar nuestro gestor de arranque (Lilo [30], GRUB [16]. . . ) paraque seleccione el nucleo que he creado. Tras reiniciar mi sistema, creo un sistema de ficherosen la ramdisk con la instruccion:

fme:/# mke2fs /dev/ram0

Este comando intentara crear un sistema de ficheros en el primer ramdisk del sistema. Paraprobar su funcionamiento podrıa montar el nuevo sistema de ficheros en un directorio denuestro sistema, por ejemplo:

fme:/# mount /dev/ram0 /mnt

Una vez que tengamos el dispositivo funcionando, podemos continuar con el siguienteapartado. En caso contrario, debemos revisar de nuevo el procedimiento de creacion de laramdisk. Debemos tener en cuenta que el dispositivo solo esta disponible en versiones delnucleo superiores a la 1.3.73. Lo mas sencillo serıa revisar los mensajes generados por lacompilacion del nuevo nucleo para buscar posibles fallos de compilacion, o bien revisar losarchivos log del inicio del sistema en /var/log/messages.

40

Page 41: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

5.3. Cambios en la estructura del sistema de

ficheros de la distribucion source

Necesitare mover los directorios que necesiten permisos de escritura al directorio /meta.La idea es la siguiente: una vez iniciado ramdisk [10], necesito tener permisos de escrituraen algunos directorios antes de iniciar la ejecucion del proceso de inicializacion del sistema.Necesito mover estos directorios al dispositivo ramdisk. Lo mas sencillo es tener todosestos directorios que necesitan escritura ubicados en un mismo directorio del sistema deficheros de forma que pueda copiar todos estos directorios al dispositivo ramdisk y, unavez copiados, montar el dispositivo ramdisk sobre el directorio que contenıa los directorioscopiados. De esta forma, conseguirıa tener permisos de lectura/escritura sobre todos losdirectorios que la necesitaran.

Para conseguir crear esta estructura de directorios y enlaces simbolicos debo arrancar miPC 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 distribucion quequiero modificar (source) a un directorio de mi sistema Linux que he arrancado. Suponiendoque source se encuentra en la primera particion del primer disco, operarıa de la siguienteforma:

fme:/# mount /dev/hda1 /mnt

Una vez montado el sistema source paso a crear el directorio donde finalmente se montara elespacio ramdisk y despues a mover los directorios que necesitan escritura al directoriocreado:

fme:/# mkdir /mnt/meta

fme:/# cd /mnt

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

Con esta estructura el sistema no podrıa arrancar correctamente, ya que hemos movidodirectorios importantes del sistema. Ahora creamos enlaces simbolicos a la nueva ubicacionde 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

Page 42: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Finalmente he de crear el directorio donde posteriormente se montara en un principio eldispositivo ramdisk [10, 19]:

fme:/# mkdir /mnt/ramdisk

Con esta instruccion he acabado de configurar el sistema de ficheros de mi distribucionsource. Ahora que he conseguido la estructura necesaria, necesito proveer al sistema delguion apropiado para realizar todas las operaciones necesarias para que el sistema puedaarrancar aprovechando la estructura creada.

5.4. Configuracion de fstab

El fichero de configuracion /etc/fstab es consultado por el nucleo para montar el sistemade ficheros [31]. El fichero consta de varias entradas, donde indica las particiones que semontaran sobre el sistema de ficheros raız y el punto de montaje. El punto de montajees el directorio sobre el que se montara la particion dentro de el sistema de ficheros raız.Dejare unicamente la entrada correspondiente a proc:

proc /proc proc defaults

El primer parametro es el dispositivo que monto, proc. No se trata de un dispositivo fısico,sino de un sistema de ficheros virtual, que permite mantener la informacion del nucleo enuna estructura de ficheros y directorios que puede ser montada en el sistema de ficherosprincipal. El segundo parametro me sirve para indicar al nucleo que debe montar proc en eldirectorio /proc. El tercer parametro indica al nucleo que el dispositivo que estoy montandoes del tipo sistema de ficheros virtual proc. Finalmente le indico en el cuarto parametroque monte el sistema con las opciones por defecto.

5.5. Configuracion de 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 configurarcorrectamente el dispositivo ramdisk de forma que los directorios que necesiten escrituraesten ubicados en mi espacio de disco virtual en RAM. Como ya hemos apuntado, lo quehara este guion sera montar 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 montarel ramdisk donde estan apuntados los directorios copiados. Un ejemplo de guion con lascaracterısticas indicadas es el siguiente:

42

Page 43: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

#!/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 senalamos la ubicacion del script que las contiene(“/etc/init.d/functions”). Este fichero no existe en Debian, pero podemos conseguirlo facil-mente de la distribucion Linux from Scratch [52].

El script mira si el parametro es start (Condicion de iniciar el servicio). Si es ası daformato al dispositivo ramdisk $dev ram, lo monta en $dir ramdisk, copia los ficheros ydirectorios que necesitan escritura en el directorio $dir needwrite y monta $dev ram en$dir needwrite. En caso contrario finaliza la ejecucion del script con un valor de error.

43

Page 44: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

El guion lo guardo en el directorio donde se encuentran el resto de scripts de sistema,en /etc/init.d1. Para que el sistema ejecute el script que acabamos de crear debemos darlepermisos de ejecucion:

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

En mi caso, Debian [56], ademas debo enlazar este script con el directorio rcS.d, quecontiene los links a los scripts que se ejecutan en caso de iniciar el sistema en modomonousuario (“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 ningun otro servicio (numero de orden 00)ya que los demas servicios necesitaran los directorios montados para realizar escrituras.

5.6. Instalacion de Isolinux

Como hemos visto en la seccion 3.2 Isolinux es un gestor de arranque para sistemas deficheros ISO 9660 [25]. Utilizare esta herramienta tan util para controlar el arranque demi distribucion. La idea es que Isolinux comience su ejecucion inicializando el dispositivo/dev/initrd (ver Seccion 3.6). De esta forma se carga en memoria el sistema de ficheroscontenido por initrd, y se ejecuta el fichero linuxrc, donde puedo colocar un script que seacapaz de encontrar la ubicacion de la unidad de CD-ROM donde se encuentra mi sistemaLive-CD, y posteriormente arrancar el sistema encontrado debidamente.

Empecemos por el principio. Para utilizar Isolinux en mi distribucion debo instalar estaherramienta en mi sistema diferente a la distribucion que intento convertir en autoejecuta-ble (host). Para instalar Isolinux solo necesito descargar de la pagina web de SYSLINUX[48].

1En el caso de Debian los scripts de sistema se encuentran en este directorio, pero puede cambiar sila distribucion a convertir no es Debian. Puede consultar la documentacion de la distribucion si deseaconvertir una distro diferente a Debian

44

Page 45: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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

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

Para arrancar nuestro sistema no sera necesario instalar todo el sistema Isolinux en nuestradistribucion source. Tan solo necesito copiar el fichero isolinux.bin que es el fichero que seejecuta cuando el CD-ROM comienza su ejecucion. Isolinux busca un directorio /isolinux,mas concretamente un fichero de configuracion llamado isolinux.cfg, donde tiene las ins-trucciones para iniciar el sistema. Como la configuracion de nuestro sistema es muy sencillaeditare este 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 configuracion es muy sencillo de entender. Le indico a Isolinux que el nucleose encuentra en /isolinux/metaKernel. La instruccion append permite pasar parametros alnucleo, de manera que la ultima lınea indica al nucleo que debe arrancar en modo initrd,que debe montar la ramdisk en el dispositivo /dev/ram0, que el primer proceso que debeejecutar es linuxrc, y finalmente indicamos que queremos aumentar el tamano de la ramdiskhasta los 16 Mb.

El fichero de configuracion debe ir tambien ubicado en /isolinux, al igual que todoslos archivos que se necesitan para arrancar el nucleo. Por lo tanto haremos una nuevamodificacion a 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

Page 46: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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 nucleo con la opcion initrd,lo que necesitamos para completar nuestro Live-CD es precisamente el fichero initrd conel sistema de ficheros que se montara al inicio.

5.7. Configuracion de initrd

Necesito crear un sistema de ficheros en un fichero initrd [4] para que este sea montado aliniciar mi Live-CD. La idea es que el nucleo monte en primer lugar, este sistema de ficheroscomo raız, e inicie la ejecucion del fichero linuxrc que se encuentra dentro de este sistema deficheros. Este ejecutable debe configurar el sistema para que nuestra distribucion Live-CDpueda iniciarse correctamente. Para conseguir un fichero de este tipo, arrancare mi sistemaLinux source y procedere de 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 estandar hacia la salidaestandar. 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 comose le indiquen en la operacion de lectura. De esta forma consigo un fichero lleno de ceros,de un determinado tamano. Este tamano se determina con los dos parametros siguientes.Indico que quiero leer 6144 bloques de 1024 bytes cada uno, en total 6Mb. Una vez creadodebo construir el sistema de ficheros:

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

La instruccion da formato al sistema de ficheros [23] dentro del archivo initrd [4]. Indicocon los parametros que no quiero reservar ningun porcentaje de espacio para el usuarioroot en el sistema de ficheros y que el tamano de los inodes debe ser de 1024 bytes (1 Kb).Finalmente le indico el nombre del fichero que debe formatear. Una vez formateado, debocrear la estructura de directorios y ficheros que necesito para iniciar un sistema mınimo queconfigure el inicio de mi distribucion Live-CD. Para operar dentro de initrd debo montarloen mi sistema de ficheros:

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

46

Page 47: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

La estructura de directorios que debe contener initrd no debe ser tan completa como la deun sistema Linux corriente. Debemos tener en cuenta que no se va a iniciar ningun nucleoni se validaran usuarios, por tanto prescindire de directorios como /boot, /home, /etc, /tmpo /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 guion linuxrc para que detecte y configure la distribucion Live-CDcontenida en el CD-ROM. Este guion necesitara algunas herramientas de Linux disponiblesen el sistema para poder ejecutarse, por lo tanto debo copiar estas herramientas a el nuevosistema de ficheros. En el caso de Debian estas herramientas son:

fme:/# cp /bin/{bash,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 ademas las librerıas de sistema y los dispositivos que se utilizaran enlinuxrc:

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 opcion -dR indica a cp que debe hacer una copia recursiva de ficheros y directorios,pero no debe seguir los enlaces simbolicos, simplemente copiarlos como si fueran ficherosordinarios. Ahora ya disponemos de las herramientas necesarias, tan solo queda un par dedetalles:

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

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

Estos dos enlaces simbolicos nos permitiran utilizar el lenguaje de programacion shell-script[32] para crear el guion de inicio del sistema, el fichero linuxrc.

47

Page 48: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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 guion debe encontrar la unidad de CD-ROM que contiene la imagen de la distribucionLive-CD, montarla y pasar el control al proceso init de dicha distribucion. El codigo enterode linuxrc se puede consultar ıntegro en Apendice A. A continuacion explicare cuales sonsus pasos e instrucciones mas relevantes:

El guion comienza definiendo variables. La primera variable es la etiqueta que identifica ami distribucion Live-CD. La utilizare mas adelante cuando encuentre un CD-ROM y quieraasegurarme de que se trata de mi distribucion. La variable $TMP MOUNT la utilizo paraindicar al proceso donde debe montar la distribucion antes de montarla como raız. Lavariable $PATH indica la ubicacion de los ejecutables que se utilizan en el guion.

Para continuar la ejecucion del script, debemos tener montado el directorio /proc, ya quealgunas de las utilidades que usamos durante el script accede a este sistema de ficherosvirtual. El paso 0 se encarga de ello comprobando si esta montado, y montandolo si esnecesario.

48

Page 49: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

El primer paso es buscar las diferentes unidades de CD-ROM que se encuentran en la PCen que se esta ejecutando la Live-CD. El procedimiento varıa si utilizamos DEVFS (verSeccion 3.7) o no. En el script se contemplan las dos posibilidades. El script comprueba queexista el nombre de la unidad en el sistema de ficheros. Si existe la anade a una variable$CDROM LIST y continua buscando unidades. Cuando no quedan mas dispositivos porescanear el bucle termina y pasa al siguiente paso.

En el paso 2 utilizo la lista de unidades de CD-ROM en la variable $CDROM LISTpara encontrar la unidad de CD-ROM donde se encuentra mi Live-CD. Creo un nuevobucle que recorrera la lista comparando el ID del CD-ROM que se encuentra en la unidadcon el ID de mi distribucion. El ID es un nombre que se le da al CD-ROM, en mi casolo 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 seccion siguiente comole asignamos este identificador al CD-R). El bucle recorre la lista hasta que encuentra elCD-ROM de la Live-CD, guarda la ubicacion de 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 distribucion Live-CD pasamosa la parte mas interesante del script. La explicacion la realizare paso 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 opcion -nse utiliza para evitar actualizar el fichero mtab, que mantiene el control de las unidadesmontadas 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 opcion -o ro indica que elsistema debe ser montado como solo-lectura. Seguidamente indico el tipo del sistema deficheros que queremos montar, en nuestro caso es el ISO9660 [25]. Finalmente le pasamosel dispositivo donde se encuentra la distro y el directorio del sistema de ficheros raız dondequiero montarlo.

cd $TMP_MOUNT

pivot_root . mnt

Me posiciono en el directorio donde acabo de montar mi distribucion Live-CD y seguida-mente ejecuto el comando pivot root (ver Seccion 3.5), que me cambia la ubicacion deldirectorio raız de mi sistema. Al acabar la sentencia la raız del sistema en memoria apuntaal arbol de directorios de mi distribucion, y el anterior arbol de directorios queda montadoen la ubicacion que le paso como segundo parametro, el directorio tmp. De esta forma yatengo el sistema de ficheros que necesito para arrancar mi distribucion.

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

49

Page 50: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Con este comando desmonto el sistema de ficheros virtual que mapea los procesos enejecucion del nucleo. De esta forma cuando arranque la distribucion Live-CD y lea sufichero /etc/fstab podra montar su propio espacio virtual en su sistema de ficheros. Laopcion -n indica que no se debe modificar el fichero /etc/mtab. En este caso el fichero siexiste, ya que nos encontramos dentro del arbol de directorios de la distribucion Live-CD,pero no modificaremos ese archivo ya que no es consciente todavıa de que existıa un sistemade ficheros proc montado.

exec chroot . sh -c umount -n /mnt >/dev/null 2>&1; \

exec -a init.new /sbin/init 3’ </dev/console >/dev/console 2>&1

Estas dos lıneas se ejecutan como una unica sentencia, ya que el backslash que hay al finalune las dos lıneas al pasarlas a la shell [32]. El comando exec ejecuta la siguiente instruccionreemplazando el proceso de la shell en ejecucion hasta ahora. La instruccion chroot haceel cambio definitivo al directorio raız, por si no lo habıa hecho ya la instruccion pivotroot (ver Seccion 3.5). A la vez desmonto el sistema de ficheros de initrd. Al desmontar nomodifico el fichero /etc/mtab ya que no tiene consciencia de la existencia de este sistemade ficheros ramdisk, redireccionando la salida estandar y el error estandar hacia /dev/null,de forma que si hay algun mensaje al desmontar lo ignoramos. La instruccion vuelve ahacer un cambio de contexto del proceso actual, esta vez para arrancar definitivamenteel proceso init, el padre de todos los procesos de un sistema Linux. Todos los canales losdireccionamos hacia el dispositivo consola /dev/console de la distro Live-CD para poderinteractuar posteriormente con la shell que se ejecuta.

Para que este script se ejecute cuando arranque el nucleo con initrd debo dar permisosde ejecucion en el archivo.

fme:/# chmod 755 /mnt/linuxrc

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

fme:/# cd /

fme:/# umount /mnt

fme:/# gzip /isolinux/initrd

Ya tengo todo lo necesario para crear un CD-R con mi sistema operativo Linux convertidoen un Live-CD. Lo unico que me queda es grabar el CD auto-arrancable.

50

Page 51: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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 modificacion adicional no especificada en las instruccionesgenericas, o simplemente, que haya cometido algun error. Por eso es mejor crear primerola Live-CD en un CD-RW y cuando me haya asegurado que el resultado es el esperado,entonces grabar la version definitiva en un CD-R.

El software mas utilizado de grabacion de CDs en GNU/Linux es cdrecord. Para grabarCDs con GNU/Linux y cdrecord es necesario modificar las opciones del nucleo Linux si,como en mi caso, la grabadora es IDE. El nucleo debe tener activada la emulacion SCSIde unidades IDE CD-ROM, por lo que tengo que recompilar un nuevo nucleo para crearmi sistema Live-CD.

El metodo para crear el CD-R final sera crear una imagen ISO [25] de todo el sistema.Despues con la ayuda de cdrecord grabare esta imagen en el CD. Para crear la imagennecesito el software mkisofs , por lo que debo instalarlo en mi sistema. Lo primero quearrancar con mi sistema host y montar la particion donde tengo el sistema source en undirectorio, como por ejemplo, en /mnt. Si tengo el sistema en la segunda particion delprimer disco duro, la instruccion queda:

fme:/# mount /dev/hda2 /mnt

Despues creo 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 permitirnombres de ficheros y directorios que no cumplan el estandar ISO9660 [25], y sobre todo-b que indica a mkisofs que se trata de un CD-ROM que cumple con el estandar El Torito[24] para CD auto-arrancables. -no-emul-boot indica que no se trata de una imagen quedebe cargarse directamente sin utilizar emulacion de arranque desde disquet. La opcion masimportante es -V, que me permite especificar un Volume ID para el CD-ROM, esto es, unnombre identificador para la Live-CD. Este identificador debe coincidir con el identificadorque indique al guion /linuxrc dentro del archivo de initrd, ya que es el nombre con el queel guion identifica donde se encuentra ubicado el CD-ROM de la Live-CD.

51

Page 52: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

El comando cdrecord no merece tantos comentarios. La opcion -v unicamente se utilizapara que la aplicacion muestre el progreso de la grabacion en pantalla. Con dev indicoal programa que dispositivo SCSI debe utilizar para realizar la grabacion, y finalmente leindico la velocidad de grabacion con el parametro speed.

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

5.9. Conclusion

Este sistema de crear Live-CDs es el mas sencillo y el que ofrece mas control al desa-rrollador, sin embargo no ofrece las prestaciones que un proyecto como GNU/Linux FMEpretende ofrecer.

La distribucion GNU/Linux FME pretende llegar a todos los estudiantes y profesoresde la Facultad de Matematicas y Estadıstica. Por este motivo, la distribucion debe estarpreparada para ejecutarse en cualquier conjunto de hardware.

En este capıtulo he desarrollado una distribucion con un nucleo que contiene controlado-res para mi ordenador, sin tener en cuenta las distintas configuraciones que puedan tenerun colectivo tan grande con es una facultad.

Se podrıa crear un nucleo que cargara todos los controladores disponibles, pero enton-ces tendriamos un nucleo muy pesado, que ocuparıa una cantidad inmensa de recursos yofrecerıa un rendimiento muy pobre.

La distribucion obtenida es util para crear copias de seguridad “vivas”, y es una ayudamagnifica para entender como funcionan los sistemas de Linux Live-CD [36], ya que todosofrecen una estructura muy semejante a la distribucion que acabo de describir.

52

Page 53: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Capıtulo 6

Estructura y funcionamiento deMetadistros

Es hora de estudiar en profundidad como funciona una Live-CD hecha con Metadistros[53]. En este capıtulo describire en profundidad cada una de las partes de que se componeuna metadistro, como funcionan estas partes, como se podrıan mejorar, como se puedemodificar el comportamiento de algunos componentes, etc. . .

Ademas dare pistas sobre los posibles problemas con los que un desarrollador de Me-tadistros se puede encontrar, y ası facilitare el camino a los osados lectores que quieranprobar la creacion de su propia metadistro. El capıtulo esta basada en el documento [70].

6.1. Introduccion

En el capıtulo anterior he mostrado como desde una distribucion estandar de GNU/Linuxse puede crear una Live-CD. El proceso no requiere grandes conocimientos de programa-cion ni se compone de innumerables componentes software adicionales para conseguir esteobjetivo, sino que se ha optado por una estructura muy sencilla y facil de entender.

Pues bien, tanto Metadistros como el resto de Live-CDs que existen actualmente tienenun 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 enel mismo modelo.

Se trata de conseguir un arranque en dos fases, el primero carga un sistema muy pequenoen la memoria RAM con instrucciones basicas para configurar el segundo sistema, quesera el mas completo y el que mas se diferencia de unas Live-CDs a otras.

53

Page 54: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

En Metadistros han dividido toda la estructura en dos partes fundamentales. De algunamanera estas dos partes se corresponden con cada uno de los dos sistemas que se cargan enmemoria cuando se ejecuta la metadistro, y son (casi) independientes entre sı. Por un ladoesta el calzador [1], que se encarga de inicializar la ramdisk (ver Seccion 3.1), el nucleoy la configuracion de los modulos y scripts de arranque del nucleo (el primer sistema), ypor otro lado tengo la distribucion.

6.2. Esquema de Metadistros

Como ya hemos dicho antes, una metadistro se divide en dos partes diferenciadas y casiindependientes. Voy a ver que aspecto tienen estos dos componentes y como interactuanentre 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 maquina, configurarlo, recoger la informaciondel usuario o de la distro y levantar un sistema live con la Distribucion 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ısticas deseadas que deberıa tener el calzador, entre lascuales destaco las siguientes:

1. Debe ser modular, modificable y configurable

2. Sencillo de cara al usuario (se utilizan scripts con interfaz grafica para interaccionarcon el usuario)

3. Debe poder tanto arrancar el sistema como instalarlo (la instalacion todavıa es untema 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 standar El Torito [24] contienen un directorio llama-do /isolinux. Este directorio contiene todos los componentes del calzador. Para empezardescribire todos los ficheros de Metadistros que son especıficos de Isolinux [5]:

54

Page 55: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

isolinux.bin: Es el codigo que se ejecuta cuando la BIOS arranca desde el CD-ROM. Contiene instrucciones basicas para iniciar el sistema utilizando los archivosde configuracion y brinda al usuario un prompt1 donde ejecutar comandos.

boot.cat: Contiene informacion sobre el sistema de ficheros contenido en el CD-ROM.

isolinux.cfg: Archivo de configuracion de Isolinux. Permite entre otras cosas elegirel nucleo que se arrancara por defecto, configurar el aspecto que muestra Isolinux alarrancar, cambiar el mapa de teclado o establecer un timeout para el arranque delsistema.

greeting: Contiene el mensaje con el que se recibe al usuario al arrancar el sistemacon el CD-ROM. Permite cargar imagenes de extension LSS para mostrarlas al inicio.

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

vmlinuz: Nucleo Linux [63] de la metadistro.

initrd: Imagen del sistema que se carga en la ramdisk (ver Seccion 3.1).

Los archivos mas importantes del calzador son isolinux.bin, el nucleo vmlinuz y el ficheroinitrd.

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

El subdirectorio cdroot

El subdirectorio /isolinux/cdroot contiene las herramientas que utilizara el proceso quese encarga de detectar el hardware y configurar el entorno. Se compone de otros cuatrosubdirectorios:

En /isolinux/cdroot/hwdata puedo encontrar las librerias que utilizan las rutinas deKudzu (ver Seccion 3.4) para la deteccion de hardware.

En /isolinux/cdroot/locale estan los directorios y fcheros de configuracion del idiomade la metadistro.

El directorio mas importante es /isolinux/cdroot/sbin, que contiene varias aplicacio-nes y scripts que se utilizan durante la ejecucion de Metadistros (NOTA: el contenido deeste directorio cambia de una version del calzador a otra, en este apartado se describe laversion de GNU/Linux FME):

1Interprete de comandos que permite al usuario utilizar la consola para introducir ordenes al software

55

Page 56: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

busybox es un ejecutable que permite utilizar algunos comandos de Linux con lasopciones mas utilizadas, de forma que en un unico ejecutable de espacio reducidoobtenemos un completo conjunto de comandos basicos de Linux. Se utiliza cuandose carga el sistema initrd para minimizar el tamano de la ramdisk.

cfdisk es un software para formatear discos, con una interfaz grafica muy intuitivapara los usuarios.

dialog permite a los scripts construir interfaces graficas para interactuar con el usua-rio, por ejemplo, para mostrar mensajes en el proceso de carga de Metadistros o parahacer preguntas a los usuarios.

eject sirve para expulsar el CD-ROM de la unidad.

grub-config.sh es llamado por el script de instalacion de Metadistros para confi-gurar el fichero de configuracion del gestor de arranque que se instala junto con lametadistro, GRUB [16].

hacks.sh configura el escritorio de Gnome [13]. En GNU/Linux FME en lugar deGnome 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 maquina yde crear los archivos de configuracion de estos dispositivos para que el sistema puedainteractuar con ellos.

hwsetup es el ejecutable binario que detecta todo el hardware de la PC utilizandolas 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 distribucion Live-CD. Cuando el sistema initrd hace el pivot root (ver Seccion 3.5) a la distribucionLive-CD, el proceso init ejecuta el script /etc/init.d/rc.S, que en Metadistros es unenlace simbolico a init.sh.

install.sh es el script que contiene las instrucciones de instalacion de la metadistro aldisco duro de la PC. Utiliza variables que deben ser inicializadas antes de su ejecucion.Estas variables se encuentran descritas en el fichero /isolinux/conf/var.conf.

install-x.sh es el interfaz grafico creado para instalaciones de Metadistros en disco,en entornos X11. Utiliza una aplicacion como dialog, que se llama xdialog y que generaventanas 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 lepasen parametros al nucleo desde Isolinux (ver Seccion 3.2).

56

Page 57: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

login.sh en el proceso de instalacion nos permite configurar los nombres de usuarioy passwords de la metadistro instalada. En GNU/Linux FME la opcion esta deshabi-litada para facilitar la instalacion. La aplicacion de instalacion instala la metadistrocon todos los valores por defecto.

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

make-user.sh es el script encargado de generar las configuraciones de los usuariosdel sistema, tanto en modo Live-CD como en instalaciones. Al arrancar Metadistrosno tiene creado ningun usuario creado, para dar opcion a la persona que arrancala metadistro a entrar su nombre y password. Esta opcion esta deshabilitada enGNU/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 ypara procesamiento de textos. Basicamente se llama desde los scripts de sistema paraconsultar los ficheros de configuracion.

mdetect es una herramienta de deteccion del raton en Linux. Se utiliza para escribirlos ficheros de configuracion del servidor de X.

mkxf86config.sh genera los ficheros de configuracion del servidor de X. Utiliza lainformacion del proceso de deteccion de hardware para configurar los parametros delentorno como por ejemplo la resolucion de pantalla, la profundidad en bits, etc. . .

netconfig.sh es un script que interacciona con el usuario para recoger la informacionde la red donde esta ubicado el equipo. En GNU/Linux FME la opcion esta desha-bilitada para acelerar el proceso de arranque y facilitar la tarea al usuario, aunquese puede activar la opcion mediante parametros al nucleo desde Isolinux [48].

pump es un cliente de Dinamic Host Configuration Protocol (DHCP), protocolo quepermite configurar dinamicamente los parametros de red de un equipo sin interven-cion del usuario. Se encarga de interaccionar con el servidor DHCP si se arranca conla opcion DHCP activada. En GNU/Linux FME esta activado el DHCP para que elusuario no tenga que introducir los parametros manualmente.

x-detect.sh deberıa contener instrucciones para detectar parametros del servidor deX, pero actualmente es un fichero vacıo y toda la deteccion la hace mkxf86config.sh.

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

57

Page 58: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

El subdirectorio conf

Contiene ficheros de configuracion. Dentro de estos ficheros de texto se escriben losparametros que se deben pasar al nucleo con que arranca Isolinux.

En Metadistros existen tres ficheros de configuracion:

var.conf es el primero en ejecutarse. Contiene los siguientes parametros:DISTRO es el nombre de la MetadistroUSERNAME es el nombre del usuario que arranca por defectoUPASSWORD es la contrasena del usuario USERNAMERPASSWORD es la contrasena de rootHOSTNAME es el nombre del host que ejecuta la metadistroLANGUAGE es el codigo del idiomaINSTALL si es “Y” instala la distroROOT si es “Y” arranca con el usuario root y no crea ningun otro usuarioEXPERT permite especificar opciones adicionales (aun no implementado)XCONF se utiliza con monitores y tarjetas graficas antiguasDHCP permite ejecutar el cliente DHCP para configurar la redSTARTUSER es el usuario con que arranca la metadistroSTARTX arranca Metadistros con el servidor de XQNEW permite desactivar el resto de variable en la instalacion.

q.conf permite configurar que datos se van a preguntar al usuario al arrancar la me-tadistro. De esta forma podemos dar opcion al usuario de configurar la red al iniciar,cambiar el nombre del host, etc. . . Los parametros son los siguientes:QSPLASH permite ensenar al inicio una ventana con un mensaje personalizadoQLANGUAGE pregunta al usuario el idioma que prefiereQPASS pide que el usuario le facilite una passwordQUSER pide un nombre para el usuario creado al inicioQHOST pregunta al usuario el nombre del hostQINSTALL permite elegir entre arrancar en modo Live-CD o instalacionQX permite elegir el script de deteccion de 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 parametros del nucleo que tienen que ver con el idioma. Seestablecen en funcion del parametro LANGUAGE del fichero var.conf. Los parame-tros son:LANG permite establecer el idioma y la region del entornoKEYTABLE es el mapa de teclado utilizado por el sistema

58

Page 59: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

XKEYBOARD es el mapa de teclado que utiliza el servidor de XKDEKEYBOARD es el mapa de teclado que utiliza KDE [57]CHARSET es el formato de codificacion de texto utilizado por el sistema

Para una vision global del arranque del calzador de Metadistros el lector puede encontrarun diagrama del proceso en la figura de la pagina 100.

6.3. La Distribucion Live-CD

Segun [20], “La distribucion no es mas que aquel sistema Linux que se ha instaladoy configurado (de la manera tradicional) pensando en las necesidades de un grupo deusuarios. Esto es, que se habran instalado los programas que estos usuarios necesitaran,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 mentela estructura de Debian [56], por lo que si alguien pretende convertir una distribuciondiferente a Debian, seguramente debera realizar algunas modificaciones en el calzador.

La Distribucion se guarda en un archivo comprimido con las herramientas de cloop (verSeccion 3.3), en el directorio /META del CD-ROM. En Metadistros el fichero se llamaMETA.cloop.

En principio la distribucion es independiente del calzador, aunque no es del todo cierto.En el sistema de ficheros de la Distribucion deben estar los modulos que utiliza el nucleocon que arranca Metadistros. La razon es que estos modulos se cargan cuando ya se harealizado en cambio del sistema de ficheros initrd [4] al de la Distribucion, por lo que elnucleo buscara los modulos en el directorio /etc del sistema de ficheros de la distribucion.

Otra caracterıstica importante que debe tener la distribucion es que no puede tenerningun usuario creado en el sistema que se llame igual a un usuario que intente arrancar lametadistro. El motivo es que el calzador crea un usuario cada vez que arranca el sistemacon el nombre indicado. Si existe ese usuario el script devuelve un error y el sistema abortael proceso de arranque.

Estas condiciones son uno de los temas principales en los que el equipo de Metadis-tros esta trabajando, con el fin de conseguir la independencia total entre el calzador y ladistribucion en versiones posteriores del calzador.

59

Page 60: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

6.4. Isolinux : Configuracion y funcionamiento

Como he explicado en la Seccion 3.2, Isolinux es un gestor de arranque. Es el primercodigo que se ejecuta al iniciar la maquina. Se encargara de leer un fichero de configuracioncon instrucciones sobre como debe iniciar la PC.

En la seccion anterior he explicado los diferentes ficheros que utiliza Isolinux. Todos ellosvienen incluidos en el calzador de Metadistros, y practicamente no hay que modificarlossalvo contadas ocasiones. El fichero mas importante es /isolinux/isolinux.cfg, que contienelas instrucciones para arrancar el sistema. Para mostrar como funciona voy a mostrar elfichero de configuracion de 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 configuracion pordefecto. Si no se modifica el arranque mediante el prompt la imagen que se iniciara sera esta.Todo lo que le sigue a la opcion APPEND son parametros que se le pasan al nucleo deLinux.

La opcion TIMEOUT me permite establecer el tiempo que Isolinux espera una inter-vencion del usuario (un evento de teclado) antes de arrancar la imagen que tiene comoDEFAULT. 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

Page 61: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

La opcion PROMPT permite mostrar directamente el prompt de Isolinux en el inicio.Si la opcion esta deshabilitada el usuario puede activarla con las teclas [Shift] o [Alt].

La opcion DISPLAY me permite especificar un fichero para mostrar un mensaje porpantalla en el inicio de Isolinux. En este mensaje podemos incorporar una imagen enformato LSS. En el siguiente capıtulo veremos como.

La opcion F1 permite programar la tecla [F1] del teclado para mostrar un mensajepersonalizado cuando el usuario pulsa esta tecla. En este caso se muestra el mismo mensajeque al iniciar la aplicacion. Isolinux permite programar de la misma manera las teclas [F2]y [F3].

El resto del archivo son dos configuraciones adicionales para el mismo nucleo vmlinuz,variando los parametros del nucleo. Para activar alguna de estas configuraciones deberiamosteclear en el prompt el nombre que aparece a la derecha de la opcion LABEL.

El resto de ficheros que utiliza Isolinux no se utilizan directamente por el programade arranque. En fichero boot.cat es un archivo de “catalogo de ficheros de arranque”. Segenera al ejecutar la instruccion mkisofs (ver pag. 51) para crear la imagen del CD-ROM,y contiene informacion sobre el sistema de ficheros contenido en el CD-ROM. El ficheroinitrd (ver Seccion 3.6) contiene el sistema de ficheros que se carga en ramdisk [10].

6.5. Deteccion de hardware: Kudzu

Kudzu [28] [70] es un paquete de software desarrollado por Red Hat (ver Seccion 2.1.4)para la deteccion y configuracion de hardware. Se compone de una serie de librerıas acom-panadas de varios ejecutables. Esta herramienta es usada a la vez por otras herramientasde Linux para detectar hardware, como por ejemplo Anaconda o HwBrowser.

Segun sus 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

Page 62: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

teclados en plataformas SPARC

6.5.1. Archivos de Kudzu

Kudzu esta repartido en varios ficheros, para facilitar su uso e interoperabilidad:

kudzu es el ejecutable de deteccion de hardware. Lee los buses de la maquina ycompara los datos que ha leido con las bases de datos apropiadas.

updfstab se encarga de actualizar el fichero de montaje /etc/fstab [31] con lasparticiones 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 quenecesite utilizar las rutinas y librerıas de Kudzu.

kudzu-vesa es un conjunto de cuatro ejecutables:

• dccprobe prueba configuraciones del monitor

• dccxinfo comprueba la informacion del monitor

• modetest y svgamodes identifican el modo del monitor

hwdata es la base de datos que utiliza Kudzu para guardar la configuracion delequipo y comprobar los cambios en nuevos arranques.

6.5.2. Funcionamiento

Kudzu actua en tiempo de arranque. Se llama desde el proceso init para que detecte yconfigure todo el hardware de la PC en la que se ejecuta. Es el encargado de anadir losdispositivos virtuales del directorio /dev.

Empieza detectando todo el hardware conectado a los buses de la PC, y seguidamente loscompara con el fichero /etc/sysconfig/hwconf, si existe. Se trata de una base de datos dedispositivos instalados por Kudzu. De esta manera es capaz de averiguar si ha sido anadidoalgun dispositivo desde la ultima vez que se ejecuto la aplicacion. Si es ası permite alusuario anadir y configurar el nuevo hardware encontrado. De la misma manera se encargade eliminar aquellos dispositivos que han sido configurados en algun momento y que ya noexisten en el equipo.

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

62

Page 63: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

6.6. El arranque de Linux

En esta seccion voy a describir el proceso de arranque del sistema operativo Linux, desdeque la PC se enciende hasta que el sistema se carga. Explicare el proceso muy por encima,ya que una descripcion minuciosa de todo el proceso serıa motivo para un libro entero. Siel lector desea profundizar mas sobre el proceso o cualquiera de sus etapas puede consultar[69].

6.6.1. Arranque estandar del nucleo Linux

Cuando presionamos el boton de encendido del ordenador esto es lo que sucede:

1. La fuente de alimentacion inicia el generador de reloj del procesador, inicializa latabla de vectores de interrupcion, llama a la funcion de la BIOS para que compruebeel primer dispositivo de arranque valido, y carga el primer sector de este dispositivoen memoria.

2. El sector de arranque puede ser tanto el codigo de un cargador de arranque comoISOLINUX [5], LILO [30], GRUB [16] o Loadlin [34], o tambien el sector dearranque que se genera al compilar un nucleo de Linux (el fichero/usr/src/linux/arch/i386/boot/bootsect.S ).

3. El sector de arranque carga la configuracion, las rutinas de descompresion y la imagendel nucleo comprimida. 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 elnucleo en modo protegido y salta a la primera instruccion del mismo.

5. Inicializa los valores de varios segmentos del procesador, inicializa la tabla de paginas,habilita el paginamiento, copia los parametros del nucleo en memoria y compruebalos tipos de las CPUs del equipo.

6. La primera CPU llama a start kernel() y se inicializan el resto de CPUs. La rutinastart kernel() es la primera escrita en C. Entre otras cosas, realiza configuracionesespecıficas de la arquitectura, inicializa TRAPS, IRQs, el planificador de la CPU,inicializa la consola y la carga de modulos, habilita las interrupciones, inicializa elsistema de ficheros proc y establece el lımite de procesos e hilos del sistema, crea an-tememorias para VFS, VM, memoria intermedia, quoteFS, y finalmente crea el hiloque ejecuta el parametro de nucleo “init=”, o en su defecto, /sbin/init, /etc/init,/bin/init o /bin/sh. Si fallan todos se produce una situacion de kernel panic. Final-mente el proceso se va a un bucle infinito con PID=0.

63

Page 64: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

6.6.2. Arranque de Metadistros

En el caso de Metadistros arrancamos desde CD-ROM. El primer sector del CD-ROMse copia a memoria. Se ejecuta el cargador de arranque Isolinux, que copia el nucleo y elcontenido del dispositivo /dev/initrd en memoria. Cuando el nucleo comienza su ejecucion,descomprime y copia el contenido de /dev/initrd en el dispositivo /dev/ram0 y libera lamemoria utilizada por /dev/initrd.

El nucleo monta 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 cambiaal sistema de ficheros raız definitivo, ubicado en un dispositivo ramdisk [19], pasando,ahora sı, a la ejecucion del proceso init.

Para ver el proceso en detalle el lector puede consultar el diagrama que se encuentra enla pagina 102.

6.7. El proceso INIT

Una vez que el script /linuxrc acaba su ejecucion, el nucleo pasa a ejecutar el procesoinit. Lo primero que hace es mirar el fichero /etc/inittab y buscar la lınea que contiene lacadena 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 simbolico que apuntaal script /cdrom/isolinux/cdroot/sbin/init.sh. De esta forma el primer script que se ejecutadespues de linuxrc es init.sh.

Al comenzar la ejecucion de init.sh se comprueban y se exportan las variables contenidasen los ficheros de configuracion de Isolinux (ver Seccion 6.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 medianteel prompt de Isolinux.

Despues el 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 contendra los directorios donde tendra quebuscar los binarios para ejecutar los comandos que le indicara la shell [32]. En metadis-tros la variable PATH incluye las rutas estandar de los sistemas GNU/Linux ademas deldirectorio que contiene los scripts de Isolinux. La lınea queda ası:

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

64

Page 65: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

El siguiente paso es lanzar un nuevo hilo de ejecucion para el script que se encarga dedetectar el hardware de la maquina:

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

El resultado de la deteccion del hardware se guarda en un fichero de texto /tmp/hw.logpara que el usuario pueda consultarlo en busca de posibles errores una vez arrancado elsistema. El sımbolo & significa que el proceso se ejecuta en segundo plano mientras continuala ejecucion del script que hace la llamada.

El script continua procesando las variables de configuracion de Metadistros. Si es ne-cesario, interactua con el usuario mediante la interfaz de xdialog (ver pagina 6.2.1) parapreguntar opciones tales como el lenguaje que prefiere en el sistema, su nombre de usuarioo el nombre de la maquina en la red. Si la variable QNET esta activada se ejecuta el scriptnetconfig.sh que permite al usuario configurar los parametros de la red manualmente. Tam-bien lanza el script mkxf86config.sh para detectar la configuracion optima para el servidorde X.

Posteriormente se crean los usuarios del sistema, que seran principalmente dos, el usuarioroot y el indicado en la variable USERNAME. make-user.sh, que es el script que se utilizaa la hora de crear estos usuarios, a su vez llama a las aplicaciones de sistema useradd yadduser.

Despues se establece el nombre de equipo indicado en la variable HOSTNAME escri-biendo el fichero /etc/hosts.

A continuacion inicia el servicio Common UNIX Printing System (CUPS ), que es elsistema que se encarga de la impresion en Metadistros.

Finalmente se comprueba si esta activada la variable STARTX. En caso afirmativo semodifica la variable PATH para incluir los directorios donde estan los ejecutables delservidor de X, y se ejecuta el comando xinit con los parametros adecuados, para iniciar lasesion de X. Si STARTX no esta activada se inicia una sesion en la consola.

El lector encontrara detallados diagramas tanto de init.sh como de hwdetect.sh en elApendice B.

6.8. Conclusion

Pese a que el proyecto Metadistros no fue concebido para crear Live-CDs exclusivamente,es una de las caracterısticas mas interesantes y explotadas del proyecto. Se trata de un

65

Page 66: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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

Por ejemplo, el desarrollador puede trabajar en las caracterısticas del arranque de laLive-CD sin temer que la distribucion sufra alguna incompatibilidad debida a cambios deconfiguracion en el calzador, ya que estos dos componentes son (casi) independientes.

Por otra parte, al usuario final le permite ejecutar la Live-CD en multiples equipos concierto control sobre la ejecucion. Por ejemplo, permite modificar el camino estandar delinicio del sistema pasando los parametros correctos al nucleo, o configurando el entornomediante interfaces graficas a la hora de instalar en disco la distribucion.

Actualmente, los desarrolladores del proyecto Metadistros estan trabajando en un nuevocalzador, completamente independiente de la distribucion (sea cual sea) y escrito ıntegra-mente en lenguaje python, un lenguaje de script muy potente. Se espera dar soporte alnucleo Linux 2.6 e incorporar una nueva interfaz grafica mas intuitiva y vistosa.

66

Page 67: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Capıtulo 7

Un ejemplo: GNU/Linux FME

Despues de saber como funciona Metadistros voy a explicar como se hizo este proyecto.Empezare por el entorno de trabajo y la eleccion del software, para continuar con la partetecnica describiendo paso a paso todo el proceso de creacion de GNU/Linux FME desdecero.

7.1. Diseno del 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 deinstalacion en disco. Las razones por las cuales he seleccionado esta opcion frente a lasdemas alternativas Live-CD son las siguientes:

1. Es (casi) independiente la parte de configuracion del sistema de la parte de la dis-tribucon. Este hecho permite hacer cualquier cambio en alguna de las partes sinpreocuparse por consecuencias en la parte no implicada.

2. Los demas sistemas no aceptan incorporar una distribucion estable como base

3. El proyecto esta muy bien documentado (bueno para mı como desarrollador y paralos usuarios)

4. Es un proyecto muy activo y en continuo desarrollo

Para garantizar la estabilidad y eficiencia del sistema sin sacrificar usabilidad he utilizadoDebian Woody [56] como la distribucion base de la Live-CD. Los paquetes de software que

67

Page 68: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

contiene esta distribucion han sido probados durante un largo tiempo por los desarrollado-res y han corregido los errores de programacion que han encontrado. Debian incorpora laherramienta APT [71], que permite que el software del sistema se actualice con gran faci-lidad. APT tambien permitirıa en un futuro montar repositorios de paquetes en servidoresde la facultad para que los usuarios pudieran actualizar su software rapida y eficazmente.

Debemos tener en cuenta que los usuarios estan acostumbrados a utilizar exclusivamenteMicrosoft R© Windows R© ya que hasta este ultimo cuatrimestre no se ha habilitado la imagende GNU/Linux en las aulas. Por este motivo creo imprescindible instalar en la distribucionun entorno de escritorio que facilite el acceso a los programas instalados, los ficheros,dispositivos, etc. . .

He incorporado el entorno de escritorio KDE [57]. Tambien podrıa haber instaladoGnome [13], pero creo que KDE es mas facil de utilizar, sobre todo para usuarios quenunca han tenido contacto con GNU/Linux (es una opinion personal), como es nuestrocaso.

El menu de KDE es una excelente herramienta para disenar un sistema de menus propiode GNU/Linux FME para que los usuarios tengan acceso al software especıfico de sutitulacion instalado en la distribucion. De esta manera puedo ofrecer a los usuarios unespacio de trabajo ordenado y centralizado para maximizar el rendimiento de la distribucioncomo herramienta de trabajo.

La distribucion recibe al usuario con una aplicacion web que explica que es GNU/Linux ycomo puede un usuario aprovechar todas sus caracterısticas. La web tambien aparece cuan-do se introduce el CD-ROM en una unidad lectora con Microsoft R© Windows R©. Contieneuna seccion de ayuda muy util para los usuarios noveles de GNU/Linux para procesos comopor ejemplo la instalacion de nuevo software o la instalacion en disco de la distribucion.

Una vez he disenado lo que va a ser la distribucion es momento de estudiar los requeri-mientos que tiene una Metadistro, es decir ¿Que necesito para crear una distribucion conMetadistros? Para ello consulto [20]. Para crear una distribucion basada en Metadistrosse necesita:

1. Un sistema linux anfitrion (host, ver pagina 41) ya instalado y configurado con lasherramientas de desarrollo habituales (editor, compilador, software de grabacion deCDs, etc. . . )

2. Espacio libre en el disco duro, unos 2 Gb para la distribucion (fuente) y otros 2 Gbpara las imagenes temporales que se crean hasta grabar el CD-ROM

3. mkisofs (ver pagina 51) para crear las imagenes de la distribucion y del CD-ROM

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

68

Page 69: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

5. El conjunto de herramientas cloop (ver Seccion 3.3) para permitir que la distribucionquepa en el CD-ROM

6. El software del calzador [1] de Metadistros y los modulos del nucleo compilados

Todo parece bastante sencillo de conseguir. Ademas por supuesto se necesita un ordenadordonde ejecutar todas estas herramientas. El equipo que he utilizado durante el proyectopara la realizacion de 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

Conexion ADSL 256/128

Es conveniente utilizar un equipo mas potente que el descrito aquı, ya que el procesode generacion de la imagen comprimida de la distribucion requiere un gran computo yconsumo de CPU y RAM. Con mi equipo las ultimas imagenes (con todo el softwareinstalado) tardaban cerca de 30 minutos en generarse. Tambien es aconsejable tener unagrabadora de gran velocidad, para crear las copias con mas rapidez.

Antes de comenzar a instalar el software adquirı el disco duro de 80 Gb y particione misdiscos de esta forma (solo muestro las particiones necesarias para el proyecto):

1o DISCO (hda)

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

2o DISCO (hdd)

hdd1 5 Gb Linux ext2 Particion de las imagenes ISOhdd2 2 Gb Linux ext2 Distribucion sourcehdd3 1,5 Gb Linux SWAP Area de memoria SWAPhdd7 3 Gb FAT 32 Particion temporal de desarrollo

69

Page 70: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

7.2. Instalacion de Debian Woody

Para instalar Debian [72] [21] necesito una particion con suficiente espacio de disco,en mi caso no deberıa sobrepasar los 2 Gb ya que sino no cabrıa despues en el CD (comovimos con cloop en la pagina 22 la capacidad maxima de la distribucion debe estar entre1,8 Gb y 2 Gb).

Debian Woody puede adquirirse al completo en 7 CDs. Como no voy a instalar todo elsoftware sino que instalare solo los programas indicados a mis necesidades, no es necesarioadquirir los 7 CDs. Como poseo una lınea ADSL, lo que hare sera descargar el primer CD,para instalar el sistema base y cuando este instalado descargare los programas que necesitede 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. Reiniciomi PC y configuro mi BIOS para arrancar desde la unidad de CD-ROM1. Al salvar loscambios y volver a reiniciar me aparece la pantalla de bienvenida del instalador:

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

Presiono [Return] para continuar la instalacion, y el programa de instalacion comienza acargar. La primera opcion que aparece debemos escoger el idioma. En mi caso escojo laopcion “espanol” y presiono de nuevo la tecla [Return] para aceptar la opcion. Me apareceuna pantalla con informacion sobre la version, acepto pulsando nuevamente [Return] paraacceder al menu principal de instalacion.

Para no saltarme ningun paso seguire el orden logico de configuracion que me brinda elinstalador, aunque si lo deseo me da la posibilidad de volver atras para cambiar algunaopcion. El primer paso es el de configurar el teclado. Con las flechas me situo encima dela distribucion de mi teclado, que es Querty/ES, y acepto con [Return].

El siguiente paso es la particion del disco duro. Como ya tengo mis discos particionadossaltare este paso. El lector intrepido encontrara abundante informacion sobre el proceso departicionado de discos en la aplicacion web que acompana a la distribucion creada en esteproyecto.

Continuo la instalacion activando mis dos particiones SWAP con la opcion Dar formatoy activar una particion de intercambio. Con las flechas y la tecla [Return] selecciono misdos particiones de intercambio, hda6 y hdd3. Antes de formatear la particion el programame da la opcion de buscar bloques de disco defectuosos. Yo selecciono No ya que llevamucho tiempo y tengo la certeza de que mi disco se encuentra en buenas condiciones.

1la configuracion de la BIOS para este proposito esta detalladamente explicada en la aplicacion webque acompana a la distribucion creada en este proyecto

70

Page 71: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Seguidamente debo identificar mi particion raız, selecciono la opcion Iniciar una par-ticion de Linux. De la lista de particiones escojo hdd2. Me da la opcion nuevamente debuscar bloques defectosos a lo que respondo negativamente. Tras formatear la particion laaplicacion pregunta el punto de montaje de la particion. Como es la particion raız se loindico de la siguiente manera:

Selecciona el Punto de Montaje: /

El siguiente paso es la configuracion de dispositivos adicionales. Como se que el programa deinstalacion no detecta mi tarjeta de red entro en la opcion del menu Configurar Modulosde Controladores de Dispositivos. Mi tarjeta de red utiliza el controlador tulip, ası queselecciono el controlador adecuado de la lista y salgo de nuevo al menu de instalacion.

Ahora es tiempo de configurar mi red. Selecciono la opcion Configurar la red. En pri-mer lugar introduzco el nombre de mi maquina en la red (hostname). Debian permite laconfiguracion automatica si el proveedor de Internet lo permite, mediante Dinamic HostConfiguration Protocol (DHCP). En mi caso la configuro manualmente, ası que elijo no eintroduzco mis datos de conexion: Direccion IP, mascara de red, puerta de enlace, dominioy servidores DNS. Todos estos datos me los da mi proveedor de Internet.

Despues de configurar la red voy a indico que quiero instalar la base del sistema opera-tivo Debian, unos 70 Mb. Selecciono la opcion Instalar el sistema base. La aplicacion mepregunta desde que medio se instalaran los programas, selecciono cdrom, y me aparece unapantalla que me pide que inserte el CD-ROM de instalacion de Debian. Como ya lo tengodentro de la unidad presiono [Return]. Me pide la ubicacion de los ficheros en el CD-ROMde instalacion, dejo la opcion por defecto /instmnt y acepto de nuevo.

El siguiente paso es la configuracion del gestor de arranque LILO [30]. En mi caso nonecesito instalar ningun gestor de arranque ya que mi BIOS no permite arrancar sistemasinstalados en el segundo disco directamente, por lo que necesitare crear un disquet dearranque, precisamente el siguiente paso de la instalacion.

Selecciono la opcion Crear un disquet de arranque, inserto un disquet en la disquetera ypulso [Return]. Tras unos segundos se crea el disquet de arranque y vuelvo al menu principalde la instalacion.

Ahora es necesario reiniciar el sistema, ası que elijo la opcion Reiniciar el sistema ysaco el CD-ROM de la unidad y dejo el disquet en la disquetera para que arranque con elsistema recien creado.

71

Page 72: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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 deconfiguracion de Debian, que me permite configurar la informacion horaria. Le indico queel 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 zonahoraria correcta de Espana.

La siguiente pantalla me da la opcion de utilizar contrasenas MD5. Es un sistema quepermite almacenar las contrasenas encriptadas con mas seguridad que la funcion tradi-cional crypt, ademas de permitir longitudes de mas de 8 caracteres, ası que acepto lapropuesta. Tambien aceptare la propuesta de usar Shadow Passwords, que permite alma-cenar informacion adicional ademas de la contrasena encriptada en un archivo diferente a/etc/passwd.

Introduzco la contrasena del usuario root por duplicado, y creo un nuevo usuario quees el que iniciara sesion en el sistema una vez arranque. El usuario creado es “fme”. EnGNU/Linux FME las contrasenas coinciden con los nombres de usuario, queda como opcionpara la persona que quiera instalarla en su disco el cambiarla para garantizar la seguridaddel equipo.

Despues de introducir los datos de los usuarios del sistema, el asistente de instalacionme pregunta si deseo instalar el software Personal Computer Memory Card InternationalAssociation (PCMCIA), el estandar para fabricar tarjetas de dispositivos para ordenadoresportatiles. 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 elprotocolo utilizado para establecer conexiones punto a punto entre dos nodos, como porejemplo un modem que se conecta a traves de la lınea telefonica con un proveedor. Comome conecto a traves de un router ADSL, no necesitare este protocolo.

La siguiente opcion de configuracion es la de APT [71]. Escojo el metodo http frenteal ftp ya que es mas rapido. Me pregunta si deseo tener acceso al software Non-US, quees el software no disponible en EEUU debido a su polıtica de prohibicion de materialcriptografico. Acepto la proposicion, y las dos siguientes tambien, Non-Free, que segunDebian no es software libre, pero es gratis, y contrib, que es software libre pero que dependede software Non-Free.

La lista de servidores con repositorios de paquetes Debian me muestra los servidoresdesde donde me puedo descargar el software que quiera instalar en mi sistema. Elijo laubicacion mas cercana y pulso [Return]. Tambien acepto la proposicion de actualizacionesde seguridad.

En el siguiente paso me preguntan que paquetes deseo incorporar al sistema base. Elijoutilizar la aplicacion tasksel para seleccionar los paquetes que necesito para mi sistema.

72

Page 73: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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, mas adelante anadire el software que precisemediante APT. Despues de este paso APT instala todos los paquetes que le he indicadoy cuando termina me pregunta si deseo eliminar los ficheros .deb descargados, le digo queSı debe eliminarlos y el proceso de instalacion de software termina.

En ultimo termino el instalador nos pregunta por la configuracion de algun software,como por ejemplo Exim y la configuracion del servidor X. No entrare en detalle en estaconfiguracion ya que depende mucho del equipo de cada uno, y en el caso de una Metadistrono es relevante ya que la configuracion la hara automaticamente el proceso de deteccionde hardware del calzador. Si alguien quiere profundizar mas sobre la instalacion de Debianpuede leer [72] y [21].

Una vez termino de configurar todo el software, me encuentro delante de la pantalla delogin. Introduzco mi nombre de usuario (fme) y contrasena (fme), y ya estoy dentro delsistema.

7.3. El entorno de escritorio

En este momento me encuentro en un entorno de consola. Puedo hacer muchas cosasdesde la shell [32] pero es mas comodo utilizar un entorno X, esto es, el entorno GUI deUnix/Linux. Tengo instalado el entorno X ya que lo marque en la lista de tasks que debıainstalar Tasksel (ver Seccion anterior). Aun ası es difıcil trabajar con comodidad.

Podrıa instalar un gestor de ventanas. Se trata de un software que controla la aparienciay el comportamiento de las ventanas y graficos generados por el servidor X. Genera unainterfaz mucho mas agradable y intuitiva que la del servidor X, pero aun sigue siendo unentorno muy limitado.

Es mucho mejor instalar un entorno de escritorio, que no es mas que un gestor de ventanasacompanado de software adicional que ofrece un entorno grafico muy potente y util. EnGNU/Linux FME instalo KDE [57], que viene con un gestor de ventanas propio llamadoKDE Window Manager o KWM.

73

Page 74: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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, ¿facil verdad?. Tras aproximadamentemedia hora se ha descargado, configurado e instalado en mi distribucion. Despues de lainstalacion se ejecuta la aplicacion debconf que me pregunta si deseo que KWM sea migestor de ventanas por defecto en las sesiones X, a lo que respondo con Sı. La proxima vezque inicie mi sistema la ventana de login de KWM me recibira esperando que ingrese minombre de usuario y contrasena.

Una vez dentro puedo comprobar lo acogedor que es el entorno KDE. Si miro el menu pue-do comprobar como el entorno esta dotado con un gran conjunto de herramientas propias,un software de configuracion de sistema y hasta un entorno de oficina. Veremos duranteesta guıa de Metadistros como sacarle partido a este entorno.

7.4. Contenido de la distribucion

Tengo el sistema base instalado y el entorno de escritorio, ya es un entorno productivopero pretendo crear un sistema especıfico para matematicos y estadısticos ası que deboproveer a la distribucion de mas herramientas de desarrollo.

Lo primero que hago es estudiar el entorno de trabajo de las aulas informaticas de lafacultad. A traves del laboratorio de calculo de la FME consigo un listado del softwareinstalado en la imagen de Microsoft R© Windows R© que se cargan en las aulas:

74

Page 75: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Software Estadıstico Software MatematicoITSM 7.0 Student Maple 8Minitab 13 Mathematica 2.2 for DOSPremium Solver for Excel Mathematica 2.2 for WindowsR 1.5.1 Matlab 6.1 + Statistics ToolboxSeats Tramo for DOS OmegaAthensSeats Tramo Windows Pari-GPSpad 4.5SPlus 2000SPSS 11SAS 8WinASTSAWitness 9 Educational

Mirando [29] puedo obtener una idea de los programas que pueden ser equivalentes enLinux al software instalado de las aulas. Existen en algunos casos programas que tienenversiones en ambos sistemas operativos, aunque algunos, como por ejemplo el caso de Mapleo Minitab no son software libre. En esta distribucon solo hay sitio para el software libre,ya que la idea es que los usuarios que adquieran una copia de GNU/Linux FME no debanpagar por ninguna licencia.

La siguiente lista es la del software instalado en la distribucion GNU/Linux FME quepodemos consultar tanto en la web como en el menu de KDE. Como se puede ver, haymuchos mas programas de los que cabıa esperar y algunos de ellos son equivalentes al 100%con el software propietario instalado en las aulas, esto es, las practicas que actualmentese hacen en la titulacion se podrıan realizar sin ninguna modificacion con el software libreinstalado en GNU/Linux FME. Tambıen se observa que hay aplicaciones repetidas enambos listados. Significa que la aplicacion puede ser util tanto para los estadısticos comopara los matematicos (no que la aplicacion ha sido instalado dos veces). Entre [corchetes]las aplicaciones a las que son equivalentes:

Software Estadıstico Software MatematicoGNUPlot Euler [Matlab]KCalc GAPMacanova KCalcOpenStat [SPSS] MathomaticPSPP [SPSS] Mupad [Mathematica] [Maple]R [R] Octave [Matlab]Scilab Rlab [Matlab]Stat Scilab [Matlab]XCalc Xcalc

75

Page 76: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Software Estadıstico Software MatematicoCalc Xmaxima [Mathematica] [Maple]Kchart Yacas [Matlab]Kformula Yorick [Matlab]Kspread [Excel] CalcMath Kformula

KspreadPari-GP [Pari-GP]Math

Aunque realmente algun software no sea 100% equivalente no significa que no sea utilpara la titulacion, solo significa que el formato de las practicas deberıa cambiar levementepara ser usado por el nuevo software. El conjunto de aplicaciones que esta instalado enGNU/Linux FME tiene el mismo potencial de calculo que las aplicaciones de las aulas,y cuenta con la ventaja de que es de codigo abierto, por lo tanto los alumnos y profe-sores podrıan disfrutar del codigo fuente y de las librerıas de estas aplicaciones e inclusomejorarlo.

Ademas del software matematico el sistema necesita mas herramientas para que sea deltodo productivo. Es conveniente dotar de aplicaciones de edicion de textos, correo electroni-co, mensajerıa instantanea, entornos de programacion, etc. . . La lista de equivalentes delsoftware de proposito general es:

Software de Proposito GeneralInternet Explorer/Netscape Communicator Konqueror/MozillaOutlook/Netscape Messenger Evolution/Mozilla Messenger/KMailCuteFTP/WSFTP KonquerorICQ/MSN Messenger AMSNVdialer KpppWinZip ArkNotepad/WordPad Kedit/GVIMMS Word Abiword/OpenOffice WritterAdobe PageMaker/MS Publisher ScribusAcrobat Reader XPDFOutlook Organizer KOrganizerCD Player/Winamp XMMSAdobe PhotoShop GIMPCorelDraw OpenOffice DrawMS Office OpenOffice/KOfficeVisual Studio .NET KDevelopDBCase (Diagramas) Dia

76

Page 77: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

En la siguiente figura el lector puede ver algunas de estas aplicaciones en ejecucion enel sistema operativo GNU/Linux FME. Ademas de todas estas aplicaciones la distribucioncuenta con software propio de GNU/Linux y Debian como por ejemplo el potente editorde textos E-macs o el gestor de paquetes de software Synaptic.

Figura 7.2: Varias aplicaciones ejecutandose en GNU/Linux FME

La gran mayorıa de software, sobre todo el de proposito general, esta disponible comopaquetes Debian Woody y su instalacion es muy sencilla. Por ejemplo, para instalar el editorde textos Abiword, unicamente debemos utilizar la herramienta APT [71] de la siguienteforma:

fme:/# apt-get install abiword

Pero no todo el software esta disponible para la version estable de Debian. Muchos pa-quetes pertenecen a la distribucion testing o incluso inestable, esto no quiere decir que elsoftware no funcione correctamente, sino que algunos errores de programacion han tenidoque solucionarse desde su creacion o simplemente es un software muy reciente y todavıano existıa antes de la liberacion de la version estable de Debian. Muchos de los programasespecıficos de las titulaciones de Matematicas y Estadıstica cumplen con este perfil, por loque es necesario instalar software que no es del todo estable en GNU/Linux FME si quierotener una distribucion completa y util.

Para instalar este software con APT necesito modificar el fichero /etc/apt/sources.liste incorporar en este archivo la ubicacion de los paquetes no estables en cualquiera delos servidores de paquetes Debian ofifiales. En [56] puedo encontrar una amplia lista deservidores ası como la instruccion que debo incorporar al fichero /etc/apt/sources.list. Trasactualizar el fichero de fuentes debo actualizar la lista de paquetes disponibles en el sistemay a continuacion ya podrıa instalar cualquiera de estos paquetes:

77

Page 78: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

fme:/# apt-get update

fme:/# apt-get install pari-gp

En las listas de software equivalente encuentro ademas programas que no se encuentranentre 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 codigo fuente del programacomprimido en un fichero [68]. Tras descomprimir es necesario compilar este codigo fuenteen el sistema, mediante los scripts que incorporan estos ficheros para la instalacion y la he-rramienta make. Por ejemplo, para instalar la aplicacion de computacion de algebra Yacas,fue necesario descargar del web el codigo fuente 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 directoriocreado por tar y ejecuto el script .configure que comprueba que el sistema tenga instaladasel software y las librerıas necesarias para que la ejecucion del programa instalado tengaexito. En caso de no cumplir los requisitos el script avisa al usuario del error. Despuesejecuto la instruccion make que utiliza el fichero de configuracion Makefile para compilarel codigo fuente de la aplicacion y generar los ficheros binarios. Una vez generados ejecutomake install para instalar los binarios en el directorio adecuado (normalmente /usr/bin),cambiar o crear variables de entorno, etc. . .

7.5. La documentacion del software de GNU/Linux

FME

GNU/Linux FME se ha creado para que sea una herramienta de productividad. Esnecesario que los usuarios tengan todas las herramientas a mano para que el sistema seautil. Ademas de las herramientas el usuario necesita un medio donde consultar como utilizarestas herramientas de un modo adecuado.

En GNU/Linux FME he incorporado toda clase de manuales, tutoriales, guıas, etc. . . sobreel software instalado. Hay que tener en cuenta que la documentacion necesita un softwareadecuado para ser consultada. La distribucion ya contiene software de este tipo:

78

Page 79: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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

Konqueror y Mozilla para abrir los manuales y guıas en formato de web

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

WordR©

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 practica de una asignatura en lasaulas de la facultad, normalmente accede a los PCs de las aulas, descarga la documentacionde la practica y la imprime, y finalmente sigue los pasos descritos con el software adecuado.En GNU/Linux FME tambien debe estar disponible la documentacion de las asignaturasen la distribucion, ya que la idea del proyecto es que los usuarios puedan desarrollar sutrabajo sin mas herramienta que un PC y GNU/Linux FME. Ademas debemos tener encuenta que no todos los alumnos tienen una conexion a Internet en casa para descargar ladocumentacion de las asignaturas.

Un diseno ideal serıa incorporar esta documentacion al sistema por medio de paquetesDebian. La idea serıa que los profesores al iniciar el curso academico generaran los paquetes.deb para ser incorporados a la distribucion. De esta manera serıa tambien posible actualizarla documentacion de las asignaturas durante el curso, ya que se pueden generar variasversiones de los paquetes. Ası los alumnos podrıan utilizar las herramientas de APT paraactualizar la documentacion de las asignaturas que sufrieran modificaciones durante elcurso. Ademas este modo de empaquetar el contenido de las asignaturas permitirıa a losusuarios que tuvieran una distribucion diferente a GNU/Linux FME pero compatible conel 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 unsubdirectorio para cada una de las titulaciones de la facultad, y dentro de estos subdirec-torios existe un subdirectorio para cada asignatura. Esta ubicacion deberıa ser la tomadapor todos los creadores de paquetes para GNU/Linux FME, con el fin de tener la docu-mentacion agrupada y ordenada dentro del sistema operativo.

Como ya he apuntado en secciones anteriores, los profesores de Matematcas y Estadısticano tienen porque ser grandes conocedores de GNU/Linux y mucho menos de Debian, porlo que resultarıa difıcil que pudieran generar paquetes Debian sin alguna ayuda. Existeuna aplicacion de GNU/Linux que es capaz de generar paquetes Debian de distintos tiposde fuentes. Esta aplicacion se llama Alien y ha sido instalada en GNU/Linux FME.

79

Page 80: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Para facilitar la tarea de los profesores a la hora de crear estos paquetes he creado unscript 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, secopia todo lo que debe ir en el paquete. Debemos crear la estructura de directorios paraubicar los ficheros en el directorio de destino que queramos, por ejemplo, si quiero guardarun fichero manual.ps en el directorio /usr/local/share/fme debemos crear esta estructura:./sources/usr/local/share/fme. De esta forma es muy facil hacer cosas como crear accesosdirectos en el menu de KDE (/usr/share/applnk/* ).

El script comienza posicionando la shell en el directorio de trabajo, pasado como primerparametro del script. Seguidamente comprime mediante gzip/zlib [68] todos los directoriosque encuentra en el directorio activo, o sea todos los directorios que se instalaran en elsistema donde se instale el paquete. Seguidamente se ejecuta la aplicacion alien que seencarga de procesar el fichero comprimido y genera el paquete Debian con el nombreque le hemos pasado como segundo parametro al script. Finalmente borramos el ficherocomprimido y renombramos el paquete creado al nombre original, ya que alien concatenainformacion de la version en el nombre del paquete sin que se lo ordenen.

7.7. El sistema de menus

La interfaz de GNU/Linux FME debe servir para que tanto la documentacion como elsoftware de la distribucion este disponible con facilidad para el usuario. El sistema de menusde KDE es una excelente herramienta para disenar una interfaz donde este disponible todolo necesario para desarrollar los trabajos.

80

Page 81: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Existe una herramienta para crear entradas en el menu de KDE de una forma facil yrapida, KMenu, pero no la utilizare. El motivo es que necesito un sistema para incorporarlas entradas al menu de forma automatica cuando se instala, por ejemplo, un paqueteDebian de una asignatura.

Estudiando el sistema de menus de KDE puedo disenar facilmente un metodo pa-ra conseguir este fin. Los elementos del menu de 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 convierteautomaticamente en una seccion nueva en el menu, la cual puede contener a su vez massecciones o accesos directos a cualquier archivo del sistema de ficheros.

Los accesos directos son representados en el directorio applnk por ficheros .desktop. Setrata de ficheros de texto plano que describen con sintaxis similar al lenguaje eXtensibleMarkup Language (XML) la informacion del acceso directo. En los subdirectorios ademasse encuentran ficheros .directory con identica estructura que contienen la informacion dela seccion del menu. 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 facil de comprender, se trata de asignarvalores a determidadas variables. Con Type indicamos el tipo de acceso directo (un ejecutable, un directorio, etc. . . ). Name es el nombre que aparece en KDE, por ejemplo enel menu o en el escritorio, segun la ubicacion del fichero. El texto contenido en Commentes el que aparece al situarte encima del acceso directo en KDE. Exec contiene la ruta haciael fichero al que se refiere el acceso directo. Icon contiene la ruta hasta una imagen quehace de icono para todas las referencias en KDE del acceso directo. Finalmente podemosindicar si la aplicacion se ejecutara en una consola o como una aplicacion grafica segun elvalor de la variable Terminal.

La estructura de secciones del menu esta disenada para que sea lo mas facil posible paralos usuarios encontrar todas las herramientas que necesiten en el momento de ponerse atrabajar. Todo el contenido esta agrupado por titulacion y el tipo de contenido.

81

Page 82: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

A continuacion presento un listado del aspecto de alguno de los directorios que pertenecenal menu de 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/Matematicas/Documentacion Soft:

Euler

Mathomatic

Mupad

Octave

XMaxima

Yacas

El primer directorio contiene los accesos directos a los programaas especıficos para lastitulaciones de Estadıstica. Cada fichero .desktop genera una entrada en el menu de KDEque el usuario puede utilizar para arrancar el programa indicado en el fichero .desktop. Elsegundo directorio contiene varios directorios. Cada uno de ellos contiene ficheros .desktopque se convierten en accesos directos en el menu a la documentacion del software indicadoen el nombre del subdirectorio.

El lector observara que las entradas de menu en GNU/Linux FME han sido creadas enel entorno del usuario fme. Es una decision de diseno sin mucha relevancia, el motivo esque 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 trabajopara el usuario. El uso de root solo debe existir para tareas de mantenimiento de sistema,como por ejemplo instalacion de nuevos paquetes o cambios en el sistema de ficheros, poresto se prescinde del menu de usuario en el entorno de root. El usuario que quiera instalarla distribucion puede estar tranquilo si desea cambiar el nombre del usuario fme en el

82

Page 83: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

momento de la instalacion ya que el instalador contempla el cambio de nombre e instalarıael 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 arrancarla Live-CD nos muestre una pantalla de bienvenida. Isolinux permite incluir una imagencomo presentacion, y en GNU/Linux he disenado una imagen personalizada para ofrecerun comienzo mas espectacular de la Live-CD.

La imagen debe cumplir unas especificaciones determinadas para que se muestre correc-tamente. La imagen debe ser como maximo de 640 por 480 pıxeles de tamano y 16 colores.Isolinux viene con una herramienta para generar este tipo de imagenes. Se trata de ppm-tolss16, un script escrito en Perl , un lenguaje de programacion de scripts para GNU/Linuxmuy 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 diseno y la edicion de la imagen de presentacion he utilizado el sofwtare GIMP[12], capaz de crear imagenes en formato PPM. Sin embargo, las imagenes generadas porGIMP deben tratarse con otro software de tratamiento de imagenes para cumplir losrequisitos que Isolinux especifica. Despues de varias pruebas, llego a la conclusion que elmejor resultado lo obtengo guardando la imagen en formato Portable Network Graphics(PNG), formato de imagen comprimida con una mınima perdida de calidad. Posteriormenteesta imagen se trata con Imagemagic, un conjunto de herramientas de consola para tratarficheros de imagenes.

Para generar la imagen final e instalarla en el calzador de Metadistros lo mejor es crearun 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

Page 84: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Se trata de un script siguiendo la sintaxis de bash [32]. Lo primero que hago es creartres variables, una para definir el directorio donde tengo el calzador, otra para indicar laubicacion de la imagen PPM que ya tengo generada con GIMP y la ultima para indicarla ubicacion de la imagen LSS generada. Mi script simplemente llama al script que vienecon Isolinux pasandole la imagen PPM por la entrada estandar y recogiendo la imagenLSS generada por la salida estandar en el fichero indicado en la variable $LSS. Finalmentecopio la imagen generada en el calzador.

Para que esta imagen se muestre cuando la Live-CD de GNU/Linux FME inicie suejecucion, ademas debo editar el fichero isolinux.msg que es el fichero que consulta Isolinuxpara mostrar el mensaje de bienvenida. Este es el contenido de este fichero en GNU/LinuxFME:

^O17^L^Xscreen.lss

La instruccion 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 instruccion L borra la pantalla y establece lasconfiguraciones indicadas en la instruccion anterior, y finalmente Xscreen.lss le indica laimagen que debe cargar.

7.9. Web de ayuda

Acompanando al proyecto se ofrece una web de apoyo que contiene informacion sobretodo el proyecto. El proposito de esta web es el de ofrecer al usuario una ayuda de lo que esel proyecto GNU/Linux FME, lo que contiene, de las posibilidades que ofrece al usuario y decomo puede utilizarse. La web esta programada en lenguaje HyperText Markup Language(HTML), combinandolo con la tecnologıa Cascading Style Sheet (CSS ), tecnologıa paraaplicar estilos a paginas Web, y agregando algunas funciones de JavaScript, que es unlenguaje de script para el Web basado en Java.

La web aparece automaticamente cada vez que se inicia el escritorio de KDE en GNU/LinuxFME. Para lograr este efecto utilizo un acceso directo .desktop del mismo estilo que losutilizados para las entradas del menu (ver Seccion 7.7). Todo lo que tengo que hacer esmover el acceso directo al directorio /home/$USER/.kde/Autostart/ para que KDE loejecute al iniciar sesion el usuario $USER. En mi caso muevo web.desktop al directorio/home/fme/.kde/Autostart.

En cuanto al contenido de la web, la pagina de inicio contiene una breve descripcion delo que es GNU/Linux FME y para quien va dirigida la distribucion. En esta pagina hay unlink para que el usuario acceda al menu de la aplicacion web. El contenido del menu puedeapreciarse en la siguiente figura:

84

Page 85: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Figura 7.3: El menu de la Web del proyecto

Las distintas secciones de la web son:

1. Introduccion contiene una descripcion del proyecto: su contenido, sus aplicaciones,como funciona, etc. . .

2. Software instalado es una lista de todo el software instalado en la distribucionagrupado por su aplicacion.

3. Capturas de pantalla es una seleccion de capturas del escritorio de GNU/LinuxFME en diferentes situaciones para mostrar las posibilidades de las herramientas dela distribucion.

4. Ayuda de la distribucion, contiene enlaces a las paginas de ayuda del proyecto:

a) Arranque desde el CD-ROM explica al usuario como configurar la BIOSpara que arranque desde el CD-ROM.

b) Instalacion del nuevo software indica las instrucciones basicas para utilizarla herramienta APT [71] de instalacion de software Debian.

c) Instalacion en el disco duro explica al usuario los pasos a seguir para instalarGNU/Linux FME en el disco duro. Contiene a su vez tres enlaces a paginas deayuda segun la situacion en la que se encuentre el usuario:

1) Instalacion de GNU/Linux FME en una PC como unico sistema

2) Instalacion de GNU/Linux FME en una PC con Windows instalado

3) Instalacion de GNU/Linux FME en una PC junto con Windows

d) Creacion de paquetes Debian es una ayuda para los profesores de la facultada la hora de construir los paquetes de documentacion de las asignaturas.

5. Links es una lista de enlaces a paginas web de Internet relacionadas de alguna formacon GNU/Linux FME

85

Page 86: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Esta web se encuentra fısicamente fuera del sistema de ficheros de la distribucion (re-cordemos que la distribucion se encuentra comprimida en el fichero /META/meta.cloop).Cuando se inicia la distribucion el escritorio de KDE busca la web para cargarla en eldirectorio /usr/local/share/fme/web, que no es mas que un enlace simbolico al directorio/cdrom/web.

La razon de por que he separado de la distribucion la web del proyecto es la siguiente.En la raız del CD-ROM puedo encontrar tres ficheros:

autorun.infbrowsercall.exefmelinux.png

El cometido de estos tres ficheros es el siguiente. En un entorno Microsoft R© Windows R©, alintroducir el CD-ROM de GNU/Linux FME en la unidad el sistema operativo busca unfichero llamado autorun.inf, que contiene informacion del contenido del CD-ROM. Entreotras cosas busca un icono por defecto para mostrar en el Explorador de Windows y siexiste alguna aplicacion dentro del CD-ROM que se deberıa ejecutar. Este es el contenidodel 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 mostrarlo toma del parametro label. El parametro open indica al sistema la aplicacion que debeejecutar desde el CD-ROM cada vez que este se introduzca en la unidad. Cada vez quese introduce el CD-ROM el sistema ejecuta la aplicacion browsercall.exe, que recibe comoparametro la ubicacion de la pagina principal de la web de GNU/Linux FME. El ficherobrowsercall.exe se trata de un ejecutable que invoca al navegador por defecto para quecargue la pagina web indicada como parametro.

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

Esta claro que para lograr esta caracterıstica necesito tener la web copiada fuera delsistema de ficheros de la distribucion. Creando un enlace simbolico en /usr/local/share/fmehacia la ubicacion en el CD-ROM, no es necesario duplicar la web en el sistema de ficherosdel CD-ROM y en el de la distribucion. Cuando GNU/Linux FME se instala en el discoduro, 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

Page 87: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

7.10. Configuracion del calzador

Los scripts del calzador vienen configurados por los desarrolladores de Metadistros. Sufuncionamiento esta probado y practicamente sin hacer cambios la distribucion se iniciacorrectamente. Pero en GNU/Linux FME es necesario hacer algunos cambios para acabarde 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/. Estosscripts varıan su funcionamiento en funcion del valor de las variables de los ficheros deconfiguracion de Isolinux [5].

Los valores por defecto de todas estas variables provocan que la Live-CD pregunte unaserie 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 maquina, etc. . .

No es muy conveniente que el usuario tenga que entretenerse en introducir todos estosdatos cada vez que inicie GNU/Linux FME, lo mejor es que establezca valores por defectopara estos parametros y que el usuario los cambie si lo estima preciso. Como ya explique,todos estos valores por defecto son faciles de modificar mediante la consola de Isolinux (verSeccion 3.2). Las variables quedan configuradas de la siguiente manera:

Fichero var.conf Fichero q.confDISTRO=GNULinuxFME QSPLASH=NUSERNAME=fme QLANGUAGE=NUPASSWORD=fme QPASS=NRPASSWORD=root QUSER=NHOSTNAME=fmelinux QHOST=NLANGUAGE=es QINSTALL=NINSTALL=N QX=NROOT=N QEXPERT=NEXPERT=N QNET=NXCONF=YDHCP=YSTARTUSER=fmeSTARTX=YQNEW=N

87

Page 88: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

El significado de cada una de las variables esta explicado en la seccion 6.2.1. Lo quehago es definir valores para usernames, passwords, hostnames, etc. . . por defecto y evitarmediante las variables $Q* que la aplicacion pregunte al usuario. De esta manera se llegahasta el escritorio de KDE del sistema sin ninguna intervencion requerida por parte delusuario.

7.10.2. La instalacion de GNU/Linux FME

En el escritorio se encuentra un acceso directo a la aplicacion que instala GNU/LinuxFME en el disco duro de la PC donde se este ejecutando. Se trata tan solo de un accesodirecto al script del calzador /isolinux/cdroot/sbin/install-x.sh. Se trata de un script queutiliza la aplicacion x-dialog, una aplicacion que genera una interfıcie grafica X11 parainteraccionar con el usuario, para permitir al usuario introducir algunos parametros deinstalacion. Se ha modificado el script original para evitar al maximo la intervencion delusuario estableciendo parametros por defecto como los utilizados en la seccion anterior.

Este shellscript [32] primero consulta la tabla de particiones de los discos duros instaladosen el equipo. Si no encuentra ninguna particion de Linux ejecuta el gestor de particionescfdisk para permitir al usuario crear la particion necesaria para instalar GNU/Linux FME.Cuando cfdisk finaliza su ejecucion, se vuelven a buscar particiones Linux, y cuando seencuentran se listan en un menu ejecuta el script/isolinux/cdroot/sbin/install.sh, que instala la Metadistro en el disco duro.

Tras la instalacion de la distribucion en el disco se ejecuta el script grub-config.sh, quebusca los sistemas operativos instalados en los discos del ordenador (incluido GNU/LinuxFME) y los incluye a su archivo de configuracion para ejecutar el instalador de GRUB [16],y finaliza el proceso de instalacion. De esta forma al reiniciar el ordenador y tras extraerel CD-ROM de GNU/Linux FME, la BIOS arrancara GRUB, el cual mostrara una listade todos los sistemas operativos disponibles en el equipo para permitir al usuario elegir elque prefiera.

Finalmente se elimina el enlace simbolico /usr/local/share/fme/web de la distribucioninstalada (ver pagina 86), 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 instalacion en ladistribucion instalada (/home/fme/Desktop/install.desktop), que carece de utilidad en ladistribucion ya instalada.

88

Page 89: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

7.11. Ultimos pasos

Ya tengo la distribucion lista instalada en mi particion sources (ver Seccion 7.2), elcalzador instalado y configurado (ver Seccion anterior) y mi sistema GNU/Linux host conlas herramientas necesarias para crear la Metadistro (ver Seccion 7.2).

Es momento de generar el CD-ROM de GNU/Linux FME. Para ello inicio el ordenadorcon mi sistema host, que esta equipado con todo el software necesario para crear una Me-tadistro. Lo primero que debo hacer es utilizar las herramientas de cloop (ver Seccion 3.3)para generar la imagen de la distribucion comprimida. Pero antes de generar la imagencomprimida necesito la distribucion en un fichero como imagen ISO [25]. Todo este pro-cedimiento esta bien explicado en el documento [20]. Como indican en el documento, yaque este proceso se repetira cada vez que se genere una nueva version de la Live-CD, lomejor es escribir un script que lo haga todo automaticamente:

#!/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

Page 90: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

/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 dondetrabajara este script: $SOURCES contiene el directorio donde esta montada la particiondonde he instalado la distribucion source, es decir la distribucion de GNU/Linux FME.$MASTER es el directorio donde se guarda el calzador y todo el contenido del CD-ROMfinal excepto la distribucion source. $ISODIR es el directorio donde se guardan las imagenesISO generadas para crear la Metadistro.

La variable $META contiene el nombre de la Metadistro y es mas importante de lo queparece. Este nombre se utiliza de identificador para encontrar la unidad de CD-ROM dondese ha introducido GNU/Linux FME (ver Seccion 6.2.1), y debe coincidir con el valor de lavariable $DISTRO del fichero /isolinux/conf/var.conf del calzador.

Los ficheros que el script genera son $LFSISO, que es la imagen ISO del sistema deficheros a comprimir (Linux File System ISO, esto es, del sistema de ficheros del sistemasources. La imagen final que se grabara al CD-ROM sera $CDISO.

El script comienza copiando la configuracion del usuario estandar del sistema fme aldirectorio /etc/skel. De esta forma cualquier usuario que se crea en el sistema comienzacon el entorno creado para el usuario fme. Se copia una version del fichero de usuarios delsistema que no contiene el usuario fme. Recuerdo al lector que los usuarios se crean enMetadistros en tiempo de carga del sistema, y si el usuario existe en este fichero el procesoinit detiene el arranque y apaga la PC.

Tras realizar estas copias, el script limpia de informacion no necesaria la distribucionsource. Los ficheros temporales de /tmp, /var/tmp, los mensajes del sistema /var/log, lospaquetes descargados temporalmente por APT [71] y los trabajos de impresion pendientesde /var/spool se eliminan del sistema de ficheros a comprimir.

Comienza el quid de la creacion de la Metadistro. La instruccion mkisofs genera la primeraimagen, la del sistema de ficheros source sin comprimir. La opcion -R habilita informacionadicional de los ficheros en el CD-ROM. La opcion -L y -allow-multidot permite los puntos .en los nombres de ficheros de la distribucion, saltandose ası la compatibilidad con nombresMS-DOS. La opcion -l permite los nombres de fichero de hasta 31 caracteres. La opcion -Vcomo ya hemos indicado anteriormente especifica el Volume ID del CD-ROM, un nombreunico para el CD-ROM creado. Tras -o se indica el fichero con la imagen ISO que sepretende generar. La opcion -hide-rr-moved cambia los ficheros de informacion adicional

90

Page 91: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

generados por la opcion -R y los mantiene ocultos en el CD-ROM. La opcion -v (verbose)permite que la aplicacion mkisofs muestre informacion del proceso de creacion de la imagenpor pantalla mientras se crea. Finalmente le paso como parametro el directorio dondeesta montado el sistema que debe convertir en imagen ISO.

Tras crear la primera imagen restauramos el contenido del fichero /etc/passwd originalcon 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 recien creada. Le pasamos como parametro el nombre delfichero que contiene la imagen ISO, y como segundo parametro le pasamos el tamano delos bloques en bytes del sistema comprimido. Este numero debe ser multiplo de 512. Lasalida estandar la re-dirijo hacia el fichero comprimido que estara en directorio /META delsistema de ficheros del CD-ROM. El nombre de este fichero debe coincidir con el nombrede fichero especificado en el script /linuxrc que esta dentro del sistema de ficheros initrd(ver Seccion 3.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 informacion de los ficherosque se crea en CD-ROM, -J para permitir algunas opciones adicionales en el sistema deficheros (estandar Joliet), -b para indicar que el CD-ROM sera grabado con el estandarEl-Torito [24] y le indico la imagen de arranque que debe ejecutar al arrancar desde esteCD-ROM que vamos a crear. Con la opcion -c indico el fichero del catalogo de arranquede Isolinux [5]. La opcion -no-emul-boot indica que no se trata de una imagen que debecargarse directamente sin utilizar emulacion de arranque desde disquet, mientras que conboot-load-size le indico el tamano en sectores virtuales (512 bytes) de la imagen de arran-que. La opcion -boot-info-table incorpora una pequena tabla de 56 bytes en la imagen dearranque. Finalmente le indico donde debe dejar el fichero con la imagen generada con laopcion -o.

Una vez ejecutado este script tengo la imagen generada pero no el CD-ROM de GNU/LinuxFME. 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

Page 92: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Comienzo declarando las variables $ISODIR y $CDISO exactamente como en el scriptanterior. Para crear los CD-ROMs utilizo la herramienta cd-record, un referente en GNU/Linuxen lo que a software de grabacion se refiere. Para utilizar este software es necesario tenerla opcion de emulacion SCSI activada en el nucleo de Linux (mas informacion en la sec-cion 5.8).

La primera instruccion borra el contenido del CD-RW con la opcion “borrado rapido”,que tarda del orden de 4 veces menos de lo que podrıa tardar el metodo de “borradoestandar”. La opcion -v (verbose) me proporciona informacion sobre el progreso de la gra-bacion mientras se graba. La opcion dev identifica mi grabadora entre todos los dispositivosconectados al bus SCSI.

Por ultimo utilizo de nuevo cdrecord para grabar la imagen ISO de la Metadistro. Comoparametro adicional, le indico a cdrecord que mi grabadora es capaz de grabar CD-RWsa una velocidad de hasta 10x. Si no se especifica velocidad cdrecord grabara a la maximavelocidad permitida por la grabadora.

Despues de finalizar la grabacion es conveniente liberar espacio en el sistema ejecutandoun script como el siguiente. Las imagenes generadas por los scripts no tienen ningunautilidad ahora, ya que ¡¡Ya tengo el CD-ROM de GNU/Linux FME creado!! y puedo hacertantas copias como desee.

#!/bin/bash

ISODIR=/mnt/cd/iso

LFSISO=meta.iso

CDISO=final.iso

rm $ISODIR/$LFSISO

rm $ISODIR/$CDISO

7.12. Conclusion: Futuro de GNU/Linux FME

Esta distribucion la he creado siempre con el pensamiento de estar realizando un trabajoque servira a alguien en el futuro. Estoy convencido que este Live-CD ofrece muchas posi-bilidades a las personas de la Facultad de Matematicas y Estadıstica, tanto a los alumnoscomo a los profesores, y el modelo de distribucion puede utilizarse como base para realizarotras Live-CDs.

92

Page 93: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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 esposible desde el primer minuto de ejecucion trabajar con cualquier herramienta incluidaen la distribucion.

Cada vez mas, el mundo del software libre se esta abriendo camino entre el mundillouniversitario. Las directivas de casi todas las instituciones han mostrado un serio interesen utilizar software libre en las instituciones publicas, como son las universidades, viendoel gran numero de 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 todoes que ofrece un potencial realmente increible para un futuro nada lejano. Se conoce quecada vez mas gente se interesa por GNU/Linux y eso se traduce en que cada vez mas gentetrabaja con software libre. Este hecho aumenta la evolucion del software, las versiones delos programas son cada vez mas periodicas y continuamente aumentan las prestaciones y lafiabilidad de las aplicaciones. Por eso no cuesta mucho imaginar que podrıa suponer comen-zar a utilizar desde ya una herramienta como GNU/Linux FME y ver como los estudiantesy profesores trabajan con ella, mejoran posibles fallos, ofrecen sugerencias a un posibleequipo de trabajo formado por profesionales informaticos que estuvieran continuamentemejorando el producto.

Con las herramientas incluidas en GNU/Linux FME es posible desde el primer momentocrear paquetes de documentacion de asignaturas, documentos cientıficos de gran calidad,diagramas y esquemas de apoyo a la asignatura. Con las instalaciones informaticas queactualmente se encuentran en cualquier departamento informatico de la universidad serıaposible crear un repositorio de paquetes de asignaturas siempre actualizados, creados porprofesores, que los alumnos podrıan descargar e instalar con gran facilidad para mantenersu coleccion de examenes, ejercicios, apuntes, manuales, etc. . . siempre actualizada.

Estos paquetes de asignaturas se podrıan combinar con los paquetes de software queDebian ofrece desde sus repositorios oficiales, con una herramienta llamada metapaquetes.Los metapaquetes son listas de paquetes que se instalan en conjunto mediante el sistemade dependencias de la aplicacion APT [71]. Se podrıan crear metapaquetes con todo elsoftware y documentacion necesaria para una determinada asignatura, bloque curricular oincluso titulacion.

93

Page 94: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

94

Page 95: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Apendice A

Codigo del script /linuxrc

Este es el codigo fuente del script contenido en el fichero de inicializacion de la ramdiskde 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

Page 96: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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

Page 97: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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

Page 98: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

98

Page 99: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Apendice B

Diagramas y Figuras

99

Page 100: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Buscar unidad CD-ROMInicio

¿SCSI?

montar CD

No

Buscar imagen del sistema

Cargar módulos SCSI

¿Sistema Comprimido? Montar con loopMontar con cloop

SíNo

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

Page 101: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Ejecución de init.sh

Crea usuario FME(makeuser.sh)

Establece clave de root

Detección y configuraciónde hardware en 2º plano

(hw-detect.sh)

Configura hostname

Configurar la red IP y CUPS

Detectar configuración X(X-detect.sh)

Activar la SWAP disponible

Fin

¿Iniciar con X?

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

No

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

101

Page 102: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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

102

Page 103: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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

103

Page 104: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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

104

Page 105: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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

105

Page 106: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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

106

Page 107: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

Figura B.8: Flujo del script hwdetect.sh llamado desde init

107

Page 108: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

108

Page 109: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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] ¿Como hacer facilmente 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] Definicion de Software Libre. ”http://www.gnu.org/philosophy/free-sw.es.html”.

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

[8] Distribucion ACM-LUX. ”http://193.147.71.100/ acmlux/documentacion/”.

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

[10] Documentacion oficial 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

Page 110: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

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

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

[18] Hispalinux, Asociacion de Usuarios Espanoles de 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] Instalacion de Debian GNU/Linux 3.0 para Intel x86.”http://www.debian.org/releases/stable/i386/install.es.html”.

[22] Introduccion a Corel Linux.”http://www.linuxplanet.com/linuxplanet/reviews/1395/1/”.

[23] Introduccion al 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 deteccion de 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

Page 111: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

[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] Pagina Oficial 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] Revision de 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 informacion y 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

Page 112: El proyecto GNU/Linux FME Distribuci¶on Libre para la ...josep/PFCs/Metadistros.pdf · El proyecto GNU/Linux FME Distribuci¶on Libre para la Facultad de Matem¶aticas y Estad¶‡stica

[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 nucleo de 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ın de Agar Tirado. Analizando en profundidad el proyecto METADIS-TROS. El proceso de Deteccion de Hardware. Emergya,S.C.A., Sep 2003.

[71] GustavoNoronha Silva. APT HowTo. Free Software Foundation, 2001. ”Traduccionde Hugo Mora”.

[72] Clinton De Young. Guıa de instalacion de Debian 3.0. TLDP-ES, 2002. ”Traduccionde Manuel Canales Esparcia”.

112