Este documento presenta un proyecto de fin de máster sobre la creación de distribuciones Linux. Explica que se analizarán diferentes métodos para crear distribuciones, ya sea basándose en otra existente o desde cero. Incluye capítulos sobre la descripción de distribuciones, herramientas para crearlas a partir de bases como Ubuntu, y cómo implementar una distribución personalizada desde sus orígenes.
Este documento presenta un proyecto de fin de máster sobre la creación de distribuciones Linux. Explica que se analizarán diferentes métodos para crear distribuciones, ya sea basándose en otra existente o desde cero. Incluye capítulos sobre la descripción de distribuciones, herramientas para crearlas a partir de bases como Ubuntu, y cómo implementar una distribución personalizada desde sus orígenes.
Este documento presenta un proyecto de fin de máster sobre la creación de distribuciones Linux. Explica que se analizarán diferentes métodos para crear distribuciones, ya sea basándose en otra existente o desde cero. Incluye capítulos sobre la descripción de distribuciones, herramientas para crearlas a partir de bases como Ubuntu, y cómo implementar una distribución personalizada desde sus orígenes.
Rafael Monroy Caballero Ingeniero Tcnico Informtico de Gestin carlinayrafa@hotmail.com
Tanto la memoria de este trabajo como el software desarrollado se distribuyen bajo la licencia GNU GPL v3. La Licencia Pblica General GNU (GNU GPL) es una licencia libre, sin derechos para software y otro tipo de trabajos. Las licencias para la mayora del software y otros trabajos prcticos estn destinadas a suprimir la libertad de compartir y modificar esos trabajos. Por el contrario, la Licencia
Pblica General GNU persigue garantizar su libertad para compartir y modificar todas las versiones de un programa--y asegurar que permanecer como software libre para todos sus usuarios.
Cuando hablamos de software libre, nos referimos a libertad, no a precio. Las
Licencias Pblicas Generales estn destinadas a garantizar la libertad de distribuir copias de software libre (y cobrar por ello si quiere), a recibir el cdigo fuente o poder conseguirlo si as lo desea, a modificar el software o usar parte del mismo en nuevos programas libres, y a saber que puede hacer estas cosas.
Para obtener ms informacin sobre las licencias y sus trminos puede consultar: http://www.gnu.org/licenses/gpl.html (Licencia original en ingls) http://www.viti.es/gnu/licenses/gpl.html (Traduccin de la licencia al castellano)
Se ha realizado el presente trabajo para la obtencin del ttulo de Mster Propio en Administracin, Comunicaciones y Seguridad Informtica por la Universidad de Almera http://masteracsi.ual.es 6 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
NDICE CAPTULO 1 INTRODUCCIN................................................................................................................................ 8 1.1 PLANIFICACIN ..................................................................................................................................................... 9 CAPTULO 2 DESCRIPCIN DE UNA DISTRIBUCIN................................................................................... 11 2.1 EL ORIGEN........................................................................................................................................................... 11 2.1.1 Distribuciones ............................................................................................................................................... 13 2.1.2 /etc/motd ....................................................................................................................................................... 15 2.1.3 /etc/issue........................................................................................................................................................ 16 2.1.4 /etc/lsb-release............................................................................................................................................... 16 2.2 CLASIFICACIN DE DISTRIBUCIONES.................................................................................................................. 16 2.2.1 Por arquitectura............................................................................................................................................. 17 2.2.2 Modo de ejecucin........................................................................................................................................ 17 2.2.3 Origen y Destino ........................................................................................................................................... 18 2.2.4 Base de la distribucin .................................................................................................................................. 19 2.2.5 Por paquetes primarios.................................................................................................................................. 19 CAPTULO 3 CREACIN DE UNA DISTRIBUCIN......................................................................................... 21 CAPTULO 4 IMPLEMENTACIN USANDO UNA BASE................................................................................. 25 4.1 CREACIN USANDO -UCK- .................................................................................................................................. 26 4.1.1 Comprobacin............................................................................................................................................... 33 4.2 CREACIN USANDO -REMASTERSYS- .................................................................................................................. 34 4.2.1 Comprobacin............................................................................................................................................... 39 4.3 CREACIN USANDO -UBUNTU BUILDER- ............................................................................................................. 40 4.3.1 Comprobacin............................................................................................................................................... 45 CAPTULO 5 IMPLEMENTACIN DESDE CERO............................................................................................. 47 5.1 CREACIN CON ANFITRIN.................................................................................................................................. 47 5.1.1 Comprobacin............................................................................................................................................... 58 CONCLUSIONES Y TRABAJO FUTURO................................................................................................................. 61 BIBLIOGRAFA............................................................................................................................................................ 63
8 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Captulo 1
INTRODUCCIN
El presente documento se presenta como la memoria del Proyecto Fin de Mster (PFM) titulado Creacin de distribuciones Linux que est asociado al Mster en Administracin, Comunicaciones y Seguridad Informtica de la Universidad de Almera. Siendo realizado en su total integridad por Rafael Monroy Caballero y supervisado por el director del mster, Julio Gmez Lpez. Hoy en dia, no solamente se habla sino que se utiliza cada vez ms sistemas operativos GNU/Linux tanto en el mundo empresarial, como en el domstico, impulsados por las diferentes caracteristicas que cada vez hacen mejorar su rpida expansion en el sector informatico, como pueden ser por ejemplo, su bajo coste econmico frente a otras ofertas, pudiendo llegar a ser dicho coste hasta cero, su fcil manejo e instalacin asi como su robustez y fiabilidad entre otras muchas ventajas que se pueden encontrar. La posibilidad de crear un sistema operativo a medida ha provocado que cualquier entidad, organismo o en definitiva usuario, tenga un problema especifico, no habiendo sistemas operativos que solventen sus necesidades de forma directa, teniendo que reconstruirlos, mediante la instalacin o eliminacin de scripts o paquetes para asi desempear la tarea especifica requerida. Pero muchas veces no se sabe como se pueden hacer estos procesos de forma directa o a veces que esa mimsa reconstruccin se pueda distribuir a otras mquinas o usuarios con las mismas necesidades. El objetivo del libro es aprender a construir nuestra propia distribucin de un sistema operativo GNU/Linux presentando diferentes posibilidades para ello. El libro se divide en los siguientes captulos: Captulo 1. Introduccin. Se inicia el documento haciendo una breve descripcin junto con la planificacin de los proyectos construidos. Captulo 2. Descripcin de una distribucin. En el segundo captulo, se describe que es una distribucin y sus variantes, adems de hacer una aproximacin a la gran cantidad de distribuciones que se pueden encontrar en el mercado, mediante clasificaciones de cada una de ellas segn caracteristicas diferenciadoras.
9 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Captulo 3. Creacin de una distribucin. En este captulo, se describen las diferentes posibilidades y herramientas que existen para la creacin de distribuciones dependiendo de la base que se quiera tomar. Captulo 4. Implementacin usando una base. Se analizan las diferentes herramientas existentes en el mercado que permiten la creacin de distribuciones basadas en otra previa. Adems se aprender a instalar y configurar tales aplicaciones asi como la creacin de diferentes ISO basadas en la distribucin Ubuntu Captulo 5. Implementacin desde cero. Se estudia la metodologia junto con las diferentes politicas a seguir para la creacin de una distribucin sin basarse en ninguna previa hasta llegar a la implementacin. Se aprender a configurar un sistema desde su raz.
1.1 PLANIFICACIN
La planificacin de tareas para la realizacin del proyecto se detalla a continuacin :
(01 Julio 15 Julio): documentacin inicial sobre la creacin de distribuciones GNU/Linux. (16 Julio -19 Agosto): implementacin de un sistema GNU/Linux creado desde cero. (20 Agosto 31 Agosto): implementacion de sistemas GNU/Linux utilizando una base. (01 Septiembre 03 Septiembre): Fase de pruebas. (02 Septiembre 15 Septiembre): Fase de creacin del documento del proyecto.
Captulo 2
DESCRIPCIN DE UNA DISTRIBUCIN 2.1 EL ORIGEN
Existen diferentes definiciones de que es un sistema operativo, siendo todas ellas muy vlidas, pero se va a definir un Sistema Operativo al programa o conjunto de programas que en un sistema informtico gestiona los recursos de hardware y provee servicios a los programas de aplicacin, ejecutndose en modo privilegiado respecto de los restantes. En la actualidad hay diferentes sistemas operativos en el mercado, pero todos ellos interactuan con el resto de las partes como se muestra en la Figura 1-1.
Los S.O. han ido evolucionando en relacin muy directa con las historia de las arquitecturas de las computadoras, pasando por generaciones en las que se desarrollaban nicamente de procesamientos por lotes (batch), multiprogramacin, sistemas distribuidosetc.
Figura 2-2.1.Partes que componen un Sistema Operativo.
12 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
A lo largo del ao 1983, Richard Matthew Stallman comenz con el llamado proyecto GNU, con el objetivo de crear un sistema operativo de libre distribucin compatible con UNIX y con los estndares POSIX. En 1985 cre la Fundacin de Software Libre y escribi la Licencia Pblica General de GNU. Esto dio como resultado la creacin de mltiples programas en muy poco tiempo, por lo que en el ao 1990 ya exista el software disponible para crear un nuevo sistema operativo, pero el ncleo an faltaba. El ncleo Linux hace su aparicin por primera vez durante el ao 1991, y lo hace como una aficin de un joven estudiante de Informtica finlands, llamado Linus Torvalds, que haba gestado la idea de crear un sistema operativo Unix para los usuarios de Minix, creado por Andy Tanenbaum.
Linus Torvalds utiliz el trmino Linux en un principio para hacer referencia exclusivamente al ncleo del Sistema Operativo, pero con el paso del tiempo, ese nombre fue utilizado para hacer mencin tanto al ncleo o kernel como al conjunto de aplicaciones con las que se distribuian, conformando un sistema completo. Richard Stallman, haciendose participe de tal popularizacin del uso de linux, solicit que fuera designado el nombre de GNU/Linux, aunque por simplicidad en la actualidad se conozca nicamente como Linux.
Linux es un Sistema Operativo caracterizado por ser una implementacin libre basada en Sistemas Unix desarrollada para funcionar en computadoras personales, servidores y estaciones de trabajo. Originalmente se orient a procesadores i386. En la actualidad, soporta mquinas basadas en DEC ALPHA, SPARC, MAC/AMIGA, POWERPC y MOTOROLA, entre otras.
URL de inters En la web http://www.kernel.com se encuentran alojados los archivos fuentes de diferentes kernels o ncleos.
El proyecto GNU/Linux cumple unas pautas para la creacin de sistemas libres mediante una politica firme en la que se compromete a incluir y a su vez a ofrecer software libre. Si alguna de las aplicaciones, plataformas de programacin, controladoresetc, no respeta tales polticas, son rechazados por la distribucin y si por error lo incluyeran, serian eliminados. Asi pues, se trata de una gran ventaja respecto a otros sistemas operativos en los que se presentan como paquetes empotrados.
Gracias a la liberacin de cdigo, se ha producido un incremento de ideas para la mejora de este entorno de trabajo aportandose cada una de ellas y generando diferentes formas de ver un origen dandose en la actualidad todas y cada una de las diferentes distribuciones basadas en el proyecto inicial que era GNU/Linux.
13 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
2.1.1 Distribuciones
Una distribucin de Linux es un paquete que incluye el ncleo Linux o kernel, los metodos de instalacin, el mantenimiento del sistema y tambien una seleccin de aplicaciones preinstaladas. De esta manera, una distribucin Linux puede ser vista como una forma de facilitar la instalacion y la configuracin de un sistema GNU Linux en una computadora. Originalmente, las diversas distribuciones Linux se limitaban a recopilar y empaquetar aplicaciones para ser distribuidas. Actualmente, ademas de esto, incorporan interfaces de instalacin grficas cada vez ms fciles de seguir, asi como tambien autodeteccin de hardware, que requiere cada vez menos intervencin del usuario final.
Figura 2-2.1.1. Arquitectura de las distribuciones Linux con componentes GNU
Los aos de existencia de las distribuciones basadas en entorno Linux se podria decir que empezaron a surgir a los pocos aos de que tomara popularidad los sistemas Linux. Aunque algunas distribuciones han nacido se han quedado estancadas, otras han seguido viviendo entre los usuarios y consolidandose tanto, que los desarrolladores las han tomado como base para crear nuevas distribuciones.
Figura 2-2.1.1. aos de existencia de algunas distribuciones 14 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
15 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Figura 3-2.1.1. Linea de tiempo de algunas distribuciones
URL de inters En http://upload.wikimedia.org/wikipedia/commons/9/9a/Gldt1009.svg se puede visualizar la linea en el tiempo .
Existen diferentes formas para verificar la distribucin Linux, asi como de la versin con la que se est trabajando. En el apartado siguiente se muestran tres formas de comprobarlas.
2.1.2 /etc/motd
Como se ha comentado la variedad de distribuciones existentes en inmensa y a travs de este archivo se puede saber la distribucin, como la versin del sistema con el que se trabaja. Motd son las siglas de message Of The Day. El contenido de este fichero es mostrado tras hacer login de forma correcta en los sistemas Linux en los que se indica la versin del sistema operativo.
Figura 2-2.1.1. Salida del fichero /etc/motd
16 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
2.1.3 /etc/issue
Este fichero contiene el texto que normalmente es usuado como identificador del sistema operativo y ser mostrado junto al login.
Figura 2-2.1.3. Salida del fichero /etc/issue
2.1.4 /etc/lsb-release
Al igual que los dos anteriores se encuentra en la misma ruta aportando informacin de la distribucin, que se encuentra guardada en las variables DISTRIB_ID, DISTRIB_RELEASE, DISTRIB_CODENAME, DISTRIB_DESCRIPTION.
Figura 3-2.1.4. Salida del fichero /etc /lsb-release
2.2 CLASIFICACIN DE DISTRIBUCIONES
Como se ha visto, existe infinidad de distribuciones Linux siendo la base de todas ellas el ncleo o kernel al que se le agregan diferentes bibliotecas y herramientas de diferentes proyectos como GNU o BSD.
17 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
En la actualidad el crear una distribucin de GNU/Linux se ha convertido en un proceso relativamente fcil en especial con la ayuda de las herramientas que estan surgiendo para dicho proposito que facilitan tal labor en las que se dan las opciones de adopcin de formatos de paquetes (.Deb, .rpm..etc), el gestor de ventanas (Gnome, KDE..) la forma de iniciar el sistema (Live o no-Live) y un sinfn de opciones, dando como resultado infinidad de distribuciones diferentes. Se pueden hacer multiples clasificaciones de las distribuciones existentes en la actualidad, pero a continuacin se muestran las elegidas por el autor de este documento.
Nota Existe una infinidad de distribuciones Linux. Segn el site http://www.distrowatch.com, reconce hasta 322 distribuciones.
2.2.1 Por arquitectura
Una primera clasificacion podra ser basandose en el tipo de mquina destino que utilizar la distribucin ya que no todas las distribucones soportan todas las arquitecturas de hardware exitentes. Se podra hablar de mquinas tipo Intel x86, AMD64, Power Pc, HP PA-RISC, SPARC, IA-64 las cuales dan rendimientos diferentes dependiendo de las caracteristicas intrnsecas cada una de ellas.
Consejo En la actualidad las arquitecturas tienden a dar resultados muy similares pero aun asi exiten diferencias a tener en cuenta en funcin del proposito que se tenga.
2.2.2 Modo de ejecucin
Existen dos formas de ejecuacin siendo la primera de ella la ms tradicional, es decir, sobre el disco duro para dar paso a una segunda mucho ms novedosa que es la distribucin LIVE. El sistema Linux Live es un sistema basado en GNU/Linux (en cualquiera de sus distribuciones) que es capaz de arrancar desde un almacenamiento secundario, previa configuracin de la BIOS, sin utilizar el disco duro para instalar sofware y sin ningun tipo de instalacin nicamente utilizando la memoria RAM del equipo y siendo totalmente transparente para el usuario como si del modo tradicional de instalacin se tratase. En la actualidad existen varios tipos de soporte externo en los que se estan distribuyendo los sistemas Linux Live siendo los ms populares los CD, DVD y pendrive.
Nota El primer CD-Live de Linux fue Yggdrasil Linux en 1995, aunque su xito fue mnimo, para dar paso posteriormente a DemoLinux en el ao (2000).
18 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Los sistemas Live presentan una serie de ventajas respecto a la instalacin tradicional y es que suelen utilizarse como herramientas de rescate de los sistemas previamente instalados asi como de la portabilidad ya que al estar almacenado en un medio extrable y no requerir instalacin, puede arrancarse en casi cualquier equipo en unos pocos minutos, siempre y cuando tenga el soporte adecuado (puerto USB o unidad lectora de CD/DVD) Esa naturaleza no persistente que provoca la no instalacin en disco duro, ya que al instalarse en la RAM del equipo, al reiniciar ste eliminar cualquier rastro del sistema operativo y de la actividad llevada a cabo, incluye que se evite cualquier infeccin que se haya podido producir, teniendo siempre una distribucin limpia (sobre disco de solo lectura, sobre USB no procederia tal afirmacin). Conviene destacar que este carcter no persistente es generalmente configurable, existiendo la opcin de almacenar preferencias que se conservarn de una ejecucin a otra. Para muchas operaciones que requieran un nivel de seguridad y de privacidad se suele utilizar las distribuciones LiveCD, como pueden ser transacciones bancarias. Otra utilidad muy usada es para desinfectar sistemas en las que residen codigos maliciosos, ya que el contagio es imposible.
No todo son ventajas y es que este tipo de distribuciones estan congeladas en el tiempo, es decir, que se no se pueden actualizar ni aadir aplicaciones.
Nota Las caracteristicas son la seguridad, portabilidad y disponibilidad en segundos de un Sistema y como inconvenientes sistema congelado en actualizaciones
2.2.3 Origen y Destino
La libertad del software libre como de la rpida expansin de los sistemas Linux esta posibilitando el origen de sistemas comerciales como de no comerciales, de la creacin de distribuciones creadas por usuarios como por empresa as como la clasificacin segn los usuarios finales siendo de propsito general como de propsito especifico. Una distribucin comercial es la que se desarrolla y se mantiene enteramente por una empresa as como tambin su propio desarrollo. En ocasiones existe una comunidad de usuario que desarrollan pequeos paquetes pero nunca influyen en las decisiones de la distribucin tanto en el desarrollo, mantenimiento como en las polticas. En contraposicin a las distribuciones comerciales encontramos las distribuciones de comunidad que son las que se desarrollan, se mantienen y se gestionan por el entorno de usuarios que configuran la comunidad. Pueden existir empresas involucradas siendo parte de ese engranaje que forma la comunidad pero no lideran el proyecto, sino que son parte activa como cualquier otro miembro.
A continuacin se pueden ver alguna de las distribuciones que se han construido para un propsito especfico.
Tabla 2.2.3-1 distribuciones utilizadas para propsito especifico Nombre URL OpenWrt Orientada para ser empotrada en dispositivos enrutadores Edubuntu Un sistema del proyecto Ubuntu para entornos educativos LULA Distribucin acadmica para universidades 19 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
MythTV Diseada para tratamiento de video digital. 64 Studio para la edicin multimedia tomando como base Debian ABC GNU/Linux Orientada a la construccin de clusters Beowulf. Backtrack Herramienta enfocada a la seguridad de sistemas informticos Scientific Linux Resultado de Fermilab y CERN ArtistX Orientada al diseo grfico Parted Magic Distribucin para administracin de discos duros <
2.2.4 Base de la distribucin
Como se viene comentando todas las distribuciones Linux tienen un origen en comn y es el creado por Linus Torvard, pero esta sera una clasificacin muy trivial, por lo que se ha tomado en cuenta las grandes distribuciones de la historia y las que han derivado de ellas. Entre las principales distribuciones se podra mencionar las basadas en: o Debian o Ubuntu o Knoppix o Gentoo o Red Hat Enterprise Linux o Fedora o Slackware Linux o SUSE Linux o Mandriva o PCLinuxOS o Arch Linux o Puppy Linux
Esta clasificacin es puramente referencial en la que se pueden aadir otras referencias.
2.2.5 Por paquetes primarios Un sistema basado Linux, esta conformado por un ncleo o kernel y un conjunto de paquetes que le dan la versatilidad de cara al usuario final. Las diferentes polticas de instalacin de paquetes as como de la gestin de ellos, provoca la existencia de distribuciones que mantienen diferentes filosofa. Se podra hacer una clasificacin por paquetes .deb, .rpm, Conary y los que utilizan directamente el cdigo fuente. En la siguiente Figura se muestran algunas distribuciones as como del gestor de paquete que utilizan, sus formatos y algunos aplicativos que los soportan
20 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Figura 1-2.2.5. Imagen conceptual de distribuciones relacionadas con paquetes primarios.
21 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Captulo 3
CREACIN DE UNA DISTRIBUCIN
En la actualidad para la creacin de una distribucin Linux existen diversas herramientas para poder hacerlo pero todas ellas son una remasterizacin o dicho de otra forma, una personalizacin del sistema que toman como base, adaptando los paquetes de software y configuraciones segn el propsito especifico que se busque. Existe otra alternativa la cual es mucho mas interesante a la vez que tediosa de hacerlo y es no tomando ninguna distribucin previa sino que se toma como base el kernel y se va construyendo nuestro sistema como si de una pirmide se tratase, compilando paquete a paquete segn nos interese.
Segn el sistema operativo que se quiere tomar como base, existen una variedad de aplicativos que ayudan a crear nuestro propio sistema operativo personalizado. En la siguiente tabla se muestran las aplicaciones y los sistemas operativos que soportan para el objetivo de este proyecto.
En los prximos captulos se va a explicar algunas herramientas, tomando como base un sistema operativo Ubuntu.
Tabla 3.2.3-1 Herramientas para la creacin de distribuciones Nombre Soporte Tipo Remastersys Debian y Ubuntu Interfaz grfico Reconstructor Debian y Ubuntu Interfaz grfico UCK Ubuntu Interfaz grfico Builder Ubuntu Bajo lnea de comandos(scripts) Ubuntu-Builder Ubuntu Interfaz grfico Revisor Fedora Bajo lnea de comandos Pungi Fedora Bajo lnea de comandos SuseStudio Suse Aplicativo Web Linux-Live Slackware Bajo lnea de comandos(scripts) Instalinux CentOS, Debian, Fedora, OpenSuse, Scientific, Ubuntu Aplicativo Web
Las dos vertientes de estas herramientas son, la personalizacin o customizacin del sistema tomado como base, creando uno nuevo. Por lo tanto, se dice que hay una dependencia entre la distribucin final con la tomada como base. Un ejemplo de herramienta que facilita este proceso, seria Ubuntu Builder, 22 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
que personaliza Ubuntu al propio gusto. Una segunda vertiente es la creacin con independencia de cmo tengamos el sistema base configurado. Un ejemplo claro es UCK.
Antes de comenzar a crear la nueva distribucin, hay que asegurarse de disponer del espacio libre mnimo equivalente a dos instalaciones del anfitrin que tengamos en ese momento para la realizacin de la compilacin, adems de tener en cuenta se las aplicaciones extras o especificas que vamos a instalar en nuestra distro final, van a requerir un espacio extra.
En el caso que se vaya a utilizar una remasterizacin de una distribucin ya existente, habra que elegirla con el Kernel ms estable y actualizar el sistema operativo al mximo nivel, es decir, tener instalados los paquetes en sus ltimas versiones corregidos de errores y desde repositorios oficiales para evitar futuros problemas. La forma ms fcil seria desde los diferentes gestores de actualizaciones que dispone el mundo Linux dependiendo de la distribucin con la que contemos en ese momento.
Despus de los requisitos tcnicos, habr que tener bien definido los detalles propios de nuestro futuro Sistema Operativo como son en entorno de escritorio (Gnome, KDE)
La siguiente tabla muestra como ejemplo la distribucin base y todas aquellas distribuciones creadas a partir de ella. Como se puede observar la cantidad es enorme y no son todas las que debera de haber, sino, que son las ms conocidas.
Tabla 3.2.3-1 distribuciones utilizadas para propsito especifico junto con su base Distribucin Base Distribuciones creadas a partir de ella Debian Linux Tiger,2X ThinClientOS, 64 Studio, Adamantix, Amber Linux, AGNULA, Aquamorph, ARMA, tcc Omoikane, ArtistX, ASLinux, B2DLinux, Baltix, Bayanihan Linux,BeatrIX, Bluewall GNU/Linux, Big Linux,Bonzai Linux, BOSS, Canaima, Ctix,CensorNet, College Linux, Debian-BR-CDD, DeveLinux, Dzongkha Linux, Elive,Epidemic GNU/Linux,ERPOSS, Euronode, Freespire (basada en Linspire), Gibraltar Firewall,gnuLinEx, Lihuen GNU/Linux, IndLinux, Insigne Linux, KDEMar,Kanotix, KarachiOS, GNU/Linux Kinneret, Knoppix, LinEspa, LocalArea Security Linux (L.A.S.), NepaLinux, Olive, OS Desktop, PAIPIX, PilotLinux,Piren, RAYS, Resulinux, Rxart, Symphony OS, SwechaLiveCD, Taprobane GNU/Linux, Thisk Server, Tilix Linux, Trinux, Tuquito,Ubuntu, ULAnix, Ulteo,Vyatta, Webconverger, WIENUX, X-Evian y Xfdl,entre mucha otras. Ubuntu Alinex, andLinux, Abuldu, Admelix(LiveCD), Baltix, BeaFanatIX,Ciberlinux, ComFusion, Edubuntu, LliureX, eAROS, EHUX, Elbuntu,FEINIX-Arq, Fluxbuntu, Freespire, Freezy Linux, Geubuntu, Gobuntu,Goobuntu, gOS, Guadalinex, gNewSense, Gnoppix, Hiweed, ImpiLinux, PinginOS, Ichthux, Kalango, Kubuntu, KadedeOS,Linspire, Urli, LinuxMint, Phoenix, Lazarux, LinuxTLE, LUC3M, Maryan Linux,MAX, MEPIS,Miniubuntu, Molinux, Mythbuntu, NUbuntu, Ol! Dom,OpenGeu,Poseidon,LinuxRuntu, Sibu, SLinux, Super Ubuntu, Ultima Edition,Ubuntu ChristianEdition, Ubuntulite, Ubuntu Muslim Edition, UbuntuiES, Ubuntu JeOS,Ubuntu Studio, UEx Linux, Ufficio Zero, Urli, UserLinux, Vacarm Linux, Xandros, Xubuntu, Greenie Linux y LiveCD Zen Linux, entre otras Fedora ADIOS Linux Boot CD, AnNyung Linux, AsianLinux, ASPLinux, ATmission,Aurora, SPARC Linux,Aurox, Berry Linux, BioBrew Linux Distribution, BLAG,Boston University Linux, ClarkConnect Gateway/Server, Co-CreateLinux,EduLinux, Ekaaty Linux, ELX Linux,EnGarde Secure Linux, Everest Linux, EzPlanet One Linux, Freedows, FTOSX Desktop, Fox Linux, Gelecek Linux,Haansoft Linux, Hancom Linux, Honeywall CDROM, IDMS Linux, Ignalum Linux, K12LTSP, Linpus Linux, Linux XP, Magic Linux, myLinux, Network SecurityToolkit, NuxOne Linux,O-Net, One Laptop Per Child, OpenLX, OpenNA Linux,Openwall GNU/Linux, Pingo Linux, SuliX,Vixta, Xteam Linux, Yellow Dog Linux Suse Linux openSUSE, JackLab Audio Distribution, StressLinux, SUSE Linux EnterpriseServer, SUSE Linux Enterprise Desktop, SUSE Linux Enterprise Real Time, SUSE Linux Enterprise Edition, Java Desktop System, Linkat 23 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
La creacin de una distribucin utilizando otra distro como base previa para ello, es la forma ms rpida y cmoda que se puede encontrar el usuario, pero en realidad se podra decir que estamos realizando una personalizacin de la distribucin que usamos en algunos casos (remasterizacin) o por el contrario, la creacin de un sistema totalmente independiente del que tenemos. Por lo tanto, seria eliminar o instalar aplicaciones segn el propsito que tengamos axial como de modificar el entorno de trabajo para hacerlo mas amigable y facilitar las tareas para que finalmente a un click de ratn, originar una nueva distribucin.
En el mercado actual existe una variedad de aplicativos que realizan esta tarea de personalizacin pero en este caso, se va a utilizar una distribucin de UBUNTU y las herramientas en cuestin que nos ayudarn a la creacin de una nueva distribucin a gusto del consumidor, ser la llamada Ubuntu Customization Kit o por sus siglas, UCK. Contando tambin con remastersys, Ubuntu Builder o reconstructor entre otros, los cuales fueron mencionados en el captulo 2.
La diferencia que existe entre UCK y remastersys es que UCK origina una distribucin final totalmente independiente del Ubuntu tomado como base, mientras que remastersys personaliza la ya existente, permitiendo hacer un CD/DVD o USB de instalacin exactamente igual a la mquina usada, se podra decir, que lo realizado es una copia de seguridad.
Antes de empezar a instalar nada se debe de contar con un espacio necesario para la nueva ISO en construccin. El espacio ptimo sera de unos 5GB aproximadamente para que se pueda realizar sin ningn tipo de problemas. Los procesos que se detallan ms tarde son intuitivos para un usuario normal por lo que se van a explicar brevemente.
Se recomienda tener descargada la imagen de distribucin Ubuntu con la que se va a trabajar.
Sistema utilizado como base Version Ubuntu-12-04-desktop-i386.iso (701 MB) 26 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
4.1 CREACIN USANDO -UCK-
Lo primero que se debe de hacer es actualizar lo mximo posible nuestro sistema UBUNTU y comprobar que incorpora el UCK. En su defecto, hay que descargarlo e integrarlo en el sistema. Se puede utilizar UCK para los derivados de Ubuntu, es decir, Kubuntu, Xubuntu, Edubuntu..etc.
Para la versin de Ubuntu 12.4 LST con un entorno de escritorio Unity, al instalarse el paquete UCK, puede existir un bug de sistema a la hora de seleccionar el idioma, abortando la ejecucin por el programa zenity. En principio es provocado por las dependencias que tiene con el entorno de escritorio KDE.
Nota Se puede descargar UCK a traves de Synaptic Package Manager desde el men: sistema-administracin.
Realizada la instalacin, se crea la carpeta temporal /home/usuario/tmp con permisos de rwx adems de tener configurada la sesin root con sus passwords. Una vez realizado esto, se lanza el programa Ubuntu Customization Kit y se va siguiendo la instalacin, como muestran las siguientes opciones.
La primera eleccin son los idiomas que se van a instalar en la distribucin.
Figura 1-4.1. Flujo de eleccin UCK 27 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Se elige los idiomas que estarn disponibles durante el arranque del CD.
Figura 2-4.1. Flujo de eleccin UCK
Entre todos los idiomas elegidos para la distribucin se seleccionar el que se tomara por defecto
Figura 3-4.1 Flujo de eleccin UCK
28 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Eleccin del entorno de escritorio a mostrar. Se ofrecen los tradicionales y el ofertado por Ubuntu en sus ltimas versiones (Unity), pero tambin se podran utilizar otros existentes en el mercado.
Figura 4-4.1. Flujo de eleccin UCK
La siguiente opcin es elegir la imagen del sistema operativo, que se va a tomar como base.
Figura 5-4.1. Flujo de eleccin UCK 29 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Se le da un nombre al proyecto de creacin de la ISO.
Figura 6-4.1. Flujo de eleccin UCK
Lo normal es personalizar el CD durante la instalacin de forma manual, agregando paquetes o utilidades que se quieran disponer en la versin final.
Figura 7-4.1. Flujo de eleccin UCK
30 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Se da la opcin de eliminar los archivos soportados por el sistema operativo Windows.
Figura 8-4.1. Flujo de eleccin UCK
La siguiente opcin es si se quiere una imagen hibrida ISO/USB. Hace tiempo que las imgenes ISO creadas por otras distribuciones como Fedora, OpenSuse o MeeGo, daban la posibilidad de crear Live USB sin la necesidad de herramientas externas para la creacin del arranque del tipo Unetbootin o ..... Ubuntu incorpora esta posibilidad desde su version 11.10. Por lo tanto una ISO-hibrida permite ser copiada en un dispositivo USB y hacerlo arrancable como si de un CD, moviendo la iso como cualquier otro archivo.
Figura 9-4.1. Flujo de eleccin UCK 31 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Para empezar a construir la ISO, es necesario dar el password de usuario
Figura 10-4.1. Flujo de eleccin UCK
El proceso de creacin empieza a generarse despus de dar el password.
Figura 11-4.1. Flujo de eleccin UCK
32 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Se puede elegir dos formas diferentes de agregar paquete, siendo desde el gestor de paquetes, o desde la consola de comandos o simplemente continuar. La eleccin del proyecto ser la de continuar, para que se genere una distro la ms simple.
Figura 12-4.1. Flujo de eleccin UCK
La compilacin de la ISO empieza a construirse.
Figura 13-4.1. Flujo de eleccin UCK
33 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Tras algunos minutos, la ISO finaliza exitosamente con unos 609,2 MB.
Figura 14-4.1. Flujo de eleccin UCK
4.1.1 Comprobacin
La comprobacin de la ISO-LIVE generada, se hace a travs de una mquina virtual tipo VMware o Oracle VM VirtualBox, dando como resultado el que muestra la figura 3-15 en la que muestra el paquete de instalacin por defecto el seleccionado previamente en la construccin de la imagen, es decir, el espaol.
Se dan las dos opciones que son la de probar Ubuntu de forma LIVE o realizar la instalacin de el. Si se continuase la instalacin se instalara segn se ha predefinido en la fase de construccin, pero como dato significativo y sin tener que instalar, se ve que las opciones de los idiomas son los que se prefijaron, es decir, el espaol, por lo que de un simple vistazo se puede observar que el objetivo del que trata este tema, llega a buen fin. 34 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Figura 1-4.1.1. Flujo de eleccin UCK
Esta es una de las forma de construir una ISO, aunque existen otras ms. Se pueden agregar paquetes o eliminar durante la opcin del gestor de paquetes Figura 3-12.
4.2 CREACIN USANDO -REMASTERSYS- Para la descarga del aplicativo remastersys, se puede hacer de varias formas una desde la consola, descargndose el aplicativo desde algn repositorio o una segunda forma es utilizando los gestores de paquetes .deb. Lo primero que se tiene que hacer es descargarse y aplicar la llave gpg del repositorio
Dependiendo de la versin de Ubuntu habr que aadir un repositorio diferente a /etc/apt/sources.list. En la tabla siguiente se muestra la lnea a agregar en la ruta dada en funcin de la versin. Si se desconoce de la versin Ubuntu con la que se trabaja se puede ver con las siguientes instrucciones las cuales ofrecen los mismos resultados.
usuario@ubuntu:~$ cat /etc/lsb-release usuario@ubuntu:~$ lsb_release -a
35 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Tabla 3.2.1 Tabla de repositorios dependiendo de la versin de Ubuntu Versin Repositorio Remastersys Lucid deb http://www.remastersys.com/ubuntu lucid main Remastersys Maverick deb http://www.remastersys.com/ubuntu maverick main Remastersys Natty deb http://www.remastersys.com/ubuntu natty main Remastersys Oneiric deb http://www.remastersys.com/ubuntu oneiric main Remastersys Precise deb http://www.remastersys.com/ubuntu precise main
Una vez agregado el repositorio, se debe de actualizar la lista de repositorios y descargar remastersys.
Otra forma de hacerlo es a travs del Centro de software Ubuntu.
URL de inters En http://www.remastersys.com/repository/lucid/remastersys_3.0.0-1_all.deb se puede descargar y realizar la instalacin.
La instalacin no debera de dar ninguna incidencia independientemente de cmo se haya instalado bien mediante la consola o bien mediante el gestor de paquetes que se tenga instalado, siendo el caso del Centro de software Ubuntu en el caso que se esta tratando. En la siguiente figura se ilustra la instalacin exitosa. 36 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Figura 1-4.2 Flujo de eleccin remastersys
Antes de realizar cualquier imagen del sistema operativo actual, se requiere que se desmonten las posibles redes compartidas que existieran as como de las ventanas que se tengan abiertas.
Figura 2-4.2 Flujo de eleccin remastersys
37 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Se muestran tres pestaas para la personalizacin de nuestra distribucin siendo la llamado accin, ajustes y salida. La pestaa accin, se puede considerar como la ms importante porque es donde se define la forma de construccin que se quiere hace. Remastersys presenta cuatro tipos de ISO que puede crear, las cuales dependiendo de las necesidades se pueden utilizar. La ms normal es una copia total del sistema con todos sus datos, aplicaciones y programas actuales o ms comnmente llamada un Backup o copia de seguridad del sistema, la cual no va a ser distribuible porque entre otras cosas, guarda datos sensibles.
Las siguientes tres opciones que se pueden generar son en si mismas formas distribuibles las cuales se catalogan en Dist, Distcdfs y Distiso. La interfaz de usuario es muy intuitiva por lo que se puede ver que la primera de las opciones crea una distribucin en su totalidad tanto los programas como los archivos de sistema para que la segunda opcin solamente crea los archivos del sistema.
Es interesante que antes de originar la ISO se eliminen los archivos temporales ya que no son necesarios para la futura distribucin ni para un usuario final adems de reducir espacio. Remastersys ofrece la posibilidad de hacer esto.
Tambin presenta las opciones de personalizacin del arranque del sistema operativo, como de crear un tema y de usar un usuario por defecto.
En la pestaa ajustes, se configura el directorio de trabajo as como del nombre que se le quiere dar a la distribucin, mientras que en la pestaa salida se muestra un registro de sucesos. Para simplificar se va a crear una distcdfs aunque se podran realizar cualquiera de las opciones comentadas anteriormente.
Figura 3-4.2 Flujo de eleccin remastersys
38 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
El proceso de construccin de la ISO, se puede seguir desde la pestaa salida
Figura 4-4.2 Flujo de eleccin remastersys
En la siguiente imagen se muestra la finalizacin del proceso de creacin del sistema de archivos, y la siguiente opcin es ir aadiendo los paquetes que se desea que lleve la distribucin para finalmente crear la ISO. Si no se quisiera que lleve ningn tipo de paquetes simplemente se tendra que crear la ISO dando a la opcin de distiso
Figura 5-4.2 Flujo de eleccin remastersys 39 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Para finalizar se muestra el xito de la imagen aunque habr que probarla para ver que no hay ninguna incidencia.
Figura 6-4.2 Flujo de eleccin remastersys
4.2.1 Comprobacin La ISO se habr creado en la ruta dada antes el proceso de construccin, en la pestaa de ajustes, la cual debe de ser copiada en un CD/DVD para realizar la comprobacin pertinente de que se ha construido de forma exitosa. La forma ms rpida es a travs de una maquina virtual como se viene utilizando, aunque tambin es posible sobre una mquina real sin ningn tipo de problemas como es el propsito general.
Se muestra la forma que dara nuestra distribucin generada con remastersys en la figura siguiente., la cual tiene un peso de 984,5 MB.
En la fase de construccin se cre un logotipo para la ISO final que se crear para que la mostrara durante el arranque del sistema. Como se puede ver, se crea segn datos predefinidos durante el ensamblado, contando con una distribucin en formato LIVE, la cual da la posibilidad de instarse o de ejecutarse sin ninguna instalacin previa. 40 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Figura 1-4.2.1 Comprobacin de remastersys
4.3 CREACIN USANDO -UBUNTU BUILDER-
Ubuntu Builder es una aplicacin creada por Francesco Muriana la cual puede personalizar tanto sistemas i386 como amd64 creando sus correspondientes imgenes. El proceso de instalacin se puede realizar desde los repositorios o descargndose la ultima versin y utilizando el gestor de paquetes. Desde el entorno de consola se puede realizar la descarga previo enlace con el repositorio
Otra de las opciones es proceder a la descarga del paquete desde la pgina oficial y realizar la instalacin del .deb. En este caso el archivo va a ser ubuntu-builder_2.2.1-1_all.deb de 132 kb.
URL de inters En http://code.google.com/p/ubuntu-builder/
41 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Independientemente de cmo se elija la opcin la instalacin deber de ser exitosa para una correcta utilizacin. La manera mas vistosa es a travs del Centro de software Ubuntu, tal y como se ve a continuacin
Figura 1-4.3. Flujo de eleccin Ubuntu-Builder
Eleccin del idioma en un principio no es ningn problema ya que soporta para un amplio abanico, pudiendo seleccionar hasta el espaol.
Figura 2-4.3. Flujo de eleccin Ubuntu-Builder 42 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Pantalla principal en la que se muestran todas las opciones disponibles para la construccin de la distribucin se muestra a continuacin. Se ve que el interfaz grfico es muy sencillo, facilitando la rpida asimilacin de las opciones que se presentan.
Figura 3-4.3. Flujo de eleccin Ubuntu-Builder La eleccin de la ISO se puede seleccionar desde algun lugar del disco duro u otro almacenamiento externo, pero tambien existe la posibilidad de descargarlo desde la red, pudiendo ser versiones enterar o reducidas.
Figura 4-4.3. Flujo de eleccin Ubuntu-Builder 43 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Figura 5-4.3. Flujo de eleccin Ubuntu-Builder
Una vez descargada desde cualquiera de los metodos ofertados por la aplicacin o bien obteniendolo por cualquier otro medio, se selecciona para crear la ISO en si.
Figura 6-4.3. Flujo de eleccin Ubuntu-Builder 44 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Se pueden ver los paquetes instalados en la distribucin ademas de agregar los paquetes que se deseen en la versin final de dos formas distintas bien paquete a paquete desde el navegador de archivos o directamente con el gestor de paquetes synaptic, aunque tambien ofrece una tercera opcin atraves de la consola de comandos. La dista de fuentes de los repositorios puede tambien modificarse al mismo tiempo. La forma ms rapida e intuitiva podria ser con el gestor de paquetes synaptic.
Figura 7-4.3. Flujo de eleccin Ubuntu-Builder Se ofrece la posibilidad de configurar la distribucin desde un chroot grfico, ademas de configurar el Ubiquiti. Todas estas opciones son consideradas manuales para luego realizar la construccin, pero si resulta tedioso, se ofrece la posibilidad de utilizar un asistente. Primeramente se debe de indicar el lugar donde esta la imagen base para luego configurar algunos parmetros, como el entorno, la instalacin de paquetes de forma manual o atraves de synaptic, etc., para finalmente realizar la construccin.
45 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Figura 8-4.3. Flujo de eleccin Ubuntu-Builder Al finalizar la construccin del sistema, se debe de informar al usuario sobre el xito de la creacin.
Figura 9-4.3. Flujo de eleccin Ubuntu-Builder 4.3.1 Comprobacin Ubuntu Builder ofrece la posibilidad de comprobar la ISO que acabamos de generar, atraves del emulador QEMU, que inconrpora el aplicativo, para depurar errores antes de realizar la distribucin, no necesitando ninguna otra maquina virtual como se venia utilizando hasta ahora para la comprobacin de las ISO.
Figura 1-4.3.1. Comrpbacin Ubuntu-Builder 46 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Captulo 5
IMPLEMENTACIN DESDE CERO
La tarea ms complicada es la implementacin de un sistema Linux basado directamente en la compilacin de los paquetes uno a uno, desde el kernel hasta el compilador gcc asi como de los paquetes necesarios para nuestro fin (tarjeta de red, entorno grficoetc). Para ello se utiliza un sistema anfitrin desde el cual ayuda a realizar la implementacin desde cero.
5.1 CREACIN CON ANFITRIN
Existe un proyecto denominado Linux From Scratch desde el cual se puede construir sistemas GNU/Linux siguiendo su documentacin llevada al efecto. Durante los aos se han generado diferentes versiones, siendo la ltima la v.7.1 la cual ha sido desarrollada por Gerard Beekmans y se encuentra disponible a la comunidad en ingls. El proyecto Linux From Scratch (a partir de ahora LFS) esta limitado a arquitecturas x86 y soporta tanto 32 bits como 64 bits, por lo que presenta algunas limitaciones ademas de exigir un profundo conocimiento en sistemas Linux. El proyecto LFS ofrece sus propias distribuciones LFS para ser descargadas desde la URL del proyecto, las cuales han sido implementadas con el nico fin de dar soporte a la creacin de este proyecto teniendo incluidos todos los paquetes necesarios para la implementacin, asi como del kernel, no teniendo que ser descargados desde cualquier otra fuente, es decir, se tomara un LFS como sistema anfitrin. Para el desarrollo y creacin de una nueva distribucin desde cero, se utiliza un entorno virtual de trabajo pudiendo elegir entre los multiples que existen en el mercado, en este caso se cuenta con la ayuda de Oracle Virtual Box, en el que se instalar un sistema anfitrin y se desarrollar el proyecto LFS. El entorno consta de un disco duro el cual ser posteriormente particionado. En una de esas particiones se instalar la maquina anfitriona y en la segunda particin ser utilizada para la construccin de nuestro LFS.
Sistema anfitrin Version openSUSE-12.1-DVD-i586.iso (4.13 GB)
48 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
En la siguiente figura se muestra las caracteristicas que tendr el entorno virtual de desarrollo del proyecto, el cual para la culminacin de la compilacin del sistema tarda aproximadamente unas 60 horas.
Figura 5-5.1. Caracteristicas del entorno vistual
Tras la eleccin del sistema anfitrin, habra que actualizarlo y a poder ser aislarlo del exterior debido a que se va a construir un nuevo sistema desde cero por lo que podria verse alterada alguna fuente o paquete vital para el sistema. LFS v7.1 exige que el sistema anfitrin contenga unos paquetes requeridos para poder realizar la compilacin debido a las dependencias que suelen ocasionarse. A traves del siguiente cdigo se mostraran los paquetes que estan instalados en el sistema anfitrin junto con la especificacin de la versin o en su defecto la ausencia de ellos. En el caso que no que faltara alguno de ellos o la versin no fuese la idonea, habra que solventar la incidencia ya que se trata de la base de todo el proyecto.
usuario@ubuntu:~$ cat > version-check.sh << "EOF export LC_ALL=C bash --version | head -n1 | cut -d" " -f2-4 echo "/bin/sh -> `readlink -f /bin/sh`" echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3- 49 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
bison --version | head -n1 if [ -e /usr/bin/yacc ]; then echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`"; else echo "yacc not found"; fi
bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6- echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2 diff --version | head -n1 find --version | head -n1 gawk --version | head -n1 if [ -e /usr/bin/awk ]; then echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`"; else echo "awk not found"; fi
gcc --version | head -n1 ldd --version | head -n1 | cut -d" " -f2- # glibc version grep --version | head -n1 gzip --version | head -n1 cat /proc/version m4 --version | head -n1 make --version | head -n1 patch --version | head -n1 echo Perl `perl -V:version` sed --version | head -n1 tar --version | head -n1 echo "Texinfo: `makeinfo --version | head -n1`" xz --version | head -n1
El script version-check.sh tendr una salida la cual debe de ser comprobada y relacionada con la siguiente tabla, en la que se muestra la correspondencia de los paquetes necesarios para la versin 7.1 de LFS asi como las versiones recomendadas que debe de tener el sistema anfitrin.
Tabla 5.2.3-1 Los paquetes en sus versiones mnimas deben de ser Paquete Versin mnima Bash 3.2 (/bin/sh debe de ser un enlace a bash) Binutils 2.17 (versiones superiores a 2.22 no han sido comprobadas pudiendo ocasionar problemas) Bison 2.3 (/usr/bin/yacc debe de ser un enlace a bison) Bzip2 1.0.4 Coreutils 6.9 Diffutils 2.8.1 Findutils 4.2.31 Gawk 3.1.5 (/usr/bin/awk debe de ser un enlace a gawk) Gcc 4.1.2 Glibc 2.5.1 Grep 2.35.1a Gzip 1.3.12 50 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Linux Kernel 2.6.25(habiendo sido compilado con GCC-4.1.2 o versin superior) M4 1.4.10 Make 3.81 Patch 2.5.4 Perl 5.8.8 Sed 4.1.5 Tar 1.18 Texinfo 4.9 Xz 5.0.3
URL de inters En http://www.linuxfromscratch.org puede encontrar el proyecto LFS asi como documentacin diversa.
Una vez que se ha comprobado que el sistema anfitrin dispone de los paquetes necesarios junto con las versiones, los cuales son necesarios para la construccin del sistema LFS, el siguiente paso seria crear la estructura de directorios. La forma en la que se debe montar el LFS, sera una particin o en disco rigido independiente teniendo la forma de directorios que se describe en la siguiente imagen. La forma que se ha elegido en el proyecto es la instalacin sobre una particin del disco duro primario (sda). Sobre esta particin la cual ser sda3 se crean dos directorios siendo uno sources en el que se alojaran los paquetes fuentes que van a ser precompilados y que se iran instalando sobre la carpeta tools y configurando al mismo tiempo diversos aspectos del sistema LFS. La estructura del proyecto se ve representada en la figura 4.1.
Figura 2-5.1. Estructura del proyecto DISCO RIGIDO (sda) swap (sda1) sistema anfitrion (sda2) LFS (sda3)
sources (sda3/sources)
tools (sda3/tools)
51 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Creada la estructura, se continua con la definicin de una variable que apuntar al directorio donde se va a construir el sistema LFS, ademas de , hacer algunos enlaces simbolicos, la creacin de un usuario y grupo junto con la configuracin de su entorno de trabajo o del interprete de comandos para tener uno completamente vacio y modificado, segn las necesidades del LFS, evitando que aparezcan variables indeseadas o que esten daadas y puedan entorpecer la culminacin del proyecto.
Creacin de variable y comprobacin: usuario@ubuntu:~$ export LFS=/mnt/lfs usuario@ubuntu:~$ echo $LFS
Creacin de enlace simbolico: usuario@ubuntu:~$ ln sv $LFS/tools /
Creacin de grupo y usuario: usuario@ubuntu:~$ groupadd lfs usuario@ubuntu:~$ useradd -s /bin/bash -g lfs -m -k /dev/null lfs
Configuracin del entorno de trabajo: usuario@ubuntu:~$ cat > ~/.bash_profile << "EOF" exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash EOF
Despues de estos pasos, se esta listo para entrar en el entorno que se ha creado para la construccin del sistema LFS. Este entorno esta limpio de otras variables que podran crear conflictos con nuestro sistema en construccin de ah la creacin y el uso posterior de este entorno.
Creacin de grupo y usuario: usuario@ubuntu:~$ source ~/ .bash_profile
52 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
En el sistema LFS se va a realizar en dos iteraciones de compilacin. En una primera etapa se va a construir un sistema mnino el cual ser totalmente independiente del anfitrin teniendo su propio compilador, ensamblador, enlazador y algunas pocas librerias, aunque le faltaria el kernel para poder funcionar de forma correcta. Este sistema intermedio se va a construir bajo el directorio tools el cual debe de ser borrado al finalizar su cometido conjuntamente con el directorio sources. En una segunda etapa se va a terminar de compilar todos los paquetes necesarios para que el sistema LFS pueda ejecutarse correctamente. Finalizada las iteraciones de compilacin de paquetes se procede a la configuracin del sistema para hacerlo ejecutable y que inicie el sistema por si solo.
Durante el proceso de construccin se tiene en cuenta el tipo de arquitectura del sistema anfitrin ya que dependiendo de esta se utilizarn diferentes sentencias de comandos para la optimizacin o simplemente porque son datos intrinsecamente diferenciados de unas arquitecturas de otras.
Figura 3-5.1. Resumen del procedimiento de construccin
Finalizada las dos fases de compilacin se debe de crear los sistemas de ficheros virtuales al ncleo, que son los que van a ser usados por el kernel en la gestin de procesos internos y como caracteristica tiene que no van a utilizar el espacio en disco.
mkdir v $LFS/ {dev,proc,sys}
Ademas, de los ficheros virtuales se necesita algunos nodos de dispositivos que son utilizados en el arranque del ncleo en especial console y null los cuales deben de ser creados
mknod m 600 $LFS/dev/console c 5 1 mknod m 666 $LFS/dev/null c 5 3 53 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
.Despues de la creacin de los ficheros virtuales y los nodos se debe realizar el proceso de montaje sobre ellos.
mount v bind /dev $LFS/dev mount vt devpts devpts $LFS/dev/pts mount vt tmpfs shm $LFS/dev/shm mount vt proc proc $LFS/proc mount vt sysfs sysfs $LFS/sys
Un factor muy importante es la gestin de paquetes que va a llevar nuestro futuro sistema LFS. Como es sabido un administrador de paquetes permite la supervisin en la instalacin asi como de la eliminacin de paquetes al tiempo que facilita la actualizacin de ellos, liberando al usuario de cargas.
Los gestores de paquetes siguen diferentes polticas de gestin que se detallan a continuacin:
Tcnica de instalacin en directorios separados: De antemano se informa que esta tcnica es til para un nmero mnimo de paquetes pero para nmero considerable se hace ineficiente. La administracin de paquetes no precisa de otros para el manejo de la instalacin instalandose cada paquete en un directorio aparte. Es decir que si se tiene una librera grfica llamada Libgraf version 1, se crearia un directorio con ese nombre y el enlace seria hacia tal directorio. Si en un futuro se ampliara a otra versin y fuera necesaria su instalacin, se creara otro directorio llamado Libgraf version 2 en la cual se instalarian los nuevos ficheros pero cambiando el enlace de la versin 1 a la versin 2. Como la versin 1 se mantien aunque el enlace va dirigido hacia la versin 2, se debe de hacer constar sobre la existencia de la version 1 haciendo referencia en las variables de entorno PATH_LD, LD_LIBRARY_PATH, MANPATH, INFOPATH y CPPFLAGS.
Tcnica de administracin por medio de enlaces: teniendo como referencia la tcnica anterior, esta tcnica es una variante de ella ya que la instalacin de paquetes se hace bajo /usr evitando la creacin de enlaces asi como la ampliacin de las cinco variables de entorno. Tambien se pueden utilizar otro directorio diferente a este, pero requiere que se tenga que falsear la direccin utilizando estrategias como DESTDIR. Algunos gestores de paquetes que utilizan esta politica son Stow, Epkg, Graft y Depot.
Tcnica basada en marca de fechas: cuando se realiza la instalacin de un paquete se le relaciona con la fecha actual asi el gestor de paquetes guarda un registro de la fecha de instalacin de todos sus paquetes. Se presenta el inconveniente en esta tcnica sobre un posible efecto de concurrencia entre paquetes provocando que los registros queden marcados errneamente asi como si el sistema contiene una fecha diferente a la actual. Es una tcnica simple pero al mismo tiempo es algo inconsistente. Un ejemplo de gestor de este tipo es install-log.
Tcnica basada en LD_PRELOAD: la existencia de una librera que supervisa la instalacin adjuntandose a algunos ejecutables y las llamadas al sistema. Para que funcione este mtodo, obviamente debe de estar enlazados dinmicamente los ejecutables y la librera y sin los bit de suid o sgid, es decir, sin los privilegios de grupo o de usuario. 54 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Tcnica de crear archivos de paquetes: Se crea una instalacin previa en la que se genera la estructura de arbol y unida mediante enlaces generando un archivo de todos los paquetes. El paquete puede ser instalado en la mquina local o en otras mquinas. Un ejemplo claro de esta tcnica son los los administradores de paquete RPM, pkg-utils, apt y Portage.
Tcnica de administracin basada en usuario: es una tcnica de gestin de paquetes propia del proyecto LFS y que ha sido desarrollada por Matthias Benkmann en la que cada paquete se instala con un usuario diferente con lo que quedan relacionados los ficheros con un usuario. Se detallan ms datos en la pagina oficial del proyecto.
Tcnica de todo en mi cabeza: la ms trivial es la ausencia de gestor de paquetes, es decir, que el propio administrador es el propio gestor.
Una vez realizada la preinstalacin se en el entorno chroot para finalizar con la construccin del sistema.
A continuacin se va a crear la estructura de rbol que va a tener el sistema LFS. Esta estructura es la forma tradicional aunque si se quisiera se podria ver modificada segn las necesidades del sistema futuro.
55 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Cuando se crea un directorio mediante el comando mkdir, se crean por defecro con los permisos 755, por lo que deben de ser cambiados para que ningun usuario entre dentro del directorio del root. Se volveria a realizar las compilaciones de los paquetes, teniendo en cuenta que al realizar las compilaciones mediante la opcin de g del gcc, se crean smbolos de depuracin. Si no se desean mantenerlos, se pueden eliminar del sistema ya que el tamao del total puede ser sustancial, liberando un espacio sustancial.
Despues de todas estas fases de construccin, se entrara en la fase de configuracin del arranque utilizando para ello Grub, el cual debe de ser programado segn las necesidades de nuestro sistema. Entre otros el archivo /etc/fstab debe de hacer referencia a los dispositivos que tengamos instalados o que se quiera que nuestro sistema tenga en consideracin a la hora de iniciarse. En la siguiente figura se descarta la opcin de reconocimiento del sistema anfitrin.
Una opcin a tener en cuenta es el idioma en el que el sistema LFS va a trabajar. Para el idioma espaol de Espaa y que trabaje con euro, no habra ningun problema. Lo nico que se debe de hacer es descargar los paquetes necesarios que dan soporte al idioma.
A continuacin se muestran las configuraciones de los scripts para el arranque del sistema.
Figura 4-5.1. Configuracin de scripts
56 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Finalmente y para concluir la fase de compilaciones, se pasara a la creacin de la imagen del kernel y de sus modulos. Dentro de la configuracin, se pueden abilitar discos SATA, tarjetas de red y dems opciones para que el kernel los reconozca durante el proceso de inicio del sistema. Hay que tener un conocimiento de antemano del sistema que va a soportar nuestro LFS porque como se ve a continuacin si no se tienen en cuenta algunos detalles, podria bloquearse el sistema y nunca llegara a arrancar o dara mensajes de error o panics. El siguiente ejemplo se debe a la ausencia de configuracin de algunos modulos del kernel
Figura 5-5.1. Error de inicio del sistema
57 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Figura 6-5.1. Configuracin del kernel
Nota Para evitar el error de devtmpfs habra que marcar Device Drivers -- Generic Driver Options -- Maintain a devtmpfs filesystem to mount at /dev
Finalmente se configura el GRUB instalandose sobre el disco duro en el que tenemos LFS.
58 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Nota Desde el dia 1 de septiembre del 2012 esta disponible la versin LFS 7.2
5.1.1 Comprobacin
Salir del entorno de trabajo de LFS es lo principal para desmontar todo el sistema ya que hay que tener privilegios root sobre el sistema anfitrin para realizar el desmontaje de dispositivos y poder reiniciar el sistema. Arrancado nuestro sistema entrar en funcionamiento el sistema GRUB dandonos la opcin de , para pasar al chequeo del sistema y al promp del sistema.
Figura 1-5.1.1. Arranque del proyecto fin de master
59 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
Figura 2-5.1.1. Arranque del proyecto fin de master
CONCLUSIONES Y TRABAJO FUTURO Se han visto dos formas de creacin de distribuciones Linux, en la que una de las opciones estaba basada en una distribucin previa, existiendo en el mercado una amplia variedad de distribuciones para tomarlas como base, pero que en nuestro caso Ubuntu ha sido la elegida, utilizando algunas de las herramientas que ofrece para la creacin o remasterizacin de distribuciones siendo UCK, Remastersys y Ubuntu Builder . Una segunda opcin era originarla desde cero sin ninguna base, unicamente con la ayuda de un sistema anfitrion y unos conocimientos profundos en Linux. La basada sobre Ubuntu se origina de una forma rpida y sin conocimientos previos en Linux y de una manera muy intuitiva y que cualquier persona podra hacerla, ofreciendo la posibilidad de dar soporte final en formato LIVE o no. En una segunda instancia el proyecto LFS, es mucho mas tedioso a la vez que costoso en tiempo por las compilaciones de los paquetes, que segn cual, se lleva bastantes horas de compilacin, pero depura mas el sistema final porque nicamente se instala lo necesario aunque en contraposicin el usuario debe de tener un buen conocimiento sobre las dependencia entre sus paquetes y sus versiones. Adems se queda instalado en el soporte donde se produjo todo el proceso, teniendo que realizar un proceso de creacin de distribucin para poder dar soporte a otros equipos. Tambien el entorno de trabajo final es en modo consola por lo que se tendria que realizar la construccin del entorno grfico por pantallas en el caso que se precisara. Gracias a la personalizacin del la distribucin se produce una optimizacin de los elementos que componen el sistema operativo ayudando a un mejor rendimiento del sistema, ya que existen casos en los que el requerimiento de paquetes es mnimo debido a las exigencias del sistema informatico que se quiere construir, por lo que distribuciones grandes no son optimas. Como futuro trabajo se podria desarrollar la forma en la que dispusiera de un entorno grfico por el que fuera mas intuitivo no quedandose unicamente en el entorno de consola.
BIBLIOGRAFA
A continuacin es listada la documentacin y pginas Web que han servido de referencia bibliogrfica complementaria durante el desarrollo del proyecto.
1. Proyecto GNU http://www.gnu.org (ltimo acceso: Agosto 2012). 2. Linux zone http://www.linuxzone.es (ltimo acceso: Agosto 2012). 3. Distribucin Debian http://www.debian.org (ltimo acceso: Agosto 2012). 4. Rincn de Linux http://www.linux-es.org (ltimo acceso: Agosto 2012). 5. Ubuntu, http://www.ubuntu.com (ltimo acceso: Agosto 2012). 6. Proyecto Fedora, http://www.fedoraproject.org/es/ (ltimo acceso: Agosto 2012). 7. Sourceforge, http://www.sourceforge.net / (ltimo acceso: Agosto 2012). 8. Ubuntu root http://ubunturoot.wordpress.com (ltimo acceso: Agosto 2012). 9. distrowatch http://www.distrowatch.com (ltimo acceso: Agosto 2012). 10. Ubuntu http://www.ubuntu.com (ltimo acceso: Agosto 2012). 11. Linux questions http://iso.linuxquestions.org (ltimo acceso: Agosto 2012). 12. Librera de archivos digitales http://www.ibiblio.org (ltimo acceso: Agosto 2012). 13. Linux Info http://www.aboutlinux. (ltimo acceso: Agosto 2012). 14. Proyecto Linux from scratch http://www.linuxfromscratch.org (ltimo acceso: Agosto 2012). 15. Suse Studio http://susestudio.com/(ltimo acceso: Agosto 2012). 16. Proyecto Ubuntu Builder http://code.google.com/p/ubuntu-builder (ltimo acceso: Agosto 2012). 17. Revista Linux Journal http://www.linuxjournal.com (ltimo acceso: Agosto 2012). 18. Linux Unity http://unity-linux.org/ (ltimo acceso: Agosto 2012). 19. Linux news http://lxer.com/ (ltimo acceso: Agosto 2012). 20. Lions Wing http://www.lions-wing.net (ltimo acceso: Agosto 2012). 21. Khmeros http://www.khmeros.info/ (ltimo acceso: Agosto 2012). 22. Linux basics http://www.linuxbasis.com/ (ltimo acceso: Agosto 2012). 23. Julio Gomez. Lpez. Administracion de sistemas GNU/LINUX. ISBN: 978-84-92650-46-0 24. Julio Gmez Lpez. Administracion Avanzada De Sistemas Informaticos. 978-84-9964-007-5 64 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almera-
25. About debian http://www.aboutdebian.com (ltimo acceso: Agosto 2012). 26. How open source http://www.howopensource.com (ltimo acceso: Agosto 2012).
Mster en Administracin, Comunicaciones y Seguridad Informtica http://masteracsi.ual.es