original in fr Olivier Chapuis
fr to en Paul Kienzle
en to es Rubén Sotillo
En la vida real, el autor trabaja con matemáticas, en particular lógica, algebra y teoría de computación. Recientemente descubrió Linux y esto fue una verdadera revelación para él. Ama Muriel y su actual hobby es el buceo. También le gusta Brittany, el mar, navegar, esquiar y la buena comida.
Esto me pasó el día que quise remover Windows, dos meses después de haber instalado Linux. La razón era simple, ¡no quería usarlo nunca más! Imaginé que un número de usuarios de Linux están en la misma situación, y escribí este documento para ayudarlos (los gurus pueden leerlo también y sugerir mejoras). Si estás en esta situación, hay dos estrategias disponibles.
La primera es reinstalar Linux. La ventaja de esta estrategia es que con un poco de experiencia, tomarás mejores decisiones en la instalación, en particular en aquellas relativas al tamaño de las particiones. La principal desventaja es que perderás todo. Puedes evitarlo en parte, haciendo un respaldo de todo lo que no está en el CDROM de instalación. Pero reinstalar todo ese respaldo te costará tiempo y sudor.
La segunda estrategia es remover Windows (lo que es fácil), y entonces usar el espacio disponible para Linux. Es decir, <<reparticionar>>, una operación un poco tramposa y poco documentada. La ventaja de este método es que si tienes éxito, tu sistema estará <<como antes>> pero con más espacio en disco. La segunda ventaja es que si fallas, siempre podrás usar la primera estrategia. En este documento, explico como lo hice. Por supuesto, el método dependerá de tu configuración. En particular, si tienes un disco virgen muy grande, puedes, primero, hacer un respaldo de los archivos a ese disco y entonces instalar desde el principio. Pienso que esta es la estrategia más segura y permite un mejor resultado. Yo respaldo todo en floppies de 1.44 Mb. De todas maneras, espero que la estrategia descrita abajo ayudará al nuevo usuario.
Quiero agradecer a Olivier Tharan por su detallada respuesta a un mensaje posteado en fr.col.moderated la cual fue la versión -1 de este documento. También agradezco a Finn Bo Jorgensen y a Chmouel Boudjnah por sus respuestas.
- Preparación: respalda, examina y toma notas sobre ciertos archivos importantes antes de proceder. Lee el documento para entender lo que vas a hacer.
- Remover Windows.
- Reparticionar, el truco.
Sobre todo, respalda los archivos esenciales. En particular, los archivos de configuración y de trabajo. No diré más nada sobre esto.
Un paso preliminar es entender lo que vas a hacer. Hay alguna explicación de los comandos y archivos que siguen, pero está incompleta. ¡Lee las man pages!. En este caso, fdisk, mk2ext, cp (un comando nada estúpido), lilo, lilo.conf y fstab (hay también man pages para ciertos archivos de configuración). Documentos muy detallados sobre lilo se encuentran en el directorio /usr/doc/lilo-0.20/doc/ (si tu sistema está correctamente instalado). En particular hay una <<guía de usuario>> de ¡46 páginas! Para fdisk ver el archivo /usr/doc/util-linux-2.7/README.fdisk, que está muy completo. Cuando elaboraba este documento descubrí un mini-Howto muy útil: Hard Disk Upgrade Mini How-To.
Primero, aquí está mi tabla de partición:
[olivier@snoopy olivier]# /sbin/fdisk -l (como su) Disk /dev/hda: 128 heads, 63 sectors, 788 cylinders Units = cylinders of 8064 * 512 bytes Device Boot Begin Start End Blocks Id System /dev/hda1 * 1 1 397 1600672+ c Unknown /dev/hda2 398 398 601 822528 83 Linux native /dev/hda3 602 602 627 104832 82 Linux swap /dev/hda4 628 628 788 649152 83 Linux native |
Vemos que Windows está en hda1. No es inusual para fdisk llamar <<Unknown>> a una partición FAT32. Mi kernel (actualmente 2.0.34) sabe como acceder a este tipo de filesystem, pero ese no es el caso para mi fdisk. Para demostración, aquí está la salida de df (con la partición /dos montada).
[olivier@snoopy olivier]# df Filesystem 1024-blocks Used Available Capacity Mounted on /dev/hda2 796065 506992 247947 67% / /dev/hda4 628351 226366 369528 38% /home /dev/hda1 1594456 850420 744036 53% /mnt/dos |
Tendrás que editar dos archivos de configuración /etc/fstab y /etc/lilo.conf. Parecen algo como esto:
[olivier@snoopy olivier] less /etc/fstab /dev/hda2 / ext2 defaults 1 1 /dev/hda4 /home ext2 defaults 1 2 /dev/hda3 swap swap defaults 0 0 /dev/fd0 /mnt/floppy ext2 user,noauto 0 0 /dev/cdrom /mnt/cdrom iso9660 user,noauto,ro 0 0 none proc proc defaults 0 0 /dev/hda1 /mnt/dos msdos user,noauto 0 0 |
[olivier@snoopy olivier] less /etc/lilo.conf boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=500 image=/boot/vmlinuz-2.0.34-1 label=linux root=/dev/hda2 read-only other=/dev/hda1 label=dos table=/dev/hda |
Ahora debes hacer todo como root. Por razones psicológicas, recomiendo hacer login como root (no hagas su desde tu cuenta). Si usas vi para editar, puedes utilizar w! para guardar. De todas maneras, te recomiendo verificar si las modificaciones fueron realmente guardadas (sal del editor y observa el archivo con el comando less).
Vas a usar los comandos fdisk y mke2fs. Estos comandos trabajan con particiones de disco duro y todos los demás sistemas de almacenaje. Es mejor utilizar estos comandos en particiones que no esten montadas. Esto se hace en tres pasos.
- Si tu partición está montada, desmóntala: umount /mnt/dos.
- Ejecuta fdisk. Cambia la identidad de hda1: le diremos a Linux que esta partición será ahora una partición nativa de Linux. Hazlo con el comando t (t, 1, 83). Mira: p , la única cosa que cambia es el Unknown el cual pasa a ser linux native y la c se convierte en 83. Guárdalo y sal: w. Mira otra vez en: fdisk -l. Saliendo de fdisk recibo el siguiente mensaje de error:
The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. Re-read table failed with error 16: Device or resource busy. Reboot your system to ensure the partition table is updated. |
Hasta donde yo se, este mensaje es normal e inofensivo: no hice reboot.
- Formatear: mke2fs /dev/hda1. Muchos números aparecen, entonces el sistema trabaja un rato y ¡poof! ¡Windows 98 no está más! El prudente añadirá la opción -c lo que hace un rápido chequeo para determinar si hay bloques dañados en el disco.
Ahí lo tienes. Windows desaparecio. No estaba especialmente emocionado por esto (No tengo nada personal en contra de Win98 ni de Microsoft ...). Pero estoy feliz por Linux ...
Bien, ahora tengo una partición de 1.5 Gb vacía, una partición de 600 Mb para /home, una de 800 Mb para / (y una partición swap de 100 Mb). Hay 100 Mb en /home/myaccount la cual debe estar en /usr/local/ (la dejaré en /dev/hda2) y hay 10 Mb en /usr/local. Moveré / a hda1 y colocaré /usr/local en hda2. Esto me dará:
Filesystem 1024-blocks Used Available Capacity Mounted on /dev/hda1 1600672 465000 1130672 29% / /dev/hda2 796065 110000 696065 13% /usr/local /dev/hda4 628351 40739 587612 6% /home |
suficiente espacio por una docena de años....
Ahora lo haremos así. Para acceder a hda1 debes montarla en algún lugar. Generalmente usas /mnt.
- Crea un nuevo directorio en /mnt, digamos /mnt/tmp, para proveer un propio mount point para hda1 (mount no crea directorios): mkdir /mnt/tmp.
- Monta hda1 en /mnt/tmp : mount -t ext2 /dev/hda1 /mnt/tmp (claramente -t ext2 da el tipo de filesystem).
- Copia / a /mnt/tmp/ mientras preservas su estructura: cp -ax / /mnt/tmp/. Para la opción -a, la man page dice: <<Preserva tanto como sea posible la estructura y los atributos del archivo original en la copia. Lo mismo que -dpR>>. Ver la man page de cp para el significado de d, p y R, lo cual explicará mejor la opción -a. La opción -x pide saltar los subdirectorios que están en diferentes filesystems desde donde la copia empezó. En mi caso, esto evita copiar /home sobre /dev/hda1. La operación de copia tomará algún tiempo (cerca de 15 min con mi disco IDE y mi AMD K6 a 266 MHz), ahora la usual frase: ve a tomar un café o un whisky doble mientras esperas.
- Hay aun algunas cosas extraviadas en hda1. A causa de la opción -x, tenemos perdidos los dos directorios (vacíos) /home y /proc. Así mkdir /mnt/tmp/home y mkdir /mnt/tmp/proc. Estos directorios son los mount points que deben estar allí así que /home (el cual está en hda3) y /proc pueden ser montados en root.
Ahora las cosas se complican un poco. Tenemos / (=/-/home) en hda2 pero también en /mnt/tmp/. Vamos a prepararnos para reiniciar. Debemos editar fstab y lilo.conf. Linux debe ser notificado que vamos a reiniciar con / la cual está en /mnt/tmp/. De este modo, para fstab el archivo que debemos modificar es de hecho /mnt/tmp/etc/fstab. Para lilo.conf es diferente. Debemos editar /etc/lilo.conf, correr lilo y además copiar el nuevo /etc/lilo.conf a /mnt/tmp/etc/lilo.conf (para tener un sistema consistente). O podríamos editar solamente /mnt/tmp/etc/lilo.conf y correr lilo con la opción -C diciéndole que debe usar un archivo de configuración diferente. Yo escogí el segundo método.
- /mnt/tmp/etc/fstab
Este archivo indica como y donde montar todo lo que es montable al iniciar el sistema. Cuando reiniciamos, queremos que root / sea hda1, así que necesitamos la primera línea de /etc/fstab como se señala abajo. ¡Claro que, no podemos montar dos roots! Desde que tenemos que trabajar en /dev/hda2, La estoy montando en /mnt/tmp. El resto permanece igual.
/dev/hda1 / ext2 defaults 1 1 /dev/hda2 /mnt/tmp ext2 defaults 1 2 /dev/hda4 /home ext2 defaults 1 3 /dev/hda3 swap swap defaults 0 0 /dev/fd0 /mnt/floppy ext2 user,noauto 0 0 /dev/cdrom /mnt/cdrom iso9660 user,noauto,ro 0 0 none /proc proc defaults 0 0 |
- /mnt/tmp/etc/lilo.conf.
lilo.conf es el archivo de configuración para lilo, el pequeño programa en el MBR. No entraré en detalles. Si alguien no utiliza lilo, le recomiendo que se cambie (loadlin es absurdo en nuestro caso, y ¿por qué iniciar desde un floppy en estos días?). Aquí le decimos a lilo que ahora el kernel está en hda1 (estaba en hda2 antes) y por supuesto removemos todo lo relativo a Windows.
boot=/dev/hda map=/boot/map install=/boot/boot.b prompt timeout=500 image=/boot/vmlinuz-2.0.34-1 label=linux root=/dev/hda1 read-only |
- Ejecuta lilo: /sbin/lilo -v -C /mnt/tmp/etc/lilo.conf. la v es para que lilo nos diga un poco más acerca de lo que está pasando. ¡Aquí no debemos ver ningún mensaje de error! No podemos cometer errores si queremos reiniciar. Debemos ver algo como esto:
LILO version 20, Copyright 1992-1997 Werner Almesberger Reading boot sector from /dev/hda Merging with /boot/boot.b Boot image: /boot/vmlinuz-2.0.34 Added linux * /boot/boot.0300 exists - no backup copy made. Writing boot sector. |
- Reinicio. Algunas pequeñas pruebas (df, fdisk -l, vemos si el filesystem está como lo habíamos especificado).
- Remueve todo de /mnt/tmp/, lo cual hacemos así: rm -rf * en el directorio /mnt/tmp. Ahora copiamos el directorio /usr/local: cp -a * /mnt/tmp después cd /usr/local. Revisa si todo está bien, entonces elimina /usr/local: rm -fr * en el directorio /usr/local (nota que no debemos quitar el <<nombre>> el cual pronto daremos como el mount point para local!).
- De nuevo edita /etc/fstab y cambia solamente la segunda línea:
/dev/hda2 /usr/local ext2 defaults 1 2 |
- Reinicia. Haz algunas pruebas.
La operación está hecha. Te aseguro que estoy satisfecho, especialmente después de probar algunos programas y todos ¡funcionaron!
En verdad, tuve un pequeño problema. Lo de arriba no es exactamente lo que sucedió, pero si una aproximación. El consejo que puedo darte es entender un poco acerca de lo que estás haciendo lo cual te permitirá comprender por qué esto no funciona y solucionar el problema. Olivier Tharan me recomendó reiniciar en single user mode (no lo hice porque la única documentación que tenía sobre el single user mode es <<hecha una mirada a los archivos en single user boot mode>> y no estaba de ganas). Antes del primer reinicio parece prudente tener un buen disco de reinicio (el cual debe estar adaptado a la situación y admito no saber exactamente como hacerlo...)
Aquí está el problema que tuve. Antes del primer reinicio hice casi todo lo de arriba. Pero después de reiniciar, en la fase de montar los filesystems una serie de mensajes de errores aparecieron rapidamente. Alcancé a leer: /proc ... error ... error ... /home ... error (sin un rastro en /var/log/messages). Entonces (fiuuu) el login prompt apareció. Hice login como root e inmediatamente
[root@snoopy root]$ df Filesystem 1024-blocks Used Available Capacity Mounted on /dev/hda1 1548535 506977 961525 35% / /dev/hda2 796065 506992 247947 67% /mnt/tmp |
Home no estaba montada. Edité fstab, pero todo era normal. Entonces tuve una brillante idea (¿el whisky doble?) montar /home y me encontré con el mensaje <<mount: mount point /home does not exist>>. Entonces comprendí que no había entendido lo que era un mount point y que había olvidado la opción x de cp (admito estar un poco avergonzado). Establecí los mount points /home and /proc y monté /home and /proc para ver si estaba ok. Entonces la operación se realizó como lo describí arriba.