Al tener un disco particionado, y muchas veces
compartiendo con otros sistemas operativos, ocurre que necesitamos
cambiar nuestras particiones. En algunos casos para darle mas espacio a
una partición o porque queremos borrar aquel otro sistema operativo que
ya no necesitamos. O tal vez moverla a otro disco duro.

Primero necesitamos ver claramente como queremos tener distribuido
nuestro sistema operativo. Recuerden que Linux por lo menos necesita 2
particiones, una para Linux y otra para la swap. Es recomendable tener
más particiones como por ejemplo una partición para /boot, y si quieren
en otros casos para los programa /usr/local/, pero no es necesario todo
se puede poner dentro de una partición.

Para hacer el cambio de particiones es necesarios una de dos cosas, o
que ya se tenga una partición vacía en el disco duro primario o que se
tenga un disco duro secundario (hdb), el cual debe estar conectado. 

 Herramientas

Las herramientas que tenemos para particionar
generalmente son el fdisk y el cfdisk, son herramientas comunes en todas
las distribuciones de Linux, generalmente si ya instalaste Linux debes
haberlas usado, aunque en algunas distribuciones al instalar te dan
particionando y no tienes idea como esta tu disco duro. Las herramientas
para formatear particiones son mke2fs, mke2fs -j, mkreiserfs, mkfs.xfs y
mkfs.jfs. Para más información de estas herramientas puedes ver sus
respectivos manuales con el comando “man” desde consola.

Siempre es útil y en este caso es necesario tener un disco de
arranque, un livecd o los discos de instalación de tu distribución.  

Ejemplo

La partición que voy a mover va a estar en
el disco primario o master (hda) y vamos a suponer que tengo dividido
el disco de la siguiente manera:

/dev/hda1 S.O. no Linux

/dev/hda2 swap

/dev/hda3 /

  
Digamos que quiero eliminar la partición de
ese S.O. no Linux y quiero usar todo el espacio que queda para mi la
partición raíz o root de Linux

Montar un disco secundario y formatear una partición

En este caso lo que voy a usar es un disco duro secundario (hdb), para ahí copiar mi partición Linux temporalmente.

Suponiendo que el disco esta nuevo o vacío vamos a particionarlo,
Ojo no copien su partición Linux a una partición en fat ya que estas no
guardan los permisos, necesitamos que se mantengan los mismos permisos
de antes. Por lo tanto solo deben copiarle a una partición de algún
formato soportado por y para Linux ya sea ext2, ext3, reiserfs, xfs,
jfs.

Primero nos cambiarnos a root

$su –

Para particionar el disco

#cfdisk /dev/hdb

o

#fdisk /dev/hdb

Creamos una partición con el suficiente
espacio para albergar todo nuestra antigua partición. Y luego la
formateamos con cualquiera de los formatos a elección. (Digamos ext3)

#mke2fs -j /dev/hdb1*

* Para el ejemplo asumí que la primera partición del disco esclavo es a donde vamos a copiar todo.

Una vez ya formateada, la montamos en el lugar de elección, yo
prefiero crear una carpeta nueva para dentro del directorio /mnt. que se
llame hdb1

#mkdir /mnt/hdb1

Ahora la montamos al disco secundario en la carpeta

#mount /dev/hdb1 /mnt/hdb1

Listo, ahora ya estamos listos para copiar
las carpetas con sus respectivos permisos. Puedes hacerlo desde comando
usando cp o desde el midnight commander, pero como súper usuario o
root, 

Usando cp

Antes que nada leer el manual de cp

#man cp

Lo que nos interesa es las opciones de -p
para preservar sus atributos, permisos, grupos y usuarios., también las
opciones para copiar recursivamente como -r o -R.

Para copiar la carpeta no es recomendable hacer cp -R -p /
/mnt/hdb1, porque se duplicaría todo lo que esta montado en /mnt/hdb1,
es preferible hacerlo carpeta por carpeta desde la raíz.

#cp -R -p /bin /mnt/hdb1

#cp -R -p /boot /mnt/hdb1

#cp -R -p /dev /mnt/hdb1

Para la carpeta /mnt, debe ser creada con
los mismo atributos dentro de /mnt/hdb1, y copiar el resto de carpetas
que están adentro de /mnt a /mnt/hdb1 excepto por /mnt/hdb1.

Para cambiar los permisos, grupos y usuarios a los que pertenece tenes las herramientas chmod, chown, chgroup.

Usando midnight commander o mc

Si usas el mc debes asegurarte al copiar las carpetas que este marcado preservar atributos o preserve atributtes.

Después de copiar todos los archivos asegurémonos que tengas los
permisos correspondientes, entra a las carpetas, verifica si se copio
bien. Podes usar “ls -al” lo cual te lista los archivos y carpetas
dentro de una carpeta con sus respectivos permisos.

Ejemplo

#cd /etc

#ls -al

y luego

#cd /mnt/hdb1/etc

#ls -al

y comparas los permisos.

Si solo querías cambiar tu instalación de Linux a otro disco duro podes saltarte el siguiente paso.

 
Reparticionar el disco

Lo siguiente es reparticionar el disco
primario, si es que no están listas ya las particiones. Ahora en el caso
en el que yo planteé, si borramos las particiones del disco primario o
master no podemos seguir trabajando o no nos va dejar hacerlo, por eso
es importante tener un disco, un livecd o un cd de instalación de tu
distribución.

En mi caso yo tengo slackware, arranco con el cd de slackware y
este me permite re-particionar como si lo fuera a instalar por primera
vez. desde un livecd deberían poder hacer lo mismo y estoy casi seguro
que pueden hacerlo con casi cualquier distribución. Y así poder acceder
a herramientas como el fdisk o el cfdisk

Ojo no arranquen desde su partición ya establecida, asegúrense que arranque desde el cd, como si lo fueran a instalar.

Ejemplo del disco reparticionado:

/dev/hda1 swap

/dev/hda2 /

Seguramente te toca reiniciar la máquina e ingresas de nuevo como si fueras a instalar.

Ahora formateas las particiones de acuerdo a tu gusto, pero a la swap debes activarla como swap

Creas la firma de swap

#mkswap /dev/hda1

Y copias de nuevo lo que tenías en el disco
secundario o esclavo (hdb) a la partición o particiones que gustes,
pero asegurate que se copien los permisos.  

Modificar el fstab

Debes modificar el archivo /etc/fstab, aquí generalmente solo debes cambiar el número de las particiones de acuerdo a tu caso,

Antes

/dev/hda2 swap swap defaults 0 0

/dev/hda3 / ext3 defaults 1 1

Ahora

/dev/hda1 swap swap defaults 0 0

/dev/hda2 / ext3 defaults 1 1

Si creaste otras particiones que no están
listadas aquí, como crear una boot deberías aumentar una línea como esta
de acuerdo a como le hayas creado.

/dev/hdaX /boot exts2 defaults 1 2

También puedes ver el manual del fstab para más información (man fstab)

Aun no esta instalado bien el arranque, si tenían lilo o grub o
cualquier otro no esta especificado donde debería estar el arranque. El
siguiente paso se podría hacer montando las particiones y cambiándonos
con el chroot, env-update, source, pero voy usar la salida para newbies.

Reiniciamos la máquina con el cd, pero en este caso debemos
especificar donde esta la raíz, en el caso de slackware se hace así :

root=/dev/hda2 noinitrd

Este parámetro me deja arrancar desde el cd especificando donde esta la raíz. Toda distribución tiene alguna forma de hacerlo.  

Gestores de Arranque


Grub

Si tenían grub pueden modificar el archivo /etc/grub.conf que es un symlink para el archivo /boot/grub/grub.conf.

Ahora en el grub deben encontrar la parte donde dice root, esto
indica que partición tenían marcada como la raíz “/” de linux y deben
modificarla de acuerdo a su raíz.

Grub maneja las particiones de la siguiente forma hdX ,Y , siendo X
el número del disco duro esclavo o master, y Y el número de la
partición. Y estos números comienzan desde cero, ejemplo /dev/hda1 es
llamado (hd0 ,0 ), para el caso del ejemplo expuesto anteriormente seria
(hd0,1).

Ya una vez modificado utilizamos el comando

#grub-install

o hacer lo siguiente si no funciona grub-install que es la instalación manualmente, entrando al shell de grub.

Desde consola ejecutamos como root:

#grub

>root (hdX ,Y ) // Especificamos donde reside la partición /boot

>setup (hd0) //Instala grub en la mbr

>quit //Sale de la shell de grub 

Lilo

Con lilo es bastante simple, encontraran que el archivo de configuración es /etc/lilo.conf

Busquen las líneas que se refieren a su instalación de lilo e
indiquen donde se encuentra root. Para el ejemplo sería root=/dev/hda2, a
diferencia del grub deben especificar donde se encuentra la raíz no la
partición boot.

Para finalizar ejecuten desde consola lilo

# lilo

Y listo, ya pueden reiniciar.