Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guia Generacion Guadalinex v3 PDF
Guia Generacion Guadalinex v3 PDF
DISTRIBUCIONES:GUADALINEXV3
Proyecto: Monk
02206v1.1
06/06/06
monk
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Licencia:
EstaobraestbajounalicenciaReconocimientoNoComercialCompartirIgual2.5deCreativeCommons.
Paraverunacopiadeestalicencia,visitehttp://creativecommons.org/licenses/byncsa/2.5/oenvieunacartaa
CreativeCommons,559NathanAbbottWay,Stanford,California94305,USA.
Autores:
CarlosParraCaramargo
JuanJessOjedaCroissier
RafaelMartndeAgarTirado
Emergya,S.C.A.
2
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
NDICEDECONTENIDO
1.VISINGENERAL.....................................................................................................................................6
1.1.Introduccinalacreacindedistribuciones................................................................................................6
1.1.1.AnlisisyDiseo............................................................................................................................................7
1.1.2.Personalizacin.............................................................................................................................................8
1.1.3.Generacinymantenimiento.......................................................................................................................10
1.2.Personalizacindeladistribucin..............................................................................................................11
1.2.1.Estructurademetapaquetes........................................................................................................................14
1.2.2.DescripcinfuncionaldeCDD..................................................................................................................17
1.2.3.LaaplicacinCDD....................................................................................................................................20
1.2.4.ProcesodeGeneracindelospaquetes....................................................................................................21
1.2.5.Generacindesuplementos.......................................................................................................................28
2.ASPECTOSMODIFICABLESDELADISTRIBUCIN...........................................................................32
2.1.Nombredeladistribucin..........................................................................................................................32
2.1.1./etc/motd......................................................................................................................................................32
2.1.2./etc/issue.....................................................................................................................................................32
2.1.3./etc/lsbrelease............................................................................................................................................32
2.2.Imagen.......................................................................................................................................................34
2.2.1.Isolinux........................................................................................................................................................34
2.2.2.Usplash.......................................................................................................................................................43
2.2.3.Grub............................................................................................................................................................43
2.3.EscritorioGnome.......................................................................................................................................44
2.3.1.Selectordesesin(GDM)...........................................................................................................................44
2.3.2.Fondodeescritorio.....................................................................................................................................44
2.3.3.Imagen"Splash"deliniciodesesin..........................................................................................................45
2.3.4.Mens.........................................................................................................................................................46
2.3.5.Paneles.......................................................................................................................................................48
2.3.6.Temas.........................................................................................................................................................49
3
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
2.3.7.MozillaFirefox.............................................................................................................................................49
2.4.Aadiryquitaraplicaciones.......................................................................................................................50
2.5.Configuracindeaplicaciones...................................................................................................................51
3.SISTEMANOLIVE..................................................................................................................................52
3.1.Obtenertodolonecesario..........................................................................................................................52
3.1.1.Dossabores.................................................................................................................................................52
3.1.2.Cmosehageneradoel.tar?...................................................................................................................52
3.2.Arquitecturadelsistemadegeneracin...................................................................................................56
3.2.1.bin/...............................................................................................................................................................57
3.2.2.debiancd/...................................................................................................................................................60
3.2.3.etc/..............................................................................................................................................................60
3.2.4.ftp/...............................................................................................................................................................60
3.2.5.germinate/...................................................................................................................................................60
3.2.6.log/..............................................................................................................................................................60
3.2.7.scratch/........................................................................................................................................................60
3.2.8.secret/.........................................................................................................................................................61
3.2.9.uda/.............................................................................................................................................................61
3.2.10.windows/....................................................................................................................................................63
3.3.Generacin...............................................................................................................................................63
3.4.Elinstalador..............................................................................................................................................64
3.4.1.Debianinstaller...........................................................................................................................................64
3.4.2.baseconfig................................................................................................................................................67
3.4.3.Fasesdelainstalacin..............................................................................................................................68
3.5.Branding...................................................................................................................................................69
3.5.1.Cambiarmensajedebienvenida:udafirstmessage..................................................................................69
3.5.2.Cambiarimgenesdelasegundafasedelainstalacin:udapostinstall..................................................71
3.5.3.Cambiarentradadegrub............................................................................................................................71
3.5.4.AparicionesdeGuadalinexendebianinstaller...........................................................................................72
3.6.Ejemplosprcticos...................................................................................................................................72
4
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
3.6.1.Incluirunnuevopaquete............................................................................................................................72
3.6.2.Borrarunpaquete......................................................................................................................................73
3.6.3.Cambiareltextodeisolinux........................................................................................................................74
3.6.4.Cambiarlosrepositorios............................................................................................................................74
3.6.5.CambiarlaclaveGPG...............................................................................................................................76
4.SISTEMALIVE.........................................................................................................................................78
4.1.Initramfs:dondetodoempieza...................................................................................................................78
4.1.1.Ques?.....................................................................................................................................................78
4.1.2.Estructura....................................................................................................................................................79
4.1.3.Archivosprincipales....................................................................................................................................81
4.2.SquashfsyUnionfs:msenmenos..........................................................................................................82
4.2.1.Squashfs.....................................................................................................................................................82
4.2.2.Unionfs........................................................................................................................................................83
4.2.3.Squashfs+Unionfs.....................................................................................................................................85
4.3.Sistemadegeneracin:genlive,chroot,etc.............................................................................................85
4.3.1.genlive.........................................................................................................................................................86
4.3.2.Paquetesysoftwareimplicado...................................................................................................................88
4.3.3.Directoriosyarchivosimportantes..............................................................................................................89
4.3.4.Chroot.......................................................................................................................................................101
4.4.Dndepersonalizar?.............................................................................................................................103
4.5.Instaladorlive...........................................................................................................................................104
4.5.1.Ques?...................................................................................................................................................104
4.5.2.Cmofunciona?......................................................................................................................................109
4.5.3.Cmopersonalizarlo?.............................................................................................................................110
5.CONCLUSIONES...................................................................................................................................112
5
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
1.VISINGENERAL.
1.1.INTRODUCCINALACREACINDE
DISTRIBUCIONES
Lacreacindedistribucionesesalgomscomplejoyalavezmenoscomplicadodeloquelagentesuele
pensar.Lacomplicacinladanlacantidaddefactoresqueintervienenyquehayquetenerencuentaparahacer
unaverdaderadistribucin.Unaquerealmentesirvaparaalgomsqueparademostracionesdelapotenciade
GNU/Linux.
Mientrasque,loquehacequeseamenoscomplicadadelosesuelepensareslatecnologaqueseusa.
Unatecnologabastanteavanzadayprobadaqueponealalcancedecasicualquieralacapacidadtcnicapara
llevaracabotalempresa.
Cuandohablamosdeunaverdaderadistribucin,nosreferimosaunaquesepuedausar,quesepueda
instalar,quesepuedaactualizar,queseamantenidaposteriormenteyqueestpensadaparaalgngrupode
usuarios concretos (ciudadano de a pie, alumno de secundaria, profesional del derecho, administrativos de
PYMES,etc)yconalgnfinconcreto.
Peroparaqueladistrollegueaeseniveldeutilidad,necesitaremosunbuendiseoprevioyuntrabajo
posterior. Para dicho diseo no necesitaremos ser programadores, expertos en distribuciones, sistemas de
paqueteraosimilares.Almenosenlasprimerasfases.Lonicoquenecesitamosessentidocomn,despojarnos
denuestraspreferenciasyprejuicios,yconocerbienalosfuturosusuarios.Paraeltrabajoposteriorsesposible
quenecesitemosayudadealgnexpertooserlonosotrosmismos.
Enresumen,elprocesodecreacindeunadistribucinpodramosdividirloenlassiguientesfases:
Fase1:Anlisisydiseo
Fase2:Personalizacin
Fase3:Generacinymantenimiento
6
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
1.1.1.ANLISISYDISEO
Parailustrarestafasetenemosestediagrama(Figura1).
Comopodemosobservar,todoeldiseopartedenuestrogrupodeusuarios,deloquenecesitanydelo
queconocen.
Figura1:Diseoorientadoalusuario
7
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
As como tampoco es lo mismo lo que puede necesitar un alumno de primaria que un estudiante
universitarioounabogado.
Una vez conocemos las funcionalidades que necesitan cubrir nuestros usuarios ya podemos buscar
aplicacionesquelohagan.Yparaorganizarlasmejordeberamosagruparlasporcaractersticascomunes.
Porejemplo,unarquitectonecesitarhacer,vereimprimirplanos.Necesitarhaceralgnrenderizado
3D,leerymandarcorreo,consultarinformacinenInternet,redactarinformesypresupuestos,gestionarsus
proyectos,mantenersuscitasycontactossincronizadosconsumvily/oPDA.(Estoesslounanlisissimplistay
deejemplo)
Ahoraquesabemosestoyapodemosbuscaralgoquepuedacubrirsusnecesidades.Podraseralgocomo:
Diseodeplanos:QCad
3D:Blender
ConsultarinformacinenInternet:Firefox
Informesypresupuestos:OpenOffice
Gestindeproyectos:Planner
Correo,citasycontactos:Evolution
Ahoratocaagrupar:
DiseoCAD:QCadyBlender
Internet:FirefoxyEvolution
Ofimtica:OpenOffice,PlanneryEvolution
Yconestoterminaramosestaprimerafasedediseo.
1.1.2.PERSONALIZACIN
Aunqueelobjetivoprincipaldeunadistribucineselusuario,intervienenmsactoresenelprocesode
diseoycreacin.Porunladolosdesarrolladores,porotrolosusuariosy,porltimo,laorganizacinparaquien
secrea.stapuedeserdesdeunauniversidadaundepartamentodealgnorganismopblico,oinclusouna
empresaprivada.
8
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Pero lo importante es que stas suelen tener algunos elementos que afectarn al diseo o
configuracionesdeladistribucincomoson:
Imagencorporativa
Configuracionesfsicasdelaorganizacin(topologadered,tipodehardware,serviciosderedcorporativos,
etc)
Todoestosetraduceenconfiguracionesenlasaplicaciones.Asqueelsiguientepasoesinstalaruna
distrobase1,instalarlasaplicacionesquepreviamenteseleccionamosyaplicarleloscambiosnecesariosensus
configuraciones.
Figura2:Aplicaryextraerconfiguraciones
Apartirdeaqu,duranteestafase,slonosquedarextraeresasconfiguracionesyagruparlastalycomo
hicimosconlasaplicaciones.
Porunladotendramoslosgruposdeaplicaciones,queconvertiremosluegoenmetapaquetes2yporotro
1 Unadistromnimasobrelaqueinstalarloquenecesitemos
2 Vercaptulo1.2.1
9
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
tenemoslasconfiguracionesdedichasaplicaciones,tambinagrupadas.Estosgruposdarnlugardespusalos
metapaquetesdeconfiguracin.
Porotraparte,obtendremostambintodoelmaterialnecesarioparaadaptar,tantoladistrocomolos
CDsenlosquesedistribuir,alaimagencorporativadelaorganizacin.
1.1.3.GENERACINYMANTENIMIENTO
Estafaseesotradelasquesesueleolvidarperoquemarcaladiferenciaentreun CDlive yuna
distribucin.
Parahacerunadistribucinnecesitasunobjetivo,undiseo,unasconfiguracionespredeterminadasy
algnmediodedistribucindeladistro.Ydeestoltimotrataestafase.
UnCDliveesunmedioptimoparadistribuirnuestradistroporrazonesdesobraconocidas,perono
podemosquedarnosah.
Qupasasihayfallosdeseguridadyhacefaltaactualizarelsoftwareafectado?Osisacamosuna
nuevaversindeladistro?
Haremosquelosusuariosselareinstalen?Notendramssentidopoderofrecerunosrepositoriosde
paquetesdesdelosquepoderhacerlasactualizacionesoportunas?
Deahlaimportanciadeguardarconfiguraciones,gruposdeaplicacionesainstalarycualquierotra
diferenciaconladistropadre,enpaquetes.Ydespusgenerarnuestrosrepositorios.Aspodremoscontrolary
mantener de forma eficiente nuestra distribucin, usando las herramientas que nos facilita el sistema de
paquetera,desdeunslositio:elrepositorio.
Una vez tengamos el repositorio creado y listo, slo nos quedar generar los CDs para facilitar la
distribucindenuestrosistemaoperativo.
EnGuadalinexv3sehancontemplado2posiblessistemasdedistribucin:uninstaladornolive,basado
enpaquetesyunCDlive,consupropioinstalador.Cadaunoconvenientementeadaptadoanuestraimagen
corporativa(Artwork).
10
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Figura3:CrearunrepositoriodesdedondeinstalarogenerarlosCDsdistribuibles
Conestoseterminaeldiseoycreacindenuestradistro,peroannosfaltaraalgoimportantecomoes
elllevarunseguimientoalamisma(solucindebugs,actualizacionesdeseguridad,etc)ymantenimientodelos
repositorios.
1.2.PERSONALIZACINDELADISTRIBUCIN.
Lapersonalizacindeunadistribucinesunprocesomedianteelcual,apartirdeunadistribucinbase,
se obtiene una nueva adaptada y configurada para unas necesidades concretas previamente definidas. La
adaptacin y configuracin son procesos que se refieren a la obtencin de una distribucin final con las
caractersticassoftwaredeseadas,loqueincluye:
Unconjuntodeaplicacionesdeterminado,seleccionadoparasatisfacerlademandadelconjuntofinalde
usuariosparaelquesedestinaladistribucin.
Configuracinadecuadadelasmismasparafuncionardelaformaquesedesea:idiomacastellano,directorio
donde se almacenan los documentos, y un largo etctera que depende de las caractersticas de cada
aplicacin.
11
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Aparienciadeloselementosgrficos,dondeseincluyelaconfiguracindeltemaquesevaautilizarenel
entornogrfico,seleccindeiconos,fondodeescritorio,imagenquesemuestraduranteelarranquedel
sistema,...
Unadistribucinsecomponefundamentalmentedeelementossoftwareorganizadosenpaquetes,cada
unodeloscualesaportaunafuncionalidadparticularaladistribucin.
Peroexceptuandoestospocoscasos,lagranmayoradeelementosdeunadistribucinseconfigurana
partirdelospaquetesqueloscomponen.
Porestemotivo,esnecesarioseleccionarunabuenaestrategiaparallevaracabolaconfiguracindelos
paquetes.
Posibilidadeshaymuchas,cadaunaconsusventajaseinconvenientes.Porcitaralgunosejemplos,se
tiene:
Copiadirectadelasconfiguracionesdelospaquetes:Estemtodoconsisteenpreparartodoslosficherosde
configuracindelosdiferentespaquetesycopiarlosenlasubicacionescorrespondientesparaquesurtan
efecto las configuraciones. Esto se puede hacer, por ejemplo, creando un fichero tar.gz con todas las
configuracionesydescomprimindoloeneldirectorioraz(/)delsistemaquesedeseapersonalizar.Este
mtodoesmuysencilloyrpidodellevaralaprctica.Cuentaconlosinconvenientesdequeesdifcil
12
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
controlarloscambiosqueseaplicanalsistemafinalademsdequeloscambiosqueseestnaplicandono
quedanrecogidosenningnpaquete,porloqueesdifcildeshacerlospararestaurarelsistemaydejarloenel
estado original. Adems, de esta manera es complicado mantener las versiones live y no live
sincronizadas,puestoqueloscambiosnoseaplicanapartirdepaquetes.Asimismo,medianteestemtodo
nosetienencontrolsobrelasaplicaciones(paquetes)queseinstalan,teniendoquellevaracaboestatarea
deformamanual.Esdecir,nohayningunaformadeinstalartodaslasaplicacionesquesedeseenapartirde
la instalacin de algn(os) paquete(s). Esta instalacin de aplicaciones habra que llevarla a cabo
manualmente.
stafuelaaproximacinquesesiguienGuadalinex2004,porponerunejemplo.
Recompilacindepaquetes:EstemtodoconsisteenpartirdelconjuntooriginaldepaquetesDebian1dela
distribucin base y recompilarlos para que incluyan directamente la configuracin deseada. sta es la
aproximacinquehaseguidoUbuntuconrespectodeDebian:sehanrecompiladoparaUbuntumuchos
paquetesDebianparaadecuarlosaestanuevadistribucin.Aunqueestemtodopuedeseradecuadoen
muchoscasos,presenta elinconveniente de quecada vezquecambia elpaquete original,sisedesea
aprovecharlasmejorasquesehayanhecho,hayquevolveraaplicarloscambiossobreelmismoyregenerar
elpaquete.Portanto,elmantenimientosepuedecomplicarsielconjuntodepaquetesquehayquemantener
eselevado.Adems,desdeelpuntodevistadeltrabajocolaborativo,estaaproximacinesfactibledefiniendo
responsablesdecadapaquete,queseencargarndemantenersuspaquetesactualizados.Estoesfactible
cuandoelnmerodedesarrolladoreseselevado.Porotraparte,comoenelcasoanterior,tambinhabraque
llevaramanolainstalacindelospaquetesquesedeseendeformamanual,paqueteporpaquete.
dpsycoyCDD:steesunmtodonovedosoeinnovadorquesehautilizadoconxitoenGuadalinexv3.A
grandesrasgos,consisteenimplementarunanuevacapadepaquetes(metapaquetesdeconfiguracin)por
encimadelospaquetesquesedeseanconfigurar.Estosmetapaquetesdeconfiguracinseencargande
1 Enprincipio,sepodrautilizarcualquierotrosistemadegestindepaquetes(rpm,tgz,etc)peroestoquedafueradelobjetivo
deestemanual.
13
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
instalarlasaplicacionesnecesariasy,unavezstassehaninstalado,lasconfigurancomosehayadefinido
guardando una copia de seguridad de la configuracin original. Una de las ventajas que presenta esta
aproximacinesqueapartirdelainstalacindeunnicopaquetesellevaacabolainstalacindelsistema
completo(graciasacomosehaimplementadoCDD).Estopermite,porejemplo,convertirunsistemaUbuntu
enunsistemaGuadalinexv3simplementeinstalandounpaquete,algoquenoesfactibledeformasencilla
conlosmtodosanteriores.Otraventajaesquemedianteestemtodonohayquemodificarningnpaquete
originaldeladistribucinbase,demaneraquelasmejorasycambiosquesellevenacabosobrealgunode
estospaquetessepuedenincorporarenladistribucinfinalsinnecesidadderecompilarningnpaquete.De
esta manera, se simplifican las tareas de mantenimiento. Con este mtodo, el trabajo colaborativo se
simplificaigualmenteporqueesmuysencillotrabajarconCDDapartirdeunrepositoriocomosvn,ynoes
necesariotenerdefinidosresponsablesparacadapaquete.Tambinesinteresantedestacarqueconeste
mtodo,esposiblesepararencomponentesladistribucinfinal,demaneraqueconunadefinicinadecuada
de los componentes, es posible crear una nueva distribucin a base de combinar adecuadamente los
componentesqueyaexistanmsalgunosnuevosquesegeneren.
EstemtodosedescribeconmayorprofundidadenelapartadoEstructurademetapaquetesmsabajo.
1.2.1.ESTRUCTURADEMETAPAQUETES
Sehadesarrolladounsistemadegeneracinautomticademetapaquetesdeconfiguracinllamado
CDD.ParaentenderlaarquitecturadeCDDesnecesarioaclararpreviamentealgunosconceptosbsicoscomo
losmetapaquetes,metapaquetesdeconfiguracinycomponentes.
UnmetapaquetecomotalesunpaqueteDebianvaco(noinstalaningnficheroenelsistemasalvolos
mnimosimprescindiblesqueexigeelsistemadepaquetesdeDebian)quedepende,asuvez,deunconjuntode
paquetes.Deestaforma,lainstalacindelmetapaqueteprovocalainstalacindetodoelconjuntodepaquetes
delquedepende.
14
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
conjuntodeaplicacionesapartirdelainstalacindeunaseriedeficherosdeconfiguracinenelsistema.Estos
ficheros de configuracin dependen, lgicamente, de las aplicaciones concretas que se configuren y son
totalmentedependientesdeellas.
Uncomponenteesunacombinacindemetapaquetesymetapaquetesdeconfiguracinqueseencargan
deinstalaryconfiguraradecuadamenteunapartedelsistema.Porejemplo,sepodrahablardeuncomponente
escritorioquese encargue de instalar el sistema XWindow, Gnome, ofimtica,etc y de configurarlocomo
interese.
Un componente est formado, a su vez, por otros subcomponentes que configuran partes ms
especficasdentrodelreaqueabarcauncomponente.Porejemplo,enuncomponenteescritoriosepodran
tenervariossubcomponentes:oficina,multimedia,internet,...
Sepuedevertodoestodeformagrficaenlafigura4.
Observandolafigura,sepuedever,enprimerlugar,laexistenciadelmetapaquetedeGuadalinexv3.
steeselmetapaquetepadredeladistribucinyelobjetivoesquelleveacabolainstalacindetodoslos
componentesquesehandefinidoparaGuadalinexv3.Portanto,existeunadependenciadedichopaquetede
todosloshijosdel(dependenciasaniveldepaqueteDebian).
15
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Figura4:JerarquadepaquetesymetapaquetesdeGuadalinexv3
Porotraparte,seobservalaexistenciadecuatrocomponentes,asaber:base,escritorio,noescritorio
y extras. Cada uno de estos componentes est formado por un conjunto de subcomponentes. Se puede
observar,porejemplo,queelcomponenteescritoriocontiene,asuvez,lossubcomponentesaccesoriose
internet,ademsdeotrosquenosehandetalladoexplcitamenteenlafigura.
Cadaunodelossubcomponentesestformadospordospaquetesclaramentediferenciados:
Metapaquete,quellevaacabolainstalacindetodoslospaquetes(aplicaciones)queformanpartedel
subcomponente.Enelcasodelmetapaqueteescritorioaccesorios,incluyeensusdependenciaspaquetes
talescomofileroller,gthumb,tomboy,...
16
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Metapaquetedeconfiguracin,quellevaacabolaconfiguracindelasaplicacionesanteriores.Enelcasodel
metapaquete de configuracin escritorioaccesoriosconf se incluyen ficheros tales como
/usr/share/applications/fileroller.desktop,queconfiguralaentradadelmendelpaquetefileroller.
CDDpermitedefinirygenerardeformasencillaestructurasdemetapaquetesycomponentessimilaresala
anterior,pudindoseadaptaralasnecesidadesparticularesdeladistribucinfinal.Esposibledefinirelnmerode
componentesysubcomponentesquesedeseeycadaunodeellospuedeinstalaryconfigurarcuantasaplicacionesse
quiera.Sinembargo,presentaunpardelimitaciones:
Unamismaaplicacinnopuedeestarendossubcomponentesdiferentes,porqueestoprovocaraproblemasde
dependenciasentreellos.
Elnmerodenivelesenlosquesehaestructuradolajerarquaanteriornosepuedemodificar;portanto,nose
puedeampliarodisminuirestenmero.Loquessepuedehacer,comoyasehacomentado,esaadiroquitar
cuantoscomponentessedesee.
1.2.2.DESCRIPCINFUNCIONALDECDD
CDDesunautilidadparacrearpaquetesdeconfiguracinymetapaquetesde unaformasencilla.Eldiseo
deCDDseapoyaendospilaresfundamentales:
SistemadepaquetesdeDebian:estesistemaproporcionarealmentelabasesobrelaquesesustentaCDD.
Permiteestablecerrelacionesdedependenciadelosmetapaquetesentresyconlospaqueteshijoque
instalan,llevaracabouncontroldeversiones,instalaraplicaciones,ejecutarcomandosantesodespusdela
instalacindepaquetes,yunlargoetctera.
dpsyco:Elsistemadpsycoseutilizacomobaseparagenerarlosmetapaquetesdeconfiguracin.Hayque
tenerencuentaqueelsistemadepaquetesdeDebianimpidequeunpaquetesobreescribelaconfiguracin
deotro,porloquenogenerarmetapaquetesdeconfiguracinusandoelsistemadepaquetesdeDebiantal
cual.
17
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Mediantedpsyco,sepuedengenerarmetapaquetesdeconfiguracinquesllevanacabolaconfiguracin
deotrospaquetesinstaladosenelsistema.
Paraello,dpsycofuncionadelasiguientemanera:dentrodeunmetapaquetedeconfiguracin,sealmacena
enunskeltodalaconfiguracindeaplicacionesquesevayaallevaracabo.Cuandoseinstaladicho
metapaquete,todosestosficherosdelskelsealmacenanen/usr/share/dpsyco.Cuandosellevaacabola
postconfiguracin del metapaquete se produce la ejecucin de updatedpsycoskel (una de las
herramientasqueproporcionadpsyco)demaneraquesebuscanlosficherosoriginalesdeconfiguracindel
sistema,seguardaunacopiadeseguridaddelosmismos(en/var/lib/dpsycoskel)ydespussesustituyen
porlosnuevosdelmetapaquete.Deestaforma,lasaplicacionesquedanconfiguradascomosedeseapero
almacenando previamente una copia de seguridad de la configuracin anterior. Si se desinstala el
metapaquetedeconfiguracin,serestauralacopiaanteriordelosficherosdeconfiguracin.
Todoestosepuedeverdeformagrficaenlafigura5.
CDDsehadiseadoparagenerarunconjuntodepaquetesconciertasrelacionesdedependenciaentreellos.
CDDtratacadacomponentedeformaindependientedemaneraquealfinalsegeneraunmetapaquetepor
encimaqueinstalatodosloscomponentesqueformenpartedeladistribucinfinal.
Larelacindedependenciasenelcasodeuncomponenteconcretosemuestraenlafigura6.
Comoseobserva,elmetapaquetepadredelcomponentetienedostiposdedependenciasconloshijos.El
primero deestostiposesuna predependenciaconlosmetapaquetesdelossubcomponenteshijos.El
segundotipoesunadependencianormaldelosmetapaquetesdeconfiguracionesdecadasubcomponente.
Deestamaneraseaseguraquealinstalarelcomponente,primeroseinstalantodaslasaplicacionesque
formanpartedelmismoydespusseproducelaconfiguracin.
18
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Figura5:Funcionamientode"dpsyco"durantelainstalacindeunmetapaquetede
configuracin.
Figura6:EstructuradeuncomponentegeneradoconCDD.
19
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
1.2.3.LAAPLICACINCDD.
CDDseencuentraeneldirectorioapps_sel_and_conf/cdddelrepositoriodeGuadalinex.Estoesloque
contienenlosdiferentesdirectorios:
build/genpackage:Contienescriptsnecesariosparagenerarlospaquetes.Adems,existeundirectorio
debianconlasplantillasdetodoslosficherosnecesariosparagenerarlospaquetesDebian.Estasplantillas
seutilizarnpordefectoenlageneracindelospaquetes.Aunqueesposiblecrearficherosdiferentespara
algncomponenteconcreto.Enestecaso,elficheroquesecreesustituiralqueseincluyepordefecto.Esto
severmsadelante.
build/packages/:Contienelospaquetesgenerados.
conf>Enestedirectorioesdondeseconfiguranlosdistintospaquetes.Contieneundirectorioparacada
componente,que,asuvez,contieneundirectorioparacadasubcomponente.Unejemplosera:
conf/
|-- v3-escritorio (componente escritorio de Guadalinex v3)
| |-- accesorios
| `-- ...
|
`-- v3-mini-base (componente base de Guadalinex v3 mini)
`-- base
|-- DEBDEPENDS
|-- debian
`-- skel
`-- ...
20
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Sinoscentramosenelcomponentev3minibase,sevequestecontieneunnicosubcomponente
base.Sevaadescribirlaestructuradedirectoriosparaelcasodeunodelossubcomponentes,enestecaso,
base:
conf/v3minibase/base/debian:Enestedirectoriossepuedenopcionalmentecolocaralgunosdelos
tpicosscriptsdelsistemadepaquetesdeDebian:preinst,postinst,prermypostrm.Encasodeque
seincluyaalgunodeestosscripts,sesustituirelqueseutilizapordefectoenlaplantilla,sloenel
metapaquetedeconfiguracin(noenelmetapaquetededependencias).Elmsutilizadodeestosscripts
suele serpostinstpara realizar algunas tareas de configuracin finales a partir de la ejecucin de
algunoscomandos.
1.2.4.PROCESODEGENERACINDELOSPAQUETES.
Antesquenada,es muyimportante tenerencuentaentodomomentoqueantesdegeneraralgn
paqueteesnecesarioquetodoslosficherosestnsubidosenelsvn.
Veamospasoapasocmoconstruirunpaquetedesdecero.Sirvadeejemplolaconstruccindeuna
nuevadistribucinficticiamidistro(queseraunavariantedeladistribucinpadre,comopodraserporejemplo,
mini,lavarianteparaequiposantiguosdeGuadalinex).Elmetapaquetepadredemidistrodependededos
paquetes,unoalquellamaremoscomponente1yotroquebautizaremoscomocomponente2.stosseranlos
doscomponentesqueformanpartedeladistribucinficticiamidistro.
21
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Enesteescenario,elprocedimientoparalageneracindelospaquetessera:
1) Creamoslaestructuradedirectoriosconlaconfiguracindecadacomponente,talycomosemuestraa
continuacin(Esimportanterecordarquetodosloselementosqueformanpartedelrbolanteriordeben
estarsubidosalrepositoriodesubversion).
conf/midistro-componente1
|-- subcomponente1
| |-- DEBDEPENDS
| |-- debian
| `-- skel
| `-- etc
| |-- app11a.conf
| `-- app11b.conf
`-- subcomponente2
|-- DEBDEPENDS
|-- debian
`-- skel
`-- etc
|-- app12a.conf
`-- app12b.conf
22
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
2) GuardamosenlosficherosDEBDEPENDSdecadacomponenteslaslistasconlasdependenciasde
paquetes que debe instalar cada uno de los componentes. Por ejemplo, en
subcomponente1/DEBDEPENDSsetendr:app11a,app11b.
subcomponente1
subcomponente2
4) Modificamoselficherobuild/genpackage/Makefileparaquecontengalonecesarioparacrearelnuevo
paquete:
Contenidoantesdemodificar(suponemosqueyaexisteunpaquetellamadov3):
all: v3
23
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Despus:
all: v3 midistro
Asseestindicandoqueparaconstruirmidistrohayqueconstruirloscomponentesqueformanparte
ella.
5) Desdeeldirectoriobuild/genpackageejecutamos:
make(paraconstruirtodaslospaquetesdetodaslasdistribucionesdefinidas),obien
makemidistro(paraconstruirlospaquetesslodeladistribucinmidistro)
24
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
binary-i386/midistro-componente1
|-- guadalinex-midistro-componente1-subcomponente1-conf_1.0-r1955_all.deb
|-- guadalinex-midistro-componente1-subcomponente1_1.0-r1955_all.deb
|-- guadalinex-midistro-componente1-subcomponente2-conf_1.0-r1955_all.deb
|-- guadalinex-midistro-componente1-subcomponente2_1.0-r1955_all.deb
`-- meta-guadalinex-midistro-componente1_1.0-r1955_all.deb
binary-i386/midistro-componente2
|-- guadalinex-midistro-componente2-subcomponente1-conf_1.0-r1955_all.deb
|-- guadalinex-midistro-componente2-subcomponente1_1.0-r1955_all.deb
|-- guadalinex-midistro-componente2-subcomponente2-conf_1.0-r1955_all.deb
|-- guadalinex-midistro-componente2-subcomponente2_1.0-r1955_all.deb
`-- meta-guadalinex-midistro-componente2_1.0-r1955_all.deb
7) Elltimopasoconsisteenlageneracindelmetapaquetepadredeladistribucin,queprovocarla
instalacindelosdems.Elprimerpasoconsisteencrearelscriptbuild/genpackage/buildmetamidistro
a partir de, por ejemplo, build/genpackage/buildmeta. Hay que editar el fichero una vez creado y
cambiarelcontenidoparaadaptarloalpaquetedelanuevadistribucin.Enparticular,hayquecambiar:
1. DEBIANSRC=metapkgmidistro
2. Todaslasocurrenciasdemetaguadalinexv3ylasreferenciasaellaporlascorrespondientesala
nuevadistribucin,demaneraquequedaracomometaguadalinexmidistro.
Alfinal,elcontenidodeesteficheroquedaracomosigue:
25
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
#!/bin/bash
. cdd.cfg
DEBIANSRC="meta-pkg-midistro"
if [ ! $# -gt 0 ];then
exit 1
fi
cd $DEBIANSRC
Section: misc
Priority: optional
Standards-Version: 3.6.0
Package: meta-guadalinex-midistro
cd ..
mv meta-guadalinex-midistro*.deb $CDDPACKAGESDIR
26
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Elsegundopasocosisteencreareldirectoriometapkgmidistroconeldirectoriodebiandentro.Enl,
hay que crear los ficheros changelog y rules a partir de los que hay en metapkg/debian. En
changelogdebehaberunanicaentradacorrespondientealaversininicialdelpaquetejuntoconel
nombre.Elficherorulesnohayquemodificarlo.
Porltimo,hayquemodificarelficherogenpackages/Makefileparaaadirunalneaparagenerarel
metapaquetepadre.Lapartecorrespondienteamidistroquedaraas:
Yasloquedavolveraejecutarelcomandoparalageneracin,esdecir,makemidistro,yseobtendrn
lospaquetesenbuild/packages/binaryi386.
CDDFLAVOUR:Nombredelproyecto(porejemplo:guadalinex)
CDDMAINTAINER:Mantenedordelospaquetes.
CDDSVN:URLdelrepositoriodesubversiondelproyecto.
27
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
1.2.5.GENERACINDESUPLEMENTOS.
LossuplementosconstituyenunmecanismoparaaadirsoftwareadicionalaGuadalinexv3deforma
sencillaparaelusuariofinal.Unsuplementoestformadoporunconjuntodepaquetes.AlinsertarelCDenel
sistema,stesereconocerautomticamente,senotificaralusuarioyhabilitarunmecanismosencilloparasu
instalacin.
Parafacilitarlatareadegeneracindesuplementosaaqullosqueestninteresados,sehadesarrollado
unaaplicacinquellevapornombreSuppletoryDiskGenerator(SDG)yquepermitellevaracaboestatareade
formasencilla.Estaaplicacinseencuentraenother_apps/suppletory_disk_generator.
ElprimerpasoparallevaracabolageneracindeunsuplementoconsisteengenerarelpaqueteDebian
parainstalarloenelsistema.Estosehaceejecutando,desdeeldirectoriorazdelaaplicacinenelrepositorio,el
comando:
$ fakeroot dpkg-buildpackage
Elresultadoserlageneracindelpaquete../guadalinexsuppletorydiskgenerator_0.11_i386.deb.
Elsiguientepasoserinstalarelpaqueteenelsistema:
Apartirdeah,yatenemoselsistemapreparadoparapodergenerarsuplementos.
PROCEDIMIENTODEGENERACIN.
1) Crearundirectoriodondesevaaconstruirelsuplemento,porejemplo:
$ mkdir ~/mi_suplemento
28
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
2) Creacindelesqueletodelsuplemento:
$ sdg_new
Segenerarunrboldedirectoriosconlaestructurasiguiente:
.
|-- applications.menu
|-- config
|-- debs
|-- icon.png
`-- master
`-- guadalinex-suplementos-apps
|-- gnome-app-install.glade
|-- icons
`-- template.html
3) Configuracindelsuplemento:
1. NAMExxxx:Aquseconfiguraelnombredelsuplemento.
2. SHORTNAMExxxx:SeutilizaparaconcatenarsealnombredelaISOgenerada.No
debetenermsdeochocaracteres.
3. DESCxxxx:Descripcindelsuplemento(unalnea).
4. METAPACKAGEnombredelmetapaquete:Para lainstalacindeunsuplementohay
29
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
quegenerarunmetapaquetequedependadetodoslospaquetesquedeseeninstalarse
apartirdelsuplemento.
5. PACKAGES:Listadepaquetes,separadosporespacios,queestarndisponiblespara
instalarsedeformaindependienteademsdelmetapaquetedelsuplemento.Sepuede
utilizarparacrearsubsuplementosoinclusollegaralaposibilidaddeinstalacinde
paquetesindependientes.
6. URIrepositorio:Medianteestavariablesepuedenespecificarrepositoriosexternosde
paquetesparadescargaraquellasdependenciasdelospaquetesdelsuplementoqueno
seencuentrenenelpropioCDROM.AlmenosdebeexistirunalneaURI(aunquesea
vaca).Aunquesepuedenespecificartantosrepositorioscomosedesee.
ElformatoeselestndardelosURIsdeDebian:
URIhttp://repositorio.guadalinex.org/guadalinexflamencomainuniversemultiverse
2. Directoriodebs:Enestedirectoriosedebencolocartodoslospaquetesqueformanparte
delsuplemento(incluyendoelmetapaquetepadre).Sialgnpaquetetieneunadependencia
quenoseincluyeenelCDROM,seintentardescargardelosrepositoriosespecificadosen
lasURISdurantelainstalacindelsuplemento.
3. Ficheroicon.png:IconoquesemostrarenelsistemacuandoseintroduzcaelCDROM
del suplemento generado. Hayque cuidareltamao de la imagen para evitar tamaos
demasiadograndes(tamaorecomendado:52x52pxeles).
4) Generacindelsuplemento:Unavezsehaconfiguradoelsuplementocomosedesea,elltimo
pasoconsisteengenerarlaimagenISOparagrabarelCDROM.Estosehaceatravsdela
ejecucindelcomando:
30
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
$ sdg_build
Estecomandohayqueejecutarlodesdeeldirectoriorazdelsuplemento.Traslaejecucin,se
obtendrunfichero.ISOconlaimagendelsuplementoeneldirectoriorazdelsuplemento.
31
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
2.ASPECTOSMODIFICABLESDELA
DISTRIBUCIN.
2.1.NOMBREDELADISTRIBUCIN.
A lo largo de la distribucin podemos encontrar en varios lugares el nombre de Guadalinex. A
continuacinsedescribeloslugaresconmayorrelevanciaquepuedensercambiados:
2.1.1./ETC/MOTD
motdsonsiglasdeMessageOfTheDay,elcontenidodeesteficheroesmostradotrashacerloginde
formacorrectaenelsistemaoperativoGuadalinex.EnGuadalinex,esteficherosemodificadesdeelpaquete
"guadalinexv3basebaseconf", en concreto, el fichero en el repositorio se encuentra en
"guadalinex2005/trunk/apps_sel_and_conf/cdd/conf/v3base/base/skel/etc/motd".
2.1.2./ETC/ISSUE
Esteficherocontieneeltexto,normalmenteusadocomoidentificadordelsistemaoperativo,queser
mostrado junto al login. Se encuentra en el mismo paquete que "/etc/motd", puede encontrarse en
"guadalinex2005/trunk/apps_sel_and_conf/cdd/conf/v3base/base/skel/etc/issue".
2.1.3./ETC/LSBRELEASE
Aligualquelosarchivosdeapartadosanteriores,compartenelmismodirectorio,portantoseencuentra
en "guadalinex2005/trunk/apps_sel_and_conf/cdd/conf/v3base/base/skel/etc/lsbrelease". Dicho fichero posee
informacinsobreladistribucin,enconcretosucontenidoeselsiguiente:
32
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
DISTRIB_ID=Guadalinex
DISTRIB_RELEASE=v3.0.1
DISTRIB_CODENAME=flamenco
DISTRIB_DESCRIPTION="Guadalinexv3"
EsimportantedestacarquesisequisieracambiarelcontenidodelavariableDISTRIB_IDimplicaratocar
unficheropertenecienteagnomesystemtoolsenelcuallistalasdistribucionesdeconfianza.Sinalterardicho
fichero, el escritorio estara "capado" para realizar ciertas funciones puesto que gnomesystemtools no se
relacionabienconlasdistribucionesnolistadasensubasededatosdeconfianza.Noslognomesystemtools
dependedeestainformacin,portantohabraquemodificarestosdatosconsumocuidado.
Para ello, habra que tocar el fichero "/usr/share/setuptoolbackends/scripts/platform.pl" que puede
encontrarse en los metapaquetes de guadalinex, concretamente en
"guadalinex2005/trunk/apps_sel_and_conf/cdd/conf/v3escritorio/gnome/usr/share/setuptool
backends/scripts/platform.pl"yaadirleelnombredeseado.
Breveextractodelactualplatform.pl:
...
"freebsd6"=>"FreeBSD6",
"gentoo"=>"GentooLinux",
"guadalinex2005"=>"Guadalinex",
"vlos1.2"=>"VidaLinuxOS1.2",
"archlinux0.7"=>"ArchLinux0.7",
...
33
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
2.2.IMAGEN.
Haydiferentespartesenunadistribucinquesepuedencambiarypersonalizar,peroloselementosque
siempre querremos tocar sern aquellos relacionados con la imagen de la distro. Es decir, todos aquellos
elementosgrficosqueledanunaidentidadaladistribucinyladiferencianvisualmentedeotra.Estoesloque
suelellamarseartwork.
Dichoartworkpuedetenerqueverconladistribucinunavezinstalada,comoconelementosgrficosdel
CD(tantolivecomonolive).Aqumostraremoslosmsimportantesydeformagenrica,peroenotrosapartados
profundizaremosenalgunodeellos.
2.2.1.ISOLINUX.
Syslinuxesungestordearranquepensadoparadispositivosextrables,preferentemente.PeroSyslinux
contieneprogramasyconfiguracionesespecficosparaalgunosdeestosdispositivos.Porejemplo,paralosCSS,
tieneelIsolinux,queeselquenosotrosusaremosporqueestespecialmentediseadoparaCDs.
NoentraremosenmuchosdetallesenlaformadetrabajardeSyslinuxoIsolinux,perosiexplicaremoslo
suficienteparaentendersusopcionesdeconfiguracinypodermodificarlo,tantoparaelsistemaLivecomopara
elNoLive.
Elarchivodeconfiguracinsellamaisolinux.cfgytieneunapintaparecidaaesta:
defaultlinux
DISPLAYisolinux.txt
TIMEOUT100
PROMPT1
F1isolinux.txt
F2ayudaf2.txt
F3ayudaf3.txt
F4ayudaf4.txt
F5ayudaf5.txt
F6ayudaf6.txt
F7ayudaf7.txt
34
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
F8ayudaf8.txt
F9ayudaf9.txt
KBDMAPes.kbd
FONTfuente.psf
labellinux
kernelvmlinuz
append ramdisk_size=100000 root=/dev/ram0 initrd=initramfs BOOT=live
debugsplashquiet
labeldb
kernelvmlinuz
append ramdisk_size=100000 root=/dev/ram0 initrd=initramfs BOOT=live
debugbreak
35
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
append:Conestaopcinseleindicanlosparmetrosqueselepasarnalkernelenelarranque.stos
quedarnguardadosluegoen/proc/cmdlineparaserusadosporelpropiokerneluotrosprogramas.
Ahoraalgunosparmetrosespecialesdelsyslinux/isolinux:
F#(F1,F2,F3...):Conestasmarcasespeciales,indicamosquearchivomostrarencasodequeelusuario
pulsedichasteclas(F1,F2,F3...).Sinodefinimosalgunatecla,nosemostrarnadaalserstapulsada.
Generalmenteseusanparamostrarayudas.
kdbmap:Leindicalalocalizacinynombredeelmapadetecladoquesedeseausar.Estoestilpara
poderusarcaracteresespecialesyparaquecoincidanlasteclasconnuestrosteclados,envezdelos
tecladoseningls.
font:Conestaopcinpodemosindicarlequeseuseunasdeterminadostiposdeletras,envezdelasque
seusanpordefecto.
Undetalleimportanteesquenodiferenciaentremaysculasyminsculas,asqueeslomismoponer
TIMEOUTotimeout.
Ahoraqueconocemosquesel Isolinux ycomo essuarchivo de configuracin,vamosaverqu
podemospersonalizarycmo.
TenemosvarioselementospersonalizablesenelIsolinux:
Opcionesdelisolinux.cfg:Estaparteessencilla,simplementetenemosqueverqueelementosdelos
quesedefinennosinteresadejarcomoestnyculesqueremospersonalizar.Cosastpicassonlaayuda
(losarchivosqueseconectanaF#)yeldelapantallaprincipal(isolinux.txt),endondeapareceelnombre,
versinyalgndetallemsdeladistribucin.
Imagen del arranque (/media/distro/master/isolinux/splash.rle): La imagen es una de las principales
cosasquequerremoscambiar,perostenoesunaimagennormal.Tieneunascaractersticasconcretas
quedebemoscumplir.Vamosaverlascaractersticasdeestetipodeimgenesydespuselprocesoa
seguirparaconseguirla.
Caractersticas:Imagenenformato lss16 deresolucin 640x400 en modoindexado a 16
colores.
Proceso:
36
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
1CrearunaimagenenelGimp(sepuedehacerenotros,peronosser
msfcilconste)detamao640x400.
Figura7:Crearimagennueva
37
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
2Editarlaimagen
Figura8:Copiandologotipoenlaimagenrecincreadadesdeotroarchivo.
(Estoesunejemplo)
38
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
3Aplanarlaimagen.
39
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
4Convertiramodoindexadocon14colores.Dejaremos2paraeltextoy
elisolinux.Asevitaremossorpresas.
40
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
5GuardarcomoarchivoPPM
41
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
6Convertirenformato.rle.Conelprogramappmtolss16,contenidoenel
paquetesyslinux,pasaremosnuestroarchivodeunformatoaotro:
$ppmtolss16'#d0d0d0=7'<splash.ppm>splash.rle
Conel#d0d0d0=7estamosdefiniendoqueelcolornmero7delapaleta
decolores,queeselqueusael isolinux paraeltexto,sefijealcolor,
definidoenhexadecimal,#d0d0d0.
7Yatenemosnuestroarchivosplash.rle,slonosquedaguardarloenlos
directoriosadecuadostantoparaelCDlive,comoelnolive.
Parahacerpruebasrpidassobreloscambioshechosenlaimagenoenlosarchivosdeayudadel
isolinux,podemosgenerarunaisopequeayprobarlaconelsoftwaredeemulacinqemu(instalablefcilmente
con:sudoaptgetinstallqemu).Conelsiguientescriptsepuedenhacerpruebasmuyrpidayfcilmente:
#!/bin/sh
LIVE_DIR="/usr/share/genlive/isolinux/"
NO_LIVE_DIR="$CDIMAGE_ROOT/uda/isolinux/"
ISOLINUX_DIR="$LIVE_DIR"
mkdir/tmp/master
cpa$ISOLINUX_DIR/{isolinux.*,f*,ayuda*}/tmp/master/
cpa/usr/lib/syslinux/isolinux.bin/tmp/master/
mkisofslrJV"imagetest"hiderrmovedvbisolinux.binc
boot.cat noemulboot bootloadsize 4 bootinfotable o
/tmp/image_test.iso/tmp/master/
qemum32cdrom/tmp/image_test.iso
42
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
SlohayquetenerencuentalavariableISOLINUX_DIR,cuyovalorser$LIVE_DIRo$NO_LIVE_DIR
enfuncindequCDqueramosprobar.Tambinhabrqueasegurarsedesustituirlosarchivosoriginalesporlos
quehemosmodificadonosotros(f#,isolinux.txt,ayudaf#.txt,splash.rle,etc).
2.2.2.USPLASH.
Unavezsehaseleccionadola"Guadalinex",enel"grub",paraarrancar,losiguientequeveremosy
podremospersonalizarserel"usplash".
El"usplash"eselprogramaquemuestraelarranqueenmodogrfico.
Laimagenausartiene unascaractersticassimilaresalasdellaimagenparaelisolinux: 640x480
indexadaa16colores.
2.2.3.GRUB.
El"Grub"eselgestordearranqueusadopor"Guadalinex"yloprimeroqueaparece(traslaBIOS)al
arrancarunequipoinstaladoconstaounaderivada.
Porestaraznesotroelementovisiblequequerremospersonalizar.
Lapersonalizacinhechapara"Guadalinex"consisteencambiarelttulodelaentradaparaelnuevo
sistemainstaladoyaquellosqueseencontraran.Apartedeponerleunaimagendefondo.
Amboscambiossepuedenverenelarchivodeconfiguracindel"grub":"/boot/grub/menu.lst".
Ttulo:
titleGuadalinex,kernel2.6.129386
Imagen:
Enloscaptulosdedicadosalsistema"live"yal"nolive"seexplicardndetocarparainstalarymantener
estoscambios.
43
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
2.3.ESCRITORIOGNOME.
Lamayorpartedelasdistribuciones,hoyenda,usanalgnescritorio,parahacerlelavidamasfcilal
usuario.
Pordiversasrazones,paraGuadalinex,seeligielescritorioGnome.Poresodedicaremossteapartado
adichoescritorio.
Paraprofundizarmsenestetemarecomendamosmirarladocumentacinoficial1(eningls),yaque
aquslosedarnunaspinceladasporloselementosmsfrecuentementecambiadosparaunadistribucincomo
Guadalinex.Hayquetenerencuentaqueesaguaesparalaversinsiguientealaqueestinstaladaen
GuadalinexV3,porloquepuedequealgunascosasnoestntodavaoperativasennuestradistro.
Tambinpuedeserdemuchautilidadinformacinextraunartculo2sobreelsistemadeconfiguraciones
deGnome,quecomplementarlaguaanteriorylainformacinaqudada.
Veamoscmopersonalizarlaspartesmsrelevantes.
2.3.1.SELECTORDESESIN(GDM)
Aunqueel"GDM"noesestrictamentepartedelescritorio,siespartedeGnomeyespersonalizable.
ComocasitodaslaspartesestticasdeGnome,elGDMestbasadoenunsistemadetemas.Lonicoque
necesitamosparacambiarlelaaparienciaalGDM,escrearleuntemayconfigurrselo.
NovamosaexplicarcomocrearomodificaruntemaparaelGDMporquesesaledelalcancedeesta
documentacin.
Elnuevotemaseguardaraen:
/usr/share/gdm/themes/[TEMA]
2.3.2.FONDODEESCRITORIO.
Tantoelfondodeescritorio,comoloscoloresprimarioysecundariodelfondoseindicanenGconf.
Gconfesel"registro"deconfiguracionesdeGnome.
1 http://www.gnome.org/learn/adminguide/2.14/
2 http://www.gnome.org/projects/gconf/
44
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Enesteregistro seguardaquearchivosecogercomoimagendefondodelescritorio(entreotras
muchascosas).Ylohaceconcretamenteenlaclave/desktop/gnome/background/picture_filename,quepara
Guadalinex V3 tiene el valor /usr/share/backgrounds/guadalinex_v3_bg.jpg. Podemos ver los valores
relacionadosconelfondoconelsiguientecomando:
$gconftool2R/desktop/gnome/background
color_shading_type=solid
secondary_color=#2c160a
primary_color=#2c160a
picture_filename=/usr/share/backgrounds/guadalinex_v3_bg.jpg
picture_options=stretched
picture_opacity=100
draw_background=true
Dichosvalorespodemoscambiarlosparatodoelsistemadelasiguienteforma:
2.3.3.IMAGEN"SPLASH"DELINICIODESESIN
Laimagen"splash"eslaqueapareceeneliniciodelasesindeGnome,mientrassevancargandolos
diferenteselementosdelescritorio.
Elpredeterminadoseencuentraaqu:
/usr/share/pixmaps/splash/gnomesplash.png
45
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Cambiardicho"splash"puedehacersecambiandodirectamenteestearchivo,ocambiandodichovaloren
el"gconf".
2.3.4.MENS.
Podemos encontrar informacin ms completa sobre en el proyecto ''Freedesktop1, as que aqu
nombraremoslosarchivosydirectoriosmsimportantes:
Archivoendondesedefineelmendeaplicaciones:
/etc/xdg/menus/applications.menu
Ejemplodeentradaparaunsubmen:
<!Education>
<Menu>
<Name>Education</Name>
<Directory>Education.directory</Directory>
<Include>
<And>
<Category>Education</Category>
</And>
</Include>
</Menu><!EndEducation>
1 http://standards.freedesktop.org/menuspec/latest/
46
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
/usr/share/desktopdirectories/
Ejemplodeun.directory:
education.directory
[DesktopEntry]
Encoding=UTF8
Name=Education
Name[es]=Educacin
Icon=package_edutaiment
Type=Directory
Los.directorysonlosqueconfiguranlaapariencia(icono,nombrequeaparece,traducciones,etc)y
configuracindeunmenosubmen,peroparalasentradasdelasaplicacionesseusael.desktop,queesel
mismoquesirveparaponerlanzadoresdeaplicacionesenelescritoriooelpanel.
Estosarchivospodremosencontrarloseneldirectorio/usr/share/applications/ypodremosencontrar
masdocumentacinsobresuformatoyusoenlaespecificacinoficial1.
1http://standards.freedesktop.org/desktopentryspec/latest/
47
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Peromostraremosunejemplo,detodasformas:
tomboy.dektop
[DesktopEntry]
Encoding=UTF8
Name=Tomboy
Name[es]=Notasdeescritorio(Tomboy)
Comment[es]=Escribanotasenelescritorio
Exec=tomboy
Icon=tomboy
Terminal=false
StartupNotify=true
Type=Application
Categories=Application;Utility;
2.3.5.PANELES
ParaconfigurarlospanelesdeGnomesegnnuestrasnecesidades,debemosconfigurarlosparaun
usuariodepruebay capturar,dichaconfiguracin.Estocogertantolos applets,comosuposicin,eltamao,
colorydemspropiedadesdelpanel.
Unaveztenemosconfiguradoelpanelanuestrogusto,solotenemosquevolcarlainformacinaun
archivo:
$gconftool2dump/apps/panel>/usr/share/gnome/panel.entries
Pararestaurarloenlainstalacindelcorrespondientemetapaquetedeconfiguracin:
48
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
2.3.6.TEMAS
TambinpuedencambiarselostemasmediantelaconfiguracindeGnome:
Esos,debemosasegurarnosdequeexistaeltemaseleccionadoen:
/usr/share/icons/[TEMA]
/usr/share/themes/[TEMA]
Tema de iconos y tema de Gtk respectivamente. El del gestor de ventanas ("Metacity") se debera
encontraren:
/usr/share/themes/[TEMA]/metacity1/metacitytheme1.xml
AscomosucedaconeltemaparaelGDM,novamosaexplicarcmosecrearaomodificaranestos
temasperopuedeconsultarseaqu:
http://live.gnome.org/GnomeArt/Tutorials/GtkThemes
http://live.gnome.org/GnomeArt/Tutorials/IconThemes
http://developer.gnome.org/doc/tutorials/metacity/metacitythemes.html
2.3.7.MOZILLAFIREFOX
Aunqueelnavegador"Firefox"noespartedeGnome,sespartedelescritorioyunelementobsico
dentrodel.Loselementosmscomunesquesepuedenpersonalizarsonlossiguientes:
/etc/mozillafirefox/pref/firefox.js
/etc/mozillafirefox/profile
49
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
2.4.AADIRYQUITARAPLICACIONES.
Alahoradeaadiroquitaraplicacionesdeunadistribucin,esimportantetenerclaroquaplicaciones
se desea (des)instalar en el sistema y qu repercusiones puede tener en relacin con otras aplicaciones
instaladas.EnunsistemaDebian/Ubuntu(yotrasdistribuciones),lainstalacinydesinstalacindeaplicacionesse
llevaacaboatravsdepaquetes.Esimportanteconoceradecuadamentecmofuncionaelsistemadepaquete
deDebian(DPKG)paragestionaradecuadamentelasaplicacionesquevanaformarpartedelsistemafinal.En
particular,esimportantetenerencuentalasdependenciasyconflictosentreaplicaciones,demaneraquela
(des)instalacindeunaaplicacindeterminadanoafectealbuenfuncionamientodeladistribucinfinal.
Sevanasealaracontinuacinalgunaspautasquedebenseguirsealahoradegestionarpaquetespara
conformarladistribucinfinalyminimizarriesgos:
Sedebeutilizarunadistribucinbaselomsestableposible,comoeselcasodeDebianSargeoUbuntu
Breezy. Utilizar distribuciones inestables (Debian Sid o, en el momento de escribir este documento
(10/05/06),UbuntuDapper)puedeprovocarerrores,problemaseimprevistosvariosnodeseados.
A la hora de seleccionar una aplicacin para su inclusin en la distribucin, hay que controlar en todo
momentoquelasdependenciasdelamismatambinseinstalan.Adems,hayqueconfiarenelsistemade
dependenciasdelospaquetesdeDebian/Ubuntudemaneraquenospreocupemosdequeseinstaleel
paquetepadre(todassusdependenciasseinstalarnautomticamentegraciasaapt).Esdecir,cuandose
deseadisponerdeunconjuntoconcretodeaplicaciones,hayqueseleccionarelmenorconjuntodepaquetes
quegaranticeeldisponerdelasaplicacionesdeseadas(ynopreocuparseporinstalarmanualmentelas
libreras (u otros paquetes) de los que dependen; esto lo gestionar automticamente el sistema de
dependenciasdeDebian).
Cuandosedeseaeliminarunaaplicacindeladistribucinhayqueasegurarse,porunaparte,dequeno
provocaladesinstalacindeotrospaquetesquedependendeellayquepuedanserimportantesparaelresto
50
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
delsistema.Porotraparte,esconvenienteasegurarsedequenoquedanpaqueteshurfanos 1enelsistema
trasladesinstalacindeunaaplicacin.Paraello,esconvenienteutilizardeborphan,unaherramientaque
permitedetectarpaqueteshurfanosenelsistema.
2.5.CONFIGURACINDEAPLICACIONES.
Unavezsehaseleccionadounconjuntoconcretodeaplicacionesparaelsistemafinal,elsiguientepaso
consisteenconstatarqueelfuncionamientoylaconfiguracindelasmismassonlosadecuados.
Paraello,lomsrecomendableesdisponerdeunsistemabasedepruebasy,sobrel,irinstalandouna
aunalasaplicacionesdeseadas.Concadaunadeellas,convienellevaracabounprocesodevalidaciny
pruebasparagarantizarquelaaplicacinfuncionacomoseespera.Estodependerdelaaplicacinconcreta.Por
ejemplo,sisetratadeunaaplicacindeescritorio(pongamosunnavegadorweb),hayquegarantizarquela
entradacorrespondientedelmendeaplicacionessecreacorrectamente,quelaaplicacinselanzaenelidioma
adecuado,queeldirectorioparaguardarlasdescargaseselquesedesea,quelapginaconfiguradacomoinicio
escorrecta,etc.Sinoeselcaso,habrqueanalizarlosficherosdeconfiguracindequeconstalaaplicacinpara
saberquycmollevaracabolapersonalizacinconrespectodelaconfiguracinpordefectodelamisma.
Unavezsehaconstatadoquelaaplicacinfuncionadeacuerdoanuestrasnecesidadeshayqueacotar
losficherosdeconfiguracinquesehanmodificado.Estoserimprescindibleparacontinuarconelprocesode
generacindeladistribucinfinal.Cmoprocederapartirdeestemomentodependerdelsistemadegeneracin
queseestutilizando.EnelcasodeGuadalinexv3,sedescribeenelapartadoPersonalizacindeladistribucin.
1 Unpaquetehurfanoesunpaquetequeseinstalenelsistemaporqueotropaquetedependadelyquesigueexistiendoen
elsistemacuandosedesinstalasupaquetepadre.steeselcaso,normalmente,delibrerasnecesariasparaqueuna
aplicacinfuncione.Cuandoestaaplicacinsedesinstalayningnotropaquetedependedelalibreraanteriorsedicequese
haquedadohurfanas.
51
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
3.SISTEMANOLIVE
3.1.OBTENERTODOLONECESARIO
3.1.1.DOSSABORES
Elsistemadegeneracinsepuedeobtenerdedosformasdistintas:
Un.tardeunsistemayaconfiguradoconideadetrabajarconelenchroot.
Montandoelsistemadegeneracinpartiendodelcdigofuenteexistenteenelsubversion
svncohttp://ws314.juntadeandalucia.es/guadalinex2005/trunk/generation_system/no_live/cdimage/
3.1.2.CMOSEHAGENERADOEL.TAR?
Acontinuacinselistanlospasosseguidosparaobtener,partiendodelcontenidodelrepositoriode
guadalinex,unsistemadegeneracinlistoparausar.
Generaundirectorioguadalinexv3/conunsistemabase:
debootsrapbreezyguadalinexv3/http://es.archive.ubuntu.com/ubuntu
Hacemoschroot:
sudochrootguadalinexv3
52
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Ponemosapuntoelsistemamedianteconfiguracionesvarias:
echo"es_ES.UTF8UTF8">/etc/locale.gen
localegen
echo"127.0.0.1localhost$HOSTNAME">/etc/hosts
Instalacindelasdependencias:
aptgetinstallsubversiondebootstrapdevscriptsbuildessentialpythonbcpythonaptmkisofsg++3.4fakeroot
Aadimosunusuarioyledamospermisos:
adduserguada
echo"guadaALL=(ALL)ALL">>/etc/sudoers
suguada
Realizamosuncheckoutdelaramatrunkdelsubversiondeguadalinex
svncohttp://ws314.juntadeandalucia.es/guadalinex2005/trunk
Nosdesplazamosageneration_system/no_live/cdimage/
53
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Rellenamoscdimage/ftp/con:
dists/
indices/
pool/
ElcontenidodedichosdirectoriospuedeobtenersedesdeunCD.
Seconfiguranlasrutasabsolutasen:
cdimage/uda/conf/di_flamenco.conf
cdimage/uda/conf/flamenco.conf
Generacindeunnuevopaqueteubuntukeyring.
EsnecesariotenerunclaveGPGparafirmarelRelease.gpgdelrepositorioqueseincluyeenelCD.Por
ello,sehageneradounpardeclavespblica/privadaconnombre"Guadalinexderivada"yfingerprint:CADFFC1A
A esta clave generada se le ha importado las claves contenidas en ubuntukeyring (gpg import
fichero.gpg)paraasobtenerunanillodeconfianzamsamplio,esdecir,conlasclavesimportadas,tenemos
confianzasobreelrepositoriodeUbuntuysobreelrepositoriodelaJuntadeAndaluca.
Sustituimoslaclavecontenidaenelpaqueteubuntukeyringporlaclavepblicagenerada:
cp.gpg/pubring.gpgubuntukeyring2005.01.12.1/keyrings/ubuntuarchivekeyring.gpg
54
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Compilamoselpaquete:
cd
cdubuntukeyring2005.01.12.1
debuilducus
Lospaquetesobtenidos.udeby.debsustituyenaloscontenidosencdimage/ftp/pool/main/u/ubuntu
keyring/.Trasincluirlosnuevospaquetes,esnecesariocambiar:
Elfingerprintqueestconfiguradoencdimage/etc/config
LavariableSIGNING_KEYIDcontenidaencdimage/debiancd/CONF.sh
Acontinuacin,copiamoselnuevopardeclavesaldirectoriocdimage/secret/talque:
secret/
`dotgnupg
|pubring.gpg
`secring.gpg
55
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
3.2.ARQUITECTURADELSISTEMADEGENERACIN
ElsistemadegeneracinmsactualseencuentrabajoelrepositoriodeGuadalinexeneldirectorio
trunk/generation_system/no_live/cdimage,contenidosbajodichodirectorionosencontramoscon:
bin/(Ejecutables)
debiancd/(Contieneel~80%delalgicadetodoelsistemadegeneracin)
etc/(Configuracionesvarias)
ftp/(Contenidosdepaquetes,documentacineimagenes)
germinate/(Aplicacinencargadadegenerarlistas)
log/(Registrodeinformacin)
scratch/(Eldirectoriotemporal)
secret/(ContienelaclaveGPG)
uda/(UDA,UnindeDistribucionesAutnomas)
windows/(Datosdewindows)
56
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Acontinuacin,sedescribirnlosdirectorioslistadosanteriormente.
3.2.1.BIN/
Directorioquecontienescriptsvarios,cabedestacarlaexistenciadeunejecutablellamadogenerate_no
live.sh,dichoejecutableeselpadredetodoslosdemsscriptstiles.
Muchosdelosscriptscontenidosenestedirectorioyanosonusados,ntesequeGuadalinexv3est
basadaenUbuntuBreezy,cuandocomenzeldesarrollodeGuadalinex,Breezyannoeraestableyportanto
eranecesariomantenersincronizadoselconstanteflujodepaquetesquehabaenelrepositoriodepobrezas.Por
estemotivohayvariosejecutablesconfinesdesincronizacindepaquetesqueyanosonusados.
57
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
bin/
|README
|compileconf
|difftasks
|findmirror
|functions.sh
|generate_nolive.sh<Script"padre"
|germinatetotasks
|listseeds
|nextbuilddate
|notused(Scriptsnousados)
||anonftpsync
||buildimageset
||...
|rungerminate
|updatedebs
|updatedist
|updateindices
|updateinstalleri386
|updatelocalindices
|updatepool
|updatetasks
|updateudebs
`upgrader
58
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
GENERATE_NOLIVE.SH
Eselencargadodegestionartodoelproceso,obtienelaslistasnecesarias,lasconvierteentareas,
actualizalosdatosdelrepositoriolocalydapasoadebiancd.
UPDATEUDEBS
DentrodeesteficherohayunavariableMIRROR.Sidisponedeunmirrorlocal,cambieestavariable.Al
ejecutarestescript,sedescargarantodoslos.udebnecesariosyseactualizarnlosyaexistentes.Todoslos
.udebseirncolocandoenftp/pool/
UPDATEDEBS
DentrodeesteficherohayunavariableMIRROR.Sidisponedeunmirrorlocal,cambieestavariable.
Al ejecutar este script, se descargaran todos los .deb necesarios excluyendo los listados en
uda/lists/exclude
Todoslos.debseirncolocandoenftp/pool/
UPDATEINSTALLERI386
Sincronizaporrsynceldirectorioftp/dists/breezy/main/installeri386
UPDATEINDICES
Sincronizaporrsynceldirectorioftp/indices
UPDATEPOOL
Enmascaraatodoslosscriptsanteriores:
updatepoolall(Actualizatodo)
updatepooludebsdebs(nicamenteactualizalospaquetes)
updatepoolindices(nicamenteactualizaindices)
59
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
3.2.2.DEBIANCD/
ConjuntodeherramientasparagenerarCDsinstalablesbasadosendebianinstaller.
3.2.3.ETC/
Bajoestedirectorioseencuentraelficheroconfig,enelcualsedefinenvariablesvarias:nombredel
proyecto,keyid,...
3.2.4.FTP/
Enestedirectorioesdondeseencuentranlospaquetes,ladocumentacinylasimgenesaincluir.Hade
serrellenadocon:
dists/
pool/
indices/
3.2.5.GERMINATE/
Consisteenunprogramaenpythonqueobtienelistasdepaquetes,lalgicaescomplejaperoesmuytil
paragenerarlaslistasdeformajerrquica.Alpasarlevariospaquetes,germinategeneraunaseriedelistasen
funcindedichospaquetesqueserntilesparagenerartareasposteriormente.Aunquepodraprescindirdel,
esrecomendableusarloporqueayudaenlagestindedependencias.
3.2.6.LOG/
Enestedirectorioseescribeelregistrodelaltimageneracin.
3.2.7.SCRATCH/
Estedirectorioesdecontenidovariable:
60
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
scratch/
guadalinex/
apt/
debiancd/
i386/
____.list
MD5SUMS
____.iso
debootstrap/
germinate/
tasks/
tmp/
3.2.8.SECRET/
EstedirectorioestcontenidalaclaveGPGusadaparafirmarelReleasedelrepositoriodelcd.
secret/
`dotgnupg
|pubring.gpg
`secring.gpg
3.2.9.UDA/
Bajoestedirectorio,nosencontramosconcuatrosubdirectoriosqueintentanfacilitaralgunastareasala
61
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
horaderealizarcambios.
conf/
isolinux/
lists/
pkgs/
CONF/
Enestedirectoriosepodrnencontrardiversosficheros.confusadosporbin/updatedistparagenerar
ficherosvarios(Release,Release.gpg,Packages.gz)queestarncontenidosenftp/dists/
ISOLINUX/
Todoslosarchivoscontenidosenestedirectoriosustituirnalosgeneradospordebiancd.
LISTS/
Enestedirectoriohaytreslistasbiendiferenciadas:
exclude
Todopaqueteenestalistanoseincluirnenelcd.NtesequeelsistemaestbasadoenlosCDsde
breezy,estalistaserunlistadodeaplicacionesqueseincluyenenelcddebreezyperoquenose
incluirnenelcddeunadistribucinuda.
include_breezy
Estlistaserincluidaenelcd,estalistaestarcontenidaportodopaquetequeseencuentreenel
repositoriodebreezyperoquenoseencuentrenenelcddebreezypordefecto.
include_uda
Tambinserincluidaenelcdestalistaqueestcontenidaportodopaquetequenoseencuentreen
elrepositoriodebreezy.
62
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
PKGS/
Estedirectorioesdevitalimportancia.Alincluirun.debenestedirectorio,bin/upgrader(lanzadodesde
generate_nolive.sh)locopiaralpool/sinoexisteya,oenelcasodequeexistierasecopiarasifuerauna
versinmsactualquitandodelpool/laversinmsantigua.Slosecopiarsielpaqueteesmayorestrictoque
laversinexistenteenelpool.
3.2.10.WINDOWS/
Bajoestedirectorioestcontenidounaseriededatosyunscriptquelanzaunnavegadorconayuda
sobreguadalinexenwindows.
3.3.GENERACIN
Primero,enunchroot,colocamosalusuariocorrecto,enellugarindicado:
sudochrootguadalinexv3
suguada
cd~/no_live/cdimage/
Podrahacerseconelusuarioroot,peropormotivosdeseguridadespreferibletrabajarconunusuario
sinpermisosdeadministracin.
Posteriormente,desdeeldirectorio.../cdimage/realizamoslacargadelarchivo"poner_a_punto".
.poner_a_punto
Ejecutamoselcomandonirvana:
generate_nolive.sh
63
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Recogemoslaisoqueseencuentraen/scratch/guadalinex/debiancd/i386
Quesloquehaocurrido?generate_nolive.shhallamadoaunaseriedeejecutablesqueponentodo
apuntoparaquedebiancdgenereunaisocorrecta.
3.4.ELINSTALADOR
LainstalacindeGuadalinexsecomponededosfasesbiendiferenciadas:
Primerafase:Debianinstaller
Segundafase:baseconfig
El cdigo fuente ms actualde los paquetes del instalador de Guadalinex puede encontrarse en el
subversionbajoeldirectorio:/guadalinex2005/trunk/no_live_installer/default/src.
3.4.1.DEBIANINSTALLER
La primera fase de la instalacin es gobernada por debian installer con algunas modificaciones
realizadasporUbuntualasqueasuvez,selehanrealizadoalgunasmodificacionesparaGuadalinex.Escomn
verescritodebianinstallercomodiytambinescomnverreferenciasaubuntuinstaller(ui).
64
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Laprincipalvirtuddedebianinstalleressugranmodularidad.Todoendebianinstalleresunudeb
(oficialmentesepronunciamicrodeb).Prcticamente,esigualqueunpaquetedebianestndarperoselepermite
infringirlapolticadedebianenciertospuntosparaqueelpaqueteseamsligero.Apartirdeahoracuando
hablemosdeunmduloendebianinstaller,estaremoshablandodeunudebyviceversa.
Acontinuacin,sedarnunasnocionesbsicassobrelosprincipalesrolesdentrodelinstalador:
debconf
mainmenu
anna
discover
DEBCONF
Todaconfiguracindeunpaquetesehaceatravsdedebconf,estacapaesdevitalimportancia.
Cadaconfiguracintiene:
Unaopcinpordefectoconfigurable.
Una prioridad, dicha prioridad puede tener valor: low, medium,high y critical.Silaprioridaddel
sistema es critical, slo se mostrarn las preguntas de debconf con prioridad de critical, si la
prioridaddelsistemaeshigh,semostrarnlaspreguntasdedebconfhighycritical...Esdecir,segn
la prioridad del sistema, se mostrarn las preguntas con dicha prioridad y todas las de mayor
relevancia.ElinstaladordeGuadalinextienelaprioridaddelsistemaacritical.
65
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
dicdromchecker/startbooleantrue
Elficherouda.seedeselpreseedquesecargapordefecto,algunosejemplos:
baseconfigtzconfig/choose_country_zone_multiplestringEurope/Madrid(mainland)
baseconfigbaseconfig/installlanguagesupportbooleantrue
xserverxorgxserverxorg/config/inputdevice/keyboard/layoutstringes
Laprimeralineaseleccionalazonahoraria,lasegundahacequeseinstaleelsoportedelenguajesyla
terceralineaseleccionapordefectoeltecladoespaol.
MAINMENU
Laimportanciadeesteelementoenlaprimerafasedelainstalacinresideenqueeselgestordetodo
mdulocargadoendebianinstaller.Cadamdulotieneunadependencia,porejemplo,nopodemosconfigurar
grubsiannosehadesempaquetadoelsistemabase.mainmenuseencargadegestionarquemduloes
accesibleencadamomentosegnsusdependenciasydapasoalsiguientemdulosegnsuprioridad.
66
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
ANNA
Susignificadoes:Anna'sNotNearlyApt,eselAPT(AdvancedPackagementTool)dedebianinstaller
enfocadoasermuchomsligeroyconnicamentelasfuncionesnecesariasparaelinstalador.
DISCOVER
Por ltimo, mencionar una pieza clave de debian installer que se encarga de la autodeteccin de
hardware,discoverreconoceyproponeatravsdedebconfconfiguracionessegnelhardwaredetectado.
3.4.2.BASECONFIG
Enelprimerarranquetraslaprimerafasedelainstalacin,baseconfigtomarelcontroldelsistemay
harlasconfiguracionesfinales.
El fichero pkgsel contenido en guadalinex2005/trunk/no_live_installer/default/src/baseconfig/base
config2.67uda/lib/menu/dirigelamayorpartedelasegundafasedelainstalacin,dentrodeesteejecutable,se
llamaasuvezavarioscomponentes:
udapostinstall
Seencargadademostrarlabarradeprogresodelainstalacin.
udapostconfig
Seencargadepreguntardatosalusuario.
udapostconfigbackend
Seencargadedardealtaelusuario,configurarlared,ponerlosrepositorios,...
udagoodbye
Muestraunmensajededespedida.
67
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
3.4.3.FASESDELAINSTALACIN
bienvenida
particionado
instalacindelospaquetesmsbsicos
copiadepaquetesaldisco
instalacindelcargadordearranque
instalacindelrestodepaquetes
Altadeusuario
68
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
3.5.BRANDING
3.5.1.CAMBIARMENSAJEDEBIENVENIDA:UDAFIRSTMESSAGE
udafirstmessageesunmdulodesarrolladoporGuadalinexparamostrarunmensajealiniciodela
instalacin. El cdigo fuente de este udeb se puede encontrar en
guadalinex2005/trunk/no_live_installer/default/src/udafirstmessage/udafirstmessage0.05/ Una vez en el
directorioindicadodebemoseditareltemplatequeseencuentraeneldirectoriodebian/conelnombreuda
firstmessage.templates.
Trasrealizarlasmodificacionespertinentesrecompilamoselpaquete:
debuilducus
Acontinuacinhemosdeinsertaresteudebdentrodelinitrdporquealserunodelosprimerosudebs
quesecarganenelsistema,esnecesarioqueseencuentreenestecomponente.Por tantoprocedemosa
generarunnuevoinitrdconesteudeb,paraellousaremosunpaquetellamadodebianinstaller.
69
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Nosdesplazamosaldirectorioguadalinex2005/trunk/generation_system/no_live/debianinstaller/debian
installer20050317ubuntu19/buildyvemoselcontenidodedirectoriolocaludebs/
$lslocaludebs/
mainmenu_1.07ubuntu1_i386.udeb
udafirstmessage_0.05_i386.udeb
udaprepartmanmessage_0.01_i386.udeb
Como podemos observar, hay contenidos tres paquetes: mainmenu, udafirstmessage y uda
prepartmanmessage,dichosudebshansidogeneradosporyparaGuadalinexparaaadirmensajesextras
duranteelprocesodeinstalacin.
Acontinuacindebemoscopiarel.udebquehabamosgeneradoeneldirectoriolocaludebs/ygenerar
denuevoisolinux,paraelloejecutaremoseneldirectoriobuild/
Cambiamosaldirectoriobuild/yejecutamos:
dpkgscanpackages./dev/null>Packages
Ashemosregeneradolaslistasdepaqueteslocales,consecuentemente,elsistemasabrquepaquetes
haynuevosomodificados.Trasello,ejecutamos:
fakerootmakebuild_cdrom_isolinux
Alfinalizar,obtendremosundirectoriodest/queasuvez,contieneundirectoriocdrom/esteltimoes
elquenecesitamoscambiar.Paraello,realizamoslosiguiente:
70
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
rmrf../../../cdimage/ftp/dists/breezy/main/installeri386/current/images/cdrom/
cprdest/cdrom../../../cdimage/ftp/dists/breezy/main/installeri386/current/images/
Llegadosaestepunto,yanoesnecesariotocarnadams,debiancdseencargardeusarlosdatos
quelehemosdejadoparagenerarlasimgenesdearranquecorrectamente.
3.5.2.CAMBIARIMGENESDELASEGUNDAFASEDELA
INSTALACIN:UDAPOSTINSTALL
Las imgenes que se muestran durante la segunda fase de la instalacin estn contenidas en
guadalinex2005/trunk/no_live_installer/default/src/udapostinstall/udapostinstall0.21/src/branding/Guadalinex/es,
trasmodificarlas,habraqueregenerarelpaqueteeincluirloenelrepositorio,paraello,unavezeneldirectorio
udapostinstall0.21/recompilamoslasfuentes:
debuilducus
3.5.3.CAMBIARENTRADADEGRUB
Siobservamoslospaquetescontenidosbajo/guadalinex2005/trunk/no_live_installer/default/srcveremos
quehaydospaquetesrelacionadosconelcargadordearranque:grubygrubinstaller.Ladiferenciaesquegrub
installeresunudebqueenlaprimerafasedelainstalacinseencargadepreparareldiscoparaarrancary,por
tanto,nospermiteaccederalasegundafasemientrasquegrub,eselpaquete.debqueseinstalaenlasegunda
fasedelainstalacin.
Esdecir,siqueremoscambiarlaentradadegrubparaquenoseveaenelprimerarranquelaentradaoriginalde
Guadalinexesnecesariocambiargrubinstaller.Desdeeldirectoriosrc/ejecutamoselcomando:
71
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
GUADA_FICHEROS=$(fgreprGuadalinexgrub*|grepv.svn|awk'BEGIN{FS=
":"}{print$1}')
NosdevuelvetodoslosficherosquecontenganGuadalinex.Podemoshacerlasustitucindelasiguiente
forma:
sedi"s/Guadalinex/Guadalinexparapeluqueros/g"$GUADA_FICHEROS
Tras ello, nos queda regenerar cada paquete y sustituir a los actuales, se encuentran en
cdimage/ftp/pool/main/g/grubycdimage/ftp/pool/main/g/grubinstaller.
3.5.4.APARICIONESDEGUADALINEXENDEBIANINSTALLER
Estamosanteuncasoidnticoalanteriorapartado,nosdesplazamosalcdigofuentedemainmenu:
guadalinex2005/trunk/no_live_installer/default/src/mainmenu/mainmenu1.07ubuntu1yejecutamos:
sedi"s/Guadalinex/Guadalinexparaella/g"$(fgreprGuadalinex*|grepv.svn)
Trasello,recompilamoseludebyhabraqueincluirloenisolinux,portantohabraqueseguirlospasos
descritos en "Cambiar mensaje de bienvenida: udafirstmessage". Tambin apariciones de Guadalinex en
partman,elprocedimientoseraequivalente.
3.6.EJEMPLOSPRCTICOS
3.6.1.INCLUIRUNNUEVOPAQUETE
Sepuedendardoscasos:
1. Cambiarunpaquetecuyonombreyversinesigualquelaquehayenelpool/
Enestecaso,lomsfcileshacerloamano,paraellosimplementecolocaremoselpaqueteensu
72
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
directoriocorrespondientebajopool/main/{carcter}opool/main/lib{carcter},siendocarcterla
inicialcorrespondientedelpaquetefuente.Ntesequelaestructuracorrectadistinguelosdirectorios
dondeestncontenidaslaslibreras(lib{carcter})conelrestodepaquetes({carcter}).Eldirectorio
donde debe estar contenido un paquete debe ser: ftp/main/{carcter}|lib{carcter}/{nombre del
paquetefuente}/.
Porejemplo,elpaquetebinariomounttienecomopaquetefuenteutillinux,portantodebera
encontrarseenftp/main/u/utillinux.
2. Incluirunnuevopaqueteoincluirunaversinmsnuevadelaquehayactualmente.Paraello,se
puedehaceramanoodeunaformaunpocomscmodaqueescolocarelpaquetedeseadoen
guadalinex2005/trunk/generation_system/no_live/cdimage/uda/pkgs,yaquetodopaquetecontenido
bajoesedirectorioserindexadoycolocadocorrectamenteenelrepositorio.
NOTAIMPORTANTE:Paraqueunpaqueteseaincluidoenelcd:
elpaquetehadeestarenpkgs/
debe estar en el pool/ y a la vez listado en uno de los dos archivos siguientes:
guadalinex2005/trunk/generation_system/no_live/cdimage/uda/lists/include_breezy o
guadalinex2005/trunk/generation_system/no_live/cdimage/uda/lists/include_uda
Trasloscambiosrealizados,ejecutaramosgenerate_nolive.sh
3.6.2.BORRARUNPAQUETE
Antesdeborrarunpaquetedebemosestarsegurodeloqueestamoshaciendopuestoquesialgn
paquetequevayaainstalarsedependededichopaquete,lainstalacinfallar.Elerrorqueseobtendraseraun
pantallazoennegroenlasegundafasedelainstalacin.
Siestamossegurosdequenovamosaromperlascosas,nicamenteesnecesarioborrarlodelpool/
aunque tambin sera recomendable borrarlo de la lista en la que estuviera contenido
cdimage/uda/lists/include_breezyocdimage/uda/lists/include_uda).Otraopcinseranoborrarelpaquetedel
73
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
pool/sinoquenicamenteborrarlodelalista,aselpaquetenoseincluiraenelcd.
3.6.3.CAMBIARELTEXTODEISOLINUX
Para cambiar el texto de isolinux simplemente editamos el archivo
guadalinex2005/trunk/generation_system/no_live/cdimage/uda/isolinux/isolinux.txt.
Todoslosarchivoscontenidosbajocdimage/uda/isolinuxsecopiarancadavezquesegenereunnuevo
cd,portanto,cualquiercambioalaimagen(splash.rle)oalostextosdeayuda(f1.txt,f2.txt,...)tendrnefecto
inmediato.
3.6.4.CAMBIARLOSREPOSITORIOS
Losrepositoriossecolocanprcticamentealfinaldelasegundafasedelainstalacin.Noesfactible
ponerestaslistasdentrodeunpaqueteparaquealdesempaquetarlosecoloquenensusitiocorrectamente(Por
ejemplo,sources.listen/etc/apt/)puestoqueusamosaptparalainstalacindelospaquetesysidurantela
instalacindeunconjuntodepaquetessecambiaelsources.listaptdaraerror.
Portantohayquecambiarlosrepositoriosunavezterminadalainstalacindetodoslospaquetes.Esto
se hace en udapostinstall, para ello, nos desplazamos al cdigo fuente de dicha aplicacin
guadalinex2005/trunk/no_live_installer/default/src/udapostinstall/udapostinstall0.21, editamos src/uda
postconfigbackend.sh,ycambiamoslassiguienteslineas:
74
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
echo'#TITLE:SitioprincipaldeGuadalinexenlaJuntadeAndalucia'>>/etc/apt/sources.list.uda
echo'#ID:jda'>>/etc/apt/sources.list.uda
echo"debhttp://repositorio.guadalinex.org/guadalinexflamencoflamencomain">>/etc/apt/sources.list.uda
echo"debhttp://repositorio.guadalinex.org/guadalinexflamencoflamencoupdatesmainrestricteduniversemultiverse">>
/etc/apt/sources.list.uda
echo"debhttp://repositorio.guadalinex.org/guadalinexflamencoflamencosecuritymainrestricteduniversemultiverse">>
/etc/apt/sources.list.uda
echo"debhttp://repositorio.guadalinex.org/guadalinexflamencoflamencobackportsmainrestricteduniversemultiverse">>
/etc/apt/sources.list.uda
echo'#END'>>/etc/apt/sources.list.uda
Acordeanuestrasnecesidades,podramosaadirnuevosrepositoriosomodificarloyaexistentes.Enel
mismonivelqueelejecutableudapostconfigbackend.sh,seencuentranlossiguientesficheros:
repositorio.guadalinex.org_guadalinexflamenco_dists_flamencobackports_main_binaryi386_Packages
repositorio.guadalinex.org_guadalinexflamenco_dists_flamencobackports_multiverse_binaryi386_Packages
repositorio.guadalinex.org_guadalinexflamenco_dists_flamencobackports_restricted_binaryi386_Packages
repositorio.guadalinex.org_guadalinexflamenco_dists_flamencobackports_universe_binaryi386_Packages
...
75
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
76
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Dichosficheroscontienenlabasededatosdepaquetesqueseactualizaalhacerun"aptgetupdate".
Coloquemosenunsistemadebiancualquieralosrepositoriosquevayamosausarenladistribuciny
actualizamos la lista de paquetes con "aptget update". Tras ello, recogemos las listas descargadas que se
encuentran en "/var/lib/apt/lists/" y las colocamos en el directorio
"guadalinex2005/trunk/no_live_installer/default/src/udapostinstall/udapostinstall0.21/src" sustituyendo o
aadiendosegnconvenga.
Dentrodelscriptyamencionado"udapostconfigbackend.sh"hayunalineaquecontiene:
mv/usr/share/udapostinstall/backend/repositorio*/var/lib/apt/lists
DichalineatendraquesereliminadaenelcasodequenoseusaranlosrepositoriosdeGuadalinexy
habraqueaadirunanuevaquecopielaslistasaadidas.Estosarchivosnopertenecenaunpaquete(seponen
afuego)comoentodadistribucindebianporquesondatosvariables.
3.6.5.CAMBIARLACLAVEGPG
Escomnqueunaderivadaquieratenersupropiaclaveprivadasinquenadiemslaposea,porellose
describecomogenerarunanuevaclave,recompilarlospaquetesnecesariosyloscambiosquehabraquehacer
enelsistemadegeneracin.
Conelpaquetegnupginstaladoejecutamos:
gpggenkey
Elegimostodaslasopcionespordefectoycuandopreguntelaclavepulsaremosintro.Obtendremosen
nuestrodirectorio$HOME/.gnupg/unpardeclavespblica(pubring.gpg)yprivada(secring.gpg).Esimportante
recalcarlaimportanciadenotraspasarelarchivosecring.gpganadie.
Siejecutamosgpg$HOME/.gnupg/secringobtendremosinformacindelaclave,porejemplo:
77
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
sec1024D/5318812F20041119CarlosParraCamargo<carlospc@gmail.com>
uidCarlosParraCamargo<cparra@emergya.info>
Enestecaso,elKEYIDdelaclavees5318812F.Elsiguientepasovendraporrecompilarelpaquete
ubuntukeyringconlanuevaclaveyconfigurarelsistemadegeneracin.Estospasosestndescritosenla
primeraseccin,enelapartado"Cmosehageneradoel.tar?".
78
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
4.SISTEMALIVE
4.1.INITRAMFS:DONDETODOEMPIEZA
4.1.1.QUES?
Elinitramfseslaversinmodernadelantiguoinitrd.Peroseguroqueestononosdicegrancosa.
Ysidecimosqueesunsistemamnimoquesemontaenlamemoria,antesdemontarelsistema
(instaladoono)quesearrancardespus,yasabemosalgoms.Aunque,probablemente,annospreguntemos
quinlomonta,porqu,qusehaceahyquetienetodoestoqueverconlossistemaslive.
Figura9:Arranquedeunsistemaoperativocualquierayelde
GNU/Linux
79
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Puesbien,paraaclararnosunpoco,lomejoresempezarporelprincipio:Cmoarrancaunsistema
operativoyenconcretoGNU/Linux?(Figura9)
SegnvemosenlaFigura9,unavezescargadoelkernelenmemoria,juntoconlsecarga(siexiste)el
initramfs,selanzalaejecucindelkernelystebuscadndedebearrancarladistribucin.Sisecargaun
initramfs,steleservirdesistematemporaldesdeelquedetectareldiscodondeestladistroyhacerms
comprobaciones.
Elinitramfses,enconclusin,unconjuntomnimodedirectoriosyarchivosconlosqueelkernel,
durantesusprimarasfasesdecargayejecucin,montaunpequeosistemalinuxtemporal,enlamemoria,quele
permitehacerdeteccionesdehardwarebsicas.Ascomoejecutarpequeosprogramasoscripts.
Enrealidadesunpequeosistemalivequesirvealkernelparapodersermsflexibleysoportarms
hardware.Tambinparalanzarprogramastipousplash,paratenerarranquesgrficossintenerqueparchearel
kernel.
Figura10:DelasBIOSal"init"
Unavezselocalizaelsistema(instaladoolive),semontaysearrancasuprogramaprincipal,esdecir,el
init.ElencargadodearrancarlossistemasGNU/Linuxactuales.
Lautilidadparaunsistemalivedeuninitramfsesobvia,elinitramfseselsistemaliveporexcelencia.
Yalotieneyhacetodo.Slonecesitamospasarleunadistroquearrancaryconvencerle(4.2.3 Squashfs+
Unionfs)dequeesunsistema instalado yquelopuedearrancar.Estoesbsicamentenecesarioparapoder
arrancarladistrocompleta,enmemoria,ynoslounsistemamnimocomoeselinitramfs.
4.1.2.ESTRUCTURA
ParaGuadalinexv3secreunsistemalivebasadoenelinitramfsdeUbuntuysuestructura(Figura11),
80
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
/
|bin
|conf
||halt
||initramfs.conf
||install.desktop
|`modules
|etc
|init
|lib
|modules
|sbin
|scripts
||functions
||initbottom
||initpremount
||`acpid
||inittop
||`usplash
||live
||livebottom
|||adduser
|||ejectcd
|||fstab
|||hacks
|||hwdetect
|||init
|||log
||`md5
||livepremount
|||local
|||setup_image
||`tmpfs
`usr
`lib
`usplash
Figura11:Estructuradelinitramfs
(simplificada)
queaadauntipodearranque(LIVE)alosyasoportadosporestesistema(LOCAL:paraarrancardesdediscos
conectadoslocalmentecomodiscosdurosIDE,SCSI,SATA,usb,firewire,etc;y NFS:paraarrancarsistemas
remotosvaLTSP).
Elscript/init(dentrodelinitramfs)eselprimeroenejecutarsealcargarseelinitramfsyelqueselleva
elpesoycontroldetodoloquepasahastaquesecambiaalsistemafinal(instaladoolive).
81
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Figura12:Secuenciadeejecucindel"init",dentrodel"initramfs"
4.1.3.ARCHIVOSPRINCIPALES
Hagamosunrepasodelosarchivosprincipalesdelinitramfs.Unossonimportante porquerealizan
tareasimportantesyotrosporquesonlosquepodremosusarparapersonalizaciones.
/etc/mkinitramfs/initramfs.conf:Eselarchivodeconfiguracindelprogramamkinitramfsquegenera
elarchivoinitramfs.Hayquetenerencuentaqueestearchivoestaubicadoenelsistemadesdeelque
seejecutaelmkinitramfs,generalmentedesdeelquesegeneraladistribucin,nodesdelapropia
distribucinqueseestgenerando.
[initramfs]/init:Esteeselscriptprincipaldentrodelinitramfs.Llevaelcontroldelaejecucindentrodel
initramfs.
[initramfs]/scripts/live : Script donde se monta el sistema live con unionfs. Aqu est la funcin
mountroot,llamadadesdeel/inityencargadadelestablecerelpuntodemontajedondeestarel
82
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
sistemafinal.
[initramfs]/scripts/livepremount/:
local:EstescriptseencargadelocalizarladistribucinenCDs,discoslocales,conectadospor
USB,etc.BuscaelarchivoMETA.squashfs
setup:Montalaimagencomprimidadeladistribucin,parapoderserusadaposteriormente.
[initramfs]/scripts/livebottom/:
init :Aqusecambialonecesariodelsistemadescriptdeiniciodeladistribucinparaevitar
ejecutarscriptnonecesariosopeligrososenunsistemalive.
hwdetect :Eselencargadodedetectaryconfigurarelhardwaredelamquinaenlaquese
arranque.
hacks : Sirve para meter soluciones a bugs temporales, o cosas especficas de nuestra
distribucin. Cualquier cosa que no cuadre en ningn otro script, que sea temporal o muy
especfico,deberamosponerloaqu.
[initramfs]/tmp/initramfs.debug>/var/log/initramfs.debug:Esteeselarchivodondeseguarda(sise
le pasa al arranque la opcin debug) la informacin de depuracin de los scripts. Aqu podremos
encontraralgunapequeaayudaaentenderloquepasa,encasedefallaralgoenelarranque.
4.2.SQUASHFSYUNIONFS:MSENMENOS
4.2.1.SQUASHFS
Squashfsesunsistemadeficheroscomprimido.Bien,pero...yesoqusignifica?
Vayamosporpartes.Unsistemadeficheros,grossomodo,esunarelacinentreelespacioundiscoy
lainformacinquecontiene.Eso,msinformacinsobrelaposicindecadadato,surelacinconotrosdatosyun
sistemadepermisos.Esloquehacequeloqueenrealidadesunmontnde bytes agrupadosen clusters,
sectoresydems,tantoelsistemaoperativo,comolosprogramasynosotrosmismos,lovemoscomoarchivos,
directoriosyespaciolibre.
83
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Peronoesmsqueunamaneradeveresainformacin,unatraduccinaunaspectomsentendiblepor
nosotros.
Sabiendoesto,podemosdecir,queunsistemadeficheroscomprimido,esaquelcuyainformacinesta
comprimida,peroquenosotroslavemoscomosinoloestuviera.Esdecir,latraduccinyanoesdeclustersy
dems,sinodeporcionesdeinformacincomprimidaaarchivos,directorios,etc.
Esteprocesoesrelativamenterpidoyfcildehacer.Eldeleerdatosdeunsistemacomprimido.Pero
escribir, ya es ms complejo, ya que implicara reorganizar toda la informacin, hacer las modificaciones
pertinentesyvolveracomprimir.Porestarazngeneralmentelossistemasdeestetipo,sonsistemade slo
lectura.Estoquieredecir,quesepuedeleer,peronosepuedeescribirenellos.
Contodaestaintroduccintericaloquequeremosdeciresqueelsquashfsesunsistemadeficheros
conelquepodemosguardarmuchainformacinenpocoespacio,alguardarsedeformacomprimida.Peroque
esainformacin,unavezguardadaenesteformato,nopodemosmodificarla,sloaccederaellayleerla.
Claro,quesiemprepodremosregenerarelarchivocreadoconsquashfsapartirdelainformacinoriginal,
unavezmodificada.
Estetipodesistemastienegrandesventajasdecaraalossistemaslive,yaquenospermitemeter
distribucionescompletasenunCDnormal.Yentrelossistemasexistentesactualmente,steeselquenosha
dadomejorrendimiento,mejorratiodecompresin(mayorcantidaddedatosenelmenosespacioposible)yms
estable.
Peronoslosirveparasistemaslive,aunquesuusoenestetipodesistemassehadisparadoenlos
ltimos2aos.Deecho,secreooriginariamenteparasistemasmuypequeosempotradoscomoAccessPoints
pararedesWiFi(inalmbricas)ydispositivossimilares.
4.2.2.UNIONFS
Ya explicamos antes lo que es un sistema de ficheros, as que iremos directamente a explicar las
peculiaridadesdesteenconcreto.
Siunsistemadeficherosestndar(ext3,xfs,vfat,ntfs,etc)interpretaytraducelosclusters,sectoresy
bytes en ficheros ydirectorios,el unionfs loquehaceesinterpretardosomsdirectorios,consucontenido,y
84
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
mostrarlossuperpuestoscomootrodirectorio,consucontenido.
Peroelcontenidodeesteltimodirectorioresultanteesladiferenciaentrelosdirectoriosqueseest
interpretando.Paraverlomsclaro,tenemosestegrfico:
Figura13:AbstraccindelfuncionamientodelUnionfsysuvista
resultanteparaelusuarioylasaplicaciones.
85
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
4.2.3.SQUASHFS+UNIONFS
Haceyaalgntiempoquesevieneusandoel"squashfs"paralossistemaslive,porrazonesobvias.Pero
usarsistemasdeficherosydispositivosde"slolectura"tienebastanteslimitaciones.
Porejemplo,nopodemosmodificarconfiguracionesdeprogramasoinstalarnuevasaplicaciones.Esosin
contarconqueprepararelsistemaparafuncionarenmodolivesevuelvealgobastantecomplejoylioso.
ConlasumadeSquashfsyUnionfs,conseguimosmeterunadistribucinenteraenunCDyconseguir
arrancarlos en modo live, de forma sencilla y pudiendo escribir sobre la distro (cambiar configuraciones a
programas,instalaraplicaciones,etc).Estoaporteunenormevaloraadidoanuestradistribucinyfacilitamucho
latareademantenimientoymejorasdelpropiosistemalive.
4.3.SISTEMADEGENERACIN:GENLIVE,CHROOT,ETC
Paralageneracindeversioneslivedeladistribucinsehancreadosistemarudimentarioperoefectivo,
quenosautomatizarcasitodoelproceso.Estonoesnecesarioperosialtamenterecomendable.Principalmente
pordosrazones:
Deestamaneranosresultarmscomplicadoolvidarnosdepartesdelproceso.
Sitenemosalgnfallo,alserunmtodoestandarizado,sermsrpidamenteidentificableporcualquier
otrapersonaquenospudieraayudar.
Dentrodelelsistemadegeneracinhaydospartesimportantes.Porunladotenemoselsoftwareconel
quesegeneranlasimgenesyporotradndeycomosepreparaladistribucinparapodercrearstasimgenes.
Asquedividiremosyexplicaremoselsistemaenestasdospartes:
Genlive
Chroot
86
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
4.3.1.GENLIVE
Esunpequeoysencilloscriptquenosfacilitalatareadeejecutarciertoscomandos,paranotenerque
memorizarsusopcionesypoderautomatizarunpocomselprocesodegeneracindelaimagendelCDlive.
Esimportanteestarsegurosdehaberlimpiadobienlosrestosquepodamoshaberdejado,depruebasy
dems,enlossources(/media/distro/sources/,lugardondehemosinstaladoyconfiguradonuestradistro).Estolo
haremosconelscriptclean.shqueseproporciona(/usr/share/genlive/clean.sh)ycuyousoexplicaremosdespus.
Elscriptsellamagenliveysuusoeselquesigue:
$genlive[opciones]
Comosepuedeobservar,noescomplicado,puestoqueenlamayoradeloscasosnoesnecesario
pasarleningunaopcinalscript.
Pero,qupasacuandoejecutamosestescript?
Pues,almargendelascomprobacionesbsicasdesiexistenlosarchivosydirectoriosnecesariospara
crearsecorrectamenteladistro,loquesehaceescrearel initramfs paraconfiguradoparaarrancarenlive,un
archivocomprimidoconelcontenidodeladistribucinygenerarlaimagendelCD.
Portantolaspartesmsimportantes(bueno,lascomprobacionestambinloson...)delscriptson:
Primerosecopiaelkernelysegeneraelinitramfsadecuado:
cpa/boot/vmlinuz${KERNEL}${MASTER}/isolinux/vmlinuz
mkinitramfso${MASTER}/isolinux/initramfs${KERNEL}
Despussegeneralaimagencomprimidadeladistroinstaladaen/media/distro/sources:
mksquashfs${SOURCES}${MASTER}/META/META.squashfs
Y,porltimo,segeneralaimagendelCDquenospermitirarrancarenmodolive:
mkisofs l r J V "${VOLUMENAME}" hiderrmoved v b
isolinux/isolinux.bin c boot.cat noemulboot bootloadsize 4 bootinfo
tableo${OUTPUTIMAGE}${MASTER}
Ladefinicindelasvariablesusadasenlasotraspartes,seencuentranalprincipiodelscript:
KERNEL="2.6.129386"
SOURCES="/media/distro/sources"
87
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
MASTER="/media/distro/master"
ISOS="/media/distro/isos"
IMAGEPREFIX="gl_v3"
OUTPUTIMAGE=${ISOS}/${IMAGEPREFIX}$(date+%Y%m%d%H%M).iso
LOG_FILE="/var/log/installer.log"
SPLASH_IMAGE=""
VOLUMENAME="GuadalinexLiveSystem"
Claroqueestosvalorespuedensermodificadosdirectamenteenelscript(lomscmodoysegurosison
cambiosquesevanadarsiempre)opasndoleciertasopcionesal genlive.Aquseexplicanlasopciones
disponiblesycualesmodificanesosdatos:
Opciones:
h:verlasopciones.
x :noregeneralaimagencomprimidadeladistribucin.tilcuandoyahemosgeneradolaimagen
comprimida de la distribucin y tenemos que generar otra iso, porque hemos cambiado cosas del
initramfs, del isolinux, o de los extras, pero no de la distro. Esto nos ahorrar mucho tiempo en la
regeneracindelCD.
y:noregeneraelinitramfs.tilcuandoyasabemosquestaestayageneradaynoqueremosperder
tiempoconesooarriesgarnosaquesegeneremal.
k<kernelversion>:especificarunaversindekernel.Sesustituirlaversinpredeterminada(2.6.129
386)porlaespecificadaaqu.
s<splashimage>:especificarlaimagendelarranque.Secopiarelarchivodeimagenparaisolinux
especificadoenellugarcorrectoparapoderserusado.
o<outputimage> :especificar elnombre delarchivo iso. Esto incluye su path, porsupuesto. (Ej:
/tmp/mi_iso.iso)
v<volumename>:especificarelnombredelCD(esconelqueseidentificaelCDyqueapareceren
elnautilusalserstemontado).
p<imageprefix>:especificarelprefijodelnombredelaiso.Elnombrepordefectoessimilara"gl_v3
200605081050.iso"(cambiandolafechayhora,naturalmente).Siespecificramosotroprefijo,comopor
88
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
ejemplo"test",elresultadoseraunnombredelarchivoisotalque:"test200605081050.iso".
Lasltimascincoopcionespuedendefinirsedemanerapermanentedentrodelscriptenlasvariables
especificadasantes.
4.3.2.PAQUETESYSOFTWAREIMPLICADO
genlive:
clean.sh: ste es un script sencillo que se encarga de limpiar un poco el directorio donde
tenemosinstaladaladistribucinparaquenodeconflictosalarrancaroinstalarsedesdeelLive.
Est localizado en /usr/share/genlive/clean.sh, instalado ah por el paquete genlive, y es
convenienteejecutarloantesdegenerarunaimagen.
mksquashfs:Esteprogramanospermitegenerarlasimgenescomprimidasdelasdistribucininstalada.
Esusadoporgenliveysumododeempleofueradeesteentornomuysencilloesmuysimple.Slohace
faltaindicarledosparmetros:dequdirectoriovaahacerlaimagenyelnombredelarchivoagenerar:
$ mksquashfs /media/distro/sources
/media/distro/master/META/META.squashfs
mkisofs:Porelnombresepuedededucirquenovieneasermuydiferentequeelanterior,
aunqueparaarchivosiso,noparacomprimircon Squashfs.Aqulasopcionessonmuchasy
variadas,dependiendodequetipodeCDycomoeselcontenidodelmismo.Poresolomejores
dejarquegenliveelijalasopcionescorrectaspornosotros.
Syslinux(>Isolinux):ElpaqueteSyslinuxcontieneelprogramaIsolinuxysusarchivosdeconfiguracin.
Esungestordearranquepensadoparadispositivosextrables,preferentemente.Esdecir,paradisquetes,
CDs,usbs,etc.NosotrosusaremosenconcretoelIsolinuxqueestespecialmentediseadoparaCDs.
initramfstools(guadalinexlive):staesunaversinrealizadaparaGuadalinexv3delpaqueteoficialde
UbuntuBreezyconelmismonombre.Setratadeunpaquetequecontienelonecesarioparagenerarlos
initramfs delsistema.Ladiferenciaentreelnuestroyeloriginalesquelehemosaadidolosscriptsy
programasnecesariosparaquesepuedaarrancar,tambin,enmodolive.Nonosextenderemosmucho
msaquyaqueexisteunsubapartadoenteroparaelinitramfs.
89
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
busyboxinitramfs(guadalinexlive):Aligualqueelpaqueteanterior,steesunaversindeloriginaldel
UbuntuBreezy.Elpaquetecontieneelprogramabusyboxcompiladoconlasopcionesnecesariasparaun
initramfs.Ennuestraversin,sehanaadidoalgunasms,parapoderusarloenmodolive.
Elbusyboxesunaminishellquecontienedentrodelmismoarchivoejecutablemuchosprogramas.Es
unamaneradetenerdentrodelashelllosprogramasynodependerdeprogramasexternos.
Existendosformasdeusarlosprogramascompiladosdentrodeesta cajallena.Unaesllamandoal
busybox,seguidoporelcomandoquequeremoslanzar:
$/usr/lib/initramfstools/bin/busyboxls
[listareldirectoriocomosihubiramosejecutadounlsnormal]
Ylaotraescrearunenlacealbusyboxconelnombredelcomandoquequeremosusar:
%lns/usr/lib/initramfstools/bin/busybox/tmp/ls
%/tmp/ls
[listareldirectoriocomosihubiramosejecutadounlsnormal]
4.3.3.DIRECTORIOSYARCHIVOSIMPORTANTES
AhoraanalizaremoslosarchivosydirectoriosprincipalesdelsistemadegeneracindelCDlive.Esbueno
queestemosfamiliarizadosconstos,porsidebemosmodificaralgo,bienenlapersonalizacin,bienporque
queramoshacermejoras.
DIRECTORIOS
/media/distro/sources
Eseldirectoriodondeseguardarelcontenidodenuestradistro.Esdecir,nuestradistro,unavezya
instaladaapartirdelospaquetesymetapaquetes.Puedesertantoundirectorioquecontengaladistro(porquela
hemoscopiadodealgnsitiodondeestabainstalada,obienporquehemosinstaladoapartirdeundebootstrap)
comounaparticin,endondehemosinstaladonuestradistribucinyquehemosmontadoenesedirectorio.
/media/distro/master
EnestedirectoriosealmacenarelcontenidofinaldelCD.Esloqueseusarcomomasteralahorade
crearunaimagendelCD.Eldirectoriomastercontiene,asuvez,otrossubdirectorios:
90
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
/media/distro/master/
|META/
|extras/
||disquete/
|`info/
|`documentos/
`isolinux/
Figura14:rboldedirectoriosdelsistemadegeneracindela
versinLive
META/:EseldirectoriodondeseguardaladistribucincomprimidaenelarchivoMETA.squashfs.
extras/:Esundirectorioopcionalyprescindible,aunquetileinteresante,paraponerinformacinsobre
ladistro,documentacin,archivosdeejemplooloquesequiera.
isolinux/:ste eseldirectorio en donde se guardar el kernel,el initramfs y todoslosarchivosde
configuracindelisolinux.
/media/distro/isos
AquseguardarnlasimgenesdeCDs(isos)generadas.
ARCHIVOS
/media/distro/master/META/META.squashfs=distro
Este archivo es una imagen comprimida de la distribucin que previamente hemos instalado en
/media/distro/sources.Elarchivocontienetodaladistribucin,consujerarquadedirectoriosincluido,peroenun
archivodeslolectura(sobreelquenosepuedeescribir),queestcomprimidopermitiendo,porejemplometerel
contenidodeunadistribucinqueinstaladaocupa2GB.,enunarchivodepocomsde600MB.
/media/distro/master/isolinux/initramfs=initramfs
Comosehaexplicadoencaptulosanteriores,el initramfs eslapiezaclavedelsistemaliveyaques
dondeseguarda.Logeneraryguardaraquelgenlive.
/media/distro/master/isolinux/isolinux.bin=sectordearranque
Eselsectordearranquedelsistema Isolinux,quepermiteindicaranuestroordenadorquepodemos
91
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
arrancardesdeelCDROM.Sinstearchivoysinqueseespecifiquealgenerarlaiso,nosepodraarrancarel
CD.
/media/distro/master/isolinux/isolinux.cfg=configuracin
defaultlinux
DISPLAYisolinux.txt
TIMEOUT100
PROMPT1
F1isolinux.txt
F2ayudaf2.txt
F3ayudaf3.txt
F4ayudaf4.txt
F5ayudaf5.txt
F6ayudaf6.txt
F7ayudaf7.txt
F8ayudaf8.txt
F9ayudaf9.txt
KBDMAPes.kbd
FONTfuente.psf
labellinux
kernelvmlinuz
append ramdisk_size=100000 root=/dev/ram0 initrd=initramfs BOOT=live
debugsplashquiet
labeldb
kernelvmlinuz
append ramdisk_size=100000 root=/dev/ram0 initrd=initramfs BOOT=live
debugbreak
labelsingle
kernelvmlinuz
append ramdisk_size=100000 root=/dev/ram0 initrd=initramfs BOOT=live
92
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
debuginit=/bin/sh
labelfailsafe
kernelvmlinuz
append ramdisk_size=100000 root=/dev/ram0 initrd=initramfs BOOT=live
debugnoapicnolapicacpi=offpci=noacpivga=normalxdriver=vesa
labeltestcd
kernelvmlinuz
append ramdisk_size=100000 root=/dev/ram0 initrd=initramfs BOOT=live
debugmd5splashquiet
steeselarchivodeconfiguracindeisolinuxparaelCDlive.Lasopcionesgeneralesdelisolinuxyahan
sidovistasanteriormenteenelapartadosobrelamodificacindeladistribucin,asqueahoranoscentraremos
exclusivamenteenlosdetallesqueafectenalsistemalive.
Perodentrodelosparmetrosqueselepasanalkernel(conelappend)hayalgunosquesloexistenen
nuestrosistemaliveyotrosquesonparmetrosnormales,aunquenecesariosparaqueestofuncione.Vamosa
explicarlosporseparado,empezandoporestosltimos:
ramdisk_size=100000:Esteparmetroespecificaeltamao,enKB.,delsistemainicialquesemontaen
lamemoriaram.Generalmentenecesitamosespecificarunomayorqueelpredeterminado(4096KB.=4
MB.),poresoloespecificaremos.
root=/dev/ram0:Elrootindicalaparticinfsicaendondesemontarelsistemaraz(/),queparanuestro
sistemaliveserlamemoriaram,poresonecesitaremosindicar/dev/ram0.
initrd=:Aquseespecificaelarchivo initrd o initramfs queseusar.Ennuestrocasoesel initramfs
generadoycontodolonecesarioarpamontarelsistemalive.
quiet:Siseespecificadichoparmetro,nosemostrarntodoslosmensajesdelkernelalarrancar,slo
loserroresymensajesmsimportantes.
debug:Esteparmetrolousanlosscriptsdel initramfs paraversiqueremosirviendoyguardando
informacindeloquesevaejecutandoyloserroresqueseden.Esunaopcinparadepurarerrores.Si
existe el parmetro se activar este modo de depuracin, en caso contrario no se mostrar esa
informacin.Encasodequesepararalaejecucinenel initramfs,podremosverestainformacinen
93
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
/tmp/initramfs.debug.
splash:Siexisteesteparmetroenlalneadelappend,semostrarelarranquegrfico,sinofueseas,
semostraraelarranquenormal,enmodotexto.
break:Dentrodel initramfs,hayunpuntointermedioenlaejecucinenquesecompruebasiseha
pasadoestaopcin.Deseras,sedetendrlaejecucinenesepunto,mostrandounaconsolacon
comandosmnimos,parapoderhacerpruebasydepurar.Estilparaladepuracindeciertaspartes.
Yaquestnlosexclusivosdelsistemalive:
BOOT=live:Elsistemadescriptsdel initramfs soportavariostiposdearranque(local ynfs),quese
indicanconestavariablequesepasaalkernel,peronosotroshemosaadidounnuevotipodearranque,
queeselarranqueliveyqueseespecificacomoahseindica(BOOT=live).
xdriver=:ConestavariablesepuedeespecificarundriverdeterminadoparalasX.Estopuedesertilen
equiposcondificultadesparadetectardichodriveroenlosquelatarjetagrficanoestbiensoportada.
Enesteltimocaso,selepuedeindicareldrivergenricovesa,quenooptimizarsurendimiento,pero
asegurarquearranque.
md5:staesunaopcinqueleindicaalinitramfsquedebehacerunacomprobacindelaintegridadde
losarchivoscontenidosenelCD.Paraellosecompruebaunalistade sumasmd5 (checksum)delos
archivosdelCD,quevieneincluidoenelmismo.
/media/distro/master/isolinux/splash.rle=imagendelarranque
EstearchivosecorrespondeconlaimageninicialqueaparececuandosecargaelCD.Paravercomose
modificaraestaimagenvaselaseccinsobreelIsolinuxenelcaptulodepersonalizacin.
/media/distro/master/isolinux/ayuda#.txt=archivosdeayuda
Existenvariosarchivosdeayuda,cadaunoestasignado(comovimosenelarchivodeconfiguracin
isolinux.cfg)aunatecladefuncin(F2,F3,F4,etc).Sepuedenreconocerfcilmenteporelnombreyporestar
especificadosenelcitadoarchivodeconfiguracin.
Estos archivos, al igual que el presentacin (isolinux.txt) pueden tener, y de hecho tienen, algunos
cdigosespecialesparaformateareltexto.Enlosarchivosdeejemploaqumostradossepuedeverclaramente.
Soncdigosdeltipo:09,07,0d...
94
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
VanseaqulosarchivosdeayudadeGuadalinexv3,amododeejemplo:
isolinux.txt
^Xsplash.rle
^O07BienvenidoaGuadalinexv3(live),pulseINTROparacontinuar.
Paraverlaayuda,pulseF2.
ayudaf2.txt
09ndicedeayuda07
Disponedevariaspginasdeayuda:
0dF107.............0dPantallainicial07
0dF207.............0dndicedeayuda07
0dF307.............0dQuesGuadalinex?07
0dF407.............0dIniciandoGuadalinexv307
0dF507.............0dConfiguracinadicional07
0dF607.............0dParmetros07
0dF707.............0dOpcionesdearranque07
0dF907.............0dGuadalinexenInternet07
Presione0dINTRO07parainiciarGuadalinexv307
95
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
ayudaf3.txt
09QuesGuadalinex?07
Puedeutilizarestadistribucincuantasvecesquieraenmodo0d"Live"07,
loquesignificaquenosemodificarnadaensudiscoduro.
Cuando reinicie el ordenador y extraiga el CDROM de la unidad, podr
acceder
asusistemaoperativodesiempre,sinrastroalgunodeGuadaLinex.
Entodomomentodisponedelaposibilidaddeinstalarestesistema
operativoensudiscoduro,conviviendoconelrestodesistemas
operativosquetengainstalados.Paraello,slotienequepulsar
elbotn0d"InstaladordeGuadaLinex"07enelescritorio.
07Pulse0dF207paravolveralndicedeayuda
Presione0dINTRO07parainiciarGuadalinexv307
96
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
ayudaf4.txt
09IniciandoGuadalinexv307
IniciarGuadalinexv3enmodo0d"live"07(desdeelCD)esmuysencillo,
nicamentedebeinsertarelCDROMenelordenadoryreiniciar.
Selemostrarunapantalladepresentacinyenunossegundossecargar
elsistemaoperativo.
SiGuadalinexnoseiniciasecorrectamente,esposiblequedebamodificar
el 0dorden de arranque07 de los dispositivos en la 0dBIOS07 de su
ordenador.
Esteprocedimientovaraligeramenteentredistintosmodelosasquese
recomienda consultar en el manual del ordenador la forma correcta de
hacerlo.
07Pulse0dF207paravolveralndicedeayuda
Presione0dINTRO07parainiciarGuadalinexv307
97
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
ayudaf5.txt
09Configuracinadicional07
Guadalinexv3estpreparadoparadetectardeforma0dautomtica07el
hardwaredesuordenadorpero,enalgunasconfiguraciones,esposible
queelarranquefalle.Enestoscasos,esnecesarioindicarleal
sistemaoperativoalgunosdatossobrenuestroordenadorparafacilitar
elarranque.
ParapasarleestainformacinaGuadalinexsedebeutilizarel
indicador0d"boot:"07situadoenlaparteinferiordelapantalla.
Enesteindicadordebemosescribir0d"linux"07seguidodelos
parmetrosdeseados.
PuedeconsultarlosposiblesvaloresenlaseccinParmetros
(tecla0dF607).
07Pulse0dF207paravolveralndicedeayuda
Presione0dINTRO07parainiciarGuadalinexv307
98
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
ayudaf6.txt
09Parmetros07
0dacpi=off07:DeshabilitaelsoporteparacontroldeenergaporACPI
Ej:linuxacpi=off
0dnoapic07:DeshabilitadoelmdulodetemporizacinAPIC
Ej:linuxnoapic
0dnolapic07:Pruebeesteopcinsilaanteriorfalla
Ej:linuxnolapic
0dnousb07:DeshabilitaelsubsistemaUSB
Ej:linuxnousb
0dxdriver=07:EstableceeldriverparaelsistemaXWindow
Ej:linuxxdriver=vesa
(Msayuda...F7)
07Pulse0dF207paravolveralndicedeayuda
Presione0dINTRO07parainiciarGuadalinexv307
99
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
ayudaf7.txt
09Opcionesdearranque07
0dsingle07:Conestaopcin,Guadalinexarrancaenmodomonousuariosin
ejecutarmuchosdelosprogramasquecargahabitualmente(incluyendoel
entorno grfico). Utilice esta opcin si tiene problemas cargando el
modo
grfico.
0dtestcd07:ConestaopcinsecompruebalaintegridaddelCD,paraver
queno
estmalgrabadooenmalestado.
07Pulse0dF207paravolveralndicedeayuda
Presione0dINTRO07parainiciarGuadalinexv307
100
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
ayudaf9.txt
09GuadalinexenInternet07
ElproyectoGuadalinexdisponedeunsitio0dweb07enInternetdondepodr
descargarlas0dnuevasversiones07,consultardocumentacin,participaren
forosylistasdecorreo,etc.
LadireccindeGuadalinexes:
0dhttp://www.guadalinex.org07
07Pulse0dF207paravolveralndicedeayuda
Presione0dINTRO07parainiciarGuadalinexv307
101
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
4.3.4.CHROOT
Unaveztenemosnuestradistribucindebemosinstalarlaparaprobarla.Apartirdeaquentraremosen
unafasedemuchaspruebasydeconfiguracionesquenosayudarnacrearlospaquetesdefinitivosyapartirde
estos,lasversionesfinalesdeladistribucin.Ensusdosfacetas:"live"y"nolive".
Haydiversasmanerasdehaceresto,perolaquerecomendamosesinstalar,apartirdelinstalador"no
live"enunaparticindeldiscoqueusaremosparagenerarnuestrasdistros.
Laideaesquepodamosmontaresaparticin,yainstalada,ennuestrosistemadetrabajoyaspoder
hacerpruebas,cambiosygenerarapartirdeesedirectorio("/media/distro/sources")nuestrosCDs"live".
Ylaformamsfcilycmodaparahacerpruebas,instalarpaquetes,cambiararchivosdeconfiguracin,
etc,enesaparticinsintenerquereiniciartodoelratoesusarelprograma"chroot".Elcualsirveparapoder
ejecutarotrasaplicacionesdentrodeundirectorioindicadocomosistefueraeldirectoriorazdelsistema.
Esdecir,quesiejecutramosunprograma,porejemplo,una"shell"(elprogramapredeterminadosinose
indica otro) estaremos en una "shell" dentro de ese directorio, sin posibilidad de subir niveles u obtener
informacinsobrenadaqueestporencimadenuestro,ahora,directorioraz.
Dichoprogramaesmuytilparapoderinstalarpaquetesenunsistemainstaladoenundirectorio,como
sisehubierahechoarrancandoesaparticin.
Laformadeusareseprogramaes:
$chroot/path/del/directorio/[comando]
Elcomandopodemosomitirlosiloquequeremosesuna"shell"dentrodelsistema.Esos,deberemos
serrootparapoderusaresteprograma.
Peronotodoesbonitoymaravillosoconel"chroot".Nosiramuybienparainstalarpaquetes,hacer
cambiosenarchivosdeconfiguracinydems,peropodradarnosproblemassijugamosconlasXoestamos
arrancandoyparandoservicios.tambinsijugamosconelkernel,queporotroladodebeserelmismoenambos
sistemas.Nopodemosarrancarunadistrodentrodeotrayaarrancada,conkernelsdiferentes.
Estaslimitacionessedebenaqueambossistemas,el"anfitrin"yel"husped",compartenelmismo
kernel,variablesdeentornoeinformacindel"proc".Asquesiusamosotocamosdichainformacinenuno,
102
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
podremosestarhacindoloenelotro.
Tambindeberemosteneralgunascosasencuentaalahoradeusarel"chroot"paraentrarenun
sistemacomosiloarrancramosyqueramoshacercosasdentrodel.Comoporejemplo,debemosacordarnos
demontarelsistemadeficherosvirtual"proc"eneldirectorio"/proc".
El"proc"eslainterfazdecomunicacinentreelkernel,elhardwareylosprogramasqueseejecutanen
elsistema.Enelpodemosver,amododeficherosydirectorios,informacinsobrelosdistintosdispositivos
conectadosanuestroequipoydelosqueelkerneltieneconocimiento.Tambinpodemosverlos"procesos"que
seestnejecutandoennuestrosistema(existeundirectorio,consucorrespondientenmero,porcadaproceso),
ascomoinformacindeltipo,propietariodelproceso,tiempodeejecucin,recursosqueestusando,otros
procesosdelosquedepende,etc.
Yestainterfazesusadapormuchosprogramasparaobtenerinformacindelsistema.steeselcasode
programastanbsicosynecesarioscomo"mount","apt",etc.
Peronodebemosolvidarnosdedesmontardichodirectoriocuandoacabemos.Denohacerloas,no
podramosdesmontarlaparticinqueusamosparanuestradistro,opodramoscopiarunmontndearchivosen
laimagendelsistema"live",quenoharanmsqueocuparbastanteespacioypodrancausarproblemasenla
distroarrancada.
Asquelasecuencialgicaparausarel"chroot"ennuestropropsitosseralasiguiente:
$chroot/media/distro/sources/
[yaestamosdentro]
chroot$mounttprocnone/proc
[instalamosymodificamosagusto]
chroot$aptgetinstall[algo]
...
chroot$umount/proc
chroot$exit
[yaestamosfuera]
103
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Otrodetalleatenerencuentaesqueprobablementeenelsistemaquetengamosinstaladoenese
directorio ("/media/distro/sources"),no tengamosconfiguradoslosservidores de nombres ("DNS"), as que si
intentamosusarel"aptget",nospodradarunerror.Esosearreglafcilmentecopiandoelcontenidodenuestro
archivo"/etc/resolv.conf"dentrodeldeladistroinstalada"/media/distro/sources/etc/resolv.conf".
4.4.DNDEPERSONALIZAR?
Ya hemos estado viendo algunos sitios donde se puede modificar el sistema live, pero vamos a
mencionar alguno ms en esta seccin. stos seran cosas bastante especficas del sistema live como las
siguientes:
Usplash:Enelcaptulodedicadoalosaspectosmodificablesdeladistro,sehacomentadoyacomose
cambiaopersonalizael"usplash",peroloquequeremosrecalcaraquesqueesenelsistemaendonde
segeneraladistribucin,dondetienequeestarinstaladaesaimagenausarparael"usplash".
Es decir, si nosotros tenemos un ordenador con un sistema linux instalado, en el que hemos
instaladoel"genlive"ydemspaquetesparagenerarunadistribucin,esenesesistemaendonde
tendremosqueinstalaresepaqueterecompiladodel"usplash".
Porsupuesto,ladistribucindebellevarelpaqueteyamodificado,tambin.
[initramfs]/scripts/livebottom/hacks:Estescriptseencuentradentrodel"initramfs"ysufuncines
facilitarnoselaadircambiosdepruebaonoestndares,paraelarranquedelsistemalive.
Algunosejemplosdeestopuedenser,aadiruniconoalescritoriodelusuarioquesearranca,lanzar
unservicio("SAMBA","apache",etc)antesdeabrirlasesindelusuario.Cambiarelescritoriocon
queseinicialasesindelusuario,etc.
/etc/mkinitramfs/initramfs.conf:Enestearchivoexisteunavariablequesepuedeconfigurar,queesel
nombrequetendrelusuarioalarrancarelsistemalive.Lavariablees"USERNAME=".
104
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
4.5.INSTALADORLIVE
4.5.1.QUES?
Lobuenodeunsistemaliveesquesepuedeprobarantesdeinstalar,perotambinquesepuede
instalardemaneramsrpidaysencillaparaelusuario.Haymuchosinstaladoresparasistemaslive,aunquecasi
todostienenunalimitacinprincipal,queselimitanacopiarladistribucinyconfiguraciones.Esdecir,queno
usanelsistemadepaqueteraoherramientaspropiasdeladistribucinparaconfigurarprogramasyhardware.
Esto puede generar muchos problemas, como por ejemplo en las actualizaciones. Si hay algo
configuradoporunscriptpropio,puedequeelsistemanoseaconscientedeellosylomachaquealactualizarel
paquetealquepertenece.
Porestaraznhemosdiseadouninstaladorqueuseen,lamedidadeloposible,lasherramientasdela
distribucinbase,paraconfigurarladistrocopiadaaldisco.Ademsdecrearunsistemadeparticionadobastante
inteligente que facilita una de las tareas que ms miedo produce a un usuario a la hora de instalar. Y
aprovechandoquedisponemosdeunadistribucincompletaarrancada,hemoscreadounainterfazdeusuario
agradableysencilla,parafacilitarlelavidaalusuario.Eliminandotodaslaspreguntasquenoseanabsolutamente
necesarias.
105
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
106
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
107
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
108
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
109
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
4.5.2.CMOFUNCIONA?
ElinstaladordeGuadalinexv3estdiseadodetalformaquelalgicadelinstalador(backend)est
separada de la parte que interacta con el usuario para pedirle datos(frontend).De esta forma, sepodra
fcilmentecreardiferentesinterfacesdeinteraccinconelusuario.
Para nuestro caso hemos elegido una interfaz grfica usando las libreras Gtk, ya que el entorno
GuadalinexesGnomeyGtk.YtantoelbackendcomoelfrontendestnprogramadosenPython,parafacilitar
sudesarrollo,mantenimientoyporsuflexibilidad.
Lapartequemsnosinteresar,sinduda,serelfrontend,queeslaquepodemospersonalizaryque
eslaqueveelusuario.DichainterfazgrficaestadiseadaconGlade,unprogramaparadisearinterfaces
grficasparaGnome/Gtk.Conelnoseracomplicadomodificarlaaparienciadelinstalador,aunquesinotenemos
cuidado,puededarnosmsproblemasqueayudas.
Loidealesusarloselementospreparadosparaserpersonalizados.
110
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
4.5.3.CMOPERSONALIZARLO?
Comomencionamosantes,hayciertoselementospreparadosparapoderserpersonalizados,comopor
ejemplo,laimagendelacabecera,oeltextodebienvenida.Vamosaenumerarloseindicardondepodemos
encontrarlos:
Nombredeladistro:Estodebeestarconfiguradoenel/etc/lsbreleaseporelcorrespondientepaquete,ya
queelinstalador,buscardeaquelnombredeladistribucin.EnconcretobuscarelDISTRIB_ID,pero
ponindolotodoenminsculas.Conestenombreexistirnvariosdirectoriosdentrodeldirectoriofuentedel
paquetequesedescribenacontinuacin.
glade/locale/[nombre_distro]:Contienelastraduccionesyayudasdelostextosmostradosenlainterfaz
grfica.
glade/pixmaps/[nombre_distro]:Contienelasimgenesdelacabecera,ylascapturasdeaplicacionesque
semuestranenelprocesodecopiaaldisco.Lasprimerasquerremoscambiarlasseguramente,lassegundas
dependerdelcaso.
Quizsqueramosaadiralgunaaplicacin,quitarotra,oactualizarejemplos.Encualquiercasodebemosque
tenerencuentaelarchivomessages.txt,enelcualsedescribecadaunadeesascapturas.
Debeponerseunprrafoporcapturadeaplicacinyhayquetenerencuentaqueirnapareciendoenel
orden puesto en el archivo, luego habr que coordinar el nmero de lnea con el nmero de captura
(snapshot1.png,snapshot2.png,snapshot3.png,etc).
htmldocs/[nombre_distro]:Aqusepondrlapresentacinenhtmlqueaparecealprincipio.
111
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
Conestoselementospersonalizados,lehabremoscambiadolacaraalinstalador,dndoleunaspecto
profesionalanuestradistribucin,queestarlistaparaserprobadaeinstalada.
112
CURSODECREACINDEDISTRIBUCIONES:GUADALINEXV3
Cod.02206v Ref.monk
5.CONCLUSIONES
ElequipodedesarrollodeGuadalinexv3ylosdocentesdelcursolesanimamosaquepruebanlos
diversossistemasqueaqusemuestran.Sabemosqueelconocimientoesextensoyescomplicadoasimilarloen
uncursotanreducido,peroestamosabiertosacualquierdudamediantelaslistasoficiales1delproyecto2.
Asimismorecomendamosquecualquierproyectoquesehagabasadoenste,seintentedesarrollaren
esteentorno(laforjadeGuadalinex)oquesemantengainformadoalequipodedesarrolloyalacomunidad
mediantelaslistas.
Estoesimportanteparapoderreaprovechareltrabajodetodosenbeneficiodetodosyparaevitarquese
tenganquepelearconcosasquepuedenestaryaresueltasporotrapersona.
Encualquiercaso,quedamosasudisposicinparacualquierduda,consultaosugerencia.
1 http://forja.guadalinex.org/mailman/listinfo/forja.guadalinex2005distro
2 http://forja.guadalinex.org/repositorio/projects/guadalinex2005/
113