Структура жесткого диска DOS

Автор статьи: Господин J
Сайт Автора: Нет
E-mail Автора: johnd@white-star.com
Дата публикации: 26.03.2005


Часть III


Собственно говоря, если у тебя сбоит лишь один раздел - то ты можешь
его легко отключить полностью, просто поставив в Partition вместо
Yes, No ( или Extended ) метку Unused - а когда дочитаешь все,
что я тут написал - вернуться к отключенному разделу снова.
При этом тебе даже не надо будет затирать нулями цифры в этой
строке Partition - cистема просто не будет видеть этот раздел !
При любой записи в системную область диска не забудь сделать
резервную копию этой области. Я обычно обхожусь копией на самом
диске, но в особо ответственных случаях делаю копию на дискету,
и даже правку делаю сначала там же, а потом измененные данные
подсаживаю на диск. В нашем случае тебе достаточно отключить
режим Read Only, а затем нажав F6, найти нужную строку в первом
физическом секторе и в нужном поле нажать букву "U", потом -
попытаться "пролистать" диск хотя бы до следующего сектора -
диск-эдитор сам тебя спросит, не хочешь ли ты в самом деле что-то
записать ? Отвечай: "Конечно, хочу !"
Но если ты все еще не понял, плюс тебе жаль одной трети диска -
то читай дальше...
Так как же я сделал твои три гектара пригодными к употреблению ?
(Между прочим, ты бы мог проследить за этим сам, когда я уродовался
с диском - вместо того чтобы вместе с "аж два О." смотреть Никиту
по телевизору :)
1) Загрузил машину с плохим диском с дискеты, на которой лежал
мой джентльменский набор - пара программ для тестирования
параметров жесткого диска, любимый диск-эдитор и сверх того -
содранная в файл на дискете копия MBR жесткого диска чуть меньшего
размера и с другими параметрами CHS. Конечно, я нашел место
на дискете и еще для кое-чего - но об этом позже.
2) Записал карандашиком на клочке газеты количество цилиндров,
головок и секторов диска - в том виде в каком биос машины
пожелал его определить. ( Должен сказать, многие старые биосы
с автодетектом безбожно врут и часто сбивают с толку новичка,
однако причина этого не в том что биос плохой - нет, он хороший,
а чаще - в том, что кто-то уже постарался на другой машине - а это
значит - с другим биосом - отформатировать этот диск с другими
параметрами CHS. К счастью, нашему диску повезло - он не попал
в такую переделку, поэтому параметры определенные автодетектом и
параметры, которые определила тестирующая программа, совпали -
ну, конечно, со скидкой на LBA - ведь большинство простых
тестирующих программ читают данные CHS прямо из встроенного
контроллера диска - никто не успел нашему диску подпортить паспорт:).
3) Запустил диск-эдитор и посмотрел на это невозделанное поле
площадью в три гектара - мне предстояло забить на нем пару
колышков. Прошелся вхолостую по нему, начиная где-то с десятого
цилиндра ( а может - с двадцатого - посмотри сам, откуда у тебя
начинается первый раздел). Тут надо набраться терпения, хорошо
заранее приготовить кофе или найти в телевизоре достаточно скучную
передачу, - такую чтоб не отвлекала от наблюдения за диском.
Обычно я использую толстую спичку чтобы заклинить клавишу PageDown.
Для чего это нужно ? - Ну, видишь ли, если FDISK работать не хочет,
то кому-то же надо сделать эту работу все-равно. Конечно, я не
прохожу весь диск до конца - на это и недели может не хватить.
Вполне достаточно перечитать такой объем диска которого по твоим
подсчетам с головой хватит для того чтобы туда влезло две копии FAT,
а также корневой каталог и системные файлы - они должны располагаться
сразу за корневым каталогом друг за дружкой, причем самым первым
идет IO.SYS, за ним - MSDOS.SYS ну и COMMAND.COM.
Я может быть повторюсь, но FDISK делает то же самое, только
с нашим диском она не смогла это проделать из-за слишком
обширной сбойной области.
4) Скопировал в первый сектор диска файл с дискеты - я ленивый, но
хитрый, поэтому на моей лискете всегда есть парочка файлов,
в которых записаны копии MBR и сектора ДОС какого-нибудь диска.
Кроме того, иногда я копирую таким же образом первый сектор FAT,
хотя вообще его можно нарисовать руками.
MBR - а точнее - программу загрузки которая в нем записана, руками
не нарисуешь, если конечно у тебя не феноменальная память на коды
в шестнадцатеричной записи. Поэтому лучше его заранее содрать
с рабочего диска с какой-либо подходящей версией ДОС.
5) Подправил данные в MBR так чтобы прямо из него диск-эдитор
мог переходить на сектор ДОС - то есть в то место которое я для
него заранее нашел. На этом этапе наиболее трудный момент -
точно подсчитать число "скрытых" секторов - то-есть расстояние
от MBR до сектора ДОС. Если ты здесь что-то напутаешь, то будешь
иметь очень интересные глюки, дело в том что диск-эдитор - очень
послушный инструмент, но абсолютно лишен средств контроля за
твоими ошибками ;) - и все, чем он тебе может помочь на этом этапе
работы - это подсчет этого числа, если ты сумеешь заставить его
это сделать. Я обычно использую при этом такой прием :
- устанавливаю чтение диска с сектора ДОС и указываю в поле
"сколько секторов читать" все девятки - то есть заведомо больше
чем их вообще есть на диске. Эту ошибку диск-эдитор исправляет сам -
и указывает точно сколько всего секторов ты читаешь. После чего
остается только вычесть это число из общего числа секторов на диске.
Напоследок требуется еще прописать в отведенном для этого поле MBR
сколько же секторов ты отводишь под данный раздел. Тут важно не
указать число большее чем расстояние до следующего раздела, а то
твои файлы могут затереть его начало ( зато ты можешь припрятать
кусочек диска на черный день ;)
6) Забудь все о чем я говорил в предыдущих пяти пунктах - я забыл
провести инструктаж по технике безопасности.
Ты должен пользоваться только такой версией диск-эдитора, настройки
которого по умолчанию не позволяют вручную править байты в секторах
диска. Мой любимый вариант de.exe именно такой. И только когда мне
нужно что-то подправить - я вхожу в меню Options, там выбираю
Configuration и убираю птичку Read Only. При этом не надо делать
Save а лучше сразу Tab`ом перейти на Ok, а то программа имеет глупую
привычку сохранять настройки в файле norton.ini, а при запуске
- читать их оттуда. Само по себе это было бы не страшно, вот
только если ты хочешь править диск с которого грузился - то этот
настроечный файл может тебе напакостить, случайно записавшись как-
раз в потерянный каталог, запись о котором в FAT ты еще не успел
восстановить :-(( Никогда не работай без страховки!
Лучше всего запускать программу с защищенной от записи дискеты,
- тогда она при запуске только лишний раз ругнется на отсутствие
на дискете настроечного файла, зато и не сможет никогда записать
опасный вариант настроек.
И лучше пользоваться самой старой версией de.exe, какую сможешь
найти - она работает сама по себе, без библиотеки вдвое большего
размера, которая только занимает место на дискете, столь необходимое
для других файлов. Та версия которой пользуюсь я, может работать
под управлением любой версии ДОС, как-то я запускал ее на машине
с менее чем 512 кБ памяти и под вторым ДОС`ом. Мне тогда пришлось
собирать раздел второго ДОС буквально по кусочкам: один сектор оттуда,
другой отсюда, но я же хотел сделать его загрузочным - и сделал.
(Хоть он и не видел второго раздела - с ДОС-6.22, - просто потому
что во втором ДОС`е еще не существовало такого понятия - второй
раздел, более того - у него вообще не было и таблицы разделов.
Диск второго ДОС представлял собой как бы просто одну очень большую
дискету и начинался прямо с сектора ДОС, за которым следовали две
копии FAT - и мне пришлось здорово попотеть, чтобы запихнуть эту
конструкцию вглубь диска - я ведь хотел чтобы основной системой
на диске был все-таки 6.22-й ДОС, при загрузке с раздела которого
раздел второго ДОС был прекрасно виден и я таким образом мог
подгружать в него поочередно старые версии разных программ для
изучения их особенностей в родной среде, пользуясь всеми
преимуществами современной версии ).
7) После записи MBR и коррекции его я обычно записываю сектор ДОС,
корректирую данные в нем ( потому что его я тоже беру с другого
диска ), потом записываю две пустые копии FAT и протираю нулями
корневой каталог. После чего перегружаюсь с дискеты - и в моей
системе вдруг появляется отформатированный диск С. Теперь все что
мне нужно сделать - это записать на него системные файлы
в нужной последовательности ( смотри пункт 3 ). Фактически
сейчас я описал то что делает команда FORMAT C: /S
( вот только если диск имеет сбойные сектора, то ты можешь
никогда не дождаться от нее такого результата ).
Именно по этой причине - я ведь не был уверен что дальше первых
двух-трех сбойных цилиндров диск абсолютно невредим, - я и сделал
руками всю работу не только за FDISK, но и за FORMAT.
Если ты считаешь, что программа FORMAT нумерует сектора и кластеры,
то тебе такое может показаться невероятным - однако чем на самом
деле отличается восьмой например сектор 2169-го кластера от пятого
сектора 33170-го кластера ? - Да ничем - FORMAT не нумерует сектора
и кластеры, она только отводит определенное место под две копии FAT,
протирает нулями те сектора в которых будет корневой каталог и пишет
сектор ДОС, где указаны все параметры логического раздела.
Ну может быть - записывает еще системные файлы - если ты не забудешь
ее попросить с помощью указания специального параметра в командной
строке : " FORMAT /S ". А нумеровать сектора... или кластеры... -
какая глупость ! - Кому это нужно ? При поиске нужного кластера и ДОС
и WINDOWS отсчитывают просто требуемое количество секторов от начала
логического диска, причем сектор ДОС считается его первым сектором,
а корневой каталог - первым кластером, что и показывает тебе диск-
эдитор. Второй кластер - это, собственно, начало зоны, отведенной для
записи иформации на диске, и если ты вздумаешь забить весь диск одним
огромным файлом - то он будет начинаться со второго кластера, а в FAT
будет записан просто ряд чисел 3, 4, и так далее - до N - что означает:
"Продолжение данного файла ищите в кластере номер 3, 4, ..., N .
Для пометки последнего кластера отведенного под файл в FAT принят
один и тот же для любого по счету кластера код. Подробней - потом.
А пока не мешает уточнить что если ты научишься делать это вручную,
то даже при обширной плохой зоне на диске ты сможешь его использовать,
так как эту зону не составит особого труда пометить в FAT вручную или
с помощью специальной программы которая менее привередлива чем
FORMAT и специально написана для того чтобы отыскивать и помечать
в FAT плохие кластеры - судьба кластера таким образом определяется
качеством его секторов.