Сначала хотел написать длинно, и подробно, но напишу кратко. Суть, помер в ноутбуке k53u диск ST9320325AS, ноут его начал видеть через раз, а потом и вовсе перестал, где-то прочёл что если в диске и P и G листы забиты полностью, то диск начинает прятаться, так как уже невозможна самокоррекция, это сделано специально чтобы диск можно было сбросить в сервисе и начать работу по восстановлению данных. Это Segate в который можно залезть по UART, прицепил к нему самодельный uart-usb на atmega8, очистил G-list, и ещё немного покуралесил чуть не добив его окончательно. Переподключил, вуаля диск стал видимым, сначала решил проверить самое важное, первые сектора диска, для этого попытался установить grub, как оказалось что там всё, попытка обращения к ним приводила к лютому спаму в dmesg типа
Buffer I/O error on dev sde, logical block 1, async page read
...
и так далее
При этом перераспределённые сектора в smart увеличивались, всё как надо, ожидаемо, ну хорошо, думаю нужно узнать беда по всему диску или нет, началась рутина, на диске последовательно формировался раздел от балды на 20 гигабайт, проверялась его корректность, чтение, запись, бедблоки, если провал или отвал диска, ребут, очистка G листа, снова раздел но уже со смещением и так до победного. Типа вот так, итерационно
<------------- объём диска --------------->
[[part] ] TEST - отвал физический
[ [part] ] TEST - I/O error on dev sde, logical block затем отвал физический
[ [part] ] TEST - I/O error on dev sde, logical block спам
[ [part] ] TEST - I/O error on dev sde, logical block спам
[ [part] ] TEST - ОK
[ [part] ] TEST - OK
[ [part] ] TEST - OK
[ [part]] TEST - OK
Итого выяснилось что в первых ~157 гигабайтах диска, если так можно выразится, находится 2047 плохих секторов разбросанных по началу диска, включая нулевой, обращение на запись в который просто выносило диск, он отвалился на уровне sata, вернее его прошивка диска отваливала.
А вот последующие, 163 гигабайта диска замечательно читались, прошли ночные стресс тесты, с многократной записью и чтением всего объёма.
И решено было попробовать сделать так, в начале диска выделить FAT раздел, размером 157 гигабайт, и в конце диска EXT4 размером 163 гигабайта, диск был подключён через USB адаптер, на основном компе запущен QEMU, так как предполагалось что с первого раза не повезёт, и таки да, для пробы на EXT4 раздел был установлен Mint (просто что было под рукой), а затем тот уже на первый FAT раздел закинул свои UEFI файлики иииии, один из них видимо захотел записаться на битый сектор, последствия плачевны конечно, но мы люди упороты…кхм упорные, формат FAT раздела, и уже попытка докинуть UEFI файлы, с третьего раза удалось. Всё, более этот FAT раздел трогаться не будет. Следовательно диск не будет обращаться к битым секторам и продолжит штатно работать.
Повторно очищенный G лист заполнился снова на те же 2047 секторов, плюс
неисправимый 1 сектор, тот самый нулевой для MBR, из за которого более диск
невозможно загрузить через классический GRUB. И вот тут-то смысл заголовка про UEFI думаю уже понятен.
Возможность по сути произвольного размещения загрузчика сделала возможной продолжение использования диска.
Сейчас так
sda 8:0 0 298,1G 0 disk
├─sda1 8:1 0 151,8G 0 part /
└─sda2 8:2 0 146,3G 0 part /boot/efi
# badblocks -nsv /dev/sda1
Checking blocks 0 to 159135743
Checking for bad blocks (read-only test): 0.00% готово, 0:00 прошло. (0/0/0 готово
Проход завершён, найдено 0 повреждённых блоков. (0/0/0 ошибок)
Девственно чистый dmesg, радующий только информационными сообщениями.
Всё работает хорошо и я уверен проработает ещё долго, оставлю Mint раз уж поставил, хотя хотел Debian изначально.
На ноуте никогда не было и не будет важных данных. Да, диск уполовинился.
Ну и что, диски с завода идут с целой россыпью битых и перераспределённых секторов которые прописаны внутри диска в P-listе. Сделали диск на 320GB ой, половина объёма битое, не беда, пометим на заводе и продадим как 120GB диск.
Вот такая вот история, моя почка может остаться при мне.
Для справки.
G-List это таблица трансляции для перераспределённых секторов возникших при эксплуатации.
P-List это таблица трансляции для перераспределённых секторов которые уже с завода были битые.
Там ещё всякого много внутри диска по UART можно поковырять. И моторчик можно включать/выключать, но одно неосторожное движение-эксперимент и диск окирпичивается =)
P.S. А ещё снимал плату с диска, и там контактная площадка к внутренностям диска вусмерть была окислена, segate на позолоту там не раскошелился, окисление + нагрев могли приводить к шумам или даже обрыву коммуникации внутрянки с управляющей платой и эти джиги-дрыги привести к повреждению поверхности, в теории
Сам не фоткал, но нашёл наглядную картинку, у меня было также если не хуже
Почистил разумеется.
Так что если припёрло, ну и нечем заменить диск, или нет средств на новый, можно всё же повертеться и попробовать найти на диске стабильный не сбойный кусок и развернуть систему на нём.
Всем бобра, досвиданья.