Cambiar el número de la partición de sda1 a sda2

20

Tengo un disco con dos particiones: sda1 y sda2. Me gustaría cambiar el número de sda1 a sda2 y sda2 a sda1.

Es posible pero no recuerdo el procedimiento. es decir, mi primera partición será sda2 y la segunda sda1, así que necesito especificar un orden manual, no un orden automático como en fdisk -> x -> f.

¿Cómo cambio el orden? Los enlaces a manuales o tutoriales también son útiles.

Gracias.

La razón: tengo una aplicación que necesita leer datos de sda1 pero los datos están en sda2. Cambiar la tabla de particiones es la solución más rápida para este problema. El sistema no es crítico, pero no quiero detenerlo por mucho tiempo.

Actualización : la versión fdisk de OpenBSD incluye esa funcionalidad.

Rufo El Magufo
fuente
1
Como generalmente es una mala idea hacer lo que pides, describe por qué quieres eso.
rozcietrzewiacz
Tengo copias de seguridad, no te preocupes :)
Rufo El Magufo
Ok, has sido advertido y quieres jugar, así que aquí va ... :)
rozcietrzewiacz

Respuestas:

17

FYI, es una mala idea y puedes perderlo todo. Si aún desea hacerlo, estos son los pasos:

  1. No lo hagas Si esto no ayuda, entonces:
  2. Use la sfdiskherramienta: Primero, haga una copia de seguridad de la tabla de particiones usando

    sfdisk -d /dev/sda > sda.out
    

    Entonces ve por ello:

    sfdisk /dev/sda -O sda-partition-sectors.save
    

    Verás algo como esto

    Checking that no-one is using this disk right now ...
    OK
    
    Disk /dev/sda: 1018 cylinders, 124 heads, 62 sectors/track
    Old situation:
    Units = cylinders of 3936256 bytes, blocks of 1024 bytes, counting from 0
    
       Device Boot Start     End   #cyls    #blocks   Id  System
    /dev/sda1          0+      5       6-     23063+  83  Linux
    /dev/sda2          6    1017    1012    3890128   83  Linux
    /dev/sda3          0       -       0          0    0  Empty
    /dev/sda4          0       -       0          0    0  Empty
    Input in the following format; absent fields get a default value.
    <start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>
    Usually you only need to specify <start> and <size> (and perhaps <type>).
    
    /dev/sda1 :
    

Ahora le pide que brinde los nuevos detalles para la partición 'sda1'. Entonces tienes que dar los números de sda2 aquí. Entonces, pongo '6 1012' aquí y presiono Enter:

    /dev/sda1 :6 1012
    /dev/sda1          6    1017    1012    3890128   83  Linux
    /dev/sda2 :

Ahora verifique si los números impresos después de presionar Entrar son exactamente los mismos que los impresos anteriormente para sda2. Si está bien, continúe dando los nuevos números para sda2:

    /dev/sda2 :0
    /dev/sda2          0+      5       6-     23063+  83  Linux
    /dev/sda3 :

Esta vez fue suficiente para ingresar "0" en mi caso, pero debe asegurarse de que los números no se confundan con los suyos.

Luego, continúe con las otras particiones de la misma manera. Si ya llegó al final del disco, presionar Enter es suficiente. Finalmente, verifique nuevamente que todos los números estén bien y guarde la tabla de particiones (o no). Si arruinó algo, eche un vistazo man sfdisky las descripciones de las opciones '-d', '-O' e '-I'.

Tenga en cuenta también que, una vez que haya realizado los cambios locos, es posible que deba ejecutar 'sync' para que las particiones se vuelvan a leer antes de intentar montarlas.

rozcietrzewiacz
fuente
Gracias por la respuesta. Tienes razón, esto da miedo :).
Rufo El Magufo
Maravillosamente malvado. ¿Qué pasa si los números no son iguales? ¿Renunciar y repartir? (Eso es lo que hice)
supervacuo
1
@supervacuo Testisk podría ayudarte entonces. Busque el testdiskpaquete en la base de datos de software de su distribución.
rozcietrzewiacz
@supervacuo Si los números no son los mismos, entonces sus nuevas particiones no están en el mismo lugar que las antiguas y posiblemente las corromperá. Si no hace nada más en el disco, puede restaurar la tabla de particiones de la que esperaba hacer una copia de seguridad antes de comenzar e intentar nuevamente. Si no es así, es mejor que espere que los números correctos todavía estén en su consola en algún lugar, o que pueda recordar el tamaño exacto y la ubicación de sus particiones y resolver los números.
Micheal Johnson
31

Acabo de hacer esto de una manera más fácil:

# sfdisk -d /dev/sdb > sdb.bkp

deja una copia por seguridad

# cp sdb.bkp sdb.new 

ahora edite sdb.new cambiando SOLO el orden de las líneas y los números de partición, como en mi caso:

desde

# partition table of /dev/sdb
unit: sectors

/dev/sdb1 : start=  1026048, size=975747120, Id=83
/dev/sdb2 : start=     2048, size=   204800, Id=83
/dev/sdb3 : start=   206848, size=   819200, Id= b
/dev/sdb4 : start=        0, size=        0, Id= 0

a

# partition table of /dev/sdb
unit: sectors

/dev/sdb1 : start=     2048, size=   204800, Id=83
/dev/sdb2 : start=   206848, size=   819200, Id= b
/dev/sdb3 : start=  1026048, size=975747120, Id=83
/dev/sdb4 : start=        0, size=        0, Id= 0

luego lo devuelve a la tabla de particiones del disco

# sfdisk /dev/sdb < sdb.new

Mi secuencia de numeración fue destrozada después de encoger y desplazar a la derecha la única partición (sdb1) para agregar dos particiones más pequeñas al comienzo del disco usando gparted.

Si el último comando no funciona, como en mi caso, cámbielo por:

# sfdisk --no-reread -f /dev/sdb < sdb.new
Joao S Veiga
fuente
Esto funcionó para mí y no terminé necesitando ese segundo comando.
Aaron Franke
Para mí también, gracias;) ... Tenga en cuenta que todas sus particiones estén desmontadas antes de los comandos
intika
3

Tendría que reescribir la tabla de particiones de la unidad para invertir el orden, lo cual es un poco arriesgado. Si yo fuera usted, solucionaría el problema que hace que desee cambiar el orden de los nombres de los dispositivos y dejar las particiones en paz.

Por ejemplo, si tiene un script que necesita ejecutarse en ambas máquinas y desea que acceda al mismo dispositivo, cree un enlace en un directorio diferente (no / dev) que tenga el mismo nombre en ambos servidores, pero enlaces a / dev / sda1 en uno y / dev / sda2 en el otro.

Puede usar cualquier editor de particiones ( fdisko cfdisk) para editar las particiones, pero necesita escribir la configuración actual o tomar una foto de la pantalla. Elimine las dos particiones y luego créelas manualmente, especificando todos los valores correctos. Arranque el sistema con un LiveCD para hacer esto.

Michael Dillon
fuente
No puedo cambiar nada. Mi sistema es un Xen DomU y el problema está en el Dom0. Podría recrear el orden de las particiones, pero es más complejo en mi situación. Pero de todos modos, me gustaría saber cómo cambiar el orden.
Rufo El Magufo
2

En primer lugar, todo esto es un ejercicio para hacer todo lo posible para romper las cosas, pero de todos modos, aquí hay otro enfoque que puede probar.

Nota: No mencionó de dónde arranca, y esta solución, y ninguna otra en el momento en que escribo esto, aborda lo que tendría que hacer para que LILO o GRUB funcionen correctamente.

/dev/sda1y /dev/sda2son dispositivos de bloque (8,1) y (8,2). Puede intentar usar mknodpara simplemente intercambiar los dos.

telinit 1
(...)
rm -f /dev/sda{1,2}; mknod /dev/sda1 b 8 2; mknod /dev/sda2 b 8 1
chmod 640 /dev/sda{1,2}; chown root:disk /dev/sda{1,2}
reboot

Solo recuerde que este intercambio ocurrirá solo después de que su partición contenida /dev/se cargue al arrancar, por lo initrdque todavía tendrá las "correctas" a menos que también lo arregle allí (ejercicio para el lector, ¿ mkinitrdcopiará la extrañeza?) Esto tampoco abordar contextos SELinux.

Aaron D. Marasco
fuente
El gestor de arranque no es un problema :). Gracias por la solución, pero necesito cambiar el orden en la tabla de particiones, no en el sistema.
Rufo El Magufo
1
Eso no funcionará en ningún sistema que use udev, y solo ayudaría si la aplicación leyera desde un archivo llamado /dev/sda(en lugar de leer el disco directamente).
Gilles 'SO- deja de ser malvado'
Ambos, de acuerdo. Toda la pregunta en mi humilde opinión es un ejercicio de dolor. No estaba seguro de las udevcosas; aparentemente el primer sistema en el que me metí sshno lo tenía.
Aaron D. Marasco
2

Acabo de descubrir una solución sorprendentemente fácil para este problema. Digamos que solo le queda una partición con nombre /dev/sda3. Quieres que se llame /dev/sda1. Abra gdisk, convierta la tabla de particiones a GPT, escriba y salga. Luego ábralo nuevamente, presione ordenar (esto cambiará el número GPT a 1), y luego convierta el GPT nuevamente a MBR a través de las opciones expertas.

usuario1980127
fuente
1

- Edición de particiones / dev / sda3 a / dev / sda2 en la terminal como root -

  1. Tabla de partición de respaldo

    sfdisk -d / dev / sda> sda.bkp

  2. Copie la copia de seguridad de la tabla de particiones a la nueva tabla de particiones

    cp sda.bkp sda.new

  3. Editar nueva tabla de particiones

    gedit sda.new

ingrese la descripción de la imagen aquí

Guardar cerrar

  1. Vuelva a instalar la nueva tabla de particiones.

    sfdisk --no-reread -f / dev / sda <sda.new

  2. Reiniciar la computadora

usuario264681
fuente
Aunque esto es factible, recomendaría el GParted LiveCD
eyoung100
1
Creo que puede hacerlo mejor que una captura de pantalla de un editor de texto con una fuente no monoespacial, un punto de inserción visible y errores visibles de corrector ortográfico.
Micheal Johnson