O HOWTO do rescate de particións | ||
---|---|---|
Anterior | Seguinte |
Por favor, ten coidado! Se segues as explicacións que se dan aquí conseguirás volver ter o sistema tal coma o tiñas antes, perdendo o que acabas de instalar, se o instalaches! Debes escoller...
Todo é sinxelo se tes a man:
É suficiente con
Na miña instalación de SuSE e tódalas veces que lle tiven que facer isto a outras persoas, deu un bo resultado.
Sen embargo dixen que algunhas versións de fdisk poden delimitar (Ndot: cut) as particións usando sectores e non cilindros. Por iso temos o papel ca saída de fdisk -u -l.
Para usar o listado fdisk -u -l debemos executar fdisk -u :-). Na miña opinión, usar o límite en sectores é unha idea moi mala, pero pode ser que teña un uso real do que non son consciente. O problema é que co límite en cilindros é fácil adiviñar incluso se non tes o papel. En sectores, é máis dificil...
fdisk é un programa pequeno e moi rápido. Hai moitas outras versións de fdisk, pero eu sempre prefiro a clásica (Ndot: bare bone) (Falo da de Linux, dende logo, non das outras...).
Date de conta de que fdisk non escribe nada no disco ata que introduzas w e lle deas a Intro. No caso de que teñas medo de cometer un erro, introduce q (quit) ou preme Ctrl+C (^C) para saír dun xeito seguro.
Cando estea escrita a nova táboa de particións, arrinca Linux. O caso é que non podes facer isto da maneira normal: pode ser que lilo tamén se danara e necesitarás un disquete de arrinque ou arrincar dende un CD (escolle a opción "booting the installed partition").
Se usas lilo para arrincar, tan pronto como entres coma root, escribe "lilo" e preme Intro para reinstalar o teu cargador de arrinque preferido. Agora mesmo non estou seguro de que a mesma cousa sexa tan sinxela con Grub, pero non debería ser moi dificil.
O teu Linux xa debería estar todo aí, compróbao. Intenta iniciar MS Windows se o tes. Se non o consigues, hai unha (pequena) oportunidade de que poidas ler os teus datos dende Linux, realizando unha lectura en bruto sector a sector. Se eres quen de identificar os sectores do disco onde están os teus datos, poderás copialos a un ficheiro usando dd. Isto só é válido para o modo texto (Ndot: This is wise for text only). Este tipo de recuperación non é o obxectivo deste mini-HOWTO.
Isto é para cando o caso anterior non se pode usar, por falta dun papel que teña a saída de fdisk, ou se este non vale para usalo, ou se é antigo.
Primeiro, lembra que mentres non escribas no disco (agás co fdisk), non borrarás ningún dato, así que podes usar un intento bloque a bloque (NdoT: block by block try). Isto é o que necesitas para coñecer o comezo da partición para iniciala. Se 153 non vale, proba con 154, e así.
Isto pode ser moi aburrido, pero se lembras aproximadamente o tamaño da partición de Linux, hai unha oportunidade de que o consigas.
Se acabas de destruír a táboa de particións, pero ainda non reiniciaches Linux: Non reinicies! Ainda podes recuperar a información das particións almacenada no Kernel:
"cat /proc/partitions" devólvenos
major minor #blocks name 3 0 19535040 hda 3 1 2096451 hda1 3 2 4980150 hda2 3 3 1 hda3 <----- isto sinala unha partición extendida 3 5 4980118 hda5 3 6 4972086 hda6 |
# hdparm -g /dev/hda1 /dev/hda1: geometry = 2432/255/63, sectors = 4192902, start = 63 |
Necesitarás facer unhas poucas conversións de unidades. Os "bloques" son normalmente de 1Kb. Os "sectores" son sectores do disco, normalmente de 512 bytes. Pero a miúdo as ferramentas de particionamento de disco traballan cos cilindros coma unidades (aqui 255*63=16065 sectores). Usando esta información podes construír unha nova táboa de particións.
Se sabes onde está o comezo dunha partición de Linux, pero non o remate, ainda así podes montala, e estudiar a súa estructura. Establece correctamente o comezo na táboa de particións, e ponlle no remate un número moi grande. Mira se atinaches con:
# e2fsck -n /dev/hd?? |
Incluso podes montar a partición e verificar o tamaño:
# mount -r /dev/hd?? /mnt df -T |
Isto non che dirá directamente onde comeza a seguinte partición, por mor da cuestión do redondeo. Pero pode axudarche a achegarte. Asegúrate de usar as opcións (NdoT: flags) "-n" e "-r" para tratar o sistema coma de só lectura!!!
Algunhas distribucións gravan nun ficheiro a información sobre as particións. Dende logo probablemente non poderás usalo cando o necesites. Pero por se acaso:
SuSE: /var/lib/YaST/install.inf |
(se sabes doutros sitios onde se almacena este tipo de información, por favor envíalle un correo-e á persoa que mantén este documento)
Pero hai un xeito mellor se ainda podes acceder á rede ou tes o “gpart” a man. gpart está dispoñible na maioría das distribucións, en freshmeat.net ou directamente en http://www.stud.uni-hannover.de/user/76201/gpart.
“gpart - adiviña as particións dun disco duro de PC” é a primeira liña da páxina man de (man gpart).
“gpart intenta adiviñar que particións hai nun disco duro. Se se destruiu, perdeu ou sobrescribiu a táboa de particións primaria, as particións ainda existen no disco pero o sistema operativo non pode acceder a elas.” Isto é exactamente o que necesitamos.
gpart é unha ferramenta moi boa.
O problema é o seguinte: o primeiro bloque de tódalas particións está marcado. Pero nunca está “desmarcado” se non está sobrescrito. Así que moitos dos “primeiros bloques das particións” ainda existen nun disco vello e gpart intenta facelo todo o posible para adiviñar cal é correcta e cal non. En realidade non é moi dificil intentalo, e gpart non vai escribir nada no disco.
Aquí está o resultado de gpart no disco hdb que vimos antes:
# gpart /dev/hdb Begin scan... Possible partition(Linux ext2), size(1200Mb), offset(0Mb) Possible partition(Windows NTFS), size(1200Mb), offset(1200Mb) Possible partition(Linux ext2), size(1004Mb), offset(2402Mb) Possible partition(Windows NTFS), size(1600Mb), offset(4102Mb) End scan. Checking partitions... * Warning: partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX) ends beyond disk end. Partition(Linux ext2 filesystem): primary Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): primary Partition(Linux ext2 filesystem): primary Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): invalid primary Ok. Guessed primary partition table: Primary partition(1) type: 131(0x83)(Linux ext2 filesystem) size: 1200mb #s(2457880) s(63-2457942) chs: (0/1/1)-(152/254/61)d (0/1/1)-(152/254/61)r Primary partition(2) type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX) size: 1200mb #s(2457880) s(2457944-4915823) chs: (152/254/63)-(305/253/60)d (152/254/63)-(305/253/60)r Primary partition(3) type: 131(0x83)(Linux ext2 filesystem) size: 1004mb #s(2056256) s(4919781-6976036) chs: (306/61/49)-(434/60/47)d (306/61/49)-(434/60/47)r Primary partition(4) type: 000(0x00)(unused) size: 0mb #s(0) s(0-0) chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r |
Como ves, as particións primarias poden recuperarse, pero para as extendidas ainda hai traballo por facer.
As particións DOS teñen a etiqueta “windows NTFS” porque se crearon mentres intentaba instalar MS Windows 2000 (unha experiencia horrorosa!). A partición “invalid” (incorrecta) é, en realidade a partición extendida.
Con isto, xa podes usar o fdisk e intentar volver crear a táboa de particións (lembra, isto non ten perigo ningún xa que a orixinal xa está perdida).
gpart actualízase cada semana :-) así que as novas versións poden ser máis potentes do que eu sei actualmente.
A información da partición extendida está esparexida por todo o disco, e non almacenada xunto á das particións primarias. Recuperar estas leva máis traballo. O proceso é:
Se o teu disco duro ten erros, pode ser que teñas verdadeiros problemas montando, verificando ou usando os datos (a unidade le erros que obstaculizan o traballo). Ata pode ser que gpart non poida atopalo. Pero se sabes onde comeza a partición, podes copiar dun xeito sinxelo os datos a un ficheiro temporal situado noutra unidade diferente. Os sectores con erros de lectura normalmente encheranse de ceros mediante este proceso:
# dd if=/dev/hd?? of=/tmp/recover_hd?? bs=512 skip=XXXX count=YYY |
XXX é o sector de inicio e YYY a cantidade de sectores (pode calcularse).
# mount -r -t ext2 -o loop /tmp/recover_hd?? /mnt/recover |
Partition Magic é un producto comercial, non demasiado barato dado o pouco uso que se lle pode dar (aproximadamente cen dólares en Francia) pero cunha gran reputación. Sen embargo eu nunca o usei e non o vou valorar. Dise que é capaz de facer calquera cousa con particións, incluido restauralas.
O mini HOWTO do rescate de particións orixinal de Ralf estaba baseado esencialmente no uso do Partition Magic, así que eu supoño que é unha solución moi boa se tes datos importantes na túa partición Linux e non controlas moito de Linux. Sen embargo agora hai moitas versións recentes de Partition Magic e penso que é mellor que leas o manual.
Anterior | Inicio | Seguinte |
Información técnica | Referencias |