Sí, puedes hacer esto con el /sys
sistema de archivos.
/sys
es un sistema de archivos falso generado dinámicamente por el núcleo y los controladores del núcleo.
En este caso específico, puede ir /sys/block/sda
y verá un directorio para cada partición en la unidad. Hay 2 archivos específicos en esas carpetas que necesita, start
y size
. start
contiene el desplazamiento desde el comienzo de la unidad y size
es el tamaño de la partición. Simplemente elimine las particiones y vuelva a crearlas con exactamente los mismos comienzos y tamaños que se encuentran en /sys
.
Por ejemplo, así es como se ve mi disco:
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 133119 65536 83 Linux
/dev/sda2 * 133120 134340607 67103744 7 HPFS/NTFS/exFAT
/dev/sda3 134340608 974675967 420167680 8e Linux LVM
/dev/sda4 974675968 976773167 1048600 82 Linux swap / Solaris
Y esto es lo que tengo en /sys/block/sda
:
sda1/
start: 2048
size: 131072
sda2/
start: 133120
size: 134207488
sda3/
start: 134340608
size: 840335360
sda4/
start: 974675968
size: 2097200
He probado esto para verificar que la información sea precisa después de modificar la tabla de particiones en un sistema en ejecución
/dev/sdb/start
. ¿Se le ha cambiado el nombreext_range
? Kernel:4.8.15-1-MANJARO
/sys/block/sdb/start
, no/dev/sdb/start
stat
allí, pero nostart
.fdisk
ya que permite ingresar el número de sectores directamente y puede verificar los valores antes de escribir en el disco. He restaurado un disco con éxito: creando la primera partición, aceptando ser, luego ingresando "+ tamaño" (desde arriba) para el final, la segunda partición ingresandostart
desde / sys ... y "+ tamaño" nuevamente y así sucesivamente ... Verifique tamaño de las particiones antes de escribir la nueva tabla. ¡Buena suerte!Hice un script para ayudar a resolver este problema, SIN GARANTÍA . (pero lo probé en mi máquina virtual)
Ejecutando el siguiente script, con HD dañado en el primer parámetro: $ ./repart.sh sda
La salida es un formato sfdisk. Pero precaución , este archivo tiene que ser modificado para ser utilizado. En el tipo de partición extendida = 5, aumente el tamaño, utilizando todo el espacio lógico más el espacio entre el inicio de la extensión extendida y el inicio de la primera partición lógica.
Debe cambiar el tipo , de XX al número de tipo de partición. Ponga la partición de arranque en la primera línea.
Aplicar estos cambios
Volver a leer las tablas de partición
Vuelva a instalar grub
fuente
¿Has probado testdisk ? Puede escanear el disco y recuperar las tablas de partición perdidas, incluso después de reiniciar.
Está disponible preempaquetado para Debian y presumiblemente también para Ubuntu. Probablemente otras distribuciones.
Si está arrancando un CD separado, probablemente valga la pena verificar si está preinstalado en eso.
fuente