Personal tools
You are here: Home Documentación Recetas Cómo recortar una partición NTFS
Navigation
Log in


Forgot your password?
New user?
 
Document Actions

Cómo recortar una partición NTFS

by Lorenzo Gil Sanchez last modified 29-10-2004 07:58 PM

Copyright © 8 de Febrero de 2003 por Miguel Quirós (MiguelQuiros)

Como todos sabréis, la mayor parte de los que instalan Linux por primera vez tienen un ordenador con Windows ya instalado y ocupando todo el disco duro en una única partición y normalmente no quieren borrar esa partición con todos los datos y programas que contiene. Hacer una copia de seguridad completa no es una tarea fácil ni cómoda por lo que, si no se quiere comprar un segundo disco duro, lo más habitual es "recortar" la partición Windows de forma que no ocupe todo el disco duro y deje sitio en el mismo para meter Linux.

Si la versión de Windows es la 98 o anteriores (que utilizan los sistemas de ficheros FAT16 o FAT32), la cosa no suele tener mayor dificultad: existen programas como FIPS o GNUparted que seguramente conoceréis y que pueden realizar la tarea de forma bastante segura.

Pero la cosa se complica si nos enfrentamos a Windows-XP, dado que este utiliza (salvo que se le hubiera dicho lo contrario al instalarlo) el sistema de ficheros NTFS, que no está soportado por FIPS o por GNUparted (aunque los desarrolladores de este último parece que están en ello). Existen programas bajo Windows que pueden hacer esta función, el más conocido es Partition Magic, pero es propietario y cuesta sus dineros y por supuesto, no voy a ser yo el que recomiende que se utilice en plan pirata.

Después de un rato buscando por la red, encontré por fin una solución libre al problema: se llama ntfsresize y esta encuadrada dentro de una serie de utilidades libres de tratamiento del sistema de ficheros NTFS (http://linux-ntfs.sourceforge.net/). Recomiendo que se lea la documentación que aparece en estas páginas, además de esta receta: gran parte de lo que aquí se indica es solo una traducción de lo que aparece allí.

A mí me ha funcionado perfectamente pero hay que hacer las advertencias obligatorias en estos casos: el uso de este tipo de herramientas se realiza siempre bajo la exclusiva responsabilidad del usuario y a su exclusivo riesgo. Si alguien la utiliza, le falla el invento y pierde datos, no puede ir a ningún lado a reclamar (y menos que a nadie, al autor de estas líneas). Siempre es recomendable hacer una copia al menos de los datos más importantes e irrecuperables que tengamos (el sistema operativo y los programas los podremos volver a instalar pero los documentos y ficheros personales quizás no).

Hay que aclarar que ntfsresize "recorta" el sistema de ficheros, pero no la partición, por lo cual después de usar ntfsresize es necesario usar fdisk, lo cual inyecta más adrenalina en el proceso. En fin, os indico los pasos que hay que dar.

Descargar el programa ntfsresize (binario estático) de http://mlf.linux.rulez.org/mlf/ezaz/ntfsresize.html y copiarlo en un disquete (puede estar formateado para linux o para MS-DOS).

Tener preparado un CDROM que nos permita arrancar linux desde el mismo: KNOPPIX es una buena opción aunque seguramente el CDROM de arranque de cualquier distribución también nos puede servir.

Arrancar WindowsXP y desfragmentar la partición que queremos recortar. Podemos saltarnos este paso si pensamos que tenemos sitio suficiente "en blanco" al final del disco. Más adelante veremos como podemos comprobarlo. No está de más que verifiquemos previamente el espacio libre total en el disco a ver si es suficiente para que quepa linux "sin apreturas".

Arrancar de nuevo el ordenador con el CDROM linux. Es preferible arrancar en modo texto para usar menos memoria. Si usamos el CDROM de KNOPPIX, esto se consigue poniendo boot: knoppix 2 en la pantalla inicial. Con el CDROM de arranque de RedHat, creo que hay que poner linux rescue. Con los de otras distribuciones, consultad las ayudas correspondientes.

Montar el disquete donde tenemos ntfsresize, para ello crear el directorio /mnt/floppy (si no existe ya), proceder a montar y cambiar a ese directorio:

        mkdir /mnt/floppy
        mount /dev/fd0 /mnt/floppy
        cd /mnt/floppy

Comprobar si tenemos suficiente sitio al final del disco para realizar la maniobra, eso se hace con la siguiente orden:

        ./ntfsresize -i /dev/hda1

(obsérvese que tenemos que poner ./ al principio porque /mnt/floppy seguramente no estará en el PATH). Obtendremos una respuesta de este tipo:

          ntfsresize v1.6.99 
          NTFS volume version: 3.1 
          Current volume size: 38232061440 bytes (38232 MB) 
          Scanning volume ... 100.00 percent completed 
          You could resize at 10196025344 bytes or 10197 MB (freeing 10194 MB).

Aquí se nos indica el mínimo tamaño que podemos dejar a la partición NTFS (10 G de los 38 G que tiene ahora) y por tanto, el máximo que podríamos dedicar a Linux (28 G). Si este valor no nos parece suficiente, podemos abortar el proceso, rearrancar el ordenador (Ctl-Alt-Supr) con el XP y proceder ahora a la desfragmentación si no la hicimos antes. Si ya hemos desfragmentado y seguimos sin tener espacio suficiente, tendremos que comprar un segundo disco duro y olvidarnos de ntfsresize :-).

