Como remover Windows

ArticleCategory: [Artikel Kategorie]

System Administration

AuthorImage:[Bild des Autors]

[Foto del Autor]

TranslationInfo:[]

original in fr Olivier Chapuis

fr to en Paul Kienzle

en to es Rubén Sotillo

AboutTheAuthor:[Über den Autor]

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.

Abstract:[Zusammenfassung]

En este artículo, trato de explicar como remover Windows de una máquina que también tenga instalado Linux, y además, como usar el espacio disponible para Linux. Este artículo está dirigido a usuarios novicios (Yo soy uno de éllos).

ArticleIllustration:[Titelbild des Artikels]

[Ilustración]

ArticleBody:[Der eigentliche Artikel]

Introducción

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.

Pasos Principales

- 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.

Preparación y fuentes de dificultades

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

Reconstruyendo la partición de Windows

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 ...

Usando la <<nueva>> partición.

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!

Problemas.

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.


Referencias

  • man pages: fdisk, mk2ext, cp, mv, rm, lilo, lilo.conf y fstab
  • /usr/doc/lilo-0.20/doc/User_Guide.ps
  • /usr/doc/util-linux-2.7/README.fdisk
  • Hard Disk Upgrade Mini How-To