Como pasar de Ext2 a ReiserFS sin despeinarse


1. Haciendo la copia del sistema

En primer lugar, por supuesto, hacer una copia de todo el sistema de archivos del Linux. Hay muchas formas de hacerlo, pero yo tiré por lo sencillo:

tar zc /usr > usr.tgz
tar zc /home > home.tgz

y así con todos excepto los puntos de montaje, /proc y /tmp. Sobra decir que hace falta tener espacio en la misma partición o en otra para almacenar todos los archivos (a mi un sistema de archivos de 1.3Gb ocupados me lo ha reducido a unos 500Mb una vez comprimido).

2. Creando una partición Ext2 donde colocar las imágenes de arranque (obsoleta)

Nota importante: Lilo, desde la versión 21.6, puede arrancar directamente de particiones ReiserFS (antes ya lo hacía, pero había que pasarle un parámetro para que montase de una forma especial la partición), por lo tanto esta sección ha sido suprimida, ya no hace falta hacer la guarrería de crear una partición EXT2 para el boot, y además podemos ser los más chulos y poner el soporte EXT2 como módulo ;-)

3. Moviendo las copias a un lugar seguro

Continuemos. Una vez creados los archivos .tgz tenemos que copiarlos a algún lugar seguro fuera del sistema de archivos actúal. Si se tiene una unidad de cinta, de maravilla, pero lo más cómodo (y lo que he hecho yo), es copiarlos a la partición de Windows (hagamos el esfuerzo de suponer que la particón de windows es un lugar seguro), si hay espacio suficiente.

4. Parcheando el kernel

Ahora hay que conseguir un kernel 2.4.1 o superior (que incluye ReiserFS «de serie») o si por algún motivo místico o sentimental debemos utilizar un kernel más viejo, conseguir el parche adecuado para el mismo. Este lo podeis conseguir en: http://devlinux.com/proyects/reiserfs/download.html

Para parchear el kernel, en el caso de que tengamos que hacer esto (kernel viejo), copiamos el parche a /usr/src (tenemos las fuentes del kernel descomprimidas en el /usr/src/linux ¿verdad?), y hacemos:

bzcat archivo-del-parche.bz2 |patch -p0

desde el directorio /usr/src. Esto parcheará el kernel.

El siguiente paso (con Kernel nuevo o viejo) es configurar el kernel para para activar el ReiserFS cuya opción se encuentra bajo "filesystems" (recomiendo el hash que viene por defecto, "tea-hash" en la opción bajo el mismo), y todas las demás opciones como siempre. Es importante compilarlo dentro del kernel __no como módulo__.

Realizamos el proceso habitual de compilar el kernel y los módulos y lo instalamos (si no sabes de que te estoy hablando probablemente debas dejar de leer aquí y volver dentro de un par de meses cuando sepas un poquito más, no lo digo por parecer malote, lo digo por el bien de tus datos...).

5. Modificando el /etc/fstab para reflejar en nuevo sistema de archivos

Modificamos el /etc/fstab para que donde diga "ext2" de la partición raíz (/) diga ahora "reiserfs". Es decir la línea de ejemplo:

/dev/hda3 / ext2 defaults 0 1

Pasaría a ser:

/dev/hda3 / reiserfs defaults 0 1

Quizás sería recomendable modificar una copia del fstab en lugar del propio archivo de modo que si de repente se nos va la luz el sistema siga arrancando, y sólo copiar este archivo modificado a /etc/fstab en el último momento justo antes de reiniciar.

6. Creando (o consiguiendo) unos discos de inicio (semi-obsoleto, esto avanza que es una barbaridad)

Nota: Y digo semi-obsoleto porque todo lo que digo a continuación sobre crear unos discos de arranque con ReiserFS o descargar los de esta página os lo podeis pasar por el arco del triunfo, porque ahora hay unos maravillosos discos de arranque en Freshmeat(buscar por "ReiserFS"), que yo sepa unos para Debian o otros para la Slackware (SlackReiser, si la memoria no me falla, que por lo demás me falla mucho) que sirven para instalar tales distribuciones con ReiserFS, pero que nos vendrán de maravilla para lo que queremos hacer, arrancar un pequeño sistema de archivos virtúal desde el que formatear a ReiserFS, montar, y restaurar el sistema de archivos.

Además, dicho sea de paso, los discos que hice yo, son una basura para que vamos a engañarnos, y no tienen soporte para el Reiser 3.6 de los kernels 2.4.x. Así que corriendo a Freshmeat. He dicho.

La forma de crear el/los disco/discos que descarguemos es igualmente aplicable.

Fin de la Nota

Ahora hay que crear unos discos de inicio (si tenemos otro linux en otra partición no hace falta, simplemente hace falta que el otro linux tenga también un kernel con soporte ReiserFS), para que podamos arrancar desde ellos. Este paso es sin duda el más complicado y artesanal (Bootdisk-HOWTO), pero os lo podeis ahorrar si descargais las imágenes del final de este artículo (algún día las actualizaré con un Kernel más nuevo y eso, pero de momento hacen su trabajo bien [No, nunca lo actualizaré, lee la nota al principio]).

Estos discos tienen lo mínimo imprescindible para crear la partición ReiserFS, montarla copiar los archivos a la nueva partición, descomprimirlos y por último desmontar las particiones.(dd, mkreiserfs, cp, rm, mv, mkdir, ls, gzip, tar, mount, librerías, un /etc mínimo, ...), _y nada más_. Por ejemplo no tiene el bzip (no me cabía), y la shell es el sash que es absolutamente repugnante pero no requiere las ncurses como otras (podía haber puesto el ash, más pequeño, pero no lo tenía a mano).

El kernel de los discos tiene soporte msdos, vfat, ext2 y ReiserFS (necesitaba el soporte ReiserFS, por lo que no me valía una minidistribución de las que ya existen).

Conseguimos las imágenes de esta página, y hacemos esto para copiarlas (son 2 discos, empieza a arrancar el kernel del primero y luego pide el otro donde está el sistema de archivos comprimido que situará en memoria RAM):

dd if=imagen1 bs=1k of=/dev/fd0
(cambiamos de disco)
dd if=imagen2 bs=1k of=/dev/fd0

Si vais a utilizar un dispositivo de cinta, una unidad zip, etc, estos discos no os valen porque no tienen soporte para esos cacharros. Se supone que son para copiar los archivos .tgz desde otra partición, en uno de los sistemas de archivos soportados.

7. Reiniciar con los discos de sistema y formateamos la partición raíz

Se empieza a acercar el momento crítico. Si hemos modificado el /etc/fstab en una copia es ahora cuando debemos copiarlo a su sitio original /etc/fstab.

Cerramos nuestro Linux (puede que sea la última vez que lo veamos, así que recomiendo vivir el momento con intensidad), arrancarmos con los discos, hacemos login como root (no tiene clave), y montamos la partición/es donde hayamos situado las copias [Nota, este proceso para los discos de rescate de Freshmeat puede variar, no los he usado aún].

Es necesario crear los puntos de montaje en el sistema de archivos que los discos crean en la memoria
(mkdir copias, mount -t loquesea /dev/particion_de_las_copias /copias).

Cogemos un rosario. Cerramos los ojos. Aguantamos la respiración. Nos despedimos efusivamente de nuestra partición Linux por si no volvemos a verla.

dd if=/dev/zero of=/dev/particion_linux bs=1k count=65535

Sobra decir que como nos equivoquemos y en lugar de particion_linux pongamos otra nos la cargamos. Exactamente el porqué de este paso (el dd)no lo entiendo, pero la documentación del ReiserFS dice que hay que hacerlo y yo lo hago. [Nota, es posible que en la versión del Kernel 2.4.1 del ReiserFS ya no haya que hacer esto, no lo se, en cualquier caso yo lo haría por si acaso...]

