You are on page 1of 65

Universidad de Almera

Mster en Administracin, Comunicaciones


y Seguridad Informtica

Creacin de distribuciones
Linux










Autor:
Rafael Monroy Caballero












Creacin de distribuciones
Linux





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-


Slackware Absolute Linux, Adrenalinux, Alixe, Austrumi, BackTrack, Bluewhite64 Linux,College Linux,
Cytrun Linux, DARKSTAR, DeepStyle, easys GNU/Linux, FloydGNU/Linux, Frugalware
Hardened Linux, Kate OS, Kwort, Linomad, GoblinX, HostGis, KWort, Mekano Linux,
Mutagenix,Myah OS, Naulcapan, NetSecL, NimbleX, Nonux GNU/Linux, Open Community
Slackware Install DVD, OpenLab GNU/Linux, Plamo Linux, RIPLinuX, RUNT Linux,Salocin,
Sauver, Slackintosh,Slamd64, SLAMPP, SLAX, BackTrack, DNALinux, SLAMPP,Splack
Linux, STX GNU/Linux, Topologi, Truva Linux, TumiX, Ultima Linux,Vector Linux,
Wifislax, Zenwalk Linux
Red Hat Enterprise
Linux
ASPLinux server, Asianux, CentOS, Elastix, trixbox, VicidialNOW, Endian,Fedora, Pie Box
Enterprise Linux, Pingo Linux, Scientific Linux, StartCom Linux,White Box Enterprise Linux,
YOUrOS.
Knoppix BinToo, epiOS, Fantoo, Flash Linux, Gentoox, Kororaa, Knopperdisk, Litrix Linux,Mayix
XliveCD, Medeix, Navyn OS, PapugLinux, Pentoo, Phoronix Test Suite,redWall, Sabayon
Linux, SystemRescueCd, Ututo, VidaLinux







Captulo 4




IMPLEMENTACIN USANDO UNA BASE

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.

usuario@ubuntu:~$ sudo add-apt-repository ppa:uck-team/uck-stable
usuario@ubuntu:~$ sudo apt-get update
usuario@ubuntu:~$ sudo apt-get install uck

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

usuario@ubuntu:~$ wget -O - http://www.remastersys.com/ubuntu/remastersys.gpg.key |
apt-key add -

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.

usuario@ubuntu:~$ sudo apt-get update
usuario@ubuntu:~$ sudo apt-get install 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

usuario@ubuntu:~$ sudo add-apt-repository ppa:f-muriana/ubuntu-builder
usuario@ubuntu:~$ sudo apt-get update
usuario@ubuntu:~$ sudo apt-get install ubuntu-builder

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

echo 'main(){}' > dummy.c && gcc -o dummy dummy.c
if [ -x dummy ]
then echo "gcc compilation OK";
else echo "gcc compilation failed"; fi
rm -f dummy.c Dummy
EOF
bash version-check.sh


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


usuario@ubuntu:~$ cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL LFS_TGT PATH
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.


chroot "$LFS" /tools/bin/env -i \
HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
/tools/bin/bash --login +h


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.


mkdir -pv /{bin,boot,etc/opt,home,lib,mnt,opt}
mkdir -pv /{media/{floppy,cdrom},sbin,srv,var}
install -dv -m 0750 /root
install -dv -m 1777 /tmp /var/tmp
mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src}
mkdir -pv /usr/{,local/}share/{doc,info,locale,man}
mkdir -v /usr/{,local/}share/{misc,terminfo,zoneinfo}
mkdir -pv /usr/{,local/}share/man/man{1..8}
for dir in /usr /usr/local; do
ln -sv share/{man,doc,info} $dir
done
mkdir -v /var/{lock,log,mail,run,spool}
mkdir -pv /var/{opt,cache,lib/{misc,locate},local}




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

You might also like