Bueno, os recomiendo a todos el ensayo "Al principio fue la linea de comandos", de Neal Stephenson, el del Criptonomicon. Yo acabo de leerlo y me ha metido las ganas de probar el sistema operativo BeOS. El problema es cómo meterlo en mi disco duro, porque el muy cabrito pide una partición primaria, y lo tengo todo tal que así:
Partición | Montado en | Tamaño | Libre |
hda1 | /mnt/oldboot | 83 Mb | 83 Mb |
hda2 | / | 5 Gb | 2,9 Gb |
hda3 | /mnt/seguridad | 5 Gb | 3,3 Gb |
hda5 | swap | 96 Mb | - |
hda6 | /mnt/virtuales | 10 Gb | 6,8 Gb |
hda7 | /mnt/extra | 4 Gb | 2,1 Gb |
hda8 | /usr | 5 Gb | 1,1 Gb |
hda9 | /var | 3 Gb | 1 Gb |
hda10 | swap | 128 Mb | - |
hda11 | swap | 128 Mb | - |
hda12 | /mnt/antiguo | 1,7 Gb | 1,7 Gb |
Bien, hda1 no sirve porque es demasiado pequeña. Eso nos deja con hda3, que quiero conservar para las copias de seguridad o hda2, que está ocupada con la raiz de Debian.
Así que no hay más remedio que mover Debian a otro sitio :-)
Pero jugar de esta forma con las particiones va a costar mucho trabajo y tiempo (es como poner toda la casa patas arriba). Así que el reto es hacerlo gradualmente, "a trocitos" en varias sesiones. Y que al término de cada sesión (con todo el trabajo "a medias"), el sistema siga funcionando con el mismo rendimiento y servicios que antes.
Se trata de ir vaciando hda2 para meterlo todo en otra partición. Vale, pues primero pasamos todo el contenido de /boot a /oldboot. Afortunadamente, estos datos solo se leen en el arranque, así que podemos jugar con ellos sin necesidad de un disco de emergencia.
[lacofi@claudia lacofi]$ su password: [root@claudia lacofi]# mount /dev/hda1 /mnt/oldboot -t reiserfs -o rw [root@claudia lacofi]# cd /mnt/oldboot [root@claudia lacofi]# tar c /boot | tar xv [root@claudia lacofi]# rm -Rf /boot [root@claudia lacofi]# mv boot / [root@claudia lacofi]# cd / [root@claudia lacofi]# umount /mnt/oldboot
Después edito /etc/fstab y cambio las entradas de esta partición:
/dev/hda1 /mnt/oldboot reiserfs defaults 0 0por esto otro...
/dev/hda1 /boot reiserfs defaults 0 0Y a continuación montamos la partición tal y como va a quedar.
[root@claudia lacofi]# mount /boot
Y por hoy ya valió.
Lo siguiente que hago es unir la partición hda9 con /.
[lacofi@claudia lacofi]$ su password: [root@claudia lacofi]# cd / [root@claudia lacofi]# mkdir nuevovar [root@claudia lacofi]# cd nuevovar [root@claudia lacofi]# tar c /var | tar xv
Naturalmente, me he fijado previamente en el pequeño detalle de que cabe. ;-)
Después arranco con un disquete de emergencia, como RIP o MuLinux. Monto en ese disquette todas las particiones, borro el contenido de /dev/hda9, y edito el fichero fstab que está contenido en la partición hda2 para borrar la entrada que monta /var. A continuación me meto en /nuevovar, muevo el subdirectorio "var" a la raiz, y elimino el directorio /nuevovar (ahora vacío). Retiro el disquette de arranque y reboto. O sea:
RIP bash# mkdir /mnt/viejo_var RIP bash# mount /dev/hda9 /mnt/viejo_var -t reiserfs -o rw RIP bash# mount /dev/hda2 /mnt/linux -t reiserfs -o rw RIP bash# cd /mnt/linux/nuevovar RIP bash# mv var .. RIP bash# cd .. RIP bash# pwd /mnt/linux RIP bash# ls var backups cache games lib local lock log mail named opt run spool state tmp www RIP bash# rmdir nuevovar RIP bash# cd /mnt/viejo_var RIP bash# rm -Rf * RIP bash# umount /mnt/viejo_var RIP bash# rmdir /mnt/viejo_var
Ahora sacamos el disco de emergencia y rebotamos la máquina
Aprovecho para comentar que si no tienes un disquete de emergencia ¡lo necesitas YA!. ¿A qué estás esperando?. ¡Hazte con uno!. Hay muchos y de muchos "colores". Vete a alguno de los muchos listados que encontrarás en la Web y elige. Personalmente, el que uso es RIP. Contiene TODO lo que necesito, incluido soporte completo para unidades ReiserFS.
Bien, ¿qué he conseguido hasta ahora?. Bueno... pues hda12 no la necesito. hda11 y hda10 son dos particiones de swap que creé cuando andaba escaso de RAM. Ahora tengo 256 Mb, así que tampoco las necesito. hda9 acabo de dejarla vacía. Todas juntas, suponen 5 Gb consecutivos libres, justo al final del disco duro. Teóricamente, ya podría pasar el contenido de la partición hda2 a esa nueva hda9 de 5 Gb que me quedaría. Pero iría muy justo de espacio libre. En cambio, sería mucho más práctico si pudiera vaciar también hda8 para aprovechar el 1,1 Gb que tiene libres.
Pues nada, nada, vamos a preparar el terreno para poder modificar las particiones. Arranco con el disco de emergencia, monto otra vez las particiones, hago un "cd" a hda6.
RIP bash# mkdir /mnt/virtuales RIP bash# mount /dev/hda6 /mnt/virtuales -t reiserfs -o rw RIP bash# cd /mnt/virtuales
A continuación, monto la partición que contiene "/usr" y la empaqueto entera.
RIP bash# mount /dev/hda8 /mnt/linux -t reiserfs -o rw RIP bash# tar czvf usr.tar.gz /mnt/linux
De momento, he conseguido esto:
Partición | Montado en | Tamaño | Libre |
hda1 | /boot | 83 Mb | 74 Mb |
hda2 | / | 5 Gb | 1 Gb |
hda3 | /mnt/seguridad | 5 Gb | 3,3 Gb |
hda5 | swap | 96 Mb | - |
hda6 | /mnt/virtuales | 10 Gb | 6,8 Gb |
hda7 | /mnt/extra | 4 Gb | 2,1 Gb |
hda8 | (eliminable) | 5 Gb | | |
hda9 | (eliminable) | 3 Gb | | |
hda10 | (eliminable | 128 Mb | | 10 Gb |
hda11 | (eliminable) | 128 Mb | | |
hda12 | (eliminable) | 1,7 Gb | | |
Y como es ya tarde y mañana trabajo, ahí lo dejo. Continuará...
Bien, pues hoy toca la parte del león. Hay que jugar ni más ni menos que con las particiones.
[root@claudia lacofi]# /sbin/fdisk /dev/hda The number of cylinders for this disk is set to 4865. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): Command (m for help): d Partition number (1-12): 12 Command (m for help): d Partition number (1-11): 11 Command (m for help): d Partition number (1-10): 10 Command (m for help): d Partition number (1-9): 9 Command (m for help): d Partition number (1-8): 8 Command (m for help): n First cylinder (1710-3016, default 1710):>Intro< Using default value 1710 Last cylinder or +sizeM or +sizeK (1711-3016, default 3016): 2984 Command (m for help): n First cylinder (2985-3016, default 2985):>Intro< Using default value 2985 Last cylinder or +sizeM or +sizeK (2986-3016, default 3016): 3000 Command (m for help): n First cylinder (3001-3016, default 3001):>Intro< Using default value 3001 Last cylinder or +sizeM or +sizeK (3002-3016, default 3016): >Intro< Command (m for help): t Partition number (1-10): 10 Hex code (type L to list codes): 82 Command (m for help): t Partition number (1-10): 9 Hex code (type L to list codes): 82 Command (m for help): p Disk /dev/hda: 255 heads, 63 sectors, 4865 cylinders Units = cylinders of 16065 * 512 bytes Device Boot Start End Blocks Id System /dev/hda1 1 11 88326 83 Linux /dev/hda2 * 12 664 5245222+ 83 Linux /dev/hda3 665 1709 8393962+ 83 Linux /dev/hda4 1710 4865 25350570 5 Extended /dev/hda5 3017 3028 96358+ 82 Linux swap /dev/hda6 3029 4338 10522543+ 83 Linux /dev/hda7 4339 4865 4233096 83 Linux /dev/hda8 1710 2984 10241406 83 Linux /dev/hda9 2985 3000 128488+ 82 Linux swap /dev/hda10 3001 3016 128488+ 82 Linux swap Partition table entries are not in disk order Command (m for help): w
Bien. ¿Ha quedado claro?. He destruido todas las particiones desde hda8 hasta hda12, incluidas éstas. Luego contruyo de nuevo la partición hda8 (que será enorme, para contener todo linux), y me reservo 32 cilindros del final. Luego cojo 16 cilindros más para hda9, y los últimos 16 cilindros para hda10.
A continuación, convierto hda9 y hda10 a particiones "82" que es el código de las particiones swap. Luego grabo la tabla. La suerte está echada. :-)
Una de las particiones (hda8) está todavía en activo (contiene /usr) así que Claudia no me permite usar la nueva tabla hasta el siguiente rebote. Correcto.
Meto el disquette de emergencias y reboto.
Una vez arrancado el sistema de emergencias hay que formatear las particiones nuevas con los siguientes comandos:
RIP bash# mkreiserfs /dev/hda8 RIP bash# mkswap /dev/hda9 RIP bash# mkswap /dev/hda10
Ahora montamos las particiones que nos interesan para poder reconstruir el viejo "/usr".
RIP bash# mkdir /mnt/virtuales RIP bash# mkdir /mnt/linux RIP bash# mount /dev/hda6 /mnt/virtuales -t reiserfs -o rw RIP bash# mount /dev/hda8 /mnt/linux -t reiserfs -o rw RIP bash# cd /mnt/linux RIP bash# tar -xzf /mnt/virtuales/usr.tar.gz
Y me voy a tomar un buen café, que esto lleva un rato largo. :-)
Por desgracia, el comando "tar" ha guardado el directorio "usr" pero con su trayectoria completa en el momento del empaquetado (mnt/linux/usr"). Bueno, una pequeña metedura de pata que tiene fácil solución. Nos metemos un par de directorios adentro y lo movemos todo al sitio correcto:
RIP bash# cd mnt/linux RIP bash# ls usr bin doc games include info java lib local man openwin sbin share src X11R6 RIP bash# mv usr ../.. RIP bash# cd .. RIP bash# rmdir linux RIP bash# cd .. RIP bash# rmdir mnt RIP bash# cd /
Ahora desmonto las particiones y monto hda2, que es donde está el sistema Debian actualmente.
RIP bash# umount /mnt/virtuales RIP bash# umount /mnt/linux RIP bash# mkdir /mnt/oldlinux RIP bash# mount /dev/hda2 /mnt/oldlinux -t reiserfs -o rw RIP bash# cd /mnt/oldlinux
Ahora hay que crear un directorio en el que poder montar (provisionalmente) el nuevo "/usr"
RIP bash# cd mnt RIP bash# mkdir pruebas RIP bash# cd .. RIP bash# pwd /mnt/oldlinux RIP bash#
Ahora entramos en el directorio etc, porque tenemos que modificar fstab para que pueda encontrar "/usr" en su nueva ubicación.
RIP bash# cd etc RIP bash# vi fstab
En concreto, hay que borrar las lineas que se refieren a hda12, hda11, hda10, hda9 y hda8, y en su lugar escribir estas otras:
/dev/hda8 /mnt/pruebas reiserfs defaults 0 0 /dev/hda9 none swap sw 0 0 /dev/hda10 none swap sw 0 0
Ahora tenemos:
RIP bash# pwd /mnt/oldlinux/etc RIP bash# cd .. RIP bash# ls bin boot cdrom dev etc floppy home initrd lib mnt opt proc root sbin tmp usr var vmlinuz XF86Config.new
El directorio "usr" está vacio porque ahí es donde se montaba /dev/hda8. Ahora no es así. Hay que hacer:
RIP bash# rmdir usr RIP bash# ln -s /mnt/pruebas/usr usr RIP bash# ls -Fohl total 66k drwxr-xr-x 2 root 2.1k mar 24 01:27 bin/ drwxr-xr-x 3 root 480 ago 15 20:02 boot/ drwxr-xr-x 2 root 48 nov 1 2002 cdrom/ drwxr-xr-x 9 root 35k ago 28 23:25 dev/ drwxr-xr-x 146 root 9.4k ago 28 23:25 etc/ drwxr-xr-x 2 root 48 nov 1 2002 floppy/ drwxr-xr-x 7 root 168 may 27 02:43 home/ drwxr-xr-x 2 root 48 nov 1 2002 initrd/ drwxr-xr-x 5 root 3.1k abr 14 00:40 lib/ drwxr-xr-x 18 root 472 jul 19 03:10 mnt/ drwxr-xr-x 12 root 352 ago 4 02:18 opt/ dr-xr-xr-x 112 root 0 ago 29 2003 proc/ drwxr-xr-x 44 root 2.6k ago 28 20:50 root/ drwxr-xr-x 2 root 3.3k abr 25 15:42 sbin/ drwxrwxrwt 9 root 344 ago 29 00:23 tmp/ lrwxrwxrwx 1 root 16 ago 28 20:45 usr -> /mnt/pruebas/usr/ drwxr-xr-x 17 root 408 feb 16 2003 var/ lrwxrwxrwx 1 root 25 nov 1 2002 vmlinuz -> boot/vmlinuz-2.4... -rw-r--r-- 1 root 3.2k dic 5 2002 XF86Config.new
¿Qué he conseguido?. Pues he eliminado todas las particiones consecutivas por encima de hda8. He creado una gigantesca partición de 10 Gb que se montará provisionalmente en /mnt/pruebas. Esta partición, de momento, solo contiene "/mnt/pruebas/usr", que está linkado a "/usr" en hda2, pero ya tiene el tamaño suficiente para contener todo linux.
En realidad, lo más gordo ya está hecho. El sistema sigue funcionando, y ahora se trata simplemente de ir vaciando todo el contenido de hda2, directorio a directorio e irlo moviendo a /mnt/pruebas.
Por cierto, que esta sesión no ha sido ni mucho menos tan larga como parece. Lo que ocurre es que me ha llevado más tiempo contarlo que hacerlo. :-D
Rebotamos el sistema y hasta otro día. :-)
Hoy no tengo mucha gana de trabajar (y quiero echar una partidita al bzflag, dicho sea de paso). Así que arranco con el disquete de emergencia y hago:
RIP bash# mkdir /mnt/oldlinux RIP bash# mount /dev/hda2 /mnt/oldlinux -t reiserfs -o rw RIP bash# mount /dev/hda8 /mnt/linux -t reiserfs -o rw RIP bash# cd /mnt/oldlinux RIP bash# mv var /mnt/linux/.
Me tomo una tacita de café, que es un directorio grande. Y luego:
RIP bash# pwd /mnt/oldlinux RIP bash# rm -Rf var RIP bash# ln -s /mnt/pruebas/var var RIP bash# reboot
Reboto y me voy a jugar al bzflag. :-)
Por cierto, fijaos en que lo dejo linkado contra "/mnt/pruebas", que en este preciso momento no existe, pero es como se montará en el sistema cuando arranque de nuevo mi Debian.
Bueno, vamos a pasar unas cuantas cosas más. A ver, arrancamos con el disquete de emergencia y nos preparamos:
RIP bash# mkdir /mnt/oldlinux RIP bash# mount /dev/hda2 /mnt/oldlinux -t reiserfs -o rw RIP bash# mount /dev/hda8 /mnt/linux -t reiserfs -o rw RIP bash# cd /mnt/oldlinux RIP bash# ls -Fohl total 66k drwxr-xr-x 2 root 2.1k mar 24 01:27 bin/ drwxr-xr-x 3 root 480 ago 15 20:02 boot/ drwxr-xr-x 2 root 48 nov 1 2002 cdrom/ drwxr-xr-x 9 root 35k ago 28 23:25 dev/ drwxr-xr-x 146 root 9.4k ago 28 23:25 etc/ drwxr-xr-x 2 root 48 nov 1 2002 floppy/ drwxr-xr-x 7 root 168 may 27 02:43 home/ drwxr-xr-x 2 root 48 nov 1 2002 initrd/ drwxr-xr-x 5 root 3.1k abr 14 00:40 lib/ drwxr-xr-x 18 root 472 jul 19 03:10 mnt/ drwxr-xr-x 12 root 352 ago 4 02:18 opt/ dr-xr-xr-x 112 root 0 ago 29 2003 proc/ drwxr-xr-x 44 root 2.6k ago 28 20:50 root/ drwxr-xr-x 2 root 3.3k abr 25 15:42 sbin/ drwxrwxrwt 9 root 344 ago 29 00:23 tmp/ lrwxrwxrwx 1 root 16 ago 28 20:45 usr -> /mnt/pruebas/usr/ drwxr-xr-x 17 root 408 feb 16 2003 var -> /mnt/pruebas/var/ lrwxrwxrwx 1 root 25 nov 1 2002 vmlinuz -> boot/vmlinuz-2.4... -rw-r--r-- 1 root 3.2k dic 5 2002 XF86Config.new
Bien, se trata de trasferir unos cuantos directorios y dejar un link en su lugar, exactamente igual que hice con "var". Concretamente, lo haremos con los directorios "tmp", "root", "opt", "home", "floppy" y "cdrom". Parece mucho más trabajo que ayer, pero en realidad, todos juntos, ocupan menos disco que "var", por lo que llevará menos tiempo. Eso sí, hay que teclear más comandos, claro. ;-)
RIP bash# mv tmp /mnt/linux/. RIP bash# mv root /mnt/linux/. RIP bash# mv home /mnt/linux/. & [1] 987 RIP bash# mv opt /mnt/linux/. & [2] 988 RIP bash# mv floppy /mnt/linux/. RIP bash# mv cdrom /mnt/linux/. RIP bash# jobs
Ahora espero un poco, tecleando "jobs" de vez en cuando, hasta asegurarme de que todas las tareas en segundo plano han terminado. Como veis, he puesto a trabajar en modo background los comandos que exigen más tiempo (mover home y opt). Esto me permite aprovechar la capacidad multitarea de linux y dejar libre la linea de comandos. Cuando "jobs" me dice que todas las tareas han terminado, pongo los links en su sitio:
RIP bash# pwd /mnt/oldlinux RIP bash# rm -Rf tmp root home opt floppy cdrom RIP bash# ln -s /mnt/pruebas/tmp tmp RIP bash# ln -s /mnt/pruebas/root root RIP bash# ln -s /mnt/pruebas/home home RIP bash# ln -s /mnt/pruebas/opt opt RIP bash# ln -s /mnt/pruebas/floppy floppy RIP bash# ln -s /mnt/pruebas/cdrom cdrom RIP bash# reboot
Con esto hemos terminado por hoy. Arranca mi Debian y compruebo que sigue funcionando sin ningún problema.
Hoy seguimos transfiriendo directorios, pero esta vez será algo distinto. ¿Por qué?. Bueno, porque hay algunos ficheros que son especialmente delicados: tienen que estar accesibles desde el principio, incluso antes de montar los todos los sistemas de archivo que no sean "/".
Un ejemplo. En el directorio /etc se encuentra /etc/fstab, que es el fichero que le indica al sistema en el arranque cómo deben montarse todos los sistemas de archivo. Así, es este fichero el que indica que /dev/hda8 debe montarse como /mnt/pruebas. Si no se lee este fichero, no puede montarse, con lo cual el link "usr -> /mnt/pruebas/usr" sencillamente no funciona. Si convertimos "/etc" en un link a "/mnt/pruebas/etc", convertimos el sistema en fosfatina, porque no puede montarlo al no encontrar un /etc/fstab que se lo indique. Es un círculo vicioso que no haría ninguna gracia, ¿verdad?.
Por eso hay determinados directorios que NO vamos a mover y convertir en un link, sino que vamos a hacer una simple copia. Por otro lado, esos directorios a los que me refiero no suelen cambiar demasiado en el tiempo, sino que se mantienen casi invariables salvo que instalemos o modifiquemos algo en la configuración del sistema. Por eso, copiándolos en lugar de hacer un link, podemos estar razonablemente seguros de que dentro de un mes la copia seguirá más o menos igual que su original. Esos directorios son "/sbin", "/proc", "/mnt", "/lib", "/initrd", "/etc", "/dev", "/bin". ¿Vale?. Pues arrancamos nuestro disco de rescate y, aprovechando que tenemos "/dev/hda2" ya casi vacío, hacemos:
RIP bash# mkdir /mnt/oldlinux RIP bash# mount /dev/hda2 /mnt/oldlinux -t reiserfs -o rw RIP bash# mount /dev/hda8 /mnt/linux -t reiserfs -o rw RIP bash# cd /mnt/oldlinux RIP bash# tar -czf sbin.tar.gz sbin & [1] 1238 RIP bash# tar -czf bin.tar.gz bin & [2] 1239 RIP bash# tar -czf proc.tar.gz proc #(aunque debería estar vacío :-) ) RIP bash# tar -czf mnt.tar.gz mnt [01] Done tar -czf sbin.tar.gz sbin RIP bash# tar -czf lib.tar.gz lib [02]+ Done tar -czf bin.tar.gz bin RIP bash# tar -czf initrd.tar.gz initrd RIP bash# tar -czf etc.tar.gz etc RIP bash# tar -czf dev.tar.gz dev RIP bash# cd /mnt/linux RIP bash# tar -xzf /mnt/oldlinux/sbin.tar.gz & [1] 1243 RIP bash# tar -xzf /mnt/oldlinux/bin.tar.gz & [2] 1244 RIP bash# tar -xzf /mnt/oldlinux/proc.tar.gz RIP bash# tar -xzf /mnt/oldlinux/mnt.tar.gz RIP bash# tar -xzf /mnt/oldlinux/lib.tar.gz [01] Done tar -xzf /mnt/oldlinux/sbin.tar.gz RIP bash# tar -xzf /mnt/oldlinux/initrd.tar.gz RIP bash# tar -xzf /mnt/oldlinux/etc.tar.gz [02]+ Done tar -xzf /mnt/oldlinux/bin.tar.gz RIP bash# tar -xzf /mnt/oldlinux/dev.tar.gz RIP bash# rm -f /mnt/oldlinux/*.tar.gz
Ya solo quedan un par de detalles en la raiz del sistema. Concretamente, dos ficheros (no directorios):
RIP bash# pwd /mnt/linux RIP bash# ln -s /boot/vmlinuz-2.4.18-bf2.4 vmlinuz RIP bash# mv /mnt/oldlinux/.qt . RIP bash# cd /mnt/oldlinux RIP bash# ln -s /mnt/pruebas/.qt .qt RIP bash# reboot
Bien, no tengo ni la más remota idea de por qué el directorio ".qt" aparece en la raíz de mi sistema. Se supone que no debería estar ahí, eso está claro, pero por algún motivo está. Prefiero no correr riesgos así que también lo muevo y lo convierto en un link. Cuando termine, ya me aseguraré de que hace ahí, e igual hasta lo quito. Pero de momento, daño no hace, y prefiero crearme los problemas de uno en uno. ;-)
Después de rebotar, compruebo que todo va bien. Mi viejo sistema se reinicia sin problemas. ¡ME ENCANTA QUE LOS PLANES FUNCIONEN!. :-)
¿Qué hemos conseguido hasta ahora?. Bueno, basta con echar un rápido vistazo para hacernos una idea:
[lacofi@claudia lacofi]$ df -h S.ficheros Tamaño Usado Disp Uso% Montado en /dev/hda2 5.0G 82M 4.9G 2% / /dev/hda6 10G 5.0G 5.0G 50% /mnt/virtuales /dev/hda7 4.0G 2.0G 2.1G 48% /mnt/extra /dev/hda8 9.8G 8.3G 1.5G 85% /mnt/pruebas /dev/hda1 86M 34M 52M 40% /boot [lacofi@claudia lacofi]$
Como podemos ver, la partición "hda2" está ya prácticamente vacía. Por el contrario, la partición "hda8" contiene casi todo linux, más de 8 Gb en total. Veámoslo con más detalle:
[lacofi@claudia lacofi]$ ls -Fohl / total 55k drwxr-xr-x 2 root 2.1k ago 30 03:14 bin/ lrwxrwxrwx 1 root 17 ago 30 19:29 boot -> /mnt/pruebas/boot/ lrwxrwxrwx 1 root 18 ago 30 19:27 cdrom -> /mnt/pruebas/cdrom/ drwxr-xr-x 9 root 35k ago 30 18:32 dev/ drwxr-xr-x 146 root 9.4k ago 30 18:33 etc/ lrwxrwxrwx 1 root 19 ago 30 19:33 floppy -> /mnt/pruebas/floppy/ lrwxrwxrwx 1 root 17 ago 30 19:26 home -> /mnt/pruebas/home/ drwxr-xr-x 2 root 48 nov 1 2002 initrd/ drwxr-xr-x 5 root 3.1k abr 14 00:40 lib/ drwxr-xr-x 18 root 472 ago 30 20:25 mnt/ lrwxrwxrwx 1 root 16 ago 30 19:40 opt -> /mnt/pruebas/opt/ dr-xr-xr-x 111 root 0 ago 30 20:31 proc/ lrwxrwxrwx 1 root 17 ago 30 19:41 root -> /mnt/pruebas/root/ drwxr-xr-x 2 root 3.3k ago 30 03:15 sbin/ lrwxrwxrwx 1 root 16 ago 30 19:42 tmp -> /mnt/pruebas/tmp/ lrwxrwxrwx 1 root 16 ago 28 20:45 usr -> /mnt/pruebas/usr/ lrwxrwxrwx 1 root 16 ago 30 19:20 var -> /mnt/pruebas/var/ lrwxrwxrwx 1 root 25 nov 1 2002 vmlinuz -> boot/vmlinuz-2.4... [lacofi@claudia lacofi]$ ls -Fohl /mnt/pruebas total 67k drwxr-xr-x 2 root 2.1k ago 30 03:14 bin/ drwxr-xr-x 3 root 480 ago 15 20:02 boot/ drwxr-xr-x 2 root 48 nov 1 2002 cdrom/ drwxr-xr-x 9 root 34k ago 30 15:31 dev/ drwxr-xr-x 146 root 9.4k ago 30 15:31 etc/ drwxr-xr-x 2 root 48 nov 1 2002 floppy/ drwxr-xr-x 7 root 168 may 27 02:43 home/ drwxr-xr-x 2 root 48 nov 1 2002 initrd/ drwxr-xr-x 5 root 3.1k abr 14 00:40 lib/ drwxr-xr-x 18 root 472 jul 19 03:10 mnt/ drwxr-xr-x 12 root 352 ago 4 02:18 opt/ drwxr-xr-x 2 root 48 feb 8 2002 proc/ drwxr-xr-x 44 root 2.6k ago 30 15:24 root/ drwxr-xr-x 2 root 3.3k ago 30 03:15 sbin/ drwxrwxrwt 12 root 480 ago 30 20:48 tmp/ drwxr-xr-x 15 root 384 ago 28 20:38 usr/ drwxr-xr-x 17 root 408 feb 16 2003 var/ lrwxrwxrwx 1 root 26 ago 30 21:16 vmlinuz -> /boot/vmlinuz-2.4... [lacofi@claudia lacofi]$
O sea, en "hda2" ya solo nos quedan unos cuantos links y directorios esenciales, mientras que en hda8 tenemos ya un linux duplicado y operativo, en cuanto le digamos al sistema cómo debe arrancarlo.
Y eso lo haremos, naturalmente, modificando LILO y fstab. Pero eso quedará para otro día. :-D
En realidad, lo que queda son ya dos chorradas. De hecho, ni siquiera necesitamos el disco de rescate.
Bien, en primer lugar entramos como root y editamos el fichero /mnt/pruebas/etc/fstab. Cambiamos las siguientes líneas:
/dev/hda2 / reiserfs defaults 0 0 /dev/hda8 /mnt/pruebas reiserfs defaults 0 0
Por estas otra:
# /dev/hda2 / reiserfs defaults 0 0
/dev/hda8 / reiserfs defaults 0 0
Y ahora vamos a por /etc/lilo.conf.
[lacofi@claudia lacofi]$ su password [root@claudia lacofi]# cd /etc [root@claudia etc]# cp lilo.conf lilo.conf.kalimero [root@claudia etc]# vim lilo.conf
Como veis, conviene hacer una copia de lilo.conf para poder retroceder sobre nuestros pasos. Lo mismo puede decirse de fstab. De todas formas, solo hay que cambiar una linea, la que está marcada en color cian:
# /etc/lilo.conf - See: `lilo(8)' and `lilo.conf(5)',
# --------------- `install-mbr(8)', `/usr/share/doc/lilo/',
# and `/usr/share/doc/mbr/'.
lba32
boot=/dev/hda
install=/boot/boot-menu.b
map=/boot/map
delay=50
message=/boot/message
menu-scheme=wb:bw:wb:bw
prompt
timeout=100
vga=788
default=Debian
image=/vmlinuz
label=Debian
root=/dev/hda8
read-only
append="hdc=ide-scsi hdd=ide-scsi max_scsi_luns=1"
Ahora ejecutamos lilo:
[root@claudia etc]# /sbin/lilo Added Debian * [root@claudia etc]# cp lilo.conf /mnt/pruebas/etc/.
Elemental. El directorio "/etc" estaba copiado, no linkado, así que en el próximo arranque, leerá la otra versión que está en /dev/hda8. Por eso conviene copiar lilo.conf al otro lado. ¿Queda algo por hacer?. ¿No?.
[root@claudia etc]# reboot
Y ya está. En este arranque, /dev/hda2 ni siquiera se monta. Queda libre para instalar lo que queramos (BeOS, OS/2...). Pero esa es otra historia. :-)