Re: dd hung up by disk errors
If your bad sectors are local to a particular area of the disk, you
could read sections starting at the end, and moving towards the
beginning after each section is completed.
Later you would concatenate the sections that were recoverable.
Give either iseek=n or skip=n to dd to skip over a portion of the disk.
Also download, burn and boot off the SystemRescueCd - it has a lot of
tools for this sort of thing:
Don Quixote de la Mancha
Dulcinea Technologies: Software of Elegance and Beauty.