[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Reading MtRainier CD in plain CD unit?



Hi,

> xorriso : UPDATE : 359848 of 359848 sectors examined in 5404 seconds

You really did let it gnaw to the end.
(I hope the drive noise was not too frightening.)


> Media checks :        lba ,       size , quality
> Media region :          0 ,       1632 , + good
> Media region :       1632 ,         32 , - unreadable
> Media region :       1664 ,         16 , + slow
> Media region :       1680 ,         15 , + partial
> Media region :       1695 ,          1 , - unreadable
> ...
> Media region :     295264 ,      64584 , - unreadable

The bad spots look not overly encouraging.
The ones at block address 1632 and 1695 might well have hit
the UDF directory tree.
The big one at the end predicts that about 128 MB of file data
will be unreadable. Also hit would be the hinder "anchors" of
UDF. There should be a copy at address (1024 + 256), though.

So it is not totally hopeless (but nevertheless a different
drive with MRW capability promises more success).

------------------------------------------------------------------

You could copy the readable blocks to a file on hard disk.

  xorriso -outdev /dev/sr0 \
          -check_media use=outdev what=disc time_limit=3600 \
                       data_to=$HOME/copy_of_mrw \
   2>&1 | tee -i $HOME/log_of_copy_of_mrw

This will copy the readable blocks to their proper addresses
in file  $HOME/copy_of_mrw . The inner bad blocks will not be
copied and will contain 0-bytes in the copy. The bad blocks
at the end will not be part of the copied file.

This run will log all message output in file
  $HOME/log_of_copy_of_mrw

I assume that your read attempt reached the final area of bad
blocks already after less than an hour. So you could reduce the
time_limit to 3600 and spare your drive the useless effort.
If this does not reach block 295264, then you may re-run with
additional options of -check_media:

          -check_media use=outdev what=disc time_limit=3600 \
                       data_to=$HOME/copy_of_mrw \
                       min_lba=... \
                       max_lba=295264 \
  
The value of min_lba= would be the first number in the last
visible message of the form
   xorriso : UPDATE : 123456 of 359848 sectors examined in 3600 seconds 
I.e. here: 123456.
It is harmless to retrieve blocks twice.

After the file is copied to disk as good as possible, you would have
to cut off its first 2 MB and try to mount the rest.
This is a bold try and might stress you operating system.
So better do not attempt this while important jobs are running.

Cut off (needs another 600 MB of disk space, i fear):

  dd if=$HOME/copy_of_mrw \
     of=$HOME/daa_copy_of_mrw \
     bs=2048 skip=1024

The resulting file $HOME/daa_copy_of_mrw would be the payload
area of the MRW. (If i understand the specs correctly.)

A first try to find the UDF Primary Volume Descriptor would be
  dd if=$HOME/daa_copy_of_mrw \
     bs=2048 count=1 skip=257 \
  | strings | fgrep OSTA
If this says
  OSTA Compressed Unicode
then you probably have an UDF there.
(Regrettably the anchor at block 256 seems to have few redundancy
 by which it could be recognized. The Volume descriptor address 257
 is quite a guess.)


For mount-safety add the missing blocks as 0s:

  dd if=/dev/zero bs=2048 count=64584 >>$HOME/daa_copy_of_mrw

The eventual mount test would be done as superuser:

  mount -o loop .../daa_copy_of_mrw /mnt

(Instead of "..." you insert the $HOME directory of the user who
 created the file daa_copy_of_mrw. Directory /mnt has already to
 exist and should be empty.)

Then do

  ls -l /mnt

and hope for files being visible.

------------------------------------------------------------------------


Have a nice day :)

Thomas


Reply to: