[ltp] HDD emergency repair (howto)

Volker Krueger linux-thinkpad@linux-thinkpad.org
Wed, 06 May 2009 10:36:21 +0200


Hi Richard,

Really great, thanks for sharing!!

Volker


Richard Neill wrote:
> Dear All,
>
> I've just saved a friend's SATA notebook disk, and thought it might be 
> worth writing up a brief account.
>
> Symptom:
>   Laptop wouldn't boot at all, stalling at the first BIOS screen.
>   HDD wasn't spinning.
>   Unplugging HDD allowed the laptop to boot via live-CD.
>   => HDD faulty.
>
> Confirm:
>   There is nothing else that can be done with this disk. Professional
>    data recovery is too expensive. So OK to take a risk.
>
> Open the disk:
>   Carefully, using a torx screwdriver.
>   One screw is hidden under the label.
>   Clean room would be nice, but I don't have one
>
> Discovery:
>   The head appears to have cold-welded itself somewhere in the
>   middle of the disk. The disk can't spin at all. This is the
>   second time I've come across a 2.5" disk with this problem.
>   User says it wasn't mis-treated.
>
> Solution:
>   Carefully, without touching the platter, use a fingernail to
>   force the head back into the parked position. Some considerable
>   force (perhaps 10 newtons?) is required.
>   Then quickly re-assemble drive before too much dust gets in.
>
> Recovery:
>   Put disk into thinkpad. Boot thinkpad from a live CD. (Mandriva 2009).
>   Fortunately, the "dead" disk spins up.
>   In the live-CD environment, add the package repositories, and install
>   ddrescue.  (Note there are 2 similar programs: ddrescue and dd_rescue.
>   I've had success with both.)
>
>   Mount an external USB HDD. Let ddrescue do its stuff:
>     ddrescue /dev/sda sda.img ddrescue.log
>   After about 24 hours, ddrescue has recovered all 80 GB of the disk,
>   excepting about 5 MB.
>   Also, save fdisk info:
>     fdisk -l /dev/sda > sda.fdisk.txt
>
> Extract partition 1.
>    dd if=sda.img of=sda1.img bs=512 skip=63    #value depends on fdisk.
>
>    Mount the partition loopback:
>      mount -o loop,ro sda1.img /mnt/tmp
>
>    Note: it's supposed to be possible to do
>       mount -o loop,ro,offset=32256 sda.img  /mnt/tmp
>     but I found it didn't work.
>
>    Note 2: It would normally have be easier to directly extract
>    the partitions one at a time, at the ddrescue stage,
>    But in this case, the offending disk is a Windows XP
>    system, and I want to be able to re-image the OS onto a new
>    drive. A filesystem-level copy won't work here. [In Linux, it's
>    easy: just fdisk, mkfs, rsync, then fix fstab and install grub]
>
> Recover data:
>    copy stuff from /mnt/tmp
>
> Re-image to a new disk:
>    Plug in new HDD, boot from liveCD.
>    dd if=sda.img of=/dev/sda
>
>
> I hope that's useful to someone...
>
> Morals of the story:
>   (1) ddrescue is really useful.
>   (2) Linux can do almost anything.
>   (3) Even a totally stuck HDD can be saved without needing a cleanroom.
>   (4) Having a USB-SATA adapter would be useful.
>
> Best wishes,
>
> Richard