Download Creación de distribuciones Linux

Document related concepts

Remastersys wikipedia , lookup

Linux Mint wikipedia , lookup

Linux Lite wikipedia , lookup

Ubuntu Customization Kit wikipedia , lookup

Distribución Linux wikipedia , lookup

Transcript
¿
Universidad de Almería
Máster en Administración, Comunicaciones
y Seguridad Informática
Creación de distribuciones
Linux
Autor:
Rafael Monroy Caballero
Creación de distribuciones
Linux
Rafael Monroy Caballero
Ingeniero Técnico Informático de
Gestión
[email protected]
Tanto la memoria de este trabajo como el software desarrollado se distribuyen bajo la licencia GNU GPL v3.
La Licencia Pública General GNU (GNU GPL) es una licencia libre, sin derechos para software y otro tipo de trabajos.
Las licencias para la mayoría del software y otros trabajos prácticos están destinadas a suprimir la libertad de compartir y modificar esos trabajos. Por
el contrario, la Licencia
Pública 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 Públicas Generales están destinadas a garantizar la libertad de distribuir copias de software libre (y cobrar por ello si quiere), a recibir el
código 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 más información sobre las licencias y sus términos puede consultar:
•
http://www.gnu.org/licenses/gpl.html (Licencia original en inglés)
•
http://www.viti.es/gnu/licenses/gpl.html (Traducción de la licencia al castellano)
Se ha realizado el presente trabajo
para la obtención del título de
Máster Propio en Administración, Comunicaciones
y Seguridad Informática
por la Universidad de Almería
http://masteracsi.ual.es
6
Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
ÍNDICE
CAPÍTULO 1 INTRODUCCIÓN................................................................................................................................ 8
1.1 PLANIFICACIÓN ..................................................................................................................................................... 9
CAPÍTULO 2 DESCRIPCIÓN DE UNA DISTRIBUCIÓN ................................................................................... 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 CLASIFICACIÓN DE DISTRIBUCIONES .................................................................................................................. 16
2.2.1 Por arquitectura ............................................................................................................................................. 17
2.2.2 Modo de ejecución ........................................................................................................................................ 17
2.2.3 Origen y Destino ........................................................................................................................................... 18
2.2.4 Base de la distribución .................................................................................................................................. 19
2.2.5 Por paquetes primarios.................................................................................................................................. 19
CAPÍTULO 3
CREACIÓN DE UNA DISTRIBUCIÓN ......................................................................................... 21
CAPÍTULO 4 IMPLEMENTACIÓN USANDO UNA BASE................................................................................. 25
4.1 CREACIÓN USANDO -UCK- .................................................................................................................................. 26
4.1.1 Comprobación............................................................................................................................................... 33
4.2 CREACIÓN USANDO -REMASTERSYS- .................................................................................................................. 34
4.2.1 Comprobación............................................................................................................................................... 39
4.3 CREACIÓN USANDO -UBUNTU BUILDER- ............................................................................................................. 40
4.3.1 Comprobación............................................................................................................................................... 45
CAPÍTULO 5 IMPLEMENTACIÓN DESDE CERO............................................................................................. 47
5.1 CREACIÓN CON ANFITRIÓN.................................................................................................................................. 47
5.1.1 Comprobación............................................................................................................................................... 58
CONCLUSIONES Y TRABAJO FUTURO................................................................................................................. 61
BIBLIOGRAFÍA ............................................................................................................................................................ 63
8
Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Capítulo 1
INTRODUCCIÓN
El presente documento se presenta como la memoria del Proyecto Fin de Máster (PFM) titulado
“Creación de distribuciones Linux” que está asociado al Máster en Administración, Comunicaciones y
Seguridad Informática de la Universidad de Almería. Siendo realizado en su total integridad por Rafael
Monroy Caballero y supervisado por el director del máster, Julio Gómez López.
Hoy en dia, no solamente se habla sino que se utiliza cada vez más sistemas operativos GNU/Linux
tanto en el mundo empresarial, como en el doméstico, impulsados por las diferentes caracteristicas que cada
vez hacen mejorar su rápida expansion en el sector informatico, como pueden ser por ejemplo, su bajo coste
económico frente a otras ofertas, pudiendo llegar a ser dicho coste hasta cero, su fácil manejo e instalación
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 instalación o
eliminación de scripts o paquetes para asi desempeñar 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 reconstrucción se pueda
distribuir a otras máquinas o usuarios con las mismas necesidades.
El objetivo del libro es aprender a construir nuestra propia distribución de un sistema operativo
GNU/Linux presentando diferentes posibilidades para ello. El libro se divide en los siguientes capítulos:
•
Capítulo 1. Introducción. Se inicia el documento haciendo una breve descripción junto con la
planificación de los proyectos construidos.
•
Capítulo 2. Descripción de una distribución. En el segundo capítulo, se describe que es una
distribución y sus variantes, además de hacer una aproximación a la gran cantidad de distribuciones
que se pueden encontrar en el mercado, mediante clasificaciones de cada una de ellas según
caracteristicas diferenciadoras.
9
Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
1.1
•
Capítulo 3. Creación de una distribución. En este capítulo, se describen las diferentes
posibilidades y herramientas que existen para la creación de distribuciones dependiendo de la base
que se quiera tomar.
•
Capítulo 4. Implementación usando una base. Se analizan las diferentes herramientas existentes
en el mercado que permiten la creación de distribuciones basadas en otra previa. Además se
aprenderá a instalar y configurar tales aplicaciones asi como la creación de diferentes ISO basadas
en la distribución Ubuntu
•
Capítulo 5. Implementación desde cero. Se estudia la metodologia junto con las diferentes
politicas a seguir para la creación de una distribución sin basarse en ninguna previa hasta llegar a la
implementación. Se aprenderá a configurar un sistema desde su raíz.
PLANIFICACIÓN
La planificación de tareas para la realización del proyecto se detalla a continuación :
(01 Julio – 15 Julio): documentación inicial sobre la creación de distribuciones GNU/Linux.
(16 Julio -19 Agosto): implementación 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 creación del documento del proyecto.
Capítulo 2
DESCRIPCIÓN DE UNA DISTRIBUCIÓN
2.1
EL ORIGEN
Existen diferentes definiciones de que es un sistema operativo, siendo todas ellas muy válidas, pero
se va a definir un Sistema Operativo al programa o conjunto de programas que en un sistema informático
gestiona los recursos de hardware y provee servicios a los programas de aplicación, ejecutándose 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 relación 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), multiprogramación, sistemas distribuidos…etc.
Figura 2-2.1.Partes que componen un Sistema Operativo.
12 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
A lo largo del año 1983, Richard Matthew Stallman comenzó con el llamado proyecto GNU, con
el objetivo de crear un sistema operativo de libre distribución compatible con UNIX y con los estándares
POSIX. En 1985 creó la Fundación de Software Libre y escribió la Licencia Pública General de GNU. Esto
dio como resultado la creación de múltiples programas en muy poco tiempo, por lo que en el año 1990 ya
existía el software disponible para crear un nuevo sistema operativo, pero el núcleo aún faltaba. El núcleo
Linux hace su aparición por primera vez durante el año 1991, y lo hace como una afición de un joven
estudiante de Informática finlandés, llamado Linus Torvalds, que había gestado la idea de crear un sistema
operativo Unix para los usuarios de Minix, creado por Andy Tanenbaum.
Linus Torvalds utilizó el término Linux en un principio para hacer referencia exclusivamente al
núcleo del Sistema Operativo, pero con el paso del tiempo, ese nombre fue utilizado para hacer mención
tanto al núcleo o kernel como al conjunto de aplicaciones con las que se distribuian, conformando un
sistema completo. Richard Stallman, haciendose participe de tal popularización 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 implementación 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 máquinas basadas en DEC ALPHA,
SPARC, MAC/AMIGA, POWERPC y MOTOROLA, entre otras.
URL de interés
En la web http://www.kernel.com
kernels o núcleos.
se encuentran alojados los archivos fuentes de diferentes
El proyecto GNU/Linux cumple unas pautas para la creación 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 programación, controladores…etc, no respeta tales políticas, son rechazados por la
distribución 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 liberación de código, 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 Almería-
2.1.1
Distribuciones
Una distribución de Linux es un paquete que incluye el núcleo Linux o kernel, los metodos de
instalación, el mantenimiento del sistema y tambien una selección de aplicaciones preinstaladas. De esta
manera, una distribución Linux puede ser vista como una forma de facilitar la instalacion y la configuración
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 instalación gráficas cada vez
más fáciles de seguir, asi como tambien autodetección de hardware, que requiere cada vez menos
intervención del usuario final.
Figura 2-2.1.1. Arquitectura de las distribuciones Linux con componentes GNU
Los años de existencia de las distribuciones basadas en entorno Linux se podria decir que empezaron
a surgir a los pocos años 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. años de existencia de algunas distribuciones
14 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
15 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Figura 3-2.1.1. Linea de tiempo de algunas distribuciones
URL de interés
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 distribución Linux, asi como de la versión 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 través de este archivo
se puede saber la distribución, como la versión 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 versión del sistema operativo.
Figura 2-2.1.1. Salida del fichero /etc/motd
16 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
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 información de la
distribución, 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
CLASIFICACIÓN DE DISTRIBUCIONES
Como se ha visto, existe infinidad de distribuciones Linux siendo la base de todas ellas el núcleo 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 Almería-
En la actualidad el crear una distribución de GNU/Linux se ha convertido en un proceso
relativamente fácil 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 adopción 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 sinfín de opciones,
dando como resultado infinidad de distribuciones diferentes.
Se pueden hacer multiples clasificaciones de las distribuciones existentes en la actualidad, pero a
continuación se muestran las elegidas por el autor de este documento.
Nota
Existe una infinidad de distribuciones Linux.
reconce hasta 322 distribuciones.
2.2.1
Según
el site http://www.distrowatch.com,
Por arquitectura
Una primera clasificacion podría ser basandose en el tipo de máquina destino que utilizar la
distribución ya que no todas las distribucones soportan todas las arquitecturas de hardware exitentes.
Se podría hablar de máquinas tipo Intel x86, AMD64, Power Pc, HP PA-RISC, SPARC, IA-64 las
cuales dan rendimientos diferentes dependiendo de las caracteristicas intrínsecas 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 función del proposito que se tenga.
2.2.2
Modo de ejecución
Existen dos formas de ejecuación siendo la primera de ella la más tradicional, es decir, sobre el disco
duro para dar paso a una segunda mucho más novedosa que es la distribución 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 configuración de la BIOS, sin utilizar el
disco duro para instalar sofware y sin ningun tipo de instalación únicamente utilizando la memoria RAM del
equipo y siendo totalmente transparente para el usuario como si del modo tradicional de instalación se
tratase. En la actualidad existen varios tipos de soporte externo en los que se estan distribuyendo los
sistemas Linux Live siendo los más populares los CD, DVD y pendrive.
Nota
El primer CD-Live de Linux fue Yggdrasil Linux en 1995, aunque su éxito fue mínimo, para dar
paso posteriormente a DemoLinux en el año (2000).
18 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Los sistemas Live presentan una serie de ventajas respecto a la instalación 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 extraíble y no requerir instalación, 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 instalación 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 infección que se haya podido producir, teniendo siempre una
distribución limpia (sobre disco de solo lectura, sobre USB no procederia tal afirmación). Conviene destacar
que este carácter no persistente es generalmente configurable, existiendo la opción de almacenar preferencias
que se conservarán de una ejecución 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 añadir 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 rápida expansión de los sistemas Linux esta posibilitando el
origen de sistemas comerciales como de no comerciales, de la creación de distribuciones creadas por
usuarios como por empresa así como la clasificación según los usuarios finales siendo de propósito general
como de propósito especifico.
Una distribución comercial es la que se desarrolla y se mantiene enteramente por una empresa así
como también su propio desarrollo. En ocasiones existe una comunidad de usuario que desarrollan pequeños
paquetes pero nunca influyen en las decisiones de la distribución tanto en el desarrollo, mantenimiento como
en las políticas.
En contraposición 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 continuación se pueden ver alguna de las distribuciones que se han construido para un propósito
específico.
Tabla 2.2.3-1 distribuciones utilizadas para propósito especifico
Nombre
URL
OpenWrt
Orientada para ser empotrada en dispositivos enrutadores
Edubuntu
Un sistema del proyecto Ubuntu para entornos educativos
LULA
Distribución académica para universidades
19 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
MythTV
64 Studio
ABC GNU/Linux
Backtrack
Scientific Linux
ArtistX
Parted Magic
Diseñada para tratamiento de video digital.
para la edición multimedia tomando como base Debian
Orientada a la construcción de clusters Beowulf.
Herramienta enfocada a la seguridad de sistemas informáticos
Resultado de Fermilab y CERN
Orientada al diseño gráfico
Distribución para administración de discos duros
<
2.2.4
Base de la distribución
Como se viene comentando todas las distribuciones Linux tienen un origen en común y es el creado
por Linus Torvard, pero esta sería una clasificación 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 podría mencionar las basadas en:
o
o
o
o
o
o
o
o
o
o
o
o
Debian
Ubuntu
Knoppix
Gentoo
Red Hat Enterprise Linux
Fedora
Slackware Linux
SUSE Linux
Mandriva
PCLinuxOS
Arch Linux
Puppy Linux
Esta clasificación es puramente referencial en la que se pueden añadir otras referencias.
2.2.5
Por paquetes primarios
Un sistema basado Linux, esta conformado por un núcleo o kernel y un conjunto de paquetes que le
dan la versatilidad de cara al usuario final. Las diferentes políticas de instalación de paquetes así como de la
gestión de ellos, provoca la existencia de distribuciones que mantienen diferentes filosofía.
Se podría hacer una clasificación por paquetes .deb, .rpm, Conary y los que utilizan directamente el
código 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 Almería-
Figura 1-2.2.5. Imagen conceptual de distribuciones relacionadas con paquetes primarios.
21 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Capítulo 3
CREACIÓN DE UNA DISTRIBUCIÓN
En la actualidad para la creación de una distribución Linux existen diversas herramientas para poder
hacerlo pero todas ellas son una remasterización o dicho de otra forma, una personalización del sistema que
toman como base, adaptando los paquetes de software y configuraciones según el propósito 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 distribución previa sino que se toma como base el kernel y se va construyendo nuestro
sistema como si de una pirámide se tratase, compilando paquete a paquete según nos interese.
Según 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 próximos capítulos se va a explicar algunas herramientas, tomando como base un sistema
operativo Ubuntu.
Tabla 3.2.3-1 Herramientas para la creación de distribuciones
Nombre
Soporte
Tipo
Remastersys
Debian y Ubuntu
Reconstructor
Debian y Ubuntu
UCK
Ubuntu
Builder
Ubuntu
Ubuntu-Builder Ubuntu
Revisor
Fedora
Pungi
Fedora
SuseStudio
Suse
Linux-Live
Slackware
Instalinux
CentOS, Debian, Fedora, OpenSuse, Scientific, Ubuntu
Interfaz gráfico
Interfaz gráfico
Interfaz gráfico
Bajo línea de comandos(scripts)
Interfaz gráfico
Bajo línea de comandos
Bajo línea de comandos
Aplicativo Web
Bajo línea de comandos(scripts)
Aplicativo Web
Las dos vertientes de estas herramientas son, la personalización o “customización” del sistema
tomado como base, creando uno nuevo. Por lo tanto, se dice que hay una dependencia entre la distribución
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 Almería-
que personaliza Ubuntu al propio gusto. Una segunda vertiente es la creación con independencia de cómo
tengamos el sistema base configurado. Un ejemplo claro es “UCK”.
Antes de comenzar a crear la nueva distribución, hay que asegurarse de disponer del espacio libre
mínimo equivalente a dos instalaciones del anfitrión que tengamos en ese momento para la realización de la
compilación, además 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 remasterización de una distribución ya existente, habría que
elegirla con el Kernel más estable y actualizar el sistema operativo al máximo nivel, es decir, tener instalados
los paquetes en sus últimas versiones corregidos de errores y desde repositorios oficiales para evitar futuros
problemas. La forma más fácil seria desde los diferentes gestores de actualizaciones que dispone el mundo
Linux dependiendo de la distribución con la que contemos en ese momento.
Después de los requisitos técnicos, 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 distribución base y todas aquellas distribuciones creadas
a partir de ella. Como se puede observar la cantidad es enorme y no son todas las que debería de haber, sino,
que son las más conocidas.
Tabla 3.2.3-1 distribuciones utilizadas para propósito especifico junto con su base
Distribución 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, Càtix,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, AbulÉdu, 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,
PingüinOS, 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 Almería-
Slackware
Red Hat Enterprise
Linux
Knoppix
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
ASPLinux server, Asianux, CentOS, Elastix, trixbox, VicidialNOW, Endian,Fedora, Pie Box
Enterprise Linux, Pingo Linux, Scientific Linux, StartCom Linux,White Box Enterprise Linux,
YOUrOS.
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
Capítulo 4
IMPLEMENTACIÓN USANDO UNA BASE
La creación de una distribución utilizando otra “distro” como base previa para ello, es la forma más
rápida y cómoda que se puede encontrar el usuario, pero en realidad se podría decir que estamos realizando
una personalización de la distribución que usamos en algunos casos (remasterización) o por el contrario, la
creación de un sistema totalmente independiente del que tenemos. Por lo tanto, seria eliminar o instalar
aplicaciones según el propósito 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 ratón, originar una nueva distribución.
En el mercado actual existe una variedad de aplicativos que realizan esta tarea de personalización
pero en este caso, se va a utilizar una distribución de UBUNTU y las herramientas en cuestión que nos
ayudarán a la creación de una nueva distribución a gusto del consumidor, será la llamada “Ubuntu
Customization Kit” o por sus siglas, UCK. Contando también con “remastersys”, ”Ubuntu Builder” o
“reconstructor” entre otros, los cuales fueron mencionados en el capítulo 2.
La diferencia que existe entre UCK y “remastersys” es que UCK origina una distribución final
totalmente independiente del Ubuntu tomado como base, mientras que “remastersys” personaliza la ya
existente, permitiendo hacer un CD/DVD o USB de instalación exactamente igual a la máquina usada, se
podría 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
construcción. El espacio óptimo sería de unos 5GB aproximadamente para que se pueda realizar sin ningún
tipo de problemas. Los procesos que se detallan más tarde son intuitivos para un usuario normal por lo que se
van a explicar brevemente.
Se recomienda tener descargada la imagen de distribución 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 Almería-
4.1
CREACIÓN USANDO -UCK-
Lo primero que se debe de hacer es actualizar lo máximo 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 versión 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 ejecución 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-administración”.
Realizada la instalación, se crea la carpeta temporal “/home/usuario/tmp” con permisos de rwx
además de tener configurada la sesión root con sus passwords. Una vez realizado esto, se lanza el programa
“Ubuntu Customization Kit” y se va siguiendo la instalación, como muestran las siguientes opciones.
La primera elección son los idiomas que se van a instalar en la distribución.
Figura 1-4.1. Flujo de elección UCK
27 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Se elige los idiomas que estarán disponibles durante el arranque del CD.
Figura 2-4.1. Flujo de elección UCK
Entre todos los idiomas elegidos para la distribución se seleccionará el que se tomara por defecto
Figura 3-4.1 Flujo de elección UCK
28 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Elección del entorno de escritorio a mostrar. Se ofrecen los tradicionales y el ofertado por Ubuntu en
sus últimas versiones (Unity), pero también se podrían utilizar otros existentes en el mercado.
Figura 4-4.1. Flujo de elección UCK
La siguiente opción es elegir la imagen del sistema operativo, que se va a tomar como base.
Figura 5-4.1. Flujo de elección UCK
29 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Se le da un nombre al proyecto de creación de la ISO.
Figura 6-4.1. Flujo de elección UCK
Lo normal es personalizar el CD durante la instalación de forma manual, agregando paquetes o
utilidades que se quieran disponer en la versión final.
Figura 7-4.1. Flujo de elección UCK
30 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Se da la opción de eliminar los archivos soportados por el sistema operativo Windows.
Figura 8-4.1. Flujo de elección UCK
La siguiente opción es si se quiere una imagen hibrida ISO/USB. Hace tiempo que las imágenes
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 creación 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 elección UCK
31 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Para empezar a construir la ISO, es necesario dar el password de usuario
Figura 10-4.1. Flujo de elección UCK
El proceso de creación empieza a generarse después de dar el password.
Figura 11-4.1. Flujo de elección UCK
32 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
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 elección del proyecto será la de continuar, para
que se genere una distro la más simple.
Figura 12-4.1. Flujo de elección UCK
La compilación de la ISO empieza a construirse.
Figura 13-4.1. Flujo de elección UCK
33 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Tras algunos minutos, la ISO finaliza exitosamente con unos 609,2 MB.
Figura 14-4.1. Flujo de elección UCK
4.1.1
Comprobación
La comprobación de la ISO-LIVE generada, se hace a través de una máquina virtual tipo VMware o
Oracle VM VirtualBox, dando como resultado el que muestra la figura 3-15 en la que muestra el paquete de
instalación por defecto el seleccionado previamente en la construcción de la imagen, es decir, el español.
Se dan las dos opciones que son la de probar Ubuntu de forma LIVE o realizar la instalación de el. Si
se continuase la instalación se instalaría según se ha predefinido en la fase de construcción, 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 español, 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 Almería-
Figura 1-4.1.1. Flujo de elección UCK
Esta es una de las forma de construir una ISO, aunque existen otras más. Se pueden agregar paquetes
o eliminar durante la opción del gestor de paquetes Figura 3-12.
4.2
CREACIÓN USANDO -REMASTERSYS-
Para la descarga del aplicativo remastersys, se puede hacer de varias formas una desde la consola,
descargándose el aplicativo desde algún 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 versión de Ubuntu habrá que añadir un repositorio diferente
a
“/etc/apt/sources.list”. En la tabla siguiente se muestra la línea a agregar en la ruta dada en función de la
versión.
Si se desconoce de la versión 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 Almería-
Tabla 3.2.1 Tabla de repositorios dependiendo de la versión de Ubuntu
Versión
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 través del “Centro de software Ubuntu”.
URL de interés
En http://www.remastersys.com/repository/lucid/remastersys_3.0.0-1_all.deb se puede
descargar y realizar la instalación.
La instalación no debería de dar ninguna incidencia independientemente de cómo 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 instalación
exitosa.
36 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Figura 1-4.2 Flujo de elección 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 elección remastersys
37 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Se muestran tres pestañas para la personalización de nuestra distribución siendo la llamado “acción”,
“ajustes” y “salida”. La pestaña “acción”, se puede considerar como la más importante porque es donde se
define la forma de construcción que se quiere hace. Remastersys presenta cuatro tipos de ISO que puede
crear, las cuales dependiendo de las necesidades se pueden utilizar. La más normal es una copia total del
sistema con todos sus datos, aplicaciones y programas actuales o más comúnmente 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 distribución en su totalidad tanto los programas como los
archivos de sistema para que la segunda opción 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 distribución ni para un usuario final además de reducir espacio. Remastersys ofrece
la posibilidad de hacer esto.
También presenta las opciones de personalización del arranque del sistema operativo, como de crear
un tema y de usar un usuario por defecto.
En la pestaña “ajustes”, se configura el directorio de trabajo así como del nombre que se le quiere
dar a la distribución, mientras que en la pestaña “salida” se muestra un registro de sucesos. Para simplificar
se va a crear una “distcdfs” aunque se podrían realizar cualquiera de las opciones comentadas anteriormente.
Figura 3-4.2 Flujo de elección remastersys
38 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
El proceso de construcción de la ISO, se puede seguir desde la pestaña “salida”
Figura 4-4.2 Flujo de elección remastersys
En la siguiente imagen se muestra la finalización del proceso de creación del sistema de archivos, y
la siguiente opción es ir añadiendo los paquetes que se desea que lleve la distribución para finalmente crear
la ISO. Si no se quisiera que lleve ningún tipo de paquetes simplemente se tendría que crear la ISO dando a
la opción de “distiso”
Figura 5-4.2 Flujo de elección remastersys
39 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
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 elección remastersys
4.2.1
Comprobación
La ISO se habrá creado en la ruta dada antes el proceso de construcción, en la pestaña de “ajustes”,
la cual debe de ser copiada en un CD/DVD para realizar la comprobación pertinente de que se ha construido
de forma exitosa. La forma más rápida es a través de una maquina virtual como se viene utilizando, aunque
también es posible sobre una máquina real sin ningún tipo de problemas como es el propósito general.
Se muestra la forma que daría nuestra distribución generada con remastersys en la figura siguiente.,
la cual tiene un peso de 984,5 MB.
En la fase de construcción 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 según datos predefinidos durante el
ensamblado, contando con una distribución en formato LIVE, la cual da la posibilidad de instarse o de
ejecutarse sin ninguna instalación previa.
40 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Figura 1-4.2.1 Comprobación de remastersys
4.3
CREACIÓN USANDO -UBUNTU BUILDER-
Ubuntu Builder es una aplicación creada por Francesco Muriana la cual puede personalizar tanto
sistemas i386 como amd64 creando sus correspondientes imágenes.
El proceso de instalación se puede realizar desde los repositorios o descargándose la ultima versión 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 página oficial y realizar la
instalación del .deb. En este caso el archivo va a ser “ubuntu-builder_2.2.1-1_all.deb” de 132 kb.
URL de interés
En http://code.google.com/p/ubuntu-builder/
41 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Independientemente de cómo se elija la opción la instalación deberá de ser exitosa para una correcta
utilización. La manera mas vistosa es a través del Centro de software Ubuntu, tal y como se ve a
continuación
Figura 1-4.3. Flujo de elección Ubuntu-Builder
Elección del idioma en un principio no es ningún problema ya que soporta para un amplio abanico,
pudiendo seleccionar hasta el español.
Figura 2-4.3. Flujo de elección Ubuntu-Builder
42 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Pantalla principal en la que se muestran todas las opciones disponibles para la construcción de la
distribución se muestra a continuación. Se ve que el interfaz gráfico es muy sencillo, facilitando la rápida
asimilación de las opciones que se presentan.
Figura 3-4.3. Flujo de elección Ubuntu-Builder
La elección 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 elección Ubuntu-Builder
43 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Figura 5-4.3. Flujo de elección Ubuntu-Builder
Una vez descargada desde cualquiera de los metodos ofertados por la aplicación o bien obteniendolo
por cualquier otro medio, se selecciona para crear la ISO en si.
Figura 6-4.3. Flujo de elección Ubuntu-Builder
44 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Se pueden ver los paquetes instalados en la distribución ademas de agregar los paquetes que se
deseen en la versión 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 opción atraves de la
consola de comandos. La dista de fuentes de los repositorios puede tambien modificarse al mismo tiempo.
La forma más rapida e intuitiva podria ser con el gestor de paquetes synaptic.
Figura 7-4.3. Flujo de elección Ubuntu-Builder
Se ofrece la posibilidad de configurar la distribución desde un chroot gráfico, ademas de configurar el
Ubiquiti. Todas estas opciones son consideradas manuales para luego realizar la construcción, 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 parámetros, como el entorno, la instalación de paquetes de
forma manual o atraves de synaptic, etc., para finalmente realizar la construcción.
45 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Figura 8-4.3. Flujo de elección Ubuntu-Builder
Al finalizar la construcción del sistema, se debe de informar al usuario sobre el éxito de la creación.
Figura 9-4.3. Flujo de elección Ubuntu-Builder
4.3.1
Comprobación
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 distribución, no
necesitando ninguna otra maquina virtual como se venia utilizando hasta ahora para la comprobación de las
ISO.
Figura 1-4.3.1. Comrpbación Ubuntu-Builder
46 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Capítulo 5
IMPLEMENTACIÓN DESDE CERO
La tarea más complicada es la implementación de un sistema Linux basado directamente en la
compilación 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 gráfico…etc). Para ello se utiliza un sistema anfitrión
desde el cual ayuda a realizar la implementación desde cero.
5.1
CREACIÓN CON ANFITRIÓN
Existe un proyecto denominado “Linux From Scratch” desde el cual se puede construir sistemas
GNU/Linux siguiendo su documentación llevada al efecto. Durante los años 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 inglés. 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 creación de este proyecto
teniendo incluidos todos los paquetes necesarios para la implementación, asi como del kernel, no teniendo
que ser descargados desde cualquier otra fuente, es decir, se tomaría un LFS como sistema anfitrión.
Para el desarrollo y creación de una nueva distribución 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 anfitrión 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 partición será utilizada
para la construcción de nuestro LFS.
Sistema anfitrión
Version openSUSE-12.1-DVD-i586.iso (4.13 GB)
48 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
En la siguiente figura se muestra las caracteristicas que tendrá el entorno virtual de desarrollo del
proyecto, el cual para la culminación de la compilación del sistema tarda aproximadamente unas 60 horas.
Figura 5-5.1. Caracteristicas del entorno vistual
Tras la elección del sistema anfitrión, habría 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 anfitrión contenga unos paquetes requeridos para
poder realizar la compilación debido a las dependencias que suelen ocasionarse. A traves del siguiente
código se mostrarían los paquetes que estan instalados en el sistema anfitrión junto con la especificación de
la versión o en su defecto la ausencia de ellos.
En el caso que no que faltara alguno de ellos o la versión no fuese la idonea, habría 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 Almería-
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,6echo -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 versión 7.1 de LFS
asi como las versiones recomendadas que debe de tener el sistema anfitrión.
Tabla 5.2.3-1 Los paquetes en sus versiones mínimas deben de ser
Paquete
Versión mínima
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 Almería-
Linux Kernel
M4
Make
Patch
Perl
Sed
Tar
Texinfo
Xz
2.6.25(habiendo sido compilado con GCC-4.1.2 o versión superior)
1.4.10
3.81
2.5.4
5.8.8
4.1.5
1.18
4.9
5.0.3
URL de interés
En http://www.linuxfromscratch.org puede encontrar el proyecto LFS asi como documentación
diversa.
Una vez que se ha comprobado que el sistema anfitrión dispone de los paquetes necesarios junto con
las versiones, los cuales son necesarios para la construcción del sistema LFS, el siguiente paso seria crear la
estructura de directorios.
La forma en la que se debe montar el LFS, sería una partición 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 instalación sobre una partición del disco duro primario (sda). Sobre esta partición 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.
DISCO RIGIDO
(sda)
sources
swap
(sda1)
sistema anfitrion
(sda2)
LFS
(sda3)
(sda3/sources)
Figura 2-5.1. Estructura del proyecto
tools
(sda3/tools)
51 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Creada la estructura, se continua con la definición de una variable que apuntará al directorio donde
se va a construir el sistema LFS, ademas de , hacer algunos enlaces simbolicos, la creación de un usuario y
grupo junto con la configuración de su entorno de trabajo o del interprete de comandos para tener uno
completamente vacio y modificado, según las necesidades del LFS, evitando que aparezcan variables
indeseadas o que esten dañadas y puedan entorpecer la culminación del proyecto.
Creación de variable y comprobación:
usuario@ubuntu:~$ export LFS=/mnt/lfs
usuario@ubuntu:~$ echo $LFS
Creación de enlace simbolico:
usuario@ubuntu:~$ ln –sv $LFS/tools /
Creación de grupo y usuario:
usuario@ubuntu:~$ groupadd lfs
usuario@ubuntu:~$ useradd -s /bin/bash -g lfs -m -k /dev/null lfs
Configuración 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 construcción
del sistema LFS. Este entorno esta limpio de otras variables que podrían crear conflictos con nuestro sistema
en construcción de ahí la creación y el uso posterior de este entorno.
Creación de grupo y usuario:
usuario@ubuntu:~$ source ~/ .bash_profile
52 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
En el sistema LFS se va a realizar en dos iteraciones de compilación. En una primera etapa se va a
construir un sistema mínino el cual será totalmente independiente del anfitrión 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 compilación de paquetes se procede a la configuración del
sistema para hacerlo ejecutable y que inicie el sistema por si solo.
Durante el proceso de construcción se tiene en cuenta el tipo de arquitectura del sistema anfitrión ya
que dependiendo de esta se utilizarán diferentes sentencias de comandos para la optimización o simplemente
porque son datos intrinsecamente diferenciados de unas arquitecturas de otras.
Figura 3-5.1. Resumen del procedimiento de construcción
Finalizada las dos fases de compilación se debe de crear los sistemas de ficheros virtuales al núcleo,
que son los que van a ser usados por el kernel en la gestión 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 núcleo 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 Almería-
.Despues de la creación de los ficheros virtuales y los nodos se debe realizar el proceso de
montaje sobre ellos.
mount
mount
mount
mount
mount
–v –bind /dev $LFS/dev
–vt devpts devpts $LFS/dev/pts
–vt tmpfs shm $LFS/dev/shm
–vt proc proc $LFS/proc
–vt sysfs sysfs $LFS/sys
Un factor muy importante es la gestión de paquetes que va a llevar nuestro futuro sistema LFS.
Como es sabido un administrador de paquetes permite la supervisión en la instalación asi como de la
eliminación de paquetes al tiempo que facilita la actualización de ellos, liberando al usuario de cargas.
Los gestores de paquetes siguen diferentes políticas de gestión que se detallan a continuación:
•
Técnica de instalación en directorios separados: De antemano se informa que esta técnica es
útil para un número mínimo de paquetes pero para número considerable se hace ineficiente.
La administración de paquetes no precisa de otros para el manejo de la instalación
instalandose cada paquete en un directorio aparte. Es decir que si se tiene una librería gráfica
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 versión y fuera necesaria su instalación, se
crearía otro directorio llamado “Libgraf version 2” en la cual se instalarian los nuevos
ficheros pero cambiando el enlace de la versión 1 a la versión 2. Como la versión 1 se
mantien aunque el enlace va dirigido hacia la versión 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.
•
Técnica de administración por medio de enlaces: teniendo como referencia la técnica
anterior, esta técnica es una variante de ella ya que la instalación de paquetes se hace bajo
/usr evitando la creación de enlaces asi como la ampliación de las cinco variables de entorno.
Tambien se pueden utilizar otro directorio diferente a este, pero requiere que se tenga que
falsear la dirección utilizando estrategias como DESTDIR. Algunos gestores de paquetes
que utilizan esta politica son Stow, Epkg, Graft y Depot.
•
Técnica basada en marca de fechas: cuando se realiza la instalación de un paquete se le
relaciona con la fecha actual asi el gestor de paquetes guarda un registro de la fecha de
instalación de todos sus paquetes. Se presenta el inconveniente en esta técnica sobre un
posible efecto de concurrencia entre paquetes provocando que los registros queden marcados
erróneamente asi como si el sistema contiene una fecha diferente a la actual. Es una técnica
simple pero al mismo tiempo es algo inconsistente. Un ejemplo de gestor de este tipo es
install-log.
•
Técnica basada en LD_PRELOAD: la existencia de una librería que supervisa la instalación
adjuntandose a algunos ejecutables y las llamadas al sistema. Para que funcione este método,
obviamente debe de estar enlazados dinámicamente los ejecutables y la librería 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 Almería-
•
Técnica de crear archivos de paquetes: Se crea una instalación 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 máquina local o en otras máquinas. Un ejemplo claro de
esta técnica son los los administradores de paquete RPM, pkg-utils, apt y Portage.
•
Técnica de administración basada en usuario: es una técnica de gestión 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 más datos en la pagina oficial del proyecto.
•
Técnica de todo en mi cabeza: la más trivial es la ausencia de gestor de paquetes, es decir,
que el propio administrador es el propio gestor.
Una vez realizada la preinstalación se en el entorno chroot para finalizar con la construcción 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 continuación 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 según 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 Almería-
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 opción de –g del gcc, se crean símbolos de depuración. Si no se desean
mantenerlos, se pueden eliminar del sistema ya que el tamaño del total puede ser sustancial, liberando un
espacio sustancial.
Despues de todas estas fases de construcción, se entraría en la fase de configuración del arranque
utilizando para ello Grub, el cual debe de ser programado según 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 consideración a la hora de iniciarse. En la siguiente figura se descarta la opción
de reconocimiento del sistema anfitrión.
Una opción a tener en cuenta es el idioma en el que el sistema LFS va a trabajar. Para el idioma
español de España y que trabaje con euro, no habría ningun problema. Lo único que se debe de hacer es
descargar los paquetes necesarios que dan soporte al idioma.
A continuación se muestran las configuraciones de los scripts para el arranque del sistema.
Figura 4-5.1. Configuración de scripts
56 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Finalmente y para concluir la fase de compilaciones, se pasaría a la creación de la imagen del kernel
y de sus modulos. Dentro de la configuración, se pueden abilitar discos SATA, tarjetas de red y demás
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 continuación si
no se tienen en cuenta algunos detalles, podria bloquearse el sistema y nunca llegaría a arrancar o daría
mensajes de error o panics. El siguiente ejemplo se debe a la ausencia de configuración de algunos modulos
del kernel
Figura 5-5.1. Error de inicio del sistema
57 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
Figura 6-5.1. Configuración del kernel
Nota
Para evitar el error de devtmpfs habría 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 Almería-
Nota
Desde el dia 1 de septiembre del 2012 esta disponible la versión LFS 7.2
5.1.1
Comprobación
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 anfitrión para realizar el desmontaje de dispositivos y poder reiniciar el
sistema.
Arrancado nuestro sistema entrará en funcionamiento el sistema GRUB dandonos la opción 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 Almería-
Figura 2-5.1.1. Arranque del proyecto fin de master
CONCLUSIONES Y TRABAJO FUTURO
Se han visto dos formas de creación de distribuciones Linux, en la que una de las opciones estaba
basada en una distribución 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 creación o remasterización de distribuciones siendo UCK, Remastersys y
Ubuntu Builder . Una segunda opción 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 rápida y sin conocimientos previos en Linux y de
una manera muy intuitiva y que cualquier persona podría 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 según cual, se lleva bastantes horas de compilación, pero depura mas
el sistema final porque únicamente se instala lo necesario aunque en contraposición el usuario debe de tener
un buen conocimiento sobre las dependencia entre sus paquetes y sus versiones. Además se queda instalado
en el soporte donde se produjo todo el proceso, teniendo que realizar un proceso de creación de distribución
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 construcción del entorno gráfico por pantallas en el caso que se precisara.
Gracias a la personalización del la distribución se produce una optimización 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 mínimo 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 gráfico por el
que fuera mas intuitivo no quedandose unicamente en el entorno de consola.
BIBLIOGRAFÍA
A continuación es listada la documentación y páginas Web que han servido de referencia
bibliográfica complementaria durante el desarrollo del proyecto.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Proyecto GNU http://www.gnu.org (último acceso: Agosto 2012).
Linux zone http://www.linuxzone.es (último acceso: Agosto 2012).
Distribución Debian http://www.debian.org (último acceso: Agosto 2012).
Rincón de Linux http://www.linux-es.org (último acceso: Agosto 2012).
Ubuntu, http://www.ubuntu.com (último acceso: Agosto 2012).
Proyecto Fedora, http://www.fedoraproject.org/es/ (último acceso: Agosto 2012).
Sourceforge, http://www.sourceforge.net / (último acceso: Agosto 2012).
Ubuntu root http://ubunturoot.wordpress.com (último acceso: Agosto 2012).
distrowatch http://www.distrowatch.com (último acceso: Agosto 2012).
Ubuntu http://www.ubuntu.com (último acceso: Agosto 2012).
Linux questions http://iso.linuxquestions.org (último acceso: Agosto 2012).
Librería de archivos digitales http://www.ibiblio.org (último acceso: Agosto 2012).
Linux Info http://www.aboutlinux. (último acceso: Agosto 2012).
Proyecto Linux from scratch http://www.linuxfromscratch.org (último acceso: Agosto 2012).
Suse Studio http://susestudio.com/(último acceso: Agosto 2012).
Proyecto Ubuntu Builder http://code.google.com/p/ubuntu-builder (último acceso: Agosto 2012).
Revista Linux Journal http://www.linuxjournal.com (último acceso: Agosto 2012).
Linux Unity http://unity-linux.org/ (último acceso: Agosto 2012).
Linux news http://lxer.com/ (último acceso: Agosto 2012).
Lion’s Wing http://www.lions-wing.net (último acceso: Agosto 2012).
Khmeros http://www.khmeros.info/ (último acceso: Agosto 2012).
Linux basics http://www.linuxbasis.com/ (último acceso: Agosto 2012).
Julio Gomez. López. Administracion de sistemas GNU/LINUX. ISBN: 978-84-92650-46-0
Julio Gómez López. Administracion Avanzada De Sistemas Informaticos. 978-84-9964-007-5
64 Distribuciones Linux. Proyecto Fin de Master CSI.- Universidad de Almería-
25. About debian http://www.aboutdebian.com (último acceso: Agosto 2012).
26. How open source http://www.howopensource.com (último acceso: Agosto 2012).
Máster en Administración, Comunicaciones y
Seguridad Informática
http://masteracsi.ual.es