Remasterizar
De WikiNux
| | Articulo sin terminar se pide colaboración para la redacción y corrección de erratas |
Estos pasos resumidos son tomados de Fundamentos de VENENUX GNU/Linux libro aun no publicado por Víctor Díaz.
Preparando el ambiente de trabajo
Para comenzar tenemos que tener habilitados los módulos aufs y squashfs. La manera más fácil de verificar que tenemos estos módulos habilitados sería listando los módulos que están montados en nuestro sistema:
lsmod | grep aufs
lsmod | grep squashfs
En caso de no tener respuesta en el prompt de la shell tendremos que montar los módulos
root@vitronic:~# modprobe aufs root@vitronic:~# lsmod | grep aufs aufs 158756 0 exportfs 8320 1 aufs root@vitronic:~# modprobe squashfs root@vitronic:~# lsmod | grep squashfs squashfs 41864 0
Hay que recordar que estos módulos tenemos que compilarlos previamente para nuestro kernel, en todo caso, para no complicarse mucho la vida, sugiero que comiencen la remasterización desde una instalación previa de VENENUX GNU/Linux, ya que los mismos forman parte del kernel del sistema.
Por último, crearemos el sistema de directorios para comenzar a trabajar en la remasterización de VENENUX.
cd / mkdir REMASTER cd REMASTER mkdir fuentes mkdir remaster mkdir venenux mkdir destino
Copiando archivos necesarios
Para comenzar, copiaremos todo el contenido de la ISO de VENENUX. Podrías tomarla desde un disco ya gradado con VENENUX o directamente desde la ISO bajada desde el portal, ambos métodos son descritos a continuación:
En caso de tener el disco ya grabado, se tiene que montar:
mount /dev/cdrom /cdrom -t iso9660
En caso de tener la ISO guardada en el disco duro:
mount /home/tu_usuario/ruta_a_la_iso/venenux-dvd-0.8-rc3.iso /cdrom -o loop -t iso9660
Con esto montas el contenido de la ISO/DVD/CD en el directorio /cdrom para poder tener acceso a los datos contenidos en él.
Luego tendremos que copiar el contenido de /cdrom a un directorio con permisos de lectura/escritura
cd /cdrom
cp -Rp autorun.inf boot cdrom.ico index.html LEEME.txt LICENCIA md5sums notas venenux /REMASTER/fuentes/
Montando el Sistema Base
El archivo principal a modificar en una remasterización de VENENUX es el archivo venenux.vnx. Este archivo es un sistema raíz completo, comprimido con el sistema de ficheros squashfs, por lo tanto, debemos montarlo como cualquier dispositivo de almacenamiento de datos una vez copiados todos los ficheros en el directorio /REMASTER/fuentes
cd /REMASTER
root@vitronic:/REMASTER# pwd /REMASTER root@vitronic:/REMASTER#
mount fuentes/venenux/venenux.vnx venenux/ -t squashfs -o loop
cd venenux
root@vitronic:/REMASTER/venenux# pwd /REMASTER/venenux root@vitronic:/REMASTER/venenux#
cp -Rp bin boot cdrom dev etc home initrd.img lib media mnt opt proc root sbin selinux srv sys tmp usr var vmlinuz ../destino
Luego de la copia efectiva de todo el contenido del directorio /REMASTER/venenux procedemos a desmontar venenux.vnx y luego el cdrom/ISO
umount /REMASTER/fuentes/venenux/venenux.vnx
en el caso de haber montado un CD/DVD grabado
umount /dev/cdrom
en el caso de haber montado una imagen ISO
umount /home/tu_usuario/ruta_a_la_iso/venenux-dvd-0.8-rc3.iso
Remasterizando VENENUX
La remasterización consistirá en añadir, quitar o configurar lo que necesites en el sistema base que tenemos en el directorio /REMASTER/destino. Para esto, haremos uso de chroot, que no es más que una manera de trasladarnos a una raíz que no es la nuestra. En efecto, sería como entrar a otra instalación de VENENUX que estaría en /REMASTER/destino:
cd / mount --bind /dev /REMASTER/destino/dev
Luego tienes que configurar la red:
cp -Rp /etc/network/interfaces /REMASTER/destino/etc/network/interfaces
Opcionalmente, si se quiere levantar un entorno gráfico, se tiene que configurar la tarjeta de vídeo. Copiar los archivos del sistema bastará:
cp -Rp /etc/X11/xorg.conf /REMASTER/destino/etc/X11/xorg.conf
chroot /REMASTER/destino
mount proc -t proc /proc
mount sys /sys -t sysfs
mount devpts /dev/pts -t devpts
Para levantar la red:
ifup ethx
Donde la x representa el número de la tarjeta de red (eth1 | eth2 | eth3).
Para saber cuál es tu tarjeta de red:
ifconfig | grep eth
Lo que mostrará un mensaje como el siguiente:
root@vitronic:/# ifconfig | grep eth eth1 Link encap:Ethernet HWaddr 00:16:ec:e2:93:98
Con esto ya tenemos los dispositivos creados por udev disponibles en /dev, también el sistema de ficheros sysfs, el pseudosistema de ficheros /proc, con el cual se obtiene información del estado del sistema, y por último, hemos montado /dev/pts para poder tener acceso a los pseudoterminales PTYs. Para añadir o quitar programas se usa preferiblemente el gestor de paquetes aptitude, aunque también podrías usar apt. Para arrancar el ambiente gráfico y revisar los cambios puedes usar:
startx
o en su lugar
/etc/init.d/kdm start
Desmontando el Sistema Base
Si has instalado algún paquete tendrás que limpiar los temporales de apt:
apt-get clean
Luego de haber modificado, instalado/desinstalado lo que necesitemos, procederemos a salir del ambiente chroot, pero antes debemos desmontar todo lo que hemos montado en él, de lo contrario, no será posible desmontarlo.
umount /proc
umount /sys
umount /dev/pts
Y por último:
exit
Limpiando el Sistema Base
Antes de terminar tenemos que limpiar toda la basura que hemos dejado en el entorno chroot. Limpiaremos los siguientes directorios:
/REMASTER/destino/var/cache/ /REMASTER/destino/var/log/ /REMASTER/destino/var/mail/ /REMASTER/destino/var/spool/
Un pequeño scrip que hace todo esto de forma automática es este:
#!/bin/bash
REMASTER=/REMASTER/destino
rm -rf $REMASTER/etc/network/run/ifstate
rm -rf $REMASTER/destino/etc/network/interfaces
rm -rf $REMASTER/etc/X11/xorg.conf
find "$REMASTER/var/cache/" \
"$REMASTER/var/log/" \
-name \*\\.gz \
-o -name \*\\.bz2 \
-o -name \*\\.[0-9][0-9]? \
-exec rm -f {} \;
find "$REMASTER/var/log/" \
"$REMASTER/var/mail/" \
"$REMASTER/var/spool/" \
-type f \
-size +0 \
-exec cp /dev/null '{}' \;
Comprimiendo venenux.vnx
Este paso es muy sencillo realmente. Para comprimir usaremos mksquashfs con el modulo squashfs ya montado en el kernel:
cd / mkdir -p /REMASTER/venenux/venenux mksquashfs /REMASTER/destino /REMASTER/venenux/venenux/venenux.vnx -b 262144
Cambiando el kernel
Conociendo el procedimiento
Lo primero es montar el CD/DVD de VENENUX
root@vitronic:~#cd / root@vitronic:~#mount /dev/cdrom /media/cdrom -t iso9660 root@vitronic:~#mkdir -p /REMASTER/initrd root@vitronic:~#cp /media/cdrom/boot/initrd.img-2.6.31.4-venenux-libre /REMASTER/initrd/ root@vitronic:~#cd /REMASTER/initrd/ root@vitronic:~#gzip -dc initrd.img-2.6.31.4-venenux-libre | cpio -id root@vitronic:~#rm initrd.img-2.6.31.4-venenux-libre
Esta operación nos dejara el siguiente árbol de directorios:
root@vitronic:~#ls -vlaF total 40 drwxr-xr-x 8 root root 4096 jun 19 23:11 ./ drwxr-xr-x 7 root root 4096 jun 19 23:01 ../ drwxr-xr-x 2 root root 4096 jun 19 23:02 bin/ drwxr-xr-x 3 root root 4096 jun 19 23:01 conf/ drwxr-xr-x 6 root root 4096 jun 19 23:02 etc/ -rwxr-xr-x 1 root root 4833 jun 19 23:02 init* drwxr-xr-x 5 root root 4096 jun 19 23:02 lib/ drwxr-xr-x 2 root root 4096 jun 19 23:02 sbin/ drwxr-xr-x 8 root root 4096 jun 19 23:01 scripts/
Se puede analizar y modificar dos scripts que son de suma importancia
/REMASTER/initrd/init /REMASTER/initrd/init/scripts/fll
El primero es el script de inicio de sistema y el segundo es el script de inicio en modo autonomo
luego de hacer los cambios correspondientes proceda a comprimir nuevamente la imagen del kernel
root@vitronic:~#pwd /REMASTER/initrd/ root@vitronic:~#find ./ | cpio -H newc -o > /REMASTER/venenux/boot/initrd.img-2.6.31.4-venenux-libre-new root@vitronic:~#gzip initrd.img-2.6.31.4-venenux-libre-new root@vitronic:~#mv initrd.img-2.6.31.4-venenux-libre.gz initrd.img-2.6.31.4-venenux-libre
con esto has modificado el comportamiento del inicio del live CD/DVD de VENENUX pero no has cambiado el kernel veamos un ejempoo practico de como seria el reemplazo o actualización de un nuevo núcleo
Cambiando el nombre a una nueva distro
Cambiando la imagen del grub
Creando la ISO
Una vez creado el archivo venenux.vnx, que en efecto es nuestro sistema comprimido en el sistema de ficheros squashfs, copiaremos el resto de archivos al directorio /REMASTER/venenux/ para proceder a la creación de la imagen ISO:
cd /REMASTER/fuentes/ cp -Rp autorun.inf boot cdrom.ico index.html LEEME.txt LICENCIA notas /REMASTER/venenux
Luego tenemos que hacer la suma md5sum correspondiente para poder revisar la integridad desde el grub:
cd /REMASTER/venenux; rm -f md5sums; find -type f -not -name md5sums -not -name boot.cat -exec md5sum {} \; >> md5sums
Con esto ya deberíamos tener la estructura de la imagen del CD/DVD hecha en el directorio /REMASTER/venenux/, por lo que procedemos a la creacion de la ISO:
mkisofs -pad -l -r -J -v -V "VENENUX" -b boot/grub/iso9660_stage1_5 -c boot/grub/boot.cat \ -hide-rr-moved -no-emul-boot -boot-load-size 4 -boot-info-table -o nombre-del-remaster.iso /REMASTER/venenux/
Para Finalizar
Bueno, aún falta pulir el documento. Cualquier sugerencia, usar el apartado Discusión. Luego lo termino :-D Sidux tiene un script que hace todo esto de forma automática, pero debo adaptarlo a VENENUX, así que por ahora este es el método que recomiendo.
Script para automatizar el proceso
Este script sirve para personas muy ocupadas o muy vagas, de igual forma no está perfecto. Cualquiera lo podrá modificar porque está bajo licencia GPL, así que sin criticar por favor.
Está divido en cuatro partes (por ahora); la primera parte hace todo y te monta en el chroot de una vez.
Primera parte
#!/bin/bash echo AQUI COMIENZA LA REMASTERIZACION echo se activan los modulos aufs squashfs modprobe aufs lsmod | grep aufs modprobe squashfs lsmod | grep squashfs echo se crean los directorios cd / pwd mkdir REMASTER echo se creo REMASTER cd /REMASTER pwd mkdir destino fuentes remaster venenux echo se crearon las carpetas base y se montara la iso cd / mount venenux.iso /cdrom -o loop -t iso9660 echo se monto la iso echo cambiando de carpeta cd /cdrom pwd echo se copian las fuentes cp -Rp autorun.inf boot cdrom.ico index.html LEEME.txt notas venenux LICENCIA /REMASTER/fuentes/ echo se copiaron los archivos: autorun.inf boot cdrom.ico index.html LEEME.txt md5sums notas venenux LICENCIA /REMASTER/fuentes/ echo ahora hay que montar el archivo venenux.vnx cd /REMASTER pwd echo montando venenux.vnx en venenux mount fuentes/venenux/venenux.vnx venenux/ -t squashfs -o loop echo se monto venenux.vnx en carpeta venenux cd venenux pwd echo copiando elementos de iso a destino... cp -Rp bin boot cdrom dev etc home initrd.img lib media mnt opt proc root sbin selinux srv sys tmp usr var vmliuz ../destino echo copiando los archivos bin boot cdrom dev etc home initrd.img lib media mnt opt proc root sbin selinux srv sys tmp usr var vmliuz a ../destino cd / pwd echo se va a desmontar venenux.vnx y la iso umount /REMASTER/fuentes/venenux/venenux.vnx echo se desmonto venenux.vnx y desmontando iso umount *.iso echo se desmonto la iso echo REMASTERIZANDO... echo montando dev mount --bind /dev /REMASTER/destino/dev echo montando "chroot" chroot /REMASTER/destino
> Ya dentro del chroot tienes que ejecutar el siguiente script:
Dentro del chroot Segunda parte
#!/bin/bash echo montando proc, sys y devpts echo montando proc mount proc -t proc /proc echo proc mountado y montando sys mount sys /sys -t sysfs echo montado sys y montando devpts mount devpts /dev/pts -t devpts echo devpts montado y montando RED ifconfig | grep eth ifconfig | grep wlan ifup eth0 echo red montada
> Remasterizas todo lo que quieras y luego, cuando termines, ejecutas el siguiente script:
Tercera parte
#!/bin/bash echo DESMONTANDO Y LIMPIANDO CHROOT echo limpiando... apt-get clean echo desmontando... umount /proc echo proc desmontado umount /sys echo sys desmontado umount /dev/pts echo dev/pts desmontado echo SALIENDO DE CHROOT... exit
> Aquí sales del chroot y vas comenzar la compresión, así como la imagen iso.
Cuarta parte
#!/bin/bash
echo limpiando sistema base
REMASTER=/REMASTER/destino
rm -rf $REMASTER/etc/network/run/ifstate
rm -rf $REMASTER/destino/etc/network/interfaces
rm -rf $REMASTER/etc/X11/xorg.conf
find "$REMASTER/var/cache/" \
"$REMASTER/var/log/" \
-name \*\\.gz \
-o -name \*\\.bz2 \
-o -name \*\\.[0-9][0-9]? \
-exec rm -f {} \;
find "$REMASTER/var/log/" \
"$REMASTER/var/mail/" \
"$REMASTER/var/spool/" \
-type f \
-size +0 \
-exec cp /dev/null '{}' \;
echo comenzando compresion...
cd /
echo creando carpeta destino de venenux.vnx dentro de /REMASTER/venenux/venenux
mkdir -p /REMASTER/venenux/venenux
echo comprimiendo...
mksquashfs /REMASTER/destino /REMASTER/venenux/venenux/venenux.vnx -b 262144
echo termino de comprimir venenux.vnx
cd /REMASTER/fuentes/
pwd
echo copiando archivos de sistemas a la carpeta venenux...
cp -Rp autorun.inf boot cdrom.ico index.html LEEME.txt LICENCIA notas /REMASTER/venenux
echo archivos copiados
# quita desde este comentario hasta el siguiente comentario si te da error el script o no te sale bien
echo creando md5...
cd /REMASTER/venenux; rm -f md5sums; find -type f -not -name md5sums -not -name boot.cat -exec md5sum {} \; >> md5sums
echo creando iso9660
# quita el codigo desde el comentario anterior y este comentario si te da error o no te funciona
mkisofs -pad -l -r -J -v -V "VENENUX" -b boot/grub/iso9660_stage1_5 -c boot/grub/boot.cat \
-hide-rr-moved -no-emul-boot -boot-load-size 4 -boot-info-table -o remaster_creada.iso /REMASTER/venenux/
Ya tienes la iso lista. A veces da problemas en la parte de crear la md5. Si no te funciona, quitas la parte que está entre comentarios, la que crea el md5.