Ahora:

mkreisersS /dev/particion_linux

Tarda un ratito.

8. Montando la nueva partición y restaurando las copias del sistema

Montamos nuestra nueva partición ReiserFS con el siguiente comando:

mkdir /linux
mount -t ReiserFS /dev/particion_linux /linux

(tarda otro ratito, sólo la primera vez que lo montamos).

Ahora copiamos los .tgz a /linux y los descomprimimos. También creamos los puntos de montaje que tuvieramos, /proc y /tmp (en este caso /linux/proc y /linux/tmp). En el caso de /tmp después tendremos que hacer 'chmod 4777' para que todos puedan leer y escribir en el directorio pero sólo puedan borrar ficheros sus propietarios.

Cuando se haya descomprimido todo nos aseguramos de que hemos hecho todo correctamente. Como nadie es perfecto diré que en este punto me di cuenta de que se me había olvidado poner en el fstab "ReiserFS" en el campo del tipo de sistema de archivos de la entrada del raíz. Fue una suerte que me diera cuenta porque si al arrancar el kernel la intenta montar como ext2, lo más seguro es que nos de un kernel panic, pero si sigue adelante y le pasa el e2fsck... adios a nuestra flamante partición ReiserFS. Así que copié el fstab del nuevo /etc descomprimido a la partición win, lo modifiqué desde allí con el editor de msdos, volví a arrancar con los discos de arranque y lo volví a poner en el /etc de la partición ReiserFS.

Los discos no llevan ningún editor (¡no cabia nada!) ni less ni cat ni leches , pero para hacer
comprobaciones de última hora (que, como en mi caso, pueden salvarnos la vida), podemos visualizar un archivo con cp archivo /dev/tty1 (por cierto, hay dos consolas virtuales).

9. Desmontar, reiniciar, y arrancar nuestro nuevo sistema con ReiserFS

Ahora se acerca el momento culminante (o humillante, según lo mal que lo hayamos hecho). Desmontamos los sistemas de archivos montados, hacemos sync (la tradición manda hacerlo tres veces), y apagamos a capón (no hay shutdown, pero si hemos desmontado da igual, dado que el sistema de archivos de los discos se genera en la memoria).

Arrancamos nuestro Linux. En teoría ya no hay más que hacer, salvo que algo se nos haya olvidado y demás. Si te ha salido bien, enhorabuena (si haces un "du" en un directorio muy poblado podrás ver muy graficamente lo eficaz que es este sistema de archivos con operaciones recursivas sobre directorios).

Si las cosa ha ido mál, yo no os he dicho nada. Por supuesto renuncio a toda responsabilidad sobre lo que podais joder o dejar de joder. ESTAIS, SOLO, EN VUESTRAS MANOS.

Y si funciona, no vayais a romper la tradición del que prueba por primera vez un JFS: Poneos a hacer algo, poner cara maliciosa y apagar a capón, para ver lo bien que se recupera en el siguiente arranque (¡eh!, hay que seguir utilizando el shutdown, esto es sólo una prueba).

Suerte.


Nota: Si quieres utilizar un ReiserFS de un kernel 2.3.xx o 2.4 mis discos de arranque no te valen, porque el ReiserFS de los kernels 2.2 es incompatible con el de los kernels 2.4.

Para actualizar de un ReiserFS del kernel 2.2 a uno del 2.4 podemos repetir todo este proceso si para entonces no hay herramientas de conversión automática o no han añadido una capa de compatibilidad (algo que Mr Reiser promete tener casi acabado). Probablemente el ReiserFS de los kernel 2.4 será el último no compatible con versiones anteriores.

PD: Ya se ha añadido la capa de compatibilidad en los 2.4, luego ya no hay problema en meter un kernel 2.4 con un ReiserFS creado con un 2.2


(C) 2000-2001 Juan José Álvarez Martínez (jajs@retemail.es). Redistribuye esto como te de la gana, esto está bajo la licencia Document GPL.