Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I did an ATA secure erase on an SSD (with SystemRescueCD and hdparm). Some parts of the disk are reset to zero, but some parts are not. In particular, the MBR and the boot sector of a Windows Vista partition are zero-ed, but the boot sector of a Windows 7 partition is completely untouched. Enhanced secure erase gives the same results.

The Windows 7 partition was the 2nd logical partition inside the extended partition (i.e. /dev/sda6) before the partition tables were erased. I attempted to zero it's boot sector with dd:

dd if=/dev/zero of=/dev/sda bs=512 skip=184252416 count=1
dd if=/dev/sda bs=512 skip=184252416 count=1 | hexdump -C

The command returned successfully, but the sector is still unchanged, as if the write request is completely ignored.

Before the SSD was erased, it was completely functional. After it was erased, it passed a SMART extended offline self-test so I believe it's still functional.

I searched through the BIOS option but couldn't find any options related to write-protection. The TPM module is deactivated. The disk was not encrypted.

Any idea why a disk may ignore erase and write commands?

  • System: Dell Latitude E4200
  • BIOS version: A19
  • SSD model: SAMSUNG SSD Thin uSATA 128GB M (I believe it's a mini PCIe card)
  • SSD firmware version: VAM05D1Q (I haven't been able to find any updates)
  • SATA mode: tried both AHCI and ATA
share|improve this question
    
Have you tried chkdsk command with repair chkdsk /r. – avirk Aug 14 '11 at 1:15

There are two options to dd for skipping blocks. From the manpage:

seek=N skip N obs-sized blocks at start of output

skip=N skip N ibs-sized blocks at start of input

So the first command reads block 184252416 from /dev/zero (filled with zeros), and writes it to block 0 on /dev/sda . The second reads from (untouched) block 184252416 on /dev/sda.

The first command should be:

dd if=/dev/zero of=/dev/sda bs=512 seek=184252416 count=1

which reads one block from /dev/zero, seeks to block 184252416 on /dev/sda, then writes it.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .