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.


Contenido

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.

Herramientas personales