viernes, 1 de julio de 2011

Agradecimientos

A mi tutor.
A mis profesores de la carrera.
A familia, amigos y compañeros.

Vale un 8'5

Esta mañana estaban las notas, y no me quejo...


martes, 28 de junio de 2011

¡Ya he presentado!!!

¡Al fin soy libre!!!, todo un éxito ha sido, ya veremos la nota...

Con esto ha acabado todo, ha sido una grata experiencia y se ha comprobado que soy capaz de hacer algo. Hemos cumplido todos los objetivos. Os dejo mi presentación.

Espero que os guste este blog y gracias a los que tengáis la curiosidad.

domingo, 26 de junio de 2011

Los permisos de Linux

Me han vuelto loco, si no das los permisos necesarios no funciona nada; sin duda me las han hecho pasar canutas...

Solución: poner chmod 777 a todo lo que no funciona, esto soluciona todo.

sábado, 25 de junio de 2011

La aplicación en una máquina virtual

En una máquina virtual sólo debo de tener mi aplicación, las escrituras que deba de hacer irán a un disco externo, tampoco usaré Internet con lo que deberé obtener imágenes y repositorios del dicho disco. En la presentación tendré que hacer esto pero jugando con todas las posibilidades, por el tema del tiempo... Con lo cual al final he decidido que lo que tenga que descargar haré una lectura desde un disco externo y lo que tenga que escribir lo haré a mi máquina virtual, para agilizar..., aun así son 44 minutos...
Situación ideal / situación simplificada

Solución elegida para la presentación
Los tiempos finales dependen de la máquina con que se haga...

Para añadir los repositorios que tenemos en disco, añadiremos la línea deb file:/media/USB2/Repositorio/dists/ en el apartado correspondiente de nuestra aplicación.

martes, 21 de junio de 2011

Presentación

El día 28 será la presentación del proyecto, tal día terminará mi andadura con el proyecto y por fin podréis ver este blog.
Presentación

viernes, 10 de junio de 2011

Software libre

Software libre.

Diagrama de Gantt

Diagrama de Gantt.
Diagrama de recursos.
Hecho con GanttProject.

Listo para imprimir...

A día de hoy, a las 4.45 está todo listo para imprimir. También están las copias de los DVDs a entregar. Si todo va bien presento el 27-28 de junio.

viernes, 27 de mayo de 2011

Vídeo de la aplicación


En este videotutorial podremos ver el funcionamiento de la aplicación.

martes, 24 de mayo de 2011

Añadir nueva funcionalidad a mi aplicación

Debemos poder guardar nuestras selecciones para que podamos volverla a elegir sin perder el tiempo seleccionando de nuevo. También, en ocasiones que no se instalen todas nuestras aplicaciones seleccionadas y después lo arreglamos, si tenemos este fichero nos será más fácil la reinstalación.

Usaremos funciones de ficheros como fputs(), fopen(), fgets() y fclose(); también habrá que añadir algún cuadro de texto para introducir el nombre del fichero.

Veremos además arrays y strings, usando funciones de estos tipos abstractos de datos.

También añadiremos que se cree una carpeta, de nombre aleatorio, para cada usuario. De esta manera permitiremos que varios usuarios usen la aplicación a la vez, como debe de ser; un detalle en el que no caí.
Para hacer esto usaré la función rand() de php ya existente, generando un número aleatorio que será el nombre de la carpeta, tendremos que saber pasar al script correspondiente este nombre de carpeta ($1...). Al usuario le da igual el nombre de la carpeta ya que él simplemente tiene que pinchar un link, generado por nosotros, para descargar su iso.

viernes, 20 de mayo de 2011

Imagenes de la aplicación

Aplicación I.

Aplicación II.
En la primera imagen trato de representar que cada distribución o implementación de Linux viene con unos repositorios oficiales pero podremos añadir los que queramos, así como de otras distribuciones; cada repositorio que añadamos tendrá una colección de paquetes, que podremos añadir.

En la segunda imagen expreso que un usuario elige distribución, paquetes y repositorios para obtener una iso personalizada junto a información de lo que ha hecho.

La iso, que descargara de un link generado por nosotros, la descargará y grabará a un DVD para tener su live personalizada, el objetivo de este proyecto.

sábado, 30 de abril de 2011

log4php

Vamos a hablar de una herramienta que, aunque no uso, es recomendable su uso para la creación de logs (yo los puedo crear de una manera sencilla porque es una aplicación sencilla la que he desarrollado).

Se puede descargar de aquí, como su propio nombre indica es una herramienta para la creación de logs, controlar y depurar nuestros errores.
En este blog podemos ver cómo se ejecuta esta aplicación para que genere nuestros logs.

Existe la misma herramienta para Java, log4j.

viernes, 29 de abril de 2011

Documentación II

En la documentación seguiremos un orden más relacionado con las distribuciones y no con la aplicación, con lo cual seguiremos un esquema diferente al propuesto en la guía anteriormente citada.

El esquema será el siguiente:

  • Anexo I: Plan del proyecto software 
  • Anexo II: Objetivos y alternativas de desarrollo
  • Anexo III: Desarrollo de las distribuciones y pruebas realizadas
  • Anexo IV: Aplicaciones
  • Anexo V: Manual de usuario
  • Bibliografía

Como he dicho daremos más peso al tema de las distribuciones y menos a la aplicación, de la cual sólo hablaremos en el manual de usuario.

jueves, 28 de abril de 2011

Herramientas usadas

Microsoft Word 2007.
GanttProject: http://www.ganttproject.biz/
Blog personal del proyecto: http://distribucioneslinux2011.blogspot.com

Bibliografía

Manuales de usuario y de programación de la shell en Linux: http://es.tldp.org/htmls/manuales.html
Guías prácticas de Unix, comandos básicos y operaciones de comandos: Apuntes de Sistemas Operativos de la carrera, de segundo curso.
Mksquashfs: http://manpages.ubuntu.com/manpages/hardy/man1/mksquashfs.1.html
Cloop-utils: http://manpages.ubuntu.com/manpages/dapper/man1/create_compressed_fs.1.html
Chroot: http://manpages.ubuntu.com/manpages/maverick/es/man2/chroot.2.html
Ayuda del propio Sistema Operativo: man, --help, --h…
Foros y blogs de Ubuntu, Fedora, Knoppix y Debian:
http://meth.nireblog.com/post/2006/12/06/remasterizar-el-live-cd-de-ubuntu
http://forums.fedoraforum.org/showthread.php?t=174916
http://www.linuxquestions.org/questions/linux-general-1/how-to-use-knoppix-as-a-chroot-754883/
http://lists.fedoraproject.org/pipermail/livecd/2008-July/004523.html
http://ubuntuforums.org/showthread.php?t=848693
http://www.linux-magazine.es/issue/36/029-033_CloopLM36.pdf
http://lucas.hispalinux.es/Estandares/fsstnd12.html
http://www.linuxjournal.com/article/7246
http://tuxfiles.wordpress.com/2010/04/25/9-formas-distintas-para-crear-un-linux-personalizado-dependiendo-la-distro/
http://www.alcancelibre.org/staticpages/index.php/como-dpkg
http://hatteras.wordpress.com/2009/01/24/
http://www.taringa.net/posts/linux/5221169/Instalar-paquetes-en-pc_s-sin-Internet-en-Ubuntu.html
http://ce.azc.uam.mx/profesores/oalvarado/linux/remasterDebian.html
Distribuciones relacionadas: http://www.frozentech.com/content/livecd.php
Proyecto ILEX: http://www.proyectoilex.org
Oficina del Software Libre de la ULPGC, Las Palmas de Gran Canarias: http://www.softwarelibre.ulpgc.es/
Página oficial del S.O. libre Debian: http://www.debian.org
El repositorio de aplicaciones libres más grande del mundo: http://sourceforge.net/
Universidad de Burgos: http://www.ubu.es
PHP y Apache: apuntes de Ampliación de Sistemas Operativos de la carrera, asignatura de tercer curso.
Permisos y Apache:
http://www.socinfo.com/ubuntu/apache/permisos
http://exain.wordpress.com/2007/11/24/execute-system-commands-via-php/
Ficheros en PHP: http://www.programacion.com/articulo/trabajando_con_php_y_ficheros_170
Shell_exec() php: http://php.net/manual/es/function.shell-exec.php
Otras funciones PHP: http://php.net/manual/es/
Formularios en PHP:
http://www.webtaller.com/manual-php/formularios_PHP.php
http://phpahora.com.ar/formularios-html-php/formularios-con-textarea/
http://www.openalfa.com/index.php/php/proceso-de-formularios
http://www.uhu.es/sic/servicios/hospedajeweb/minimanual_formularios.pdf
http://www.forosdelweb.com/f18/editar-archivo-txt-online-con-php-textarea-430501/
http://www.htmlcodetutorial.com/help/archive.php/o_t__t_9331__save-html-textarea-to-.txt-file.html
HTML:
http://htmlhelp.com/es/reference/css/color-background/
http://www.cristalab.com/tutoriales/configurar-tu-web-para-usar-utf-8-c42532l/
http://www.mailxmail.com/curso-html-principiantes/formato-html
http://www.jmarshall.com/easy/html/spanish/
http://www.jmarshall.com/easy/html/spanish/
• Ayuda de editores de HTML.
Otros proyectos.
Gracias a la libre información de la Web, a la que contribuimos todos.

jueves, 14 de abril de 2011

Documentación I

La ardua tarea de documentar, voy a tomar como referencia esta guía que me han dejado, ya sabéis, gracias a la libre distribución de información por la red, y yo ayudo a ello.


Basándonos en este documento dividiremos nuestra memoria en dos partes y la segunda parte se dividirá en cinco anexos, con sus correspondientes índices.

Vamos a ello...

miércoles, 13 de abril de 2011

Script de Fedora

#!/bin/bash
#ejecutar poniendo . creaFedora "directorio"
#repositorios: etc/apt/sources.list
echo instalar programas necesarios squash y mkiso
sudo apt-get -y install  mkisofs squashfs-tools lzma
#http://fedoraproject.org/es/
echo descargar iso fedora
sudo wget -o fedora.iso 'http://download.fedoraproject.org/pub/fedora/linux/releases/14/Live/i686/Fedora-14-i686-Live-Desktop.iso'
sudo rm cdlive.iso
echo Montar la iso en /mnt
sudo mount -o loop ./fedora.iso /mnt
echo Copiar los archivos a la carpeta /mylive
sudo cp -dpR /mnt ./mylive/
echo Desmontar la iso
sudo umount /mnt
sudo unsquashfs ./mylive/LiveOS/squashfs.img
sudo mkdir chroot
sudo mount -o loop,rw ./squashfs-root/LiveOS/ext3fs.img ./chroot
#------------------------------------------------------------------------pr1
echo Empezar a realizar las modificaciones
echo descargar paquetes
sudo cp ./scripts/paquetes.download.sh ./chroot/paquetes
sudo cp ./images/fondo-fedora.png ./chroot/usr/share/backgrounds/laughlin/default/standard/laughlin.png
echo ejecuto \chroot
sudo cp /etc/resolv.conf ./chroot/etc
sudo cp /etc/hosts ./chroot/etc
sudo cp ./repositorios/Fedora ./chroot
echo instalar paquetes
cd ./chroot
sudo chroot ./ mount -t devpts none /dev/pts
sudo mount --bind /dev /dev
sudo chroot ./ mount -t proc none /proc
sudo chroot ./ mount -t sysfs none /sys
sudo chroot ./ yum -y install wget
sudo chroot ./ sh ./Fedora
sudo chroot ./ yum -y update
sudo chroot ./ sh ./paquetes
sudo chroot ./ yum -y upgrade
sudo chroot ./ yum -y clean
sudo chroot ./ umount /proc /sys /dev/pts 
sudo umount /dev
cd ..
sudo umount chroot
echo Crear el squashfs
sudo mksquashfs ./squashfs-root ./squashfs.img
sudo mkdir ./build
sudo rsync -av --exclude='squashfs.img' ./mylive ./build
sudo mv ./squashfs.img ./build/mylive/LiveOS
#------------------------------------------------------------------------pr2
echo Hacer la iso:
sudo mkisofs -J -R -o cdlive.iso -no-emul-boot -boot-info-table -b isolinux/isolinux.bin -boot-load-size 4 -boot-info-table -V "Fedora-14-i686-Live-KDE" ./build/mylive/
echo Y ya esta listo...
sudo rm -Rf squashfs-root
sudo rm -Rf chroot
sudo rm -Rf build
sudo rm fedora.iso
sudo rm -Rf mylive

sábado, 9 de abril de 2011

Linux cumple hoy 20 años

Se cumplen 20 años de la creación del mayor distribuidor de software libre del mundo, Linux. Su éxito en la actualidad es total: es utilizado en superordenadores, es la base del sistema operativo Android, es un actor importante en el 'cloud computing' y algunos organismos públicos ya han puesto en marcha soluciones informáticas basadas en Linux.

Leer más...

viernes, 8 de abril de 2011

Reconocer eñes y tildes en HTML

La línea mágica:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

Ejemplo:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=
UTF-8">
<title>Insert title here</title>
</head>
<body>
...
</body>
</html>

miércoles, 6 de abril de 2011

Obtener la hora en php

Sólo tenemos que poner esto en nuestro código:

$hora = getdate(time());
print( $hora["hours"] . ":" . $hora["minutes"] . ":" . $hora["seconds"] );

Así de sencillo...

También hay más opciones.

lunes, 4 de abril de 2011

Añadir repositorios

Repositorios en Fedora:
Tienen el siguiente formato, cada uno es un archivo, ejemplo:
Crear el archivo /etc/yum.repos.d/fedora-firefox4.repo con el siguiente contenido:
[fedora-firefox4]
name=Firefox 4 Web Browser
baseurl=http://repos.fedorapeople.org/repos/spot/firefox4/fedora-$releasever/$basearch/
enabled=1
gpgcheck=0
Una posible solución es bajarnos directamente el archivo de texto ya creado y ponerlo en el lugar correspondiente:
wget 'http://repos.fedorapeople.org/repos/spot/firefox4/fedora-firefox4.repo' -O etc/yum.repos.d/fedora-firefox4.repo
**previamente haremos un yum –y install wget
Y luego activarlo:
yum –y update
Para luego instalarlo:
yum install firefox4

Repositorios en Debian:
Es añadir la línea  deb http://xxx stable non-free a nuestro /etc/apt/sources.list, y luego hacer sudo apt-get update.

Empezando a cambiar Fedora

Ya tengo el script, es la única distribución que me queda por probar, a ver como sale.

Cambios de esta distribución: usa la herramienta de empaquetado YUM, no APT; tiene paquetes RPM, no deb y sus repositorios están en /etc/yum.repos.d/xxx.repo.
Teniendo esto en cuenta, no debería de tener problemas.

domingo, 3 de abril de 2011

Script de Debian Lenny

#!/bin/bash
#debian lenny 5
#ejecutar  con paquetes.downlod en el directorio
#ejecutar poniendo . creaDebian.sh
#repositorios: etc/apt/sources.list
echo instalar programas necesarios squash y mkiso
sudo apt-get -y install live-helper squashfs-tools dpkg-dev
#http://ce.azc.uam.mx/profesores/oalvarado/linux/remasterDebian.html
#http://live.debian.net/cdimage/release/current-oldstable/i386/iso-cd/
sudo rm cdlive.iso
echo descargar iso 
sudo wget -o debian.iso 'http://live.debian.net/cdimage/release/current-oldstable/i386/iso-cd/debian-live-508-i386-gnome-desktop.iso'
echo Montar la iso en /mnt
sudo mount -o loop ./debian.iso /mnt
echo Copiar los archivos a la carpeta /mylive
sudo cp -dpR /mnt ./mylive/
echo Desmontar la iso
sudo umount /mnt
echo Montar el fichero filesystem.squashfs
sudo unsquashfs ./mylive/live/filesystem.squashfs
#----------------------------------------------------pr1
echo Empezar a realizar las modificaciones
sudo cp ./scripts/paquetes.download.sh ./squashfs-root/paquetes #copio para utilizar posteriormente
sudo cp ./images/background-color.png ./squashfs-root/usr/share/images/desktop-base/moreblue-orbit-wallpaper.svg #cambio fondo de escrritorio y splash
echo ejecuto \chroot
sudo cp /etc/resolv.conf ./squashfs-root/etc
sudo cp /etc/hosts ./squashfs-root/etc
sudo cp ./repositorios/Debian ./squashfs-root/etc/apt/sources.list
echo instalar paquete
cd ./squashfs-root
sudo chroot ./ LANG=es_ES.utf8
sudo mount --bind /dev /dev
sudo chroot ./ mount -t proc none /proc
sudo chroot ./ mount -t sysfs none /sys
sudo chroot ./ mount -t devpts none /dev/pts
sudo chroot ./ apt-get -y update #actualizo repositorios
sudo chroot ./ sh ./paquetes
sudo chroot ./ apt-get -y upgrade
sudo chroot ./ update-java-alternatives -s java-6-sunecho 'JAVA_HOME="/usr/lib/jvm/java-6-sun"' | tee -a /etc/environment
sudo chroot ./ umount /proc /sys /dev/pts 
sudo umount /dev
cd ..
#echo Crear el squashfs
echo Crear el squashfs
sudo rm -f ./mylive/live/filesystem.squashfs
sudo mksquashfs ./squashfs-root ./mylive/live/filesystem.squashfs
#------------------------------------------------------------------pr2
echo Hacer la iso:
sudo mkisofs -pad -r -V "Debian Live" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o cdlive.iso ./mylive
echo Y ya esta listo...
sudo rm -Rf squashfs-root
sudo rm -Rf mylive
sudo rm ./scripts/paquetes.download.sh
sudo rm ./debian.iso

El cd live da error al bootear, no se por qué...

Prueba: Ubuntu Maverick


Prueba 2 de Ubuntu.

Dado que la primera no anoté el tiempo, voy a repetir otra prueba.

value 1 = sudo apt-get -y install gcc #gcc
value 2 = sudo apt-get -y install sun-java6-jdk #java
value 3 = sudo apt-get -y install dia #dia
value 4 = sudo apt-get --force-yes -y install skype

Tiempo: Inicio: 20,18 h Fin: 20,37 h *Total: 34 minutos
Tamaño: Inicio: 693 Megas Fin: 768 Megas

Vemos que el sistema se ha instalado correctamente, por lo tanto el resultado es satisfactorio.

Día de pruebas: Knoppix y Debian Lenny

Prueba de Knoppix.

Podemos darle el idioma español modificando en /boot/isolinux.cfg lang=en por lang=es, o poniendo al inicio de booteo lang=es.
Dentro de una media de tiempo de 40 minutos, es la distribución que más tarda, 30 minutos más.
La distribución sí que se ha cambiado a español, con lo expuesto anteriormente.

value 1 = sudo apt-get -y install gcc #gcc
value 2 = sudo apt-get -y install dia #dia
value 3 = sudo apt-get -y install samba #samba
value 4 = sudo apt-get --force-yes-y install skype #skype ->error, falta espacio.

Tiempo: Inicio: 18,06 h Fin: 18,36 Total: 30 minutos
Tamaño: Inicio: 745 Megas Fin: 807 Megas
Se ha instalado todo menos Skype, faltaba un espacio en el comando de instalación.
Luego lo he podido instalar a mano con sudo apt-get install skype, con lo cual si que hacemos lo esperado.


Prueba de Debian Lenny.

value 1 = sudo apt-get -y install gcc #gcc
value 2 = sudo apt-get -y install openjdk-6-jdk openjdk-6-jre #java
value 3 = sudo apt-get -y install gimp #gimp
value 4 = sudo apt-get --force-yes -y install skype #skype

Tiempo: Inicio: 18,50 h Fin: 19,07 h *Total: 17 minutos
Tamaño: Inicio: 693 Megas Fin: 861 Megas

Podemos ver que se realizan correctamente las instalaciones pertinentes, pero al bootear el cd da error y no logro saber por qué, siguiendo todos los pasos pertinentes, tiene que ser un parámetro del mkisofs porque lo demás es igual en todas las distribuciones, esperemos en un futuro encontrar solución.

Entrega de proyectos

sábado, 2 de abril de 2011

Script de Knoppix

#!/bin/bash
#ejecutar desde directorio personal /home/"directorio", con paquetes.download en dicho directorio
#ejecutar poniendo . creaKnoppix "directorio"
#repositorios: etc/apt/sources.list
sudo rm -Rf cdlive.iso
sudo apt-get -y install cloop-utils mkisofs
echo descargar iso de Knoppix
sudo wget -o KNOPPIX.iso 'ftp://ftp.uni-kl.de/pub/linux/knoppix/KNOPPIX_V6.4.3CD-2010-12-20-EN.iso'
echo Montar la iso en /mnt
sudo mount -o loop ./KNOPPIX.iso /mnt
echo Copiar los archivos a la carpeta /mylive
sudo cp -dpR /mnt ./mylive/
echo Desmontar la iso
sudo umount /mnt
sudo touch cloop.iso #creo cloop.iso para hacer la extraccion...
echo extraer sistema de ficheros...
sudo extract_compressed_fs ./mylive/KNOPPIX/KNOPPIX ./cloop.iso
echo Montar la cloop.iso en /mnt
sudo mount -o loop cloop.iso /mnt
echo Copiar los archivos a la carpeta /mycloop
sudo cp -dpR /mnt ./mycloop/
echo Desmontar la iso
sudo umount /mnt
#----------------------------------------------------pr1
echo Empezar a realizar las modificaciones
sudo cp ./scripts/paquetes.download.sh ./mycloop/paquetes #copio para utilizar posteriormente
sudo cp ./images/background.png ./mylive/KNOPPIX/background.png
echo ejecuto \chroot
sudo cp /etc/resolv.conf ./mycloop/etc
sudo cp /etc/hosts ./mycloop/etc
sudo cp ./repositorios/ubuntu ./squashfs-root/etc/apt/sources.list
echo instalar paquetes
cd ./mycloop
sudo mount --bind /dev /dev
sudo chroot ./ mount -t proc none /proc
sudo chroot ./ mount -t sysfs none /sys
sudo chroot ./ mount -t devpts none /dev/pts
sudo chroot ./ apt-get -y update #actualizo repositorios
sudo chroot ./ sh ./paquetes #instala paquetes
sudo chroot ./ apt-get -y upgrade
sudo chroot ./ apt-get -y clean
sudo chroot ./ umount /proc /sys /dev/pts 
sudo umount /dev
cd ..
#--------------------------------------------------------------pr2
echo Crear el Cloop
sudo rm ./mylive/KNOPPIX/KNOPPIX
sudo rm cloop.iso
sudo mkisofs -o cloop.iso -R -U -V "KNOPPIX.net filesystem" -publisher "KNOPPIX www.knoppix.net" -hide-rr-moved -cache-inodes -no-bak -pad ./mycloop
sudo create_compressed_fs cloop.iso ./mylive/KNOPPIX/KNOPPIX
echo crear el cd
sudo  mkisofs -pad -l -r -J -v -V "KNOPPIX" -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -hide-rr-moved -o ./cdlive.iso ./mylive
sudo rm -Rf mycloop
sudo rm -Rf mylive
sudo rm -f cloop.iso
sudo rm -Rf KNOPPIX.iso

'Boot error' con Debian Lenny

Al hacer el mismo proceso que con Ubuntu, esta distribución me da error al bootear, no se por qué; voy a continuar con Knoppix a ver que tal...

viernes, 1 de abril de 2011

Sistemas Cloop y Squashfs

Existen dos opciones, el sistema Cloop y el sistema Squashfs. Ambos permiten tener un sistema de ficheros comprimido en un dispositivo de bloques de sólo lectura, y acceder a él de forma transparente.
Ambos tienen el mismo propósito, pero se diferencian en su funcionamiento.
Hay que señalar que el sistema de ficheros comprimido que proporcionan es de sólo lectura, y que una vez que se ha creado, no es posible modificarlo, dado que emplean un modo particular de agrupar los bloques. 

Agregar nuevas distribuciones a la aplicación.

Primero tendremos que hacer un primer script que es el que se encarga de bajar la imagen original, descomprimirla, ejecutar chroot y finalmente hacer nuestro cd bootable con mkisofs. Lo guardaremos en la carpeta scripts de la aplicación.
Este script será el encargado de ejecutar todos los scripts que generemos, habrá uno de paquetes (con comandos para su correcta instalación) específico de cada distro en esta misma carpeta.
Luego también llamará al fichero con los repositorios, en la carpeta repositorios, un fichero por distro, cada fichero será el que trae cada distro por defecto (sources.list) más lo que hayamos añadido.

Esta tarea se verá completada si añadimos el “pedazo” de código a nuestra aplicación: index.php, selección.php, componer.php, anadir-repo.php y anadir-paquete.php.

Y no nos olvidemos de dar los permisos adecuados, vital.

Script para personalizar Ubuntu

Esta es la parte sucia del proyecto, ya que no se ve. Pero sin ella nuestra aplicación sería inútil.


#!/bin/bash
#ubuntu maverick
#ejecutar paquetes.downlod en el directorio
#ejecutar poniendo . creaUbuntu 
#repositorios: etc/apt/sources.list
echo instalar programas necesarios squash y mkiso
sudo apt-get -y install mkisofs squashfs-tools
#http://www.ubuntu.com/desktop/get-ubuntu/download
echo descargar iso ubuntu
#sudo wget -O ubuntu.iso 'http://ftp.dat.etsit.upm.es/ubuntu-releases/maverick/ubuntu-10.10-desktop-i386.iso'
echo Montar la iso en /mnt
sudo mount -o loop ./ubuntu.iso /mnt
echo Copiar los archivos a la carpeta /mylive
sudo cp -dpR /mnt ./mylive/
echo Desmontar la iso
sudo umount /mnt
echo Montar el fichero filesystem.squashfs
sudo unsquashfs ./mylive/casper/filesystem.squashfs
sudo cp ./images/blankUbuntu.pcx ./mylive/isolinux/blank.pcx
#----------------------------------------------------pr1
echo Empezar a realizar las modificaciones
sudo cp ./scripts/paquetes.download.sh ./squashfs-root/paquetes #copio para utilizar posteriormente
sudo cp ./images/ubuntu-splash.png ./squashfs-root
sudo cp ./images/warty-final-ubuntu.png ./squashfs-root
echo ejecuto \chroot
sudo cp /etc/resolv.conf ./squashfs-root/etc #habilito configuracion de red
sudo cp /etc/hosts ./squashfs-root/etc
sudo cp ./repositorios/Ubuntu ./squashfs-root/etc/apt/sources.list 
echo instalar paquetes
cd ./squashfs-root
#cambio fondo de escrritorio
sudo chroot ./ cp ./warty-final-ubuntu.png /usr/share/backgrounds/
sudo chroot ./ echo "proc /proc proc defaults 0 0">>/etc/fstab
sudo mount --bind /dev /dev
sudo chroot ./ mount -t proc none /proc
sudo chroot ./ mount -t sysfs none /sys
sudo chroot ./ mount -t devpts none /dev/pts
sudo chroot ./ apt-get -y install build-essential gdb
sudo chroot ./ add-apt-repository ppa:sun-java-community-team/sun-java6
sudo chroot ./ add-apt-repository ppa:n-muench/programs-ppa
sudo chroot ./ apt-get -y update #actualizo repositorios
sudo chroot ./ sh ./paquetes #instala paquetes
#sudo chroot ./ apt-get -y upgrade
sudo chroot ./ update-alternatives --config java
sudo chroot ./ apt-get -y clean
sudo chroot ./ umount /proc /sys /dev/pts 
sudo umount /dev
cd ..
echo Crear el squashfs
sudo rm -f ./mylive/casper/filesystem.squashfs
sudo mksquashfs ./squashfs-root ./mylive/casper/filesystem.squashfs
#------------------------------------------------------------------pr2
echo Hacer la iso:
sudo mkisofs -J -R -o cdlive.iso -no-emul-boot -boot-info-table -b isolinux/isolinux.bin ./mylive/
echo Y ya esta listo...
sudo rm -Rf squashfs-root
sudo rm -Rf mylive
sudo rm filesystem.squashfs
sudo rm ./scripts/paquetes.download.sh
sudo rm ./ubuntu.iso

Como veis la iso final se llama cdlive. El script paqutes.download.sh contiene comandos para instalar los paquetes y esos paquetes son la selección de otros, en otro script.

jueves, 31 de marzo de 2011

Agregar paquetes

Si hemos agregado un repositorio será porque queremos unos paquetes determinados, para eso usaremos anadir-paquete.php, donde pondremos el nombre del paquete en el lugar correspondiente, la linea que se genere al dar guardar se reflejará en nuestro script de paquetes,

Agregar repositorios de terceros II

Existen paquetes que no se encuentran en los repositorios oficiales de nuestra distribución, para poder instalar estos paquetes mediante la herramienta de gestión de cada distribución, debemos de añadir el repositorio al sources.list. Este proceso lo podremos hacer accediendo o modificando ese archivo durante el proceso de chroot, antes de instalar nada, claro. Después de modificar este archivo debemos de actualizar las fuentes con un update, para que tenga efecto y sepa donde buscar nuestro sistema.
En concreto, en la aplicación tenemos la carpeta repositorios con los repositorios de cada distribución disponible, en los cuales iremos agregando líneas correspondientes a repositorios necesarios; posteriormente ese archivo sustituirá al sources.list de la distro modificada para que tengamos nuestros repositorios.

Cada fichero consta de: repositorios oficiales + repositorios que añado.

Hay otra forma de añadir repositorios, y es: add-apt-repository ppa:
Por ejemplo: add-apt-repository ppa:sun-java-community-team/sun-java6

martes, 29 de marzo de 2011

Agregar repositorios de terceros I

Se tiene que poder en mi aplicación meter repositorios de terceros, a mano, esto lo haré con un típico cuadro en blanco (donde escribiremos la dirección) y de ahí, al dar aceptar, se añada esa línea a un archivo de texto; posteriormente ese archivo de texto (con un histórico de enlaces, ya que nuca se borra) se añadirá al sources.list de la distro.

Usaremos algo así:




Y lo que escribamos aquí irá a un archivo de texto...

lunes, 21 de marzo de 2011

Remasterizando Fedora

La idea de solucionar algunas cosas diferentes las he sacado de este foro. Continuaré mis tareas...

domingo, 20 de marzo de 2011

Ubuntu finalizado

Ya puedo dar por finalizada la creación de la live personalizada de Ubuntu (maverick).

Splash personalizado.
Ahora voy a hacer la de Debian (lenny).

viernes, 18 de marzo de 2011

Ya soy capaz de instalar paquetes...

¡Sí!!, ya instalo paquetes en Ubuntu utilizando mi aplicación. He instalado Dia, Gimp y Vim, para probar.

Y es que tenía un problema, no se me ejecutaba un cacho de código, he hecho dos funciones diferentes.

También he conseguido modificar el fondo de pantalla y el fondo de inicio con motivos de la UBU, se puede ver aquí cómo lo he hecho.

lunes, 14 de marzo de 2011

Ejecutar usando sudo con exec();

El usuario que usa Apache en Linux es www-data, entonces necesitaremos decir al sistema que este usuario puede ejecutar sudo, incluo le podemos especificar los comandos.
Esto lo haremos en el archivo /etc/sudoers, deberemos añadir al final esta línea:

www-data ALL=NOPASSWD: ALL

Y ya podremos ejecutar un script con comandos sudo, en mi caso:
shell_exec("./scripts/creaUbuntu.sh");


La idea la he sacado, tras muchas vueltas, de aquí.

Os dejo como queda mi /etc/sudoers.

También deberemos de dar permisos a todos los scripts que se ejecutan y no son creados por www-data.

domingo, 13 de marzo de 2011

Servidor virtual con Apache

Es una tarea recomendable tomarse su tiempo en hacer esto, ya que nos agilizará el trabajo... Yo, la verdad, desconocía esto, tenía algunas nociones sobre Apache, pero desconocía esta opción.

Gracias a quenerapu.com.

componer.php

Esta última página solo contará con código php para realizar los scripts y las ejecuciones necesarias. A lo sumo puede sacar un mensaje de proceso exitoso o un error, indicando el final del proceso.

He pensado que se puede colocar un enlace para descargar la iso final.

Creando Knoppix

Este usa el sistema Cloop, también usa APT, y me lo descargaré de su página.

Con lo cual, trabajaré en un principio con:
  • Ubuntu.
  • Debian.
  • Knoppix.
  • Fedora.

Modificaciones en la aplicación: index.php

Antes contábamos con index.html pero pienso que es mejor que sea php, nos ahorraremos hacer páginas y lo solucionaremos todo con unos if ya que index.php será un formulario también.

Un formulario de tipo:
Ubuntu

Tal

Y tal

Pascual

Los se llaman radio.

Al dar enviar iremos a selecionar.php, donde seleccionaremos nuestros paquetes.

sábado, 12 de marzo de 2011

Creando un formulario en PHP para elegir los paquetes a instalar: seleccion.php

Un formulario a base de checkbox que posteriormente dando a un botón mande la información que queramos y cree el script.

Añadir componente 01

Añadir componente 02

Añadir componente 03

Añadir componente 04



Algo así nos quedará, al dar enviar iremos a una página, componer.php, la cual nos generará lo que deseamos.

jueves, 10 de marzo de 2011

apt-get -h

apt 0.8.3ubuntu7 para i386 compilado en Oct  5 2010 14:07:36
Uso: apt-get [opciones] orden
     apt-get [opciones] install|remove paq1 [paq2 ...]
     apt-get [opciones] source paq1 [paq2 ...]
apt-get es una sencilla interfaz de línea de órdenes para descargar e
instalar paquetes. Los comandos más frecuentemente usados son update
e install.
Comandos:
   update - Actualizar la lista de paquetes
   upgrade - Realizar una actualización
   install - Instalar nuevos paquetes (libc6 es un paquete, no libc6.deb)
   remove - Desinstalar paquetes
   autoremove - Desinstalar automáticamente paquetes en desuso
   purge - Desinstalar paquetes y sus archivos de configuración
   source - Descargar las fuentes de paquetes
   build-dep - Configurar la dependencias de generación de paquetes fuente
   dist-upgrade - Actualizar la distribución, ver apt-get(8)
   dselect-upgrade - Seguir las selecciones de dselect
   clean - Borrar los archivos descargados
   autoclean - Borrar los antiguos archivos descargados
   check - Comprobar que no existen dependencias incumplidas
   markauto - Marca los paquetes indicados como instalados automáticamente
   unmarkauto - Marca los paquetes indicados como instalados manualmente
Opciones:
  -h  Este texto de ayuda.
  -q  Salida para registros - sin indicador de progreso
  -qq Sin salida salvo que haya errores
  -d  Sólo descargar - No se instalan ni desempaquetan archivos
  -s  No actúa. Realiza una simulación
  -y  Asume como Sí la respuesta a todas las preguntas y no pregunta nada
  -f  Intenta corregir un sistema las dependencias incumplidas
  -m  Intenta continuar aunque haya archivos ilocalizables
  -u  Muestra también la lista de paquetes actualizados
  -b  Construye el paquete fuente después de descargarlo
  -V  Muestra los números de versión en la forma extendida
  -c=? Leer este archivo de configuración
  -o=? Establecer alguna opción de configuración, ej. -o dir::cache=/tmp
Ver las páginas del manual de apt-get(8), sources.list(5) y apt.conf(5)
para más información y opciones.
                       Este APT tiene poderes de Super Vaca.


A veces en Linux está lo que buscamos, sólo hay que mirar la ayuda...

miércoles, 9 de marzo de 2011

Repositorios en Ubuntu

Un repositorio es un lugar, ordenado, donde encontraremos el software necesario para una distribución, y para Ubuntu tenemos esto.

Nuestro /etc/sources.list tendrá las rutas a estos repositorios.
Después haremos apt-get install <paquete>, y ese paquete estará en el repositorio.

qemu

Una herramienta muy util que nos permitirá ejecutar nuestra live desde la iso, o el binario que sea.

sudo apt-get install qemu
qemu -cdrom imagen.iso
o
qemu - hda imagen.img

Así nos ahorraremos unos cuantos CD'S...

Creando Ubuntu, Debian y Fedora

Usan el sistema Squash, nos descargaremos la iso y accederemos al squashfs para usar chroot.

El Squash es un sistema de compresión (para un sistema de archivos) que nos permite reducir el tamaño para grabar un CD.

Ubuntu lo descargo desde su página oficial y Debian lo descargo con live helper, ambos usan APT.

Fedora también lo descargo de su página, y tendré en cuenta que usa YUM como herramienta de gestión de paquetes.

Haciendo la lista de los paquetes a instalar

Ya vimos algunas soluciones, creo que la más óptima a usar es el comando apt-get install, ya que te puedes olvidar de las dependencias de cada paquete y no te vuelves loco; si no te empieza a fallar y no terminas nunca.

martes, 8 de marzo de 2011

chroot

¿Qué es chroot??

Es un comando, en los sistemas Unix, que nos permite cambiar la raíz / del sistema, creando una jaula, en la cual podremos instalar, actualizar o lo que queramos hacer sobre ese sistema de ficheros. Aquí hay más info.

Este comando me daba un fallo, no fallo, no hacía lo que quería, aquí hayé la solución.


Uso: chroot NEWROOT [ORDEN [ARG]...]
  o:  chroot OPCIÓN
Ejecuta ORDEN siendo NUEVO_RAÍZ el directorio raíz.
  --userspec=USER:GROUP  especifica usuario y grupo (ID o nombre) a usar
  --groups=G_LIST        especifica grupos suplementarios como g1,g2,..,gN
      --help     muestra esta ayuda y finaliza
      --version  informa de la versión y finaliza
Si no se especifica ninguna orden, ejecuta «${SHELL} -i»
(predeterminado: /bin/sh).

miércoles, 2 de marzo de 2011

Software que usaré para la aplicación


Eclipse.
Kompozer.
...más un server (Apache), el editor de Ubuntu para los scripts, Gedit y Gimp para tratar imágenes.

Debemos saber de que todo lo que usaremos en este proyecto nunca tendrá una licencia comercial.

domingo, 27 de febrero de 2011

Empezando a programar la aplicación

La voy a hacer en PHP y HTML usando un servidor Apache y de IDE Eclipse, va a ser un reto, no se PHP ni HTML, pero va a ser interesante por que esto me va a dar experiencia en aplicaciones web y va a dar dinamismo al proyecto, dando la posibilidad de que esté en una plataforma online.

La aplicación va a constar, fundamentalmente, de dos pantallas, una primera en HTML y una segunda en PHP. En la primera elegiremos la distribución y en la segunda los paquetes (sabiendo que hay varios tipos de paquetes).

domingo, 6 de febrero de 2011

Planificación del proyecto

Ahora que sabemos mejor lo que tenemos por delante, mi planificación es la siguiente:

  1. Queremos ser capaces de personalizar versiones live de Linux:  usaremos scripts de Linux, estructurándolos y con los comandos adecuados que al ejecutar realicen las tareas esperadas.
  2. Pruebas para probar nuestros scripts: en la consola de Linux se probarán uno a uno cada comando esperando que tenga la salida que espero.
  3. Diseño e implementación de la aplicación: se implementará en PHP las diferentes funcionalidades requeridas, usando también HTML, para que al final tengamos una aplicación completamente funcional para el usuario.
  4. Pruebas de la aplicación: comprobaremos que la aplicación hace lo que se ha especificado, puede dar lugar a hacer posibles mejoras, ampliando la aplicación.
  5. Documentar: cada etapa llevará añadida la tarea de documentar lo que se hace.

Hay que ser capaz de desenvolverse bien en lenguaje scrpting de Linux, lo cual exige el conocimiento de comandos de este sistema, órdenes de control de flujo y tratamiento de ficheros.
En la implementación de la aplicación en PHP habrá que saber manejar diferentes estructuras de datos (arrays, ficheros de texto, cadenas…), blucles para realizar diferentes tareas y deberemos saber accionar scripts con funciones de php.
Sobre HTML deberemos saber realizar formularios y conocer las diferentes etiquetas del lenguaje.
En lo relacionado al tiempo lo más pesado serán las pruebas junto a la realización de scripts.