SquasFS


En la línea de initrd, SquashFS se diseñó como un sistema de archivos genérico con compresión, para sistemas embebidos. Este sistema de archivos se ha hecho muy popular con la proliferación de LiveCDs, y se usa para almacenar el sistema Linux con todas las aplicaciones ya instalados, como si comprimiéramos el directorio raíz de un equipo ya instalado y configurado: Cuando la LiveCD! arranca e initrd lleva el kernel a memoria, monta este fichero squashFS en modo sólo lectura y se convierte en el directorio raíz del sistema, teniendo a partir de ese momento todas las aplicaciones disponibles.
Es posible que se nos despierte la curiosidad, y queramos husmear en el contenido de uno de estos archivos,

  1. Lo primero será crear un directorio temporal en el que copiar el contenido del fichero SquashFS
    cd
    mkdir squash_descomp
  2. Luego, tendremos que montar el fichero SquashFS
    mkdir /tmp/test.squash
    mount -t squashfs -o loop filesystem.squashfs /tmp/test.squash
  3. Para editar el contenido debemos copiarlo conservando permisos, en el directorio que creamos...
    rsync  -v -rlt -a /tmp/test.squash/ squash_descomp/

    umount /tmp/test.squash/
  4. En el directorio squash_descomp, quedará el contenido del fichero SquasFS y ya podremos cambiar ficheros, permisos, añadir, etc. Cuando acabemos con ello, podremos volver a convertir en un fichero SquashFS mediante
    cd squash_descomp

    rm -f ../filesystem.squashfs
    mksquashfs . ../filesystem.squashfs

Initrd (reloaded)

Los ficheros initrd(initial ramdisk) contienen un pequeño sistema con los ficheros básicos que permitan iniciar un kernel de Linux en memoria RAM al arrancar nuestro sistema. A partir de él, ya se puede montar el directorio raíz e ir cargando el resto de módulos del núcleo que configuran nuestro hardware.

Aunque ya hemos hablado aquí sobre cómo examinar el contenido de uno de estos ficheros, quería mejorar la entrada, porque no suelo usar aquel procedimiento, sino este otro que quiero contar hoy que me resulta menos litúrgico, y que he tenido que usar demasiado a menudo en los últimos meses, porque ando editando el arranque de distribuciones LiveCD como Clonezilla, Trinity Rescue, y otras tantas que finalmente no cuajan porque no me sirven.
Como ya comentamos en aquella entrada encontramos dos tipos de ficheros initrd:

  • Initrd, en kernel anteriores a 2.6.13, almacena la imagen de un sistema de ficheros (que podía venir comprimido), habitualmente ext2 (el driver ext2 debía estar incluído en el kernel y no como módulo), aunque otros como Debian usaban cramfs.Este sistema de archivos se ponía disponible al montarlo sobre un dispositivo /dev/ram, como sistema raíz inicial, para justo después ejecutar /linuxrc . Cuando este programa finalizaba, se ejecutaba /sbin/init que ya se encargaría de iniciar el espacio de usuario.Para examinar su contenido, podemos ejecuar...
    cp initrd.original  initrd.paramodificar.gz

    mkdir contenido-initrd
    gunzip initrd.paramodificar.gz
    mount -o loop initrd.paramodificar contenido-initrd
  • Initramfs, aparece a partir del kernel 2.6.13 y mejora sustancialmente a su predecesor, ya que no se tiene que montar sobre un disco virtual, y tampoco es necesario parchear el kernel para incluir el soporte básico que permite descomprimir y montar el propio initrd. En definitiva, se consigue mayor flexibilidad y facilidad para la administración.Para examinar su contenido, podemos ejecuar...
    mkdir contenido-initrd

    cd contenido-initrd
    gzip -S img -dc ../initrd | cpio -id

En cualquier caso, si ejecutamos estos comandos tendremos su contenido en el subdirectorio contenido-initrd, y podremos modificar los archivos que necesitemos con nuestro editor faVorIto. Luego podremos volver a su forma natural ejecutando...
 cd contenido-initrd
find ./ | cpio -H newc -o | gzip -c > ../initrd

si se trata de un fichero initramfs, y si fuera un initrd, tendremos que desmontar y volver a comprimir...
cd
umount contenido-initrd
cat initrd.paramodificar | gzip -c > initrd

Despedida de LinEX

La semana pasada supimos que la Junta de Extramdura había decidido no renovar los contratos al personal del Centro de Excelencia de Software José de Espronceda, organismo encargado del desarrollo de LinEX. En el foro oficial podemos escribir nuestras condolencias. Según el propio gobierno autonómico, la decisión se fundamenta en la insostenibilidad del proyecto y la necesidad de ahorrar en estos tiempos de crisis económica.
Este anuncio llena de incertidumbre el futuro de la apuesta más importante de una administración pública española por el uso de software libre, que además fue un referente a nivel mundial y nacional, y sentó las bases para el nacimiento del resto de distribuciones autonómicas: Guadalinex, Molinux, Lliurex, Max, y otras cuantas más.
A mi juicio el experimento ha sido un éxito rotundo, pero no dejan de preocuparme las causas reales que se esconden tras esta decisión:

  1. ¿se está tratando de borrar el rastro de una gestión exisitosa del anterior gobierno autonómico de signo político contrario al actual?
  2. ¿se quiere apostar ahora por software privativo, que no impute coste de desarrollo e implantación a corto plazo?
  3. ¿existe presión por parte de alguna de las grandes compañías de software, dispuestas a regalar licencias a la administración pública regional, a cambio de desprestigiar diez años de éxito del software libre?
La comunidad española del software libre, tenemos muchísimo que agradecer al proyecto LinEX, por las numerosas contribuciones a la comunidad, la formación y difusión que han realizado del Software Libre en foros técnicos y no técnicos, y la experiencia del contacto con la política: Nos han mostrado un camino de cómo pueden relacionarse Software Libre y Política y con ello,
  • generar riqueza local con la aparición de nuevas empresas que ofrezcan soporte y formación
  • tener software compatible e interoperable que se ajusta a nuestras necesidades y realidad local
  • lograr independencia tecnológica de compañías multinacionales extranjeras
  • garantizar el acceso universal a la información y la no discriminación
... pero también nos han enseñado, como la política puede estropearlo todo:
  1. ... fomentando los localismos que ayudan a resaltar nuestras diferencias, en vez de nuestras semejanzas,
  2. ... multiplicando los costes por hacer lo mismo desde diferentes lugares, y coaccionando la cooperación para justificar la inversión,
  3. ... bloqueando acomplejadamente la participación y el retorno a la comunidad para proteger la inversión
  4. ... manchando de color político algo incoloro como la tecnología, para que los ciudadanos sean capaces se asociarles un partido político y canalizar sus disconformidades como una forma mediática de oposición
No debemos dejar de reconocer el importantísimo papel de las administraciones públicas y de la política, como catalizador para que las empresas locales, empiecen a generar riqueza en torno al software libre: Europa ya no puede competir con EEUU en cuanto software. Dependemos de Novell, Google, Oracle, Microsoft, IBM... Somos tecnológicamente dependientes de EEUU. La única forma de alcanzar independencia tecnológica en informática y ser competitivos, es a través del software libre.... pero ... ¿cómo pueden las administraciones públicas contribuir a ello, ante noticias como la que estamos comentando?
  • Legislar para conseguir la independencia tecnológica. Obligar que las soluciones al ciudadano no les obliguen a tener determinado software de acceso restringido.
  • Pagar por implantaciones basadas en software libre y formación, sin contratar nuevos funcionarios ni la constitución de más entes públicos que se encarguen de ello, es labor de las empresas locales.
  • Obligar que las empresan que ganan los concursos públicos realicen trabajos basados en software libre, lo liberaren y contribuyan con la comunidad.
La mejor de las suertes para el equipo de LinEX y mis más sinceros agradecimientos.

FreeSSHd: Un servidor SSH para Windows

A menudo nos encontramos con la necesidad de poder conectar con un servidor Windows, desde otro equipo, en las mismas condiciones que cuando lo hacemos entre servidores Linux usando SSH.

Normalmente esta necesidad podíamos cubrirla usando CygWin, pero nunca me ha terminado de convencer porque al final terminábamos convirtiendo nuestro servidor Windows en un servidor Linux al que le faltaban bastantes cosas, además del inconveniente de la doble gestión de cuentas de usuario, el lío con las barras separadoras de directorios ("/" y "\") según el comando que ejecutáramos, y por supuesto, el hecho de que muchos comandos no están al nivel de implementación de Linux y les faltan opciones... todo esto siempre me causó la impresión de que no estaba usando ni un Linux, ni un Windows, sino un refrito que funciona a medias. Nunca consideré CygWin como una opción seria para servidores en producción.

Afortunadamente, disponemos de alternativas libres para ello como FreeSSHd. Este es un simple servidor SSH y Telnet para equipos Windows, y permite hacer esto que reclamo: Instalarnos un servicio que escucha conexiones por el puerto 22 y/o 23 y al autenticarnos nos abre una consola del intérprete de comandos de Windows. Luego usaremos los mismos comandos que usaríamos frente a una ventana.

La instalación es bastante sencilla, y no ofrece ninguna complicación. Una vez lo hayamos instalado, tendremos que editar la configuración del servidor, y configurar qué puertos queremos escuchar: SSH y/o Telnet.


Además, debemos indicarle qué usuarios del equipo Windows le permitimos la conexión y con qué opciones.

Una vez realizada esta configuración básica, reiniciaremos el servicio, y ya podremos conectar mediante SSH como si se tratara de un servidor Linux. Observar que al conectar la consola no se limpia y el prompt de Windows se nos va al inicio del terminal sobreescribiendo lo que tuviéramos.

Para crear confianzas SSH mediante clave pública, tendremos que añadir las claves públicas, igual que hacemos con el fichero authorized_keys en Linux, pero al fichero %PROGRAMFILES%\FreeSSHd\LOGIN_USUARIO. El servicio va escribiendo un log en %PROGRAMFILES%\FreeSSHd\freesshd.log.

Una maravilla la verdad, simple y directo. El único inconveniente que le veo a este programa es que tendremos que usar SFTP desde Linux para poder copiar ficheros al equipo Windows: El comando SCP no nos funcionará :(.

¡Feliz 0x7DC!

Feliz y próspero año nuevo a todos los que pacientemente habíais esperado ver si se actualizaba este humilde blog, y a los que no … ¡también!.

Este año es el año de las olimpiadas de Londres (¿cuántas medallas conseguiremos?) , el de la Eurocopa (¿volverá España a caer en cuartos? ¿Raúl selección?), será nuestro primer año Mariano (por aquello de nuestro nuevo presidente Mariano Rajoy), volveremos a sufrir una nueva campaña electoral antes del Verano y, aunque los días no tengan más horas, Febrero sí que tendrá un día más, al contrario que las semanas laborales, que tendrán algún puente menos. Viendo esta perspectiva, da la impresión que será un año de ajustes...

Este año 2012 que acabamos de estrenar, es el año en el que acaba el calendario Maya, y empiezan los augurios proféticos sobre el advenimiento del fin del mundo, aunque … parece que este fin del mundo empieza por la destrucción de nuestro estado de bienestar, del Euro, y de Europa... quizás los Mayas simplemente fueran prácticos, y pensaran: “¿quién de nosotros va a estar aquí para el 2012? … ya actualizaremos el calendario cuando toque, intentemos vivir nuestro presente” ... y desde entonces hasta la llegada de los españoles al nuevo mundo, hubieran estado procrastinando ... ¿quién sabe lo que pasó entonces, y lo que nos sucederá ahora?, pero con mis mejores deseos, un poco de suerte y otro poco de paciencia espero que podamos comprobarlo juntos en unos cuantos meses.

La foto la he sacado del album de Dee_m en flickr