ksa » Вт авг 21, 2007 8:36 pm
Что именно подробнее? О том как происходит загрузка?
Если кратко, то примерно так:
Порядок загрузки BIOS в общих чертах:
первым получает управление BOOT-block (загрузочный блок или первичный загрузчик), который выполняет инициализацию основного оборудования (оперативная память, контроллер прерываний, системный таймер и т.д.), а также сканирует ISA-шину и подключает BIOS'ы всех обнаруженных устройств (SCSI-контроллеров, видео- и сетевых карт и т.п.), после чего распаковывает свое "продолжение" (BIOS extensions) и передает ему управление.
Вторичный загрузчик (BIOS extensions) сканирует PCI-шину и выполняет окончательную инициализацию оборудования - распознает IDE-диски, содержит интерактивный редактор BIOS Setup, распределяет системные ресурсы между PnP-устройствами и считывает boot-сектор с гибкого или жесткого диска.
Таким образом, BIOS'ы, установленные на картах расширения, получают управление на самой ранней стадии инициализации, задолго до того, как начинается подсчет контрольной суммы CMOS или распаковка вторичного загрузчика.
Далее из "классики":
INT 18H: ROM-BASIC
Этот вектор содержит точку входа для интерпретатора ROM-BASIC (воспоминания о прошлых машинах).
Если BIOS не может найти диск для загрузки, он берет этот вектор и передает управление по указанному адресу. Это делает возможным для внешнего модуля ROM-Scan изменить этот вектор так, чтобы он указывал на него, вызывая его при сбое или отсутствии дисков.
INT 19H: Bootstrap Loader (начальный загрузчик)
Этот вектор рассматривается после POST, чтобы попытаться загрузить и выполнить какой-либо код "начального вызова" на дискете или твердом диске.
Кратко: данные в секторе 1 дорожки 0 головки 0 дисковода 0 для первого откликнувшегося диска (дискеты или твердого диска) загружаются по абсолютному адресу 0000:7c00, и управление передается по этому адресу. если опрос всех дисков неудачен, управление передается на прерывание INT 18H .
Ну, а дальше все просто и понятно.....
Если мы говорим о сетевой загрузке - то можно подменить или 18 или 19 вектор и соответственно прозводить вариант загрузки по сети ДО загрузки с диска или ПОСЛЕ ошибки загрузки с дисков. Что именно и происходит.
По такому же методу строится простое дистанционное управление машинами (выключить/сбросить и т.п.) через IP сети.
Следует отметить, что существующие прошивки PXE загрузчиков, для любимых RTL8139 и им подобным, содержат свой биос-редактор, который позволяет выбрать использование 18-го или 19 вектора или вообще отключить их использование.
ROM-MATIC, если я не ошибаюсь, использует 18-й вектор - т.е. запускается только если произошла ошибка загрузки с диска.
Я ответил на вопрос или нет?
Что именно подробнее? О том как происходит загрузка?
Если кратко, то примерно так:
Порядок загрузки BIOS в общих чертах:
первым получает управление BOOT-block (загрузочный блок или первичный загрузчик), который выполняет инициализацию основного оборудования (оперативная память, контроллер прерываний, системный таймер и т.д.), а также сканирует ISA-шину и подключает BIOS'ы всех обнаруженных устройств (SCSI-контроллеров, видео- и сетевых карт и т.п.), после чего распаковывает свое "продолжение" (BIOS extensions) и передает ему управление.
Вторичный загрузчик (BIOS extensions) сканирует PCI-шину и выполняет окончательную инициализацию оборудования - распознает IDE-диски, содержит интерактивный редактор BIOS Setup, распределяет системные ресурсы между PnP-устройствами и считывает boot-сектор с гибкого или жесткого диска.
Таким образом, BIOS'ы, установленные на картах расширения, получают управление на самой ранней стадии инициализации, задолго до того, как начинается подсчет контрольной суммы CMOS или распаковка вторичного загрузчика.
Далее из "классики":
INT 18H: ROM-BASIC
Этот вектор содержит точку входа для интерпретатора ROM-BASIC (воспоминания о прошлых машинах).
Если BIOS не может найти диск для загрузки, он берет этот вектор и передает управление по указанному адресу. Это делает возможным для внешнего модуля ROM-Scan изменить этот вектор так, чтобы он указывал на него, вызывая его при сбое или отсутствии дисков.
INT 19H: Bootstrap Loader (начальный загрузчик)
Этот вектор рассматривается после POST, чтобы попытаться загрузить и выполнить какой-либо код "начального вызова" на дискете или твердом диске.
Кратко: данные в секторе 1 дорожки 0 головки 0 дисковода 0 для первого откликнувшегося диска (дискеты или твердого диска) загружаются по абсолютному адресу 0000:7c00, и управление передается по этому адресу. если опрос всех дисков неудачен, управление передается на прерывание INT 18H .
Ну, а дальше все просто и понятно.....
Если мы говорим о сетевой загрузке - то можно подменить или 18 или 19 вектор и соответственно прозводить вариант загрузки по сети ДО загрузки с диска или ПОСЛЕ ошибки загрузки с дисков. Что именно и происходит.
По такому же методу строится простое дистанционное управление машинами (выключить/сбросить и т.п.) через IP сети.
Следует отметить, что существующие прошивки PXE загрузчиков, для любимых RTL8139 и им подобным, содержат свой биос-редактор, который позволяет выбрать использование 18-го или 19 вектора или вообще отключить их использование.
ROM-MATIC, если я не ошибаюсь, использует 18-й вектор - т.е. запускается только если произошла ошибка загрузки с диска.
Я ответил на вопрос или нет?