Tomar la decisión importante: cuánto sitio vamos a dejarle a la partición de Windows (y por tanto cuanto nos quedará para linux). Una vez tomada la decisión, ejecutar ntfsresize en "modo prueba" para detectar posibles errores antes de ejecutarlo de verdad (en este ejemplo hemos dejado 15 G para el XP, destinando 23 G para linux):

        ./ntfsresize -n -s15000M /dev/hda1

          ntfsresize v1.6.99 
          NTFS volume version: 3.1 
          Current volume size: 38232061440 bytes (38232 MB) 
          New volume size : 14999994368 bytes (15000 MB) 
          Scanning volume ... 100.00 percent completed 
          Updating $BadClust file ... 
          Updating $Bitmap file ... 
          Updating Boot record ... 
          The read-only test run ended successfully.

ATENCIÓN: llegamos al punto de no retorno. Si no ha surgido ningún error en el paso anterior, procedemos a "the real thing":

        ./ntfsresize -s15000M /dev/hda1

          ntfsresize v1.6.99 
          NTFS volume version: 3.1 
          Current volume size: 38232061440 bytes (38232 MB) 
          New volume size : 14999994368 bytes (15000 MB) 
          Scanning volume ... 100.00 percent completed 
          WARNING: Every sanity check passed and only the DANGEROUS
          operations left.      Please make sure all your important data
          had been backed up in case of an unexpected failure! Are
          you sure you want to proceed (y/[n])?

Contestamos "y" y ya no hay vuelta atrás:

          Schedule chkdsk NTFS consistency check at Windows boot time ... 
          Resetting $LogFile ... (this might take a while) 
          Updating $BadClust file ... 
          Updating $Bitmap file ... 
          Updating Boot record ... 
          Syncing device ... 
          NTFS had been successfully resized on device '/dev/hda1'.
          You can go on to resize the device e.g. with 'fdisk'. 
          IMPORTANT: When recreating the partition, make sure you 
          1) create it with the same starting disk cylinder 
          2) create it with the same partition type (usually 7, HPFS/NTFS) 
          3) do not make it smaller than the new NTFS filesystem size 
          4) set the bootable flag for the partition if it existed before 
          Otherwise you may lose your data or can't boot your computer from the disk! 

Ya está dado el primer paso importante: conviene apuntar el número exacto de bytes a los que ha quedado reducido el sistema de ficheros NTFS (indicado en "new volume size"). Ahora hay que recortar la partición y ¡hay que asegurarse que su tamaño no sea menor que el de el sistema de ficheros! Para ello hay que usar fdisk:

        fdisk /dev/hda

Si no habéis usado nunca fdisk, podéis ver sus comandos introduciendo "m". El estado actual del disco lo averiguamos introduciendo "p". Deberemos obtener algo parecido a esto:

          Disco /dev/hda: 255 cabezales, 63 sectores, 4650 cilindros
          Unidades = cilindros de 16065 * 512 bytes

          Dispositivo Inicio  Principio   Fin    Bloques  Id  Sistema
          /dev/hda1   *         1      4650  37350792    7  HPFS/NTFS   

Sigue habiendo una única partición que ocupa los 4650 cilindros del disco de tipo NTFS

Ahora hay que borrar (sí, he dicho borrar) la partición NTFS. Hay que introducir "d" y cuando nos pregunte qué partición, contestar "1".

Lo siguiente es volver a crear la partición con un tamaño más pequeño. Hay que introucir "n", después partición primaria "p" y número "1". El comienzo de la nueva partición debe ser exactamente el mismo que tenía la antigua (normalmente 1) y ahora hay que introducir el mismo tamaño que indicamos anteriormente al usar ntfsresize: +15000M

Verificar el tamaño de la partición que acabamos de crear. Introducimos "p" y obtenemos la tabla de partición actual:

          Disco /dev/hda: 255 cabezales, 63 sectores, 4650 cilindros
          Unidades = cilindros de 16065 * 512 bytes

          Dispositivo Inicio  Principio   Fin    Bloques  Id  Sistema
          /dev/hda1             1      1836  14747670   83  Linux

El tamaño (en bytes) de la partición lo hallamos multiplicando el número de cilindros (si el cilindro inicial es el 1, el cilindro final nos indica directamente el número de cilindros) por el número de bytes de cada cilindro (lo pone arriba). En nuestro ejemplo: 183616065512 = 15101614080 Este número no puede ser menor que el que definimos con ntfsresize. Si esto no es así debemos volver a borrar la partición y volverla a crear con un tamaño un poco mayor.

La partición creada hay que definirla como una partición NTFS (por defecto fdisk crea particiones linux) Esto se hace introduciendo "t", partición número "1" y tipo "7".

Además debe ser una partición de arranque, esto se hace intoduciendo "a", partición "1". Una vez hecho todo esto lo comprobamos introduciendo "p". Debe obtenerse algo muy similar a esto:

          Disco /dev/hda: 255 cabezales, 63 sectores, 4650 cilindros
          Unidades = cilindros de 16065 * 512 bytes

          Dispositivo Inicio  Principio   Fin    Bloques  Id  Sistema
          /dev/hda1   *         1      1836  14747670    7  HPFS/NTFS

Compruébese la presencia del asterisco (partición de arranque) y que el tipo es NTFS.

Pues ya está. Segundo punto de no retorno: introucir "w" para escribir la nueva tabla de partición y salir de fdisk.

Llega el momento de rearrancar el ordenador y ver si todo ha salido bien o si la hemos cagado:

        reboot

Dejar que arranque el WindowsXP. En este momento, XP parece que detecta que algo raro ha pasado y hace un chequeo del sistema de ficheros. Después del chequeo, en mi caso, arrancó normalmente sin ninguna otra incidencia.

Ya podéis instalar vuestra distribución favorita de linux e ir usando la partición que hemos dejado con el XP cada vez menos ...


Powered by Plone CMS, the Open Source Content Management System Powered by GCubo Powered by Cicode

This site conforms to the following standards: