Войти
Портал компьютерных советов - Hiper-ru
  • Плохо работает колесико на беспроводной мышке
  • Cкачать файл Skype apk на Андроид
  • NAT - настройка преобразования сетевых адресов
  • Легкий способ научиться слепому десятипальцевому набору
  • Лучшие переводчики на андроид
  • Как найти и удалить вредоносную программу
  • Загрузочный сектор (boot). Восстановление загрузочного сектора

    Загрузочный сектор (boot). Восстановление загрузочного сектора

    MBR (по-русски – главная загрузочная запись) – определенный набор данных, строчек кода, таблица разделов и сигнатуры. Необходим он для загрузки операционной системы Windows после включение компьютера. Бывают случаи, когда в результате различных аппаратных и системных сбоев, МБР повреждается или стирается, что приводит к невозможности запуска Windows. Подобные проблемы решает восстановление загрузочной записи MBR Windows 7. В данной статье рассмотрено несколько несложных способов, которыми можно восстановить записи.

    Немного теории

    После включение компьютера BIOS выбирает носитель информации, с которого будет осуществляться загрузка. На этом этапе устройству необходимо знать, какой именно раздел жесткого диска содержит системные файлы Windows. MBR – небольшая программка, которая хранится в первом секторе HDD и указывает компьютеру на правильный раздел для запуска системы.

    Если вы некорректно установите вторую операционную систему, таблица разделов может повредиться и старт первой Windows будет невозможен. То же самое иногда происходит при внезапном отключении электроэнергии. Если это произошло – не стоит отчаиваться, поврежденные данные можно полностью восстановить.

    Восстановление загрузочной записи

    Для того чтобы восстановить MBR, вам понадобится инсталляционный диск, с которого вы устанавливали Windows (либо любой другой). Если же диска нет, можно создать загрузочную флешку с Win7. Алгоритм действия:

    Автоматическое восстановление

    Для начала стоит предоставить починку MBR стандартным средствам от Microsoft. Выберите пункт «Восстановление запуска». Больше ничего делать не требуется, пройдет некоторое время, и компьютер сообщит о завершении процесса. Попробуйте запустить Windows. Если ничего не получилось – значит, необходимо восстановить МБР вручную.

    Командная строка

    Этот путь требует ввода нескольких команд в командную строку Windows.

    • В меню восстановления системы выберите пункт «Командная строка».
    • Теперь необходимо ввести «bottrec/fixmbr ». Данная команда служит для записи новой MBR совместимой с Win 7. Команда удалит нестандартные части кода, исправит повреждения, но не будет затрагивать существующую таблицу разделов.
    • Следом введите «bootrec/fixboot ». Эта команда служит для создания нового загрузочного сектора для Windows.
    • Далее «bootrec/nt60 sys ». Эта команда обновит загрузочный код MBR.
    • Закройте консоль, перезагрузите компьютер и попробуйте запустить систему. Если проблема все еще не решена, необходимо ввести еще несколько команд.
    • Снова запустите консоль и введите «bootrec/Scanos » и «bootrec/rebuildbcd ». С помощью этих утилит компьютер просканирует жесткий диск на наличие операционных систем, а затем внесет их в меню загрузки.
    • Следом опять введите «bootrec/nt60 sys » и перезагрузите компьютер.

    Утилита TestDisk

    Если у вас нет загрузочной флешки или диска, можно восстановить поврежденную запись с помощью сторонней программы. Для этого необходимо запустить другую (рабочую) ОС. Если на вашей машине была всего одна Windows, придется подключить жесткий диск к другому компьютеру. Работа с TestDisk достаточно сложна, поэтому рекомендуется ознакомиться с руководствами, посвященными конкретно этой программе.

    Если вам ни разу не доводилось сталкиваться с проблемой возникновения сбоев при загрузке операционной системы компьютера, возможно, данная статья не будет вам интересна. Она предназначена для тех, кто хочет научиться самостоятельно (без вызова специалистов) устранять время от времени возникающие сбои в работе операционной системы и производить восстановление загрузочного сектора своими руками.

    Возможные причины сбоя

    Как правило, сбой появляется неожиданно. Просто однажды вы не можете включить свой компьютер, потому что операционная система не загружается. Это происходит из-за того, что по различным неинтересным для абсолютного большинства пользователей причинам, повреждается главная загрузочная запись (MBR), или как ее еще называют - загрузочный сектор. Причинами сбоя могут быть программное повреждение MBR вследствие вирусной атаки либо нарушение физических секторов жесткого диска. Устранить проблему можно произведя восстановление загрузочного сектора. В результате программа переназначит области винчестера, и функции MBR будет выполнять другой сектор диска.

    Решение проблемы

    Восстановить загрузочный сектор достаточно просто. Чаще всего помогает проведение повторной загрузки системы. Вам может быть предложено несколько вариантов. Неискушенным пользователям советуем выбирать вариант загрузки системы с последними работоспособными параметрами. Если это не помогает, попробуйте загрузить ее в безопасном режиме. В этом случае вы не увидите фонового рисунка. Кроме того, основная масса программ не будет работать, но файлы, хранящиеся на рабочем столе, сможете скопировать на другой носитель или на локальный диск. Этот вариант нужно попробовать, т. к. единственным путем восстановления системы может быть только ее переустановка с форматированием системного диска. И если вы не хотите потерять какие-нибудь важные документы, не пренебрегайте этим действием.

    Восстановление загрузочного сектора Windows 7

    Необходимо найти диск установки Windows 7. Если же таковой отсутствует по определению или потерялся, то нужно искать загрузочный диск. Не забудьте перед восстановлением системы проверить свой винчестер на наличие вирусов, а точнее - убедиться в их отсутствии. Для этого установите его на другой компьютер или используйте CD-диск с антивирусом. В случае игнорирования проведения такой проверки существует риск повторного нарушения работы загрузчика из-за того, что притаившийся вирус снова активизируется.

    Последовательность действий

    Начинать восстановление загрузочного сектора Windows 7 следует с нажатия кнопки "Delete" при включении компьютера. В разделе "Advanced" (или "Boot") найдите порядок загрузки устройств. Установите в BIOS первым устройством CD/DVD, сохраните изменение и выйдите из него.

    Следующим шагом выберите пункт «Восстановить Windows с помощью консоли восстановления». Затем из предложенного списка выберите систему для восстановления и введите ее номер. Нажмите "Enter". Затем введите команду "fixmbr", чтобы восстановить MBR, или команду "fixboot" с указанием буквы диска для восстановления, подтвердите ее выполнение (Y) и снова нажмите "Enter". Перезагрузите компьютер. Если восстановление загрузочного сектора таким образом осуществить не удалось, единственное, что остается - переустановить систему.

    Загрузитесь с аварийной системной дискеты и выполните команду SYS C:, которая создаст на системном диске Boot Sector и скопирует туда системные файлы. Убедитесь, что версии операционных систем на дискете и на восстанавливаемом диске совпадают.

    Восстановление Boot Sector проще выполнить "автоматическим" способом, но это не исключает возможность "ручного" восстановления с помощью карандаша, бумаги и редактора дисков. Как уже упоминалось выше, если на восстанавливаемом диске есть неповрежденные (или хотя бы частично поврежденные) элементы логической структуры, сохраните их в виде файлов на резервном диске.

    Непростой случай. Разрушен не только Boot Sector

    Но при этом имеется копия необходимых системных областей в виде файлов или областей диска.

    Выполните стандартное форматирование основного раздела диска, т.е. командой format С:. При этом формируется файловая структура форматируемого раздела диска с воссозданием Boot Sector, чистых FAT и Root Directory, область данных при этом не затрагивается, т.е. информация в Data Area не изменяется.

    Проверьте правильность местоположения корневой директории. Для этого DiskEditor-ом в режиме просмотра кластеров вновь созданного раздела, задав поиск объекта "Подкаталог", проверьте совпадение номеров физического кластера и номера кластера в первой записи найденных подкаталогов. В случае несовпадения номеров, необходимо подкорректировать значение числа секторов FAT в загрузочной записи Boot Sector. Корректировка осуществляется увеличением секторов на число кратное половине числа секторов в кластере. Как правило, такая корректировка необходима в случаях нестандартной разбивки диска или после изменений размеров разделов искусственным путем.

    Если Вам повезло, и у Вас имеются зарезервированные в виде файлов уцелевшие образы FAT и/или Root Directory следует, воспользовавшись DiskEditor-ом восстановить их на диске. Если у Вас уцелела вторая копия FAT, а первая нет, следует скопировать вторую копию и на место первой копии.

    Если у Вас уцелела одна из копий FAT и корневой каталог, после выполнения всех пунктов приведенных выше пунктов полноценный доступ к информации на диске будет восстановлен.

    Как восстановить Boot Sector вручную

    Адрес Boot Sector можно найти в физическом секторе с координатами 0/0/1 (Track/Head/Sector) в соответствующем разделу элементе Partition Table. Далее надо перейти к этому сектору и просмотреть его в формате Boot Record (клавиша F7 в программе Disk Editor). Если в полях корневого сектора находится "мусор", то надо вручную восстановить этот сектор. Надо забить нулями остальную часть загрузочного сектора или скопировать на это место загрузочный сектор системной дискеты, если раздел диска активен (C:) Затем надо вручную заполнить управляющие поля этого сектора:

    Поле Boot Record

    Корректное значение

    Можете записать сюда свое имя

    Bytes per sector

    Sectors per cluster

    Вычислим позднее

    Reserved sectors at beginning

    Root directory entries

    Total sectors on disk

    Это значение берется из Partition Table (поле +0Ch в соответствующем элементе)

    Media descriptor byte

    Sectors per FAT

    Вычислим позднее

    Sectors per track

    Значение берется из Drive info

    Special hidden sectors

    Это значение равно значению Relative Sectors (Относительный номер начального сектора) (поле +08h в соответствующем элементе Partition Table) Если диск не загрузочный, то к этому значению прибавляется число 8388608 (800000h)

    В этой таблице остались незаполненными поля Sectors per FAT (Секторов на FAT) и Sectors per Claster (Секторов на кластер). Их надо вычислять дополнительно:

    Sectors per FAT : Просматриваем сектора диска, следующие за Boot Record, пока не найдем начало коренного каталога. Запоминаем координаты сектора каталога. Затем вычисляем относительный номер этого сектора относительно Boot Record из расчета, что известны Число Сторон на диске, Число Секторов на Дорожку и Относительный адрес Boot Record = 1. Затем находим искомое поле S/F:

    S/F:= (<Относ. сектор каталога> -1) div 2.

    Sectors per Claster : Это значение надо подобрать из расчета, что оно может принимать значения 8 sect/clast или 4 sect/clast.

    Примечание. Приведенное описание относится к FAT 16. Если на диске используется FAT 32, обратитесь к ее описанию

    Что делать, когда раздел диска на сервере или рабочей станции становится недоступным?

    Симптомы

    Когда раздел диска на сервере или рабочей станции становится недоступным или Disk Administrator определяет его как "неизвестный" (unknown), причина может заключаться в испорченном или поврежденном загрузочном секторе. Эта статья поможет вам восстановить загрузочный сектор с помощью второй его копии, которую сохраняет NTFS.

    Имейте в виду, что для применения советов описанных в статье, должны выполняться два условия:

    1. Файловая система поврежденного раздела диска NTFS. FAT сейчас не сохраняет копию загрузочного сектора.

    2. Возможность загрузки компьютера в Windows NT или 2000 или XP.

    Примечание: Если вы не можете загрузиться под одной из указанных операционных систем, подключите винчестер к другому компьютеру, на котором это возможно.

    Решение проблемы

    Чтобы решить проблему, нужно получить архивную копию загрузочного сектора и скопировать ее в определенную часть жесткого диска.

    В NT 3.5x вторая копия хранится в центре логического диска.

    В NT 4.0 и Windows 2000 она перенесена в конец логического диска, что требует другой техники восстановления. В описанном примере будет использоваться специальная утилита Disk Probe (dskprobe.exe) для NT, которая поставляется в комплекте NT V4.0 Resource Kit. Ее можно переписать и в составе пакета средств поддержки SP2 для Windows XP на этой странице . Disk Probe работает и под NT V3.5x.

    Примечание : чтобы иметь возможность восстановления в случае ошибки при проведении следующих процедур, во время просмотра загрузочных секторов, которые будут изменяться, на всякий случай, сохраняйте их копии в файлы (команда Save as из меню File).

    Восстановление загрузочного сектора основного раздела диска

    1. В Disk Probe выберите Drives, Physical Drive, выберите PhysicalDriveX, где X - номер диска. Чтобы определить номер диска, используйте утилиту Disk Administrator. Например, если в системе установлены три диска SCSI, c номерами SCSI ID 1,3 и 5, Disk Administrator покажет их номера 0, 1, 2. После отключения диска SCSI ID 3, его место займет следующий (5). В нумерации Disk Administrator он станет 1.

    2. Два раза нажмите на PhysicalDriveX, который вы хотите восстановить. В поле около него уберите опцию Read Only и нажмите кнопку Set Active. Вы заметите, что Active Handle установилась в PhysicalDriveX, нажмите OK.

    3. Из меню Sectors выберите Read и укажите 0 для Starting Sectors и 1 для Number of Sectors. Нажмите Read. После этого вы окажетесь о основной загрузочной записи физического диска (MBR). В этом можно убедиться по ASCII тексту в правой части окна, начиная со смещения 8B, которое должно отображать "Invalid Partition Table". Из меню View выберите Partition Table. В области под названием "partition table index" с помощью полосы скроллинга выберите раздел под вопросом и кликните его дважды. Слева внизу показан относительный номер сектора Relative Sector, запишите это значение и выберите закладку Go за этой областью.

    4. Теперь из меню View выберите Bytes. В зависимости от того, как поврежден загрузочный сектор, вы можете даже рассмотреть некоторые строки текста в правой верхней части окна или увидеть сообщение об ошибке чтения "A disk Read error ocurred...", начиная со смещения 130. Из меню View выберите "NTFS bootsector".

    5. Выбираем "Volume End" для NT V4.0 или "Volume Middle" для NT V3.5x. Сейчас вы должны находиться на архивной копии загрузочного сектора. Если вы увидите сообщение "incomplete Data Read" или, после просмотра, определите, что это не копия загрузочного сектора, это может значить, что ваш основной сектор был поврежден, поэтому мы получили неверное значение адреса архивной копии. В таком случае переходите к следующему разделу нашей статьи, чтобы узнать, как восстановить загрузочный сектор, если он отсутствует или сильно поврежден. Если же все нормально, переходим к следующему пункту.

    6. Из меню View выбираем Bytes и проверяем, что это загрузочный сектор NTFS. Когда мы в этом убедились, в меню Sectors выберем Write. Убедитесь, что в диалоговом окне отображаются верные значения Handle и PhysicalDrive. В поле Starting Cecjtor to write Data укажите относительный номер сектора (Relative sector), записанный вами в пункте 4. Нажмите кнопку Write.

    7. В меню Sectors укажите относительный номер сектора (Relative sector), оставив в поле количество секторов (Number of sectors) значение 1, выберите Read. Теперь убедитесь, что данные были записаны успешно.

    8.

    Восстановление копии загрузочного сектора, если оригинальной копии нет, или она сильно повреждена

    Если загрузочного сектора нет или он поврежден на столько, что не имеет корректной информации о количестве секторов, восстановление можно провести по такому плану:

    1. В Disk Probe выберите Drives, Physical Drive. Выбираем PhysicalDriveX, где Х - номер диска, который можно узнать в Disk Administrator.

    2 . Двойным нажатием открываем нужный PhysicalDriveX, в поле внизу снимаем отметку Read Only и выбираем Set Active. Вы должны заметить, что значение Active Handle установится на PhysicalDriveX. Нажимаем OК.

    3.

    4. Сейчас вы находитесь в загрузочной записи (MBR) физического диска. В этом можно убедиться по тексту, который выводится с позиции 8B, который должен выглядеть примерно так: "Invalid Partition Table...". Из меню View выбираем Partition Table. Осталось выбрать необходимый номер раздела, отмеченный знаком вопроса.

    5. Дальше нам понадобятся два значения: Total Sectors (общее количество секторов) и Relative Sectors (относительный номер сектора). Запишите значение Relative Sectors, именно здесь должен находиться загрузочный сектор. Чтобы найти его копию, нужно будет провести несложные вычисления.

    6. Выбираем Sectors. В поле Starting sector вводим значение, определенное на предыдущем шаге. В поле Number of sectors вводим 1. Нажимаем Read и мы должны попасть на архивную копию загрузочного сектора.

    7. Из меню View выбираем Bytes и проверяем, действительно ли это сектор NTFS. После проверки заходим в меню Sectors, выбираем Write, и проверяем в появившемся диалоговом окне значения Handle и PhysicalDrive. В поле "Starting Sector to write Data" укажите относительный номер сектора, который вы записывали (Relative Sectors) и нажмите кнопку Write.

    8. В меню Sectors еще раз укажите относительный номер сектора, в поле количество секторов (Number of sectors) введите 1, выберите Read. Теперь вы можете убедиться, что данные были записаны правильно.

    9. Закройте Disk Probe и перезагрузите компьютер.

    Восстановление загрузочных секторов расширенного раздела диска

    1 . В Disk Probe выберите Drives, Physical Drive. Выбираем PhysicalDriveX, где Х - номер диска, который можно узнать в Disk Administrator.

    2. Двойным нажатием открываем нужный PhysicalDriveX, в поле внизу снимаем отметку Read Only и выбираем Set Active. Вы должны заметить, что значение Active Handle установится на PhysicalDriveX. Нажимаем OК.

    3. Из меню Sectore выбираем Read. В поле начальный сектор (Starting Sector) устанавливаем значение 0, а для количества секторов (Number of Sectors) - 1. Нажимаем Read.

    4. Сейчас вы находитесь в загрузочной записи (MBR) физического диска. В этом можно убедиться по тексту, который выводится с позиции 8B, который должен выглядеть примерно так: "Invalid Partition Table...". Из меню View выбираем Partition Table. В этом режиме в поле Partition Table Index выберите раздел расширенной области диска. Далее в поле System ID должно появиться значение Extended. Если необходимый раздел является четвертым логическим диском в расширенной области, кнопку Next partition придется нажать четыре раза. В поле System ID должно быть значение NTFS.

    5. В области Pattition Table Index два раза нажимаем на необходимом разделе в расширенной области диска. В System ID должно появиться значение Extended.

    Переходим к логическому тому, который нужно восстановить. Если он второй в этой области диска, кнопку Next Partition нужно нажать два раза. При переходах между томами расширенного раздела диска в поле System ID будет отображаться файловая система каждого тома.

    Когда раздел, подлежащий восстановлению, найден, запишите номер текущего сектора (Current Sector в заголовке Disk Probe), относительный номер сектора (relative sector) и общее количество секторов в этом томе (total sectors). Эта информация понадобится нам для расчета расположения архивной копии загрузочного сектора.

    6. Нажмите кнопку Go, чтобы перейти к загрузочному сектору поврежденного тома. Запишите номер этого сектора из заголовка окна (Boot Sector).

    Чтобы проверить, что вы находитесь на правильном секторе, выберите Bytes из меню View. Если сектор сильно поврежден, вы увидите в правой части окна сообщение об ошибке.

    Чтобы найти копию загрузочного сектора, нам понадобятся три записанных значения: текущий сектор, относительный номер сектора и общее количеств секторов.

    7. Произведем необходимые вычисления:

    8. Выбираем Sectors, Read и вводим в поле начальный сектор (Starting sector) вычисленное значение. Количество секторов (Number of sectors 1). Выбираем Read и вы должны оказаться в секторе, где находится архивная копия загрузочного сектора.

    Из меню View выбираем Bytes и убеждаемся, что это загрузочный сектор NTFS. Если это не так, в правом столбце текста должно появиться сообщение об ошибке. В этом случае не продолжайте, начните весь процесс сначала, чтобы исключить ошибки.

    9. После того, как вы убедились, что нашли архивную копию загрузочного сектора, запишите ее поверх основной. В меню Sectors выбираем Write. В появившемся диалоговом окне проверьте значения Handle и PhysicalDrive. В поле Starting Sector (начальный сектор) введите номер сектора, в котором находится поврежденный загрузочный сектор. Нажмите кнопку "Write it" для записи.

    10. В меню Sectors выберите пункт Read. В качестве начального сектора снова укажите номер сектора в который вы записывали архивную копию, количество секторов снова 1. Выберите Read и убедитесь в том, что данные были записаны.

    11. Закройте Disk Probe и перезагрузите компьютер.

    Приложение

    Описанные действия подходят для:

    • Microsoft Windows 2000 Server
    • Microsoft Windows 2000 Advanced Server
    • Microsoft Windows 2000 Professional Edition
    • Microsoft Windows NT Workstation 3.5
    • Microsoft Windows NT Workstation 3.51
    • Microsoft Windows NT Workstation 4.0 Developer Edition
    • Microsoft Windows NT Server 3.5
    • Microsoft Windows NT Server 3.51
    • Microsoft Windows NT Server 4.0 Standard Edition
    • Microsoft Windows XP
    • Microsoft Windows XP SP2

    Какой бы продвинутой ни была операционная система, ее загрузка невозможна без наличия двух секторов на жестком диске, которые содержат код, необходимый для запуска любой операционной системы. Первый сектор называется Master Boot Record (MBR); он всегда располагается по адресу: сектор 1/цилиндр 0/головка1 и является самым первым сектором жесткого диска. Вторым важнейшим сектором является Boot Sector (загрузочный сектор), расположенный в первом секторе каждого тома.

    Master Boot Record

    Master Boot Record является самой важной структурой диска; этот сектор создается при разбиении диска на разделы. В секторе MBR расположены небольшой код, называемый Master Boot Code, а также сигнатура диска и таблица разделов. В конце сектора MBR располагается двухбайтовая структура, указывающая на конец сектора. Она имеет значение 0x55AA. Сигнатура диска - это уникальное число, расположенное по смещению 0x01B8 и позволяющее операционной системе однозначно определить данный диск.

    Код, находящийся в секторе MBR, выполняет следующие действия:

    • ищет активный раздел в таблице разделов;
    • ищет начальный сектор активного раздела;
    • загружает копию загрузочного сектора из активного раздела в память;
    • передает управление исполняемому коду из загрузочного сектора.
    Если эти функции по какой-то причине не удается завершить, то выдается одно из следующих системных сообщений об ошибке:
    • Invalid partition table;
    • Missing operating system.
    Отметим, что для гибких дисков не существует понятия MBR. Загрузочным сектором является первый сектор на диске. Также следует помнить, что каждый жесткий диск содержит сектор MBR, но загрузочный код используется только на дисках, имеющих активный первичный раздел.

    Таблица разделов

    Таблица разделов - это 64-байтовая структура, используемая для определения типа и местоположения разделов на жестком диске. Содержимое данной структуры унифицировано и не зависит от операционной системы. Информация о каждом разделе занимает 16 байт - таким образом, на диске может быть не более четырех разделов.

    Информация о каждом разделе начинается с определенного смещения от начала сектора, как показано в табл. 1 .

    Смещение​

    | |

    Значение​

    |

    Описание​

    0x01BE| 1 байт| 0x80| Индикатор загрузки (Boot Indicator) - указывает, является ли том активным разделом. Может иметь значения: 00 - не используется для загрузки; 80 - активный раздел
    0x01BF| 1 байт| 0x01| Начальная головка (Starting Head)
    0x01C0| 6 бит| 0x01| Начальный сектор (Starting Sector) - используются биты 0-5. Биты 6 и 7 используются следующим полем
    0x01C1| 10 бит| 0x00| Начальный цилиндр (Starting Cylinder) - 10-битовое число с максимальным значением 1023
    0x01C2| 1 байт| 0x07| Идентификатор системы (System ID) - определяет тип тома
    0x01C3| 1 байт| 0xFE| Конечная головка (Ending Head)
    0x01C4| 6 бит| 0xBF| Конечный сектор (Ending Sector) - используются биты 0-5. Биты 6 и 7 используются следующим полем
    0x01C5| 10 бит| 0x09| Конечный цилиндр (Ending Cylinder) - 10-битовое число с максимальным значением 1023
    0x01C6| Двойное слово| 0x3F000000| Относительные сектора (Relative Sectors) - смещение от начала диска до начала тома, выраженное в числе секторов
    0x01CA| Двойное слово| 0x4BF57F00| Общее число секторов (Total Sectors) - число секторов в данном томе


    После того как мы ознакомились с устройством записи о разделе, более подробно рассмотрим некоторые из полей этой записи.

    Поле Boot Indicator

    Первый элемент таблицы разделов, поле Boot Indicator, указывает, является ли том активным разделом. Напоминаем, что только первичный раздел диска может быть активным. Имеется возможность установки различных операционных систем и различных файловых систем на различных томах. Используя утилиты типа FDISK (MS-DOS), Disk Management (Windows 2000) или утилиты сторонних производителей, можно активизировать первичный раздел и установить соответствующее значение данного поля.

    Поле System ID

    Это поле содержит идентификатор системы и указывает, какая файловая система - FAT16, FAT32 или NTFS - использовалась для форматирования тома, а также позволяет узнать некоторые характеристики файловой системы. Кроме того, данное поле показывает, существует ли на диске расширенный раздел (extended partition). Возможные значения поля System ID показаны в табл. 3 .

    Тип раздела​

    |

    Пояснения​

    0x01| Первичный раздел или логический диск FAT12. Том имеет менее 32 680 секторов
    0x04| Раздел или логический диск FAT16. Том имеет от 32 680 до 65 535 секторов, или размер от 16 до 33 Мбайт
    0x05| Расширенный раздел
    0x06| Раздел или логический диск BIGDOS FAT16. Размер от 33 Мбайт до 4 Гбайт
    0x07| Раздел или логический диск NTFS. Installable File System
    0x0B| Раздел FAT32 или логический диск
    0x0C| Раздел FAT32 или логический диск с использованием расширений BIOS INT 13h
    0x0E |Раздел BIGDOS FAT16 или логический диск с использованием расширений BIOS INT 13h
    0x0F| Расширенный раздел, использующий расширения BIOS INT 13h
    0x12| EISA-раздел
    0x42 |Том динамического диска (Windows 2000)


    Отметим, что под управлением MS-DOS доступны только тома с полем System ID, которое равно 0x01, 0x04, 0x05 или 0x06. Но тома с другим System ID этого поля могут быть удалены с помощью утилиты FDISK.

    Поля Cylinder, Head и Sector

    Поля Starting Cylinder, Ending Cylinder, Starting Head, Ending Head, Starting Sector и Ending Sector (общее название - CHS) являются дополнительными элементами таблицы разделов. Загрузочный код использует значения этих полей для нахождения загрузочного сектора и его активизации. Поля Starting CHS неактивных разделов указывают на загрузочные сектора первичных разделов и на расширенный загрузочный сектор первого логического диска в расширенном разделе.

    На рис. 2 показаны Master Boot Record (содержащий код, таблицу разделов и сигнатуру) и загрузочные сектора для диска с четырьмя разделами.


    рис. 2
    Поле Ending Cylinder в таблице разделов имеет размер 10 бит и позволяет описывать цилиндры с номерами от 0 до 1023. Поля Starting Head и Ending Head имеют размер 1 бит и могут содержать номера головок от 0 до 255. Так как поля Starting Sector и Ending Sector занимают по 6 бит, они могут содержать значения от 0 до 63. Поскольку нумерация секторов начинается с 1 (а не с 0, как для других полей), то максимальное число секторов на дорожке равно 63.

    При низкоуровневом форматировании для всех дисков задается стандартный размер сектора 512 байт, поэтому максимальный размер диска, описываемый в таблице разделов, может быть вычислен следующим образом:

    Код:

    Максимальный размер = Размер сектора x Число цилиндров x Число головок x x Число секторов на дорожке.

    Используя максимально допустимые значения этих величин, мы получаем:

    Код:

    512 x 1024 x 256 x 63 (или 512 x 224) = = 8 455 716 864 байт, или 7,8 Гбайт.

    Таким образом, без использования расширений INT 13h, известных под названием Logical Block Addressing (LBA), размер активного первичного раздела не может превышать 7,8 Гбайт независимо от используемой файловой системы.

    Максимальный размер тома под FAT16 зависит от геометрии диска и максимальных значений в таблице разделов. Возможные значения при использовании и отсутствии LBA показаны в табл. 4. Число цилиндров в обоих случаях равно 1024 (0-1023). В том случае, когда первичный раздел или логическое устройство занимает область далее 1023-го цилиндра, все поля таблицы разделов будут иметь максимально допустимые значения.

    Режим LBA​

    |

    Число головок​

    |

    Секторов/Дорожка​

    |

    Макс. размер раздела​

    Запрещен| 64| 32| 1 Гбайт
    Разрешен| 255| 63| 4 Гбайт


    Чтобы обойти описанное выше ограничение в 7,8 Гбайт, в Windows 2000 игнорируются значения полей Starting Sector и Ending Sector - вместо этого используются значения полей Relative Sectors и Total Sectors.

    Поля Relative Sectors и Total Sectors

    Поле Relative Sectors содержит смещение от начала диска до начала тома, выраженное в числе секторов. Поле Total Sectors указывает общее число секторов в томе.

    Используя значения двух этих полей (которые вместе являются 32-битовым числом), мы получаем дополнительные 8 бит для хранения общего числа секторов по сравнению с описанной выше схемой CHS. В этом случае число секторов может быть представлено как 232. При использовании стандартного размера сектора (512 байт) и 32-битового представления числа секторов максимальный объем раздела ограничивается числом 2 Тбайт (или 2 199 023 255 552 байт). Такая схема используется только в Windows 2000 с файловыми системами NTFS и FAT32.

    Отметим, что при создании разделов под управлением Windows 2000 корректные данные заносятся и в поля Starting Cylinder, Ending Cylinder, Starting Head, Ending Head, Starting Sector и Ending Sector. Это позволяет обеспечить совместимость с MS-DOS, Windows 95 и Windows 98, а также с функциями INT 13h, используемыми BIOS при загрузке компьютера.

    Расширенная загрузочная запись

    Расширенная загрузочная запись (Extended Boot Record, EBR) состоит из расширенной таблицы разделов и сигнатуры - двухбайтовой структуры, имеющей значение 0x55AA. Расширенная загрузочная запись существует для каждого логического устройства в расширенном разделе. Она содержит информацию о первой стороне первого цилиндра для каждого логического устройства. Загрузочный сектор логического диска обычно располагается в относительных секторах с номером 32 либо 63. Если на диске нет расширенного раздела, то нет расширенной загрузочной записи и нет логических устройств.

    Первый элемент расширенной таблицы разделов для первого логического устройства указывает на его загрузочный сектор, второй элемент - на EBR следующего логического устройства. Если следующего логического устройства не существует, то и второй элемент не используется - он содержит набор нулей. Третий и четвертый элементы расширенной таблицы разделов не используются.

    На рис. 3 показано, как устроена расширенная загрузочная запись. Показаны три логических устройства в расширенном разделе.


    рис. 3
    За исключением последнего логического устройства в расширенном разделе (см. рис. 3 ), формат расширенной таблицы разделов, описанный в табл. 5 , повторяется для каждого логического устройства: первый элемент описывает загрузочный сектор логического устройства, второй элемент указывает на следующую расширенную загрузочную запись. Для последнего логического устройства элементы со второго по четвертый не используются.

    Элемент расширенной таблицы разделов​

    |

    Содержимое​

    Первый элемент| Информация о текущем логическом устройстве в расширенном разделе, включая начальный адрес для данных
    Второй элемент| Информация о следующем логическом устройстве в расширенном разделе, включая адрес сектора, содержащего EBR для следующего логического устройства. Это поле не используется, если нет следующих логических устройств
    Третий элемент| Не используется
    Четвертый элемент| Не используется


    Поля каждого элемента в расширенной таблице разделов аналогичны полям обычной таблицы разделов, описанной выше.

    Поле Relative Sectors в расширенной таблице разделов указывает в байтах смещение от начала расширенного раздела до первого сектора логического устройства. Число в поле Total Sectors позволяет узнать число секторов, отведенных под логическое устройство. Значение поля Total Sectors равно числу секторов от начала загрузочного сектора до конца логического раздела.

    Ввиду исключительной важности информации, хранимой в секторах MBR и EBR, рекомендуется периодически проверять диск с помощью соответствующих утилит и создавать резервные копии данных.

    Boot Sector

    Загрузочный сектор , расположенный в секторе 1 каждого тома, является структурой, обеспечивающей запуск компьютера. В этом секторе содержатся исполняемый код и данные, которые требует этот код, включая информацию о файловой системе, используемой на данном томе. Загрузочный сектор создается при форматировании тома. В конце загрузочного сектора размещается двухбайтовая структура, называемая маркером конца сектора. Эта структура всегда содержит значение 0x55AA.

    На компьютерах, работающих под управлением Windows 2000, загрузочный сектор активного раздела загружается в память и вызывает загрузчик операционной системы - NTLDR , который выполняет все необходимые действия по загрузке Windows 2000.

    В Windows 2000 загрузочный сектор содержит следующие элементы:

    • ассемблерную инструкцию JMP;
    • идентификатор производителя (OEM ID);
    • структуру данных, называемую BIOS Parameter Block (BPB);
    • расширенную структуру BPB;
    • исполняемый код, запускающий операционную систему.
    Отметим, что загрузочные сектора для NTFS, FAT16 и FAT32 отформатированы иным образом.

    Структура BPB содержит физические параметры тома, расширенная структура BPB начинается сразу же после стандартной BPB. Длина структуры BPB и содержащаяся в ней информация зависят от типа загрузочного сектора - NTFS, FAT16 или FAT32.

    Информация, хранимая в BPB и расширенной структуре BPB, используется драйверами устройств для чтения и конфигурации томов.

    Сразу же за расширенной структурой BPB следует загрузочный код.

    Процесс загрузки

    Процесс загрузки компьютера состоит из следующих основных шагов:

    1. При включении питания выполняется проверочный тест BIOS и процессора - POST .
    2. BIOS ищет загрузочное устройство (обычно это диск).
    3. BIOS загружает первый физический сектор с загрузочного диска в память и передает управление по тому адресу, куда загружен этот сектор.
    Если загрузочным устройством является жесткий диск, то BIOS загружает MBR. Располагаемый в MBR код загружает загрузочный сектор активного раздела и передает управление по тому адресу, куда загружен этот сектор. На компьютерах с Windows 2000 исполняемый код в загрузочном секторе находит файл NTLDR, загружает его в память и передает ему управление.

    Если в дисководе A находится диск, то BIOS загружает первый сектор (загрузочный сектор) этого диска в память. Если диск является загрузочным (содержит базовые файлы операционной системы), загрузочный сектор загружается в память и использует код для передачи управления файлу IO.SYS - базовому файлу операционной системы MS-DOS. Если диск не является загрузочным, исполняемый код в загрузочном секторе выдает следующее сообщение:

    • Non-System disk or disk error
    • Replace and press any key when ready
    Начальный процесс загрузки не зависит от формата диска и от операционной системы. Уникальные характеристики операционной и файловой систем используются уже после того, как начинается выполнение кода из загрузочного сектора.

    Виды загрузочных секторов

    Как мы уже знаем, MBR передает управление загрузочному сектору. Поэтому первые три байта данного сектора должны содержать допустимую инструкцию для центрального процессора. Этой инструкцией является инструкция перехода, перенаправляющая выполнение кода. За инструкцией JMP следует 8-байтовый идентификатор производителя (OEM ID) - строка, описывающая название и номер версии операционной системы, использовавшейся для форматирования тома.

    Для сохранения совместимости с MS-DOS Windows 2000 записывает идентификатор «MSDOS5.0» для файловых систем FAT16 и FAT32. Для файловой системы NTFS идентификатор содержит символы «NTFS».

    Windows 95 использует идентификатор «MSWIN4.0», а Windows 95 OSR2 и Windows 98 - идентификатор «MSWIN4.1».

    Сразу же за идентификатором производителя следует структура данных, называемая BIOS Parameter Block (BPB). В ней содержится информация, необходимая для обнаружения файла NTLDR. Поскольку BPB обычно располагается по одному и тому же смещению, то стандартные параметры легко обнаруживаются. Так как инструкция JMP обходит структуру BPB, ее размер может быть увеличен в будущем, если здесь потребуется хранить какую-либо дополнительную информацию.
    Теперь давайте рассмотрим, как выглядят загрузочные сектора для трех основных файловых систем - FAT16, FAT32 и NTFS.

    Загрузочный сектор FAT16

    В табл. 6 приведено описание загрузочного сектора для файловой системы FAT16.

    Смещение​

    | |

    0x00| 3 байт| Инструкция JMP
    0x03| 2 x LONG| OEM ID
    0x0B| 25 байт| BPB
    0x24| 26 байт| Расширенный BPB
    0x3E| 448 байт| Загрузочный код
    0x01FE| 2 байт| Маркер конца сектора (0x55AA)


    На конкретном примере показано содержимое загрузочного сектора FAT16. Здесь можно выделить три секции:
    • байты 0x00-0x0A содержат инструкцию JMP и OEM ID (выделены шрифтом);
    • байты 0x0B-0x3D содержат BPB и расширенный BPB;
    • остальные байты содержат код загрузки и маркер конца сектора (выделены шрифтом).
    В двух следующих таблицах показано содержимое BPB (табл. 7 ) и расширенного BPB (табл. 8 ) для FAT16. Приведенные значения соответствуют загрузочному сектору, показанному на рис. 4.

    Смещение​

    | |

    Значение​

    |

    Описание​


    0x0D| 1 байт| 0x40| Число секторов в кластере. Так как FAT16 поддерживает ограниченное число кластеров (до 65 536), тома большего объема требуют использования большего числа секторов в кластере. Значение этого поля по умолчанию зависит от размера тома. Допустимы следующие значения: 1, 2, 4, 8, 16, 32, 64 и 128. Значения, приводящие к увеличению размера кластера более 32 Кбайт (количество байт в секторе, умноженное на число секторов в кластере), могут служить источником ошибок
    0x0E| 2 байт| 0x0100| Зарезервированные сектора - число секторов перед первой таблицей FAT, включая загрузочный сектор. Значение этого поля всегда равно 1

    0x11| 2 байт| 0x0002| Общее число 32-байтовых имен файлов и каталогов, которые могут храниться в корневом каталоге тома. Обычно значение этого поля равно 512. Один элемент всегда используется для хранения метки тома, поэтому максимальное число файлов и каталогов не превосходит 511
    0x13| 2 байт| 0x0000| Число секторов в томе, выраженное 16-битовым значением. Для томов, имеющих более 65 536 секторов, это поле не используется и его значение равно 0

    0x16| 2 байт| 0xFC00| Число секторов в каждой копии FAT. Значение этого поля, число копий FAT и число зарезервированных секторов используются для вычисления местонахождения корневого каталога. Зная максимальное число элементов корневого каталога, можно также узнать, где начинаются пользовательские данные

    0x1A| 2 байт| 0x4000| Число головок. Используется для низкоуровневого форматирования дисков
    0x1C| 4 байт| 0x3F000000| Число “скрытых” секторов - число секторов перед загрузочным сектором. Используется во время загрузки для вычисления абсолютного смещения корневого каталога и данных
    0x20| 4 байт| 0x01F03E00| Число секторов в томе, выраженное 32-битовым значением. Используется для томов, имеющих более 65 536 секторов


    Смещение​

    | |

    Значение​

    |

    Описание​

    0x24| 1 байт| 0x80| Физический номер устройства. Содержит 0x00 для флоппи-дисков и 0x80 для жестких дисков. Используется INT 13h для обращения к диску. Значение данного поля имеет смысл только для загрузочного устройства
    0x25| 1 байт| 0x00| Зарезервировано. Для FAT16 значение этого поля всегда равно 0
    0x26| 1 байт| 0x29| Сигнатура расширенного загрузочного сектора. Для Windows 2000 это поле должно иметь значения 0x28 или 0x29
    0x27| 4 байт| 0xA88B3652| Серийный номер тома. Случайное число, генерируемое при форматировании диска
    0x2B |11 байт| NO NAME| Метка тома. В Windows 2000 метка тома хранится в специальном файле
    0x36| 2 х LONG| FAT16| Тип файловой системы. В зависимости от формата диска это поле может содержать символы FAT, FAT12 или FAT16



    рис. 4
    Загрузочный сектор FAT32

    Загрузочный сектор FAT32 имеет много общего с загрузочным сектором FAT16, но BPB содержит дополнительные поля, а те поля, которые используются в FAT16, находятся по другим адресам. Таким образом, диски, отформатированные под FAT32, не могут быть прочитаны операционными системами, несовместимыми с FAT32.

    В табл. 9 показано содержимое загрузочного сектора для файловой системы FAT32.

    Смещение​

    | |

    Значение​

    |

    Описание​

    0x0B| 2 байт| 0x0002| Число байт в секторе - размер сектора. Допустимы следующие значения: 512, 1024, 2048 и 4096. Для большинства дисков значение этого поля равно 512
    0x0D| 1 байт| 0x40| Число секторов в кластере. Так как FAT32 поддерживает ограниченное число кластеров (до 4 294 967 296), тома очень большого объема требуют использования большего числа секторов в кластере. Значение этого поля по умолчанию зависит от размера тома. Допустимы следующие значения: 1, 2, 4, 8, 16, 32, 64 и 128. В Windows 2000 для FAT32 поддерживаются тома максимальным объемом до 32 Гбайт. Тома большего объема, созданные с помощью Windows 95 OSR2 и Windows 98, доступны из Windows 2000
    0x0E| 2 байта| 0x0200| Зарезервированные сектора - число секторов перед первой таблицей FAT, включая загрузочный сектор. Значение этого поля для FAT32 обычно равно 32
    0x10| 1 байт| 0x02| Число копий таблиц FAT для данного тома. Значение этого поля всегда равно 2
    0x11| 2 байт| 0x0000| Общее число 32-байтовых имен файлов и каталогов, которые могут храниться в корневом каталоге тома (только для FAT12/FAT16). Для томов FAT32 значение этого поля должно быть равно 0
    0x13| 2 байт| 0x0000| Число секторов в томе, выраженное 16-битовым значением (только для FAT12/FAT16). Для томов FAT32 значение этого поля должно быть равно 0
    0x15| 1 байт| 0xF8| Тип носителя. Значение 0xF8 указывает на жесткий диск, 0xF0 - на флоппи-диск высокой плотности. Данное поле не используется в Windows 2000
    0x16| 2 байт| 0x0000| Число секторов в каждой копии FAT (только для FAT12/FAT16). Для томов FAT32 значение этого поля должно быть равно 0
    0x18| 2 байт| 0x3F00| Число секторов в дорожке. Используется для низкоуровневого форматирования дисков
    0x1A| 2 байт| 0xFF00| Число головок. Используется для низкоуровневого форматирования дисков
    0x1C| 4 байт| 0xEE39D700| Число «скрытых» секторов - число секторов перед загрузочным сектором. Используется во время загрузки для вычисления абсолютного смещения корневого каталога и данных
    0x20| 4 байт| 0x7F324E00| Число секторов в томе, выраженное 32-битовым значением. Используется для томов, имеющих более 65 536 секторов
    0x24| 4 байт| 0x83130000| Число секторов в FAT (только для FAT32)
    0x28| 2 байт| 0x0000| Расширенные флаги (только для FAT32). Отдельные биты этого слова имеют следующее назначение: биты 0-3 - число активных FAT; биты 4-6 - зарезервированы; бит 7 - равен 0, если выполняется «зеркалирование» FAT; равен 1, если активна только одна FAT; биты 8-15 - зарезервированы
    0x2A| 2 байт| 0x0000| Версия файловой системы (только для FAT32)
    0x2C| 4 байт| 0x02000000| Номер кластера для первого кластера корневого каталога (только для FAT32). Обычно значение этого поля равно 2
    0x34| 2 байт| 0x0600| Номер сектора с резервной копией загрузочного сектора (только для FAT32). Обычно значение этого поля равно 6
    0x36| 12 байт| 0x000000000000000000000000| Зарезервировано (только для FAT32)

    табл. 10.​


    Смещение​

    | |

    Значение​

    |

    Описание​

    0x40| 1 байт| 0x80| Физический номер устройства. Содержит значения 0x00 для флоппи-дисков и 0x80 для жестких дисков. Используется INT 13h для обращения к диску. Значение данного поля имеет смысл только для загрузочного устройстватабл. 12 0x0D| 1 байт| 0x08| Число секторов в кластере
    0x0E| 2 байт| 0x0000| Зарезервированные сектора
    0x10| 3 байт| 0x000000| Всегда 0
    0x13| 2 байт| 0x0000| Не используется в NTFS
    0x15| 1 байт| 0xF8| Тип носителя
    0x16| 2 байт| 0x0000| Всегда 0
    0x18| 2 байт| 0x3F00| Число секторов на дорожке
    0x1A| 2 байт| 0xFF00| Число головок
    0x1C| 3 байт| 0x3F000000| Число “скрытых” секторов
    0x20| 4 байт| 0x00000000| Не используется в NTFS
    0x24| 4 байт| 0x80008000| Не используется в NTFS
    0x28 |2 x LONG| 0x4AF57F0000000000| Общее число секторов
    0x30| 2 x LONG| 0x0400000000000000| Номер логического кластера для файла $MFT
    0x38| 2 x LONG| 0x54FF070000000000| Номер логического кластера для файла $MFTMirr
    0x40 |4 байт| 0xF6000000| Число секторов в сегменте файловой записи
    0x44| 4 байт | 0x01000000| Число кластеров в индексном блоке
    0x48| 2 x LONG| 0x14A51B74C91B741C| Серийный номер тома
    0x50| 4 байт| 0x00000000| Контрольная сумма