Como pasar de Ext2 a ReiserFS sin despeinarse

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 href="http://www.freshmeat.net">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.

Responder

Please solve the math problem above and type in the result. e.g. for 1+1, type 2.
The content of this field is kept private and will not be shown publicly.
  • Lines and paragraphs break automatically.

More information about formatting options