Почему мой диск игнорирует команды стирания и записи в некоторых секторах?
Я сделал безопасное стирание ATA на SSD (с SystemRescueCD и hdparm
). Некоторые части диска обнуляются, а некоторые нет. В частности, MBR и загрузочный сектор раздела Windows Vista обнуляются, но загрузочный сектор раздела Windows 7 полностью не затронут. Улучшенное безопасное стирание дает те же результаты.
Раздел Windows 7 был вторым логическим разделом внутри расширенного раздела (т. Е. / Dev/sda6) до удаления таблиц разделов. Я попытался обнулить загрузочный сектор с помощью 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
Команда вернулась успешно, но сектор все еще не изменился, как будто запрос на запись полностью игнорируется.
До стирания SSD он был полностью функциональным. После того, как он был удален, он прошел расширенную автономную самопроверку SMART, поэтому я считаю, что он все еще функционирует.
Я искал вариант BIOS, но не смог найти какие-либо опции, связанные с защитой от записи. Модуль TPM деактивирован. Диск не был зашифрован.
Есть идеи, почему диск может игнорировать команды стирания и записи?
- Система: Dell Latitude E4200
- Версия BIOS: A19
- Модель SSD: SAMSUNG SSD Thin uSATA 128 ГБ M (я думаю, это мини-карта PCIe)
- Версия прошивки SSD: VAM05D1Q (я не смог найти никаких обновлений)
- Режим SATA: пробовал как AHCI, так и ATA
1 ответ
Есть два варианта dd
для пропусков блоков. Из справочной страницы:
seek = N пропустить N блоков размером с OBS в начале вывода
skip=N пропустить N блоков размером ibs в начале ввода
Таким образом, первая команда читает блок 184252416 из /dev/zero
(заполнено нулями) и записывает его в блок 0 на /dev/sda
, Второе чтение из (нетронутого) блока 184252416 на /dev/sda
,
Первая команда должна быть:
dd if=/dev/zero of=/dev/sda bs=512 seek=184252416 count=1
который читает один блок из /dev/zero
стремится заблокировать 184252416 на /dev/sda
, затем пишет это.