Для чего служит загрузчик операционной системы для загрузки программ в оперативную память эвм

Обновлено: 17.07.2024

Операционная система хранится во внешней памяти обычно на жестком диске, реже – на гибком. Для нормальной работы компьютера необходимо, чтобы основные модули операционной системы находились в оперативной памяти. Поэтому после включения компьютера организована автоматическая перезапись (загрузка) операционной системы с диска в оперативную память. Наиболее важные аспекты этой загрузки отражены в виде алгоритма на рис. 9.13.

Рис. 9.13. Алгоритм загрузки операционной системы с диска в оперативную память

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

Запомните! Для повторной загрузки операционной системы в память нажать одновременно клавиши .

Затем выполняется обработка командного файла AUTOEXEC.BAT. С помощью этого файла вы можете произвести настройку параметров операционной среды. Например, создать виртуальный диск, обеспечить смену режимов печати, загрузить вспомогательные программы и т.д.

Внимание! Файлы с расширением.ВАТ играют при работе в системной среде особую роль. Они содержат совокупность команд операционной системы или имен исполняемых файлов. После запуска файла с расширением.ВАТ все записанные в нем команды выполняются автоматически одна за другой.

Файл со стандартным именем AUTOEXEC.BAT отличается от других файлов типа.ВАТ тем, что выполнение помещенных в него команд начинается автоматически сразу после загрузки операционной системы.

В случае отсутствия файла AUTOEXEC.BAT вам будет предложено ввести дату и время:

если вы нажмете клавишу ввода, то в качестве текущих даты и времени будут приняты так называемые системные параметры, которые определяет компьютерный таймер;

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

10-25-1997 (месяц день год)

После окончания работы файла AUTOEXEC.BAT, а также если этот файл не обнаружен, на экран дисплея будет выдано приглашение системного диска, например C:\>. Это является свидетельством нормального завершения процесса загрузки, и вы можете приступить к работе, введя имя прикладной программы или команду операционной системы.

Примечание. Файлы CONFIG.SYS и AUTOEXEC.BAT могут отсутствовать. В этом случае параметры операционной среды будут установлены по умолчанию.

Запомните! На жестком диске необходимо обеспечить постоянное хранение операционной системы.

При включении компьютера все дисководы для гибких дисков должны быть открыты.

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

Загрузчик - это системная программа, выполняющая загрузку. Многие загрузчики обеспечивают, кроме того, перемещение и связывание. В некоторых системах функция связывания отделена от функций перемещения и загрузки. Связывание выполняется специальной программой связывания (или редактором связей), перемещение и загрузка - загрузчиком.

Связывание - это связывание двух или более отдельных оттранслированных программ.

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

  1. распределение ОП;
  2. перемещение программы;
  3. связывание модулей;

Распределение ОП

Перемещение программы

Если внутри модулей имеются адресные константы, которые вычисляются от начала модуля, то адреса будут корректироваться относительно Базы.

Связывание модулей

Виды загрузчиков

Загрузчики типа «компиляция-выполнение»

Одним из возможных способов выполнения функции загрузчика может быть такая организация работы ассемблера, при которой ассемблер, работая в одной части памяти, помещает машинные команды и данные по мере ассемблирования непосредственно в выделенные для них ячейки памяти. После завершения компиляции ассемблер передает управление в точку входа полученной программы. Это очень простое решение, позволяющее обойтись без каких-либо дополнительных процедур. Такая схема называется «компиляция-выполнение», а «загрузчик» состоит из одной команды, которая передает управление ассемблированной программе.

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

  • задачу распределения ОП выполняет программист (с помощью директивы установки начального значения ОП);
  • задачу перемещения программы выполняет компилятор;
  • связывание модулей - решается программистом (call 600);
  • загрузка программ в ОП и запуск на выполнение.
  • меньший объем загрузчика (по величине памяти);
  • разделение фазы компиляции и загрузки, что сокращает время на обработку модулей;
  • возможность использования нескольких языков программирования, т.к. структуры создаваемых объектных модулей идентичны.

Большой объем работ ложится на программиста. Нужно постоянно отслеживать изменения начальных адресов при модификации модулей, т.к. изменяется их длина.

Структура объектного файла абсолютного загрузчика

Информационная запись состоит из:

Управляющая запись состоит из:

Работа простого абсолютного загрузчика:

  1. Проверить достаточно ли памяти для данной программы (просмотр первой записи).
  2. Последовательное считывание тела программы и помещение по указанному адресу.
  3. Передача управления по адресу для исполнения программы.

Настраивающий загрузчик

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

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

Для каждой исходной программы ассемблер в качестве выходной информации вырабатывает текст (результат трансляции), предваряемый вектором переходов, содержащим адреса имен подпрограмм, к которым имеются обращения в исходной программе. Например, если подпрограмма SQRT является первой вызываемой подпрограммой, то первая ячейка вектора переходов будет содержать символическое имя SQRT. Предложения, содержащие вызов подпрограммы SQRT, будут транслироваться в команду перехода, указывающую адрес элемента вектора переходов, связанного с SQRT. Ассемблер, кроме того, будет передавать дополнительную информацию такую, как общая длина программы и длина вектора переходов. После загрузки в память текста программы и вектора переходов загрузчик будет загружать каждую подпрограмму, указанную в векторе. Затем он в каждый элемент вектора поместит команду перехода к соответствующей подпрограмме. Таким образом, вызов подпрограммы SQRT приведет к выполнению команды перехода к первой ячейке вектора переходов, в которой будет содержаться команда перехода к вызываемой подпрограмме.

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

Такой загрузчик имеет ряд недостатков:

  • вектор переходов не вполне удобен для загрузки и сохранения внешних данных (расположенных в другом программном сегменте);
  • вектор переходов увеличивает длину объектной программы;
  • загрузчик работает с программными сегментами, но не облегчает доступ к сегментам данных, которые могут совместно использоваться несколькими подпрограммами.

Непосредственно связывающий загрузчик

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

Ассемблер (транслятор) должен передать загрузчику следующую информацию с каждым сегментом программы и данных:

  1. длину сегмента;
  2. список всех символов сегмента, к которым возможно обращение из других сегментов, и их относительные адреса;
  3. список всех символов, не определенных в данном сегменте, к которым есть обращение в данном сегменте;
  4. информацию о расположении адресных констант в сегменте и описание того, каким образом должны изменяться их значения;
  5. машинные коды, полученные в результате трансляции, и приписанные относительные адреса.

Одним из недостатков непосредственно связывающего загрузчика в простейшем виде является необходимость при каждом выполнении программы повторно выполнять функции распределения памяти, перемещения, связывания и загрузки всех необходимых подпрограмм. Эти проблемы можно устранить путем выполнения загрузки с помощью двух отдельных программ: объединителя и загрузчика модуля. Выходом объединителя является набор данных в формате, допускающем загрузку программы в память, и называется загрузочным модулем. Существует несколько типов объединителей. Один из них, так называемый, редактор связей, который сохраняет информацию, необходимую для перемещения модуля, в памяти, так что модуль как единое целое может затем настраиваться и загружаться в произвольное место памяти. В этом случае загрузчик модуля должен выполнять функции распределения памяти и перемещения, но остается свободным от решения сложной задачи связывания объектных модулей и подпрограмм.

Динамический загрузчик

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

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

Бывают случаи, когда для эффективности использования памяти машины осуществляется динамическое связывание подпрограмм, проводимое уже при выполнении программы. То есть подпрограммы загружаются в память только по мере их вызова. Это может быть выгодно, т.к. при определенных условиях в программе некоторые подпрограммы могут вообще не понадобиться. Рассмотрим пример:

if (условие 1)
вызов подпрограммы 1
if (условие 2)
вызов подпрограммы 2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
if (условие m)
вызов подпрограммы m

Многие из ветвей будут пропущены, и не придется загружать в ОП, например, подпрограмму 2 при невыполнении условия 2. В таком случае загрузчик должен работать одновременно с программой и выполнять функции связывания и загрузки подпрограмм.

Алгоритм загрузки операционной системы

Операционная система хранится во внешней памяти обычно на жестком диске, реже - на гибком.

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

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

После успешного окончания тестирования аппаратуры производится обращение к дисководу с гибким диском А, и рядом с ним загорается лампочка индикации. В случае если загружается операционная система с гибкого диска, то нужно до или во время тестирования вставить системный диск в дисковод А. В противном случае при отсутствии на диске А опе­рационной системы осуществляется обращение к жесткому диску, о чем свидетельствует засветившаяся рядом с ним лампочка индикации.

ПРИМЕЧАНИЕ! Для повторной загрузки операционной системы в память нажать одновременно клавиши .

После успешно выполненной загрузки в оперативную память модуля расширения IO.SYS и базового модуля MSDOS.SYS загружается командный процессор СОММАND.СОМ и обрабатывается файл конфигурации CONFIG.SYS, который содержит команды подключения необходимых драйверов. Этот файл может отсутствовать, если пользователя устраивает базовый вариант операционной системы.

Затем выполняется обработка командного файла AUTOEXEC.ВАТ. С помощью этого файла производится настройка параметров операционной среды. К примеру, создать виртуальный диск, обеспечить смену режимов печати, загрузить вспомогательные программы и т.д.

Примечание! Файлы с расширением.ВАТ играют при работе в системной среде особую роль. Οʜᴎ содержат совокупность команд операционной системы или имен исполняемых файлов. После запуска файла с расширением.ВАТ всœе записанные в нем команды выполняются автоматически одна за другой.

Файл со стандартным именем AUTOEXEC.ВАТ отличается от других файлов типа.ВАТ тем, что выполнение помещенных в него команд начинается автоматически сразу после загрузки операционной системы.

В случае отсутствия файла AUTOEXEC.ВАТ будет предложено ввести дату и время:

если вы нажмете клавишу ввода, то в качестве текущих даты и времени будут приня­ты так называемые системные параметры, которые определяет компьютерный таймер;

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

10-25-1997 (месяц день год)

7:30:10.00р (часы: минуты: секунды)

После окончания работы файла AUTOEXEC.ВАТ, а также если данный файл не обнаружен, на экран дисплея будет выдано приглашение системного диска, к примеру С:\>. Это является свидетельством нормального завершения процесса загрузки, и можно приступить к работе, введя имя прикладной программы или команду операционной системы.

Примечание. Файлы CONFIG.SYS и AUTOEXEC.ВАТ могут отсутствовать. В этом случае параметры операционной среды будут установлены по умолчанию.

Запомните! На жестком диске крайне важно обеспечить постоянное хранение операционной системы. При включении компьютера всœе дисководы для гибких дисков должны быть открыты.

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

на гибком жестком нет

Считыв. с гибкого диска Считыв. с жест. диска

IO.SYS, MSDOS.SYS в загрузочном секторе»

Command. Com «Нет системных файлов»

и файла CONFIG.SYS

Операционная система хранится во внешней памяти обычно на жестком диске, реже – на гибком. Для нормальной работы компьютера необходимо, чтобы основные модули операционной системы находились в оперативной памяти. Поэтому после включения компьютера организована автоматическая перезапись (загрузка) операционной системы с диска в оперативную память. Наиболее важные аспекты этой загрузки отражены в виде алгоритма на рис. 9.13.

Рис. 9.13. Алгоритм загрузки операционной системы с диска в оперативную память

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

Запомните! Для повторной загрузки операционной системы в память нажать одновременно клавиши .

Затем выполняется обработка командного файла AUTOEXEC.BAT. С помощью этого файла вы можете произвести настройку параметров операционной среды. Например, создать виртуальный диск, обеспечить смену режимов печати, загрузить вспомогательные программы и т.д.

Внимание! Файлы с расширением.ВАТ играют при работе в системной среде особую роль. Они содержат совокупность команд операционной системы или имен исполняемых файлов. После запуска файла с расширением.ВАТ все записанные в нем команды выполняются автоматически одна за другой.

Файл со стандартным именем AUTOEXEC.BAT отличается от других файлов типа.ВАТ тем, что выполнение помещенных в него команд начинается автоматически сразу после загрузки операционной системы.

В случае отсутствия файла AUTOEXEC.BAT вам будет предложено ввести дату и время:

если вы нажмете клавишу ввода, то в качестве текущих даты и времени будут приняты так называемые системные параметры, которые определяет компьютерный таймер;

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

10-25-1997 (месяц день год)

После окончания работы файла AUTOEXEC.BAT, а также если этот файл не обнаружен, на экран дисплея будет выдано приглашение системного диска, например C:\>. Это является свидетельством нормального завершения процесса загрузки, и вы можете приступить к работе, введя имя прикладной программы или команду операционной системы.

Примечание. Файлы CONFIG.SYS и AUTOEXEC.BAT могут отсутствовать. В этом случае параметры операционной среды будут установлены по умолчанию.

Запомните! На жестком диске необходимо обеспечить постоянное хранение операционной системы.

При включении компьютера все дисководы для гибких дисков должны быть открыты.

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

Конечно, срок загрузчик звучит вам довольно знакомо , так как он часто используется на смартфонах и, в частности, на Android терминалы. Тем не мение, загрузчики (что это означает) не являются эксклюзивными для смартфонов, и более того, на самом деле их происхождение находится в ПК до такой степени, что о них почти не говорят, потому что «это действительно так», о его существовании и даже о его функциональности. В этой статье мы расскажем, что такое загрузчик, для чего он нужен и как работает на ПК.

Чтобы иметь возможность выполнять заказы и заявки, CPU / ЦЕНТРАЛЬНЫЙ ПРОЦЕССОР ПК всегда использует Оперативная память память, поскольку именно там хранятся информация и вычисления, которые процессор должен постоянно использовать для выполнения своих задач.

Загрузчик: определение, характеристики, типы

Очевидно, что наиболее важный ресурс, хранящийся в ОЗУ, связан с операционной системой, «программой», оснащенной функцией управления процессами, которая, помимо прочего, точно регулирует доступ ЦП к памяти (и хотя это звучит избыточно). . Под этим мы подразумеваем то, что на ПК соответствующие данные операционной системы должны загружаться в память с самого начала, и именно здесь запускается загрузчик.

Что такое загрузчик?

Энсендер ПК

Как вы можете себе представить, поскольку его название говорит само за себя, слово загрузчик происходит от английских слов boot и loader, хотя, если быть более конкретным, на самом деле оно происходит от загрузчик , что в переводе с английского буквально означает загрузчик шнурка загрузки (или петля). Происхождение этого термина происходит из того факта, что менеджер загрузки необходим для запуска ПК и, следовательно, служит опорой так же, как петли шнурков.

Загрузчик - это своего рода специальное программное обеспечение, которое загружает важные файлы вашей операционной системы в оперативную память вашего компьютера, и это действительно для Windows, Linux, Max и даже системы на основе DOS, такие как FreeDOS. Для этого загрузчик обязательно должен использоваться в загрузочной системе, которая вполне может быть CD / DVD, флеш-накопителем или системным запоминающим устройством, которое является обычным для ПК.

Последовательность загрузки

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

Выбирая последовательность загрузки в BIOS, мы буквально сообщаем компьютеру, где искать загрузчик, поскольку без него компьютер не сможет загрузиться и запустить операционную систему.

Как работает загрузчик на ПК

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


Этот начальный процесс называется POST, что означает Самотестирование при включении и хотя у нас есть отдельная статья об этом, короче говоря, она состоит из серии процессов и системных проверок, которые запускаются на ПК при каждом его включении или перезапуске. И, как вы уже догадались, загрузчик - это то, что загружается сразу после POST; Система проверяет последовательность загрузки, настроенную в BIOS, и начинает поиск первого из выбранных устройств, у которых есть загрузчик для загрузки данных в память.

Где именно хранится?

  • В первом блоке загрузочного носителя (также известном как «нулевая дорожка диска»).
  • На определенном разделе загрузочного носителя.

Первый вариант является наиболее распространенным, поскольку он тесно связан с принципом работы MBR, которая не только содержит необходимую ссылку для прошивки, чтобы найти загрузчик, но также содержит само загрузочное программное обеспечение, которое позволяет операционной системе Загружать".

Жесткий диск

Во втором варианте, менее используемом, поскольку он требует, чтобы пользователь специально настроил его таким образом по какой-либо причине (хотя это также выглядит так на OEM-ПК от производителей), операционная система использует определенный раздел в качестве места хранения для загрузчик, созданный на накопителе.

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

Его обязанности?

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


  • Распознавание и загрузка других загрузчиков (многоступенчатая).
  • Выполнение прикладных программ.
  • Исправьте или добавьте функции, которые неправильны в прошивке.
  • Альтернативная загрузка прошивки.

Какие есть загрузчики?

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

Загрузчик операционной системы – это специальная программа, которая расположена в первых секторах жесткого диска (далее просто загрузчик), например в MBR (главная загрузочная запись) жесткого диска. После теста системы, в момент загрузки, BIOS (базовая система ввода-вывода) передает управление MBR, если система настроена для загрузки из неё. Затем программа, расположенная в MBR начинает выполняться. Эта программа называется загрузчиком, её задача - передать управление ядру операционной системы, которое продолжит загрузку.

Содержание

История

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

Первые примеры

Первые компьютеры, которые появились в 1940-х и 1950-х годах были единственными в своем роде инженерными усилиями, на программирование которых могли уйти недели, а загрузка программ была одной из многих проблем, которые нужно было решить. В раннем компьютере ENIAC не было «программы», хранящейся в памяти, но он был настроен для каждой проблемы с помощью конфигурации соединительных кабелей.

Первые коммерческие компьютеры

Первые программируемые компьютеры для коммерческой продажи, такие как UNIVAC I и IBM 701, включали функции, упрощающие их работу. Они включали, в основном инструкции, которые выполняли полную операцию ввода или вывода. Та же самая аппаратная логика может использоваться для загрузки содержимого перфокарты (наиболее типичной) или другого носителя ввода, такого как магнитный барабан или магнитная лента , который содержал программу начальной загрузки, нажатием одной кнопки. Эту концепцию загрузки называли различными именами компьютеров IBM 1950-х и начала 1960-х годов, но IBM использовала термин «Начальная загрузка программы» с IBM 7030 Stretch. Другие компьютеры IBM той эпохи имели схожие характеристики. Конкуренты IBM также предложили загрузку одной кнопки.

IBM System / 360 и преемники

В IBM System / 360 и его преемниках, включая текущие машины / Architecture , процесс загрузки известен как Начальная загрузка программы (IPL). IBM придумал этот термин для 7030 (Stretch) , восстановил его для проектирования System / 360 и продолжает использовать его в этих средах и сегодня. Функция IPL в System / 360, в преемниках и ее совместимых устройствах, таких как Amdahl, считывает 24 байта из указанного оператором устройства в основное хранилище, начиная с реального адреса ноль. Вторая и третья группы из восьми байтов обрабатываются как канальные командные слова (CCW) для продолжения загрузки запускаемой программы (первое CCW всегда моделируется процессором и состоит из команды Read IPL, 02h , с цепочкой команд и подавлением неверной длины указание исполняется). [Источник 1]

Описание

Несмотря на то, что с работой загрузчика операционной системы так или иначе сталкивается любой из её пользователей, далеко не все подозревают даже о его существовании, не говоря уже о более глубоких познаниях в этой области. Причем речь не только о тех, кто использует Windows. Как показывает опыт, некоторый процент не осведомленных о существовании загрузчика ОС пользователей есть и в среде Linux. Загрузчик операционной системы- это очень короткая программа, находящаяся в первом секторе каждой дискеты и жесткого диска (винчестера) с операционной системой MS DOS. Функция этой программы заключается в считывании с загрузочного диска в оперативную память системных файлов DOS. Основная задача загрузчика - подготовить компьютер для загрузки ядра операционной системы (если, конечно, в такой предварительной подготовке есть какая-то необходимость), ну и, собственно, загрузить само ядро. В случае, если есть несколько ядер, доступных для загрузки, загрузчик нередко выполняет ещё и функцию средства диалога с пользователем, позволяя тому выбрать одно из доступных ядер. Наиболее важный момент всей этой процедуры - это, конечно же, непосредственная загрузка в оперативную память ядра операционной системы. После того, как отработал код загрузчика BIOS, управление передается коду из загрузочного сектора (boot sector) активного раздела жесткого диска, хотя в ряде случаев загрузка операционной системы может производиться исключительно средствами кода, записанного в BIOS. Вместе с тем, само ядро загружаемой системы не обязательно берется загрузчиком с жесткого диска - существуют и другие способы, например, получение кода ядра по сети или через внешние порты компьютера (что особенно характерно для стадии отладки разрабатываемого ядра). Часто используется многоуровневая загрузка, когда процесс работы загрузчика плавно перетекает в процесс работы самого ядра операционной системы путем последовательного вызова нескольких загружающих друг друга программ. В наше время, в силу существования множества разных операционных систем, имеется и большое количество их загрузчиков. Самый распространенный - это, пожалуй, NTLDR, загрузчик систем семейства Windows NT до Windows XP включительно. В новых версиях Windows применяется загрузчик Windows Boot Manager, пришедший на смену NTLDR. Наиболее распространенными загрузчиками в мире Linux являются LILO (LInux LOader) и GRUB (Grand Unified Bootloader). Загрузчик Mac OS X называется BootX, загрузчик Linux и Solaris для машин с архитектурой SPARC имеет название SILO (SPARC Improved bootLOader). Существует также ряд достаточно известных в узких кругах загрузчиков для встраиваемых операционных систем - Das U-Boot, uMon, RedBoot, SyMon.

Функции

Загрузчик операционной системы выполняет следующие функции:

  1. Выделение места для программ в памяти (распределение).Для размещения программы в оперативной памяти должно быть найдено и выделено свободное место в памяти. Для выполнения этой функции Загрузчик обычно обращается к операционной системы, которая выполняет его запрос на выделение памяти в рамках общего механизма управления памятью.
  2. Фактическое размещение команд и данных в памяти (загрузка).Функция загрузки сводится к считыванию образа программы с диска (или другого внешнего носителя) в оперативную память.
  3. Разрешение символических ссылок между объектами (связывание). Функция связывания состоит в компоновки программы из многих объектных модулей. Поскольку каждый из объектных модулей в составе программы был получен в результате отдельного процесса трансляции, который работает только с одним конкретным модулем, обращения к процедурам и данным, расположенным в других модулях, в объектных модулях не содержат актуальных адресов. Загрузчик же "видит" все объектные модули, входящие в состав программы, и он может вставить в обращения к внешним точкам правильные адреса. Загрузчики, которые выполняют функцию связывания вместе с другими функциями, называются Связывающими Загрузчиками. Выполнение функции связывания может быть переложено на отдельную программу, называемую Редактором связей или Компоновщиком. Редактор связей выполняет только функцию связывания - сборки программы из многих объектных модулей и формирование адресов в обращениях к внешним точкам..
  4. Настройка всех величин в модуле, зависящих от физических адресов в соответствии с выделенной памятью (перемещение).Функция перемещения необходима потому, что программа на любом языке разрабатывается в некотором виртуальном адресном пространстве, в котором адресация ведется относительно начала программной секции. При написании программы и при ее трансляции, как правило, неизвестно, по какому адресу памяти будет размещена программа (где система найдет свободный участок памяти для ее размещения). Поэтому в большинстве случаев в командах используется именно адреса меток и данных. Однако, в некоторых случаях в программе возникает необходимость использовать реальные адреса, которые определяться только после загрузки. Все величины в программе, которые должны быть привязаны к реальным адресам, должны быть настроены с учетом адреса, по которому программа загружена.
  5. Передача управления на входную точку программы (инициализация). [Источник 2]

Виды загрузчиков

Загрузчик Syslinux

Обратите внимание, что загрузчик Syslinux сам по себе не может быть установлен в MBR, однако в пакете syslinux имеются два файла, из которых можно установить загрузочный код Syslinux в 440-байтную область загрузочного кода MBR: mbr.bin или gptmbr.bin. Конечно, это имеет смысл только для Linux. Кстати, syslinux может быть использовать с UEFI – для него загрузчик называется syslinux.efi, однако он еще достаточно сырой. Итак, Syslinux состоит из файла загрузчика и файла конфигурации меню syslinux.cfg. Файл меню может вызывать графическое меню через подгрузку файла vesamenu.c32. Установка Syslinux под Windows на другой диск выполняется достаточно просто: используется файл [bios/]«win32/syslinux.exe» для 32-х битных систем и [bios/]«win64/syslinux64.exe» для 64-х битных систем. syslinux.exe --install a: — установка на флоппи-диск syslinux.exe --mbr --active --directory /boot/syslinux/ --install z: — установка на диск z:, например флешку, где — в качестве разделителей должны быть использованы именно /, а не \

— в каталоге будет размещён файл-загрузчик «ldlinux.sys»

— и раздел z: помечен как активный

— для организации меню должен быть создан файл (см. рисунок 1).

Загрузчики Windows

Конечно, основное внимание будет уделено загрузчикам для Windows. Загрузчик NTLDR использовался до появления операционной системы Windows Vista. В процессе начальной загрузки, программный код загрузочного сектора раздела (PBR — Partition Boot Sector) обеспечивал поиск, считывание в память и передачу управления файлу ntldr, который размещался в корневом разделе загрузочного диска. Конфигурирование загрузчика ntldr выполнялось с помощью простого текстового файла boot.ini, содержимое которого задавало список загружаемых операционных систем, их параметры загрузки, размещение системных файлов и т.п. В операционных системах Windows Vista /Server 2008 и более поздних, загрузчик ntldr не используется, и заменен диспетчером загрузки BOOTMGR. Соответственно, изменился и программный код загрузочного сектора раздела, обеспечивающий передачу управления файлу bootmgr. Новый диспетчер загрузки использует собственные данные конфигурации загрузки (Boot Configuration Data — BCD) и может выполнять, при определенных настройках, загрузку любых операционных систем семейства Windows. Загрузчик ntldr не поддерживает возможность загрузки Windows Vista и старше. Также, хочу отметить, что все современные Windows PE любых версий также используют загрузчик bootmgr. Цепочка стадий загрузки MBR — PBR — BOOTMGR — это минимально необходимое условие для того, чтобы загрузка операционной системы могла начаться. Дальнейший же ее ход, определяется диспетчером загрузки BOOTMGR, который считывает данные конфигурации загрузки из файла \BOOT\BCD активного раздела и выполняет загрузку в соответствии с их содержимым.

Для Windows 7 он запускает файл (см. рисунок 2).

Диспетчер загрузки bootmgr позволяет выполнить загрузку как с обычного системного диска, так и из загрузочных образов, виртуальных дисков, загрузку с использованием загрузчиков других операционных систем. Это позволяет использовать bootmgr для загрузки Windows PE. В соответствии с конфигурацией загрузки, диспетчер BOOTMGR может выполнить загрузку ядра Windows или, например, Linux, обеспечить выход из режима гибернации, загрузить диагностические программы, выполнить загрузку ядра с измененными параметрами и т.п. Обычно файл bootmgr имеет атрибуты «скрытый» и «системный». По типу структуры, файл \Boot\BCD является кустом реестра и отображается в редакторе реестра Windows как раздел HKEY_LOCAL_MACHINE\BCD00000000. Обычно именно конфигурация BCD становится наибольшим камнем преткновения. [Источник 3]

Загрузчик GRUB

Загрузчик операционных систем GRUB – это очень мощный загрузчик, который может загружать разнообразные операционные системы, такие как Windows, DOS, Linux, GNU Hurd, *BSD и другие. В данное время LILO является самым популярным загрузчиком, используемым почти всеми c мультизагрузочными системами. С GRUB можно “видеть” содержимое файловой системы без загрузки операционной системы. Например, если нужно посмотреть дату и время, записанные в файле, но не имеете времени для загрузки операционной системы, то можете использовать командную строку GRUB (“grub>”) и написать:

Пользователь получит полное содержимое файла, включая дату и время. Самая большая польза загрузчика GRUB в том, что он может загрузить любое ядро из любого раздела диска. Например, если пользователь забыл добавить недавно откомпилированное ядро в список, компьютер должен нормально загрузиться, добавить его в список и перезагрузиться, чтобы его использовать. Но пользователь может легко использовать командную строку загрузчика GRUB и загрузить нужное ядро. Три главных шага для использования GRUB: компиляция, инсталляция и конфигурация.

  • Шаг 1: Компиляция и инсталляция программного пакета загрузчика GRUB

Загрузите исходные тексты

Для начала процесса компиляции, наберите:

Для инсталляции всех файлов наберите:

Программный пакет GRUB установлен, теперь можно приступать к установке загрузчика GRUB в загрузочный сектор. Хорошей идеей является хранить все файлы загрузчика, относящиеся к загрузке в директории /boot/grub. Для того, чтобы сделать это, следуйте следующему примеру: По умолчанию все файлы загрузчика проинсталлированы в /use/share/i386-pc или в /use/local/share/grub/i386-pc в зависимости от того, как определены переменные среды. Создайте каталог /boot/grub. Затем нужно скопировать следующие файлы в папку: stage1 stage2

  • _stage1_5
  • Шаг 2: Инсталляция загрузчика операционных систем GRUB.

Инсталляцию непосредственно загрузчика можно разделить на три этапа:

  • Инсталляция "stage1" в MBR.
  • Настройка адреса или расположения, "stage2". *Настройка меню загрузки или набора опций для выбора операционной системы для загрузки.

Необходимо начать инсталляцию со следующих команд:

  • Шаг 3:Конфигурация загрузчика операционых систем GRUB

BootX (Apple)

BootX-то программный загрузчик, разработанный и разработанный Apple Inc для использования на линейке компьютеров Macintosh. BootX используется для подготовки компьютера к использованию, загрузив все необходимые драйверы устройств и затем запустив Mac OS X, загрузив ядро на всех PowerPC. Макинтоши, работающие под управлением операционной системы Mac OS X 102 или более поздних версий. Используя BootROM, компьютерную микросхему ПЗУ с постоянной памятью, содержащую OpenFirmware,графическая загрузочная заставка кратко показана на всех совместимых компьютерах Macintosh в виде серого логотипа Apple с вращающимся курсором, который появляется во время последовательности запуска. Программа свободно доступна как часть операционной системы Darwin под лицензией открытого источника Apple Public License License5. BootX был заменен еще один почти идентичный загрузчик с именем bootefi и расширяемым ПЗУ интерфейса встроенного ПО при выпуске Mac4 на базе Intel. [Источник 5]

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

Принципы загрузки операционных систем

При включении компьютера управление процессором получает BIOS, и если он настроен на загрузку (boot) с винчестера, то он подгружает в оперативную память компьютера первый сектор диска (MBR) и передает управление ему. Если у вас несколько жестких дисков, то каждый из них содержит свою MBR. В этом случае можно или менять порядок загрузки дисков в BIOS, или же прописать все операционные системы с разных дисков в один PBR загрузчик, об этом ниже.

Сразу оговоримся, что если у BIOS у вас включен режим загрузки UEFI, то структура разделов диска у вас должна быть не MBR, а GPT. GPT имеет не только другую структуру разделов, но и другую структуру загрузочной области. Там в первый сектор записывается «заглушка» для BIOS (Protective MBR), которая служит для того, чтобы старый Legacy BIOS мог загрузиться с GPT диска в режиме совместимости, если ОС была установлена на GPT (часто в BIOS его называют CSM – Compatibility Support Module). Однако, вы никогда не сможете загрузить ОС с MBR диска, если в BIOS выставлена загрузка в режиме UEFI.

Общая структура MBR может быть представлена следующей таблицей:

Смещение Длина Описание

000h 446 Код загрузчика

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

1CEh 16 Раздел 2

1DEh 16 Раздел 3

1EEh 16 Раздел 4

1FEh 2 Сигнатура (55h AAh)

Длина указана в байтах.

Шестнадцатеричный однобайтовый код далее указывает на тип (ID) раздела. Например, 07h – раздел типа NTFS, 0Bh – FAT32, 17h – скрытый NTFS раздел, 27h – системный скрытый NTFS раздел для восстановления системы.

Типы MBR

Существуют следующие распространенные типы MBR:

  • Windows NT версий 5.х и 6.x, занимает 1 сектор. Может загружать ОС только с первичного активного раздела.
  • GRUB4DOS версий 5.х и 6.x – занимает 16 секторов. Представляет собой файл gbldr.mbr. также его можно установить в качестве PBR прямо в раздел.
  • GRUB 2.0 – универсальный загрузочный менеджер, занимает 63 сектора. Состоит из файлов boot.img и core.img. Может работать с любыми файловыми системами и загружать ОС как с первичных, так и логических разделов.
  • PLoP – занимает 62 сектора и имеет продвинутый интерфейс. Позволяет организовать загрузку с CD/Floppy/USB без поддержки и обращения к BIOS.
  • UltraISO USB-HDD – занимает 1 сектор и позволяет выполнять загрузку с внешних USB HDD дисков.

Конечно, с учетом многообразия ОС, существует масса других MBR, но они не так популярны.

Операционные системы дружат только с определёнными типа загрузчиков, однако это не значит, что их нельзя модифицировать для поддержки других ОС. Так, в Windows MBR можно добавить информацию о Linux разделе, но этого недостаточно, чтобы Linux стал грузиться. Для этого также потребуется редактировать и PBR. Однако линуксовый LDLINUX.SYS требует наличия своего микрокода в MBR, чтобы обращаться к нему в процессе загрузки, то есть если у вас загрузочная запись Windows NT MBR, а загрузчик GRUB, то такая схема работать не будет. Виндовсовые загрузчики могут обойтись без наличия соответствующего микрокода в MBR, поэтому они могут грузиться и через GRUB MBR.

Главное, что вам нужно понять, что MBR содержит микрокод, инструкции для процессора, а не файлы. PBR же указывает на загрузчик, который является файлом.

Разнообразие PBR

Мы с вами выяснили, что MBR передает управление на активный раздел с PBR. PBR (Partition Boot Record), так же называют volume boot record (VBR) – это микрокод в начальном секторе раздела диска (часто это сектор 63), который содержит информацию, какой же загрузчик искать.

Существуют следующие загрузчики:

  • io.sys для MS-DOS, Windows 95/98/МЕ
  • ntldr для Windows 2000/XP/2003
  • bootmgr для Windows Vista/7/8/8.1/10

Как я сказал выше, загрузчик является не загрузочной областью, а бинарным файлом.

  • Файлы Windows NTLDR или BOOTMGR должны лежать в корне активного системного раздела и работают они по-разному. Об этом ниже.
  • Файл GRLDR используется Grub4DOS также должен лежать в корне партиции, с котрой выполняется загрузка
  • Syslinux – универсальный загрузчик, содержащий много модулей и поддерживающий загрузку с файловых систем ext2/3/4, FAT, NTFS, CD/DVD дисков, по сети через PXE. Позволяет организовать текстовое или графическое загрузочное меню.
    Чаще всего этот загрузчик используют для запуска Linux с файловых систем FAT/NTFS или же создания мультизагрузочных USB флэшек, позволяющих загружать как Linux-совместимые приложения под DOS, так и Windows PE.

Например, типичные пример создания мультизагрузочной флэшки – Multiboot USB 2k10, создаваемые уважаемыми conty9 & korsak7. Мультизагрузочный диск системного администратора с возможностью загрузки c CD/DVD, флешки, USB-HDD и обычного HDD и состоящий из нескольких Windows PE-сборок, а также DOS версий продуктов компании Acronis – например Acronis True Image (выполнены на Linux-ядре). Именно из-за этого смешанного зоопарка систем и приходится использовать загрузчик Syslinux (хотя можно и Grub4DOS).

В своем арсенале вам необходимо обязательно иметь утилиту BootICE. Уникальная в своём роде утилита для изменения или бэкапа/восстановления MBR (Master Boot Record) или PBR (Partition Boot Record). С BOOTICE, вы можете легко изменять тип MBR/PBR. Поддерживается загрузочные записи: Grub4DOS, SysLinux, PLoP, MS NT52/60… Например, с помощью этой утилиты, вы можете установить Grub4DOS вашим MBR или PBR, установить NTLDR или BOOTMGR к вашему PBR, установить SYSLINUX на PBR, и так далее.


Редактирование и установка MBR

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

Помимо работы с MBR и PBR, BootICE позволяет редактировать разделы диска, выполнять ручное разбиение и форматирование, модифицировать тип раздела, сохранять и восстанавливать из бэкапа таблицу разделов.

Работа с таблицей разделов в BootICE

Кратко о загрузчике Syslinux

Обратите внимание, что загрузчик Syslinux сам по себе не может быть установлен в MBR, однако в пакете syslinux имеются два файла, из которых можно установить загрузочный код Syslinux в 440-байтную область загрузочного кода MBR: mbr . bin или gptmbr . bin . Конечно, это имеет смысл только для Linux.

Кстати, syslinux может быть использовать с UEFI – для него загрузчик называется syslinux . efi , однако он еще достаточно сырой.

Итак, Syslinux состоит из файла загрузчика и файла конфигурации меню syslinux.cfg. Файл меню может вызывать графическое меню через подгрузку файла vesamenu.c32.

Через BootICE вы также можете установить загрузчик Syslinux, указав в опциях альернативное местоположение файлов ldlinux.sys и и файла меню syslinux.cfg.

Загрузчики Windows

Конечно, основное внимание мы уделим загрузчикам для Windows.

Для Windows 7 он запускает файл \WINDOWS\system32\winload.exe

Загрузка WINDOWS\system32\winload.exe

Диспетчер загрузки bootmgr позволяет выполнить загрузку как с обычного системного диска, так и из загрузочных образов, виртуальных дисков, загрузку с использованием загрузчиков других операционных систем. Это позволяет использовать bootmgr для загрузки Windows PE. В соответствии с конфигурацией загрузки, диспетчер BOOTMGR может выполнить загрузку ядра Windows или, например, Linux, обеспечить выход из режима гибернации, загрузить диагностические программы, выполнить загрузку ядра с измененными параметрами и т.п.

Обычно именно конфигурация BCD становится наибольшим камнем преткновения.

Конфигурирование BOOTMGR и BCD

Для работы с загрузчиком Windows вам понадобятся системные утилиты:

Команда BCDEDIT применяется в операционных системах Windows Vista и старше для редактирования BCD. Подробную инструкцию по использованию этой утилиты можно найти здесь.

Однако, я вам крайне рекомендую использовать очень удобную программу EasyBCD для редактирования BCD. Например, с помощью нее вы легко можете добавить Linux раздел в меню загрузки. Вот статья о том, как добавить в BCD конфигурацию Windows 7 пункт загрузки Linux Ubuntu.

При запуске EasyBCD в окне View Settings можно посмотреть текущую конфигурацию BCD. На скриншоте видно, что в текущий момент на диске установлена одна Windows 7, GUID которой и вручную добавленный пункт меню для запуска установки Windows из WIM файла:

А вот BCD меню загрузочной флэшки, на которой присутствуют инсталляторы Windows 7 x86 и x64, а также две среды MSDaRT x86 + x64:

Запуск среды восстановления Windows RE с загрузочной флэшки

Команда bootsect /nt60 E: /mbr /force – создает на диске E: (например, флэшке) записи MBR и PBR и устанавливает загрузчик bootmgr.

Команда Bootrec /FixMbr – записывает основную загрузочную запись (MBR) системного раздела, совместимую с Windows. При этом существующая таблица разделов не перезаписывается.

Bootrec /FixBoot – записывает в системный раздел новый загрузочный сектор, совместимый с Windows.

bootrec /RebuildBCD – перестроить хранилище конфигурации загрузки на данном компьютере. Удобно использовать для изменения конфигурации BCD при добавлении нового диска с установленной Windows, или для внесения изменений в существующую конфигурацию загрузки новых или ранее не использовавшихся ОС.

Загрузчик GRUB4DOS

Загрузчик состоит из следующих файлов:

Файл grldr.mbr нужен для установки GRUB в качестве MBR. Итак, GRUB можно установить руками под Windows или же воспользоваться различными утилитами.

Установка GRUB загрузчика под Windows

Представим, что у вас уже есть Windows с загрузчиком bootmgr. Вам необходимо будет добавить в BCD записи о новом загрузчике, чтобы не лишаться существующего. Порядок действий:

Вот и все, не так и сложно.

Сложнее отредактировать меню menu.lst. Вот список основных команд консоли GRUB (их можно исполнять как вручную из командной строки, так и из файла меню):

Приведу примеру рабочих кусков кода из файла меню:

title Установка Windows XP with SP3 x86 RUS. root (hd0,0) map --mem /WINSETUP/XPpSP3.ISO (0xff) map (hd0) (hd1) map (hd1) (hd0) map --hook root (0xff) chainloader /I386/SETUPLDR.BIN

title Установка Windows 7 with SP1 x86-x64 + MSDaRT 7.0 RUS. find --set-root /bootmgr chainloader /bootmgr boot

title Загрузка WinPe RusLive Special Edition 2k10 RUS. find --set-root --ignore-floppies /2K10/WINPE/RLPE.BIN chainloader /2K10/WINPE/RLPE.BIN title Acronis DD 11 and True Image Home 2012 RUS. map /PROG/ATIH2012PP_6151_ADDH11_2343_ru-RU.iso (0xFF) || map --mem /PROG/ATIH2012PP_6151_ADDH11_2343_ru-RU.iso (0xFF) map --hook chainloader (0xFF)

title Hiren's BootCD v.15.1 RUS. find --set-root /PROG/hiren.ima map /PROG/hiren.ima (fd0) map --hook chainloader (fd0)+1 rootnoverify (fd0) map --floppies=1 boot

title Victoria v.3.52 RUS. find --set-root /PROG/vcr352r.iso map --mem /PROG/vcr352r.iso (0xff) map --hook root (0xff) chainloader (0xff) boot

title Alkid Live CD root (hd0,0) chainloader (hd0,0)/minint/setuplns.bin

Также, для любителей конфигурировать загрузчик из-под Windows, существует утилитка WinGRUB, которая устанавливает GRUB без форматирования флэшки.

Если все-таки вам не хватило нервов и сил разобраться в написании меню, то есть программки, которые сделают меню загрузки и установят загрузчик за вас, вам нужно только выбрать ISO файлы дистрибутивов, которые надо добавить:

Выводы

Итак, чтобы была возможность загрузить ОС, необходимо, чтобы был установлен корректный загрузчик MBR, который заканчивается валидной сигнатурой, должна быть таблица разделов, и хотя бы один раздел должен быть помечен как активный. А в самом разделе, куда MBR передаст управление, должна быть валидная загрузочная запись, которая укажет, какой системный файл необходимо загрузить в память для начала загрузки самой ОС. Кроме того, должно быть загрузочное меню, которое укажет на местоположение загрузочных файлов ОС.


[Посещений: 14 375, из них сегодня: 11]

Читайте также: