stringtranslate.com

Загрузчик

GNU GRUB, популярный загрузчик с открытым исходным кодом
загрузчик Windows

Загрузчик , также пишется как загрузчик [1] ​​[2] или называется bootstrap loader , это компьютерная программа , которая отвечает за загрузку компьютера. Если она также предоставляет интерактивное меню с несколькими вариантами загрузки, то ее часто называют менеджером загрузки . [2]

Когда компьютер выключен, его программное обеспечение, включая операционные системы, код приложений и данные, остается сохраненным в энергонезависимой памяти . Когда компьютер включен, он обычно не имеет операционной системы или ее загрузчика в оперативной памяти (ОЗУ). Сначала компьютер выполняет относительно небольшую программу, сохраненную в постоянном запоминающем устройстве (ПЗУ, а позже EEPROM , NOR flash ) вместе с некоторыми необходимыми данными, чтобы инициализировать ОЗУ (особенно в системах x86), получить доступ к энергонезависимому устройству (обычно блочному устройству , например, NAND flash) или устройствам, с которых программы и данные операционной системы могут быть загружены в ОЗУ.

Некоторые более ранние компьютерные системы, получив сигнал загрузки от человека-оператора или периферийного устройства, могут загрузить очень небольшое количество фиксированных инструкций в память в определенном месте, инициализировать по крайней мере один ЦП, а затем указать ЦП на инструкции и начать их выполнение. Эти инструкции обычно запускают операцию ввода с некоторого периферийного устройства (которое может быть выбрано оператором с помощью переключателя). Другие системы могут отправлять аппаратные команды непосредственно на периферийные устройства или контроллеры ввода-вывода, которые вызывают чрезвычайно простую операцию ввода (такую ​​как «считывание нулевого сектора системного устройства в память, начиная с местоположения 1000»), эффективно загружая небольшое количество инструкций загрузчика в память; затем сигнал завершения от устройства ввода-вывода может использоваться для запуска выполнения инструкций ЦП.

Меньшие компьютеры часто используют менее гибкие, но более автоматические механизмы загрузчика, чтобы гарантировать, что компьютер запустится быстро и с предопределенной конфигурацией программного обеспечения. Например, во многих настольных компьютерах процесс загрузки начинается с того, что ЦП выполняет программное обеспечение, содержащееся в ПЗУ (например, BIOS IBM PC или IBM PC-совместимого ) по предопределенному адресу (некоторые ЦП, включая серию Intel x86 , разработаны для выполнения этого программного обеспечения после сброса без посторонней помощи). Это программное обеспечение содержит элементарные функции для поиска устройств, имеющих право участвовать в загрузке, и загрузки небольшой программы из специального раздела (чаще всего загрузочного сектора ) наиболее перспективного устройства, обычно начиная с фиксированной точки входа, такой как начало сектора.

Загрузчик первой ступени

Загрузчики могут сталкиваться с особыми ограничениями, особенно по размеру; например, на ранних моделях IBM PC и совместимых с ними компьютерах загрузочный сектор обычно должен работать с 510 байтами кода (или меньше) и занимать всего 32 КБ [3] [4] ( позже этот объем был уменьшен до 64 КБ [5] ) системной памяти и использовать только инструкции, поддерживаемые исходными процессорами 8088/8086 . Первая ступень загрузчиков ПК (FSBL, first-stage boot loader), размещенная на фиксированных дисках и съемных дисках, должна вписываться в первые 446 байт основной загрузочной записи , чтобы оставить место для 64-байтовой таблицы разделов по умолчанию с четырьмя записями разделов и двухбайтовой загрузочной подписью , которые требуются BIOS для надлежащего загрузчика, — или даже меньше, когда в некоторых средах должны поддерживаться дополнительные функции, такие как более четырех записей разделов (до 16 по 16 байт каждая), подпись диска (6 байт), временная метка диска (6 байт), расширенный активный раздел (18 байт) или специальные многозагрузочные загрузчики.

В загрузочных записях дискет и супердискет для расширенного блока параметров BIOS на томах FAT12 и FAT16 , начиная с DOS 4.0, занято до 59 байт, тогда как EBPB FAT32 , представленный в DOS 7.1, требует даже 87 байт, оставляя только 423 байта для загрузчика при предположении размера сектора 512 байт. Поэтому загрузочные секторы Microsoft традиционно накладывали определенные ограничения на процесс загрузки. Например, загрузочный файл должен был располагаться в фиксированном положении в корневом каталоге файловой системы и храниться в последовательных секторах, [6] [7] условия, учтенные командой и слегка смягченные в более поздних версиях DOS. [7] [nb 1] Затем загрузчик мог загрузить первые три сектора файла в память, которая, как оказалось, содержала другой встроенный загрузчик, способный загрузить оставшуюся часть файла в память. [7] Когда Microsoft добавила поддержку LBA и FAT32, они перешли на загрузчик, охватывающий два физических сектора, используя 386 инструкций по соображениям размера. В то же время другие производители сумели втиснуть гораздо больше функциональности в один загрузочный сектор, не ослабляя изначальные ограничения только на минимальную доступную память (32 КиБ) и поддержку процессора (8088/8086). [nb 2] Например, загрузочные секторы DR-DOS способны находить загрузочный файл в файловых системах FAT12, FAT16 и FAT32 и загружать его в память целиком через CHS или LBA, даже если файл не хранится в фиксированном месте и в последовательных секторах. [8] [3] [9] [10] [11] [nb 3] [nb 2]SYS

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

Примерами загрузчиков первого этапа являются BIOS , UEFI , coreboot , Libreboot и Das U-Boot .

Загрузчик второго уровня

Загрузчики второго этапа, такие как GNU GRUB , rEFInd , BOOTMGR , Syslinux , NTLDR или iBoot , сами по себе не являются операционными системами, но способны правильно загружать операционную систему и передавать ей выполнение; впоследствии операционная система инициализируется и может загружать дополнительные драйверы устройств . Загрузчик второго этапа не нуждается в драйверах для своей собственной работы, но вместо этого может использовать общие методы доступа к хранилищу, предоставляемые системной прошивкой, такой как BIOS или Open Firmware , хотя обычно с ограниченной аппаратной функциональностью и более низкой производительностью. [12]

Многие загрузчики могут быть настроены так, чтобы предоставить пользователю несколько вариантов загрузки. Эти варианты могут включать в себя разные операционные системы (для двойной или мультизагрузки с разных разделов или дисков), разные версии одной и той же операционной системы (на случай, если новая версия имеет неожиданные проблемы), разные параметры загрузки операционной системы (например, загрузка в режиме восстановления или безопасном режиме ) и некоторые автономные программы, которые могут работать без операционной системы, такие как тестеры памяти (например, memtest86+ ), базовая оболочка (как в GNU GRUB) или даже игры (см. Список игр PC Booter ). [13] Некоторые загрузчики также могут загружать другие загрузчики; например, GRUB загружает BOOTMGR вместо прямой загрузки Windows. Обычно выбор по умолчанию предварительно выбирается с задержкой, в течение которой пользователь может нажать клавишу, чтобы изменить выбор; после этой задержки выбор по умолчанию автоматически запускается, поэтому обычная загрузка может происходить без взаимодействия.

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

Встроенные и многоступенчатые загрузчики

Многие встроенные системы должны загружаться немедленно. Например, ожидание минуты для запуска цифрового телевизора или навигационного устройства GPS , как правило, неприемлемо. Поэтому такие устройства имеют программные системы в ПЗУ или флэш-памяти , чтобы устройство могло начать функционировать немедленно; загрузка не требуется или требуется в небольшом количестве, поскольку загрузка может быть предварительно вычислена и сохранена в ПЗУ при изготовлении устройства.

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

Сетевая загрузка

Большинство компьютеров также способны загружаться через компьютерную сеть . В этом сценарии операционная система хранится на диске сервера , и определенные ее части передаются клиенту с помощью простого протокола, такого как Trivial File Transfer Protocol (TFTP). После того, как эти части были переданы, операционная система берет на себя управление процессом загрузки.

Как и в случае с загрузчиком второго этапа, сетевая загрузка начинается с использования общих методов сетевого доступа, предоставляемых загрузочным ПЗУ сетевого интерфейса, которое обычно содержит образ Preboot Execution Environment (PXE). Драйверы не требуются, но функциональность системы ограничена до тех пор, пока ядро ​​операционной системы и драйверы не будут перенесены и запущены. В результате, как только загрузка на основе ПЗУ завершена, вполне возможна сетевая загрузка в операционную систему, которая сама по себе не имеет возможности использовать сетевой интерфейс.

Смотрите также

Примечания

  1. ^ В руководстве PC DOS 5.0 неверно указано, что системные файлы больше не должны быть смежными. Однако для того, чтобы процесс загрузки работал, системные файлы по-прежнему должны занимать первые две записи каталога, а первые три сектора по- IBMBIO.COMпрежнему должны храниться смежно. SYSпродолжает заботиться об этих требованиях.
  2. ^ ab Например, хотя расширенная функциональность MBR и загрузочных секторов DR-DOS по сравнению с их аналогами MS-DOS / PC DOS могла быть достигнута с помощью обычных методов оптимизации кода вплоть до версии 7.05 , для добавления поддержки LBA , FAT32 и LOADER секторам 7.07 пришлось прибегнуть к самомодифицирующемуся коду , программированию на уровне кодов операций , контролируемому использованию побочных эффектов , многоуровневому перекрытию данных/кода и методам алгоритмического сворачивания , чтобы втиснуть все в один физический сектор, поскольку это было требованием для обратной и перекрестной совместимости с другими операционными системами в сценариях мультизагрузки и последовательной загрузки .
  3. ^ Из правила, согласно которому DR-DOS VBR загружают весь файл в память, есть одно исключение : если файл больше 29 КБ, попытка загрузить весь файл в память приведет к тому, что загрузчик перезапишет стек и перемещенную таблицу параметров диска (DPT/FDPB). Поэтому DR-DOS 7.07 VBR загрузит в память только первые 29 КБ файла, полагаясь на другой загрузчик, встроенный в первую часть , для проверки этого условия и самостоятельной загрузки оставшейся части файла в память при необходимости. Это не вызывает проблем с совместимостью, так как размер никогда не превышал этого предела в предыдущих версиях без этого загрузчика. В сочетании со структурой с двойной записью это также позволяет загружать систему с помощью PC DOS VBR, который загрузит в память только первые три сектора файла. IBMBIO.COMIBMBIO.COMIBMBIO.COMIBMBIO.COM

Ссылки

  1. ^ "GNU GRUB - GNU Project - Free Software Foundation (FSF)". www.gnu.org . Получено 27 сентября 2021 г. .
  2. ^ ab "systemd-boot". www.freedesktop.org . Получено 27 сентября 2021 г. .
  3. ^ аб Пол, Маттиас Р. (2 октября 1997 г.) [29 сентября 1997 г.]. "Caldera OpenDOS 7.01/7.02 Update Alpha 3 IBMBIO.COM - README.TXT и BOOT.TXT - Краткое описание того, как загружается OpenDOS". Архивировано из оригинала 4 октября 2003 г. Получено 29 марта 2009 г.[1]
  4. Сакамото, Масахико (13 мая 2010 г.). «Почему BIOS загружает MBR в 7C00h в x86?». glmenv-septzen.net . Проверено 22 августа 2012 г.
  5. ^ Compaq computer corporation; Phoenix technologies ltd; Intel corporation (11 января 1996 г.). "BIOS boot specification 1.01" (PDF) . Получено 21 декабря 2017 г.
  6. ^ Збиковски, Марк ; Аллен, Пол ; Баллмер, Стив ; Борман, Рубен; Борман, Роб; Батлер, Джон; Кэрролл, Чак; Чемберлен, Марк; Челл, Дэвид; Коули, Майк; Кортни, Майк; Драйфус, Майк; Дункан, Рэйчел; Экхардт, Курт; Эванс, Эрик; Фармер, Рик; Гейтс, Билл ; Гири, Майкл; Гриффин, Боб; Хогарт, Дуг; Джонсон, Джеймс У.; Кермани, Камел; Кинг, Адриан; Кох, Рид; Ландовски, Джеймс; Ларсон, Крис; Леннон, Томас; Липки, Дэн; Макдональд, Марк ; Маккинни, Брюс; Мартин, Паскаль; Мазерс, Эстель; Мэтьюз, Боб; Мелин, Дэвид; Мергентайм, Чарльз; Невин, Рэнди; Ньюэлл, Дэн; Ньюэлл, Тани; Норрис, Дэвид; O'Leary, Mike; O'Rear, Bob ; Olsson, Mike; Osterman, Larry; Ostling, Ridge; Pai, Sunil; Paterson, Tim ; Perez, Gary; Peters, Chris; Petzold, Charles ; Pollock, John; Reynolds, Aaron; Rubin, Darryl; Ryan, Ralph; Schulmeisters, Karl; Shah, Rajen; Shaw, Barry; Short, Anthony; Slivka, Ben; Smirl, Jon; Stillmaker, Betty; Stoddard, John; Tillman, Dennis; Whitten, Greg; Yount, Natalie; Zeck, Steve (1988). "Технические консультанты". Энциклопедия MS-DOS: версии с 1.0 по 3.2 . Автор: Дункан, Ray; Bostwick, Steve; Burgoyne, Keith; Byers, Robert A.; Hogan, Thom; Kyle, Jim; Летвин, Гордон ; Петцольд, Чарльз ; Рабинович, Чип; Томлин, Джим; Уилтон, Ричард; Вулвертон, Ван; Вонг, Уильям; Вудкок, Джоанн (полностью переработанное издание). Редмонд, Вашингтон, США: Microsoft Press . ISBN 1-55615-049-0. LCCN  87-21452. OCLC  16581341.(xix+1570 страниц; 26 см) (Примечание. Это издание было опубликовано в 1988 году после обширной переработки отозванного первого издания 1986 года другим коллективом авторов. [2])
  7. ^ abc Chappell, Geoff (январь 1994). "Глава 2: След системы". В Schulman, Andrew; Pedersen, Amorette (ред.). DOS Internals . Серия программ Эндрю Шульмана (1-е издание, 1-е изд.). Addison-Wesley . ISBN 978-0-201-60835-9.(xxvi+738+iv страниц, 3,5-дюймовая дискета [3][4]) Опечатки: [5][6][7]
  8. ^ Рош, Винн Л. (12 февраля 1991 г.). «DR DOS 5.0 — лучшая операционная система?». PC Magazine . Vol. 10, no. 3. pp. 241–246, 257, 264, 266. Архивировано из оригинала 25 июля 2019 г. . Получено 26 июля 2019 г. . […] был улучшен в DR DOS 5.0, поэтому вам не нужно беспокоиться о том, что первый кластер останется свободным на диске, который вы хотите сделать загрузочным. Системные файлы DR DOS могут располагаться в любом месте на диске, поэтому любой диск с достаточным свободным местом может быть настроен для загрузки вашей системы. […]SYS(Примечание. Источник приписывает это утилите, SYSхотя на самом деле это функция расширенного загрузчика в загрузочном секторе. SYSОн просто помещает этот сектор на диск.)
  9. ^ Пол, Маттиас Р. (17 января 2001 г.). «FAT32 в DR-DOS». opendos@delorie . Архивировано из оригинала 6 октября 2017 г. . Получено 6 октября 2017 г. . […] Загрузочный сектор DR-DOS […] ищет файл ( DRBIOS.SYS ), а затем загружает *весь* файл в память, прежде чем передать ему управление. […]IBMBIO.COM
  10. ^ Пол, Маттиас Р. (20 февраля 2002 г.). «Невозможно скопировать». opendos@delorie . Архивировано из оригинала 6 октября 2017 г. . Получено 9 октября 2017 г. . […] Загрузочный сектор DR-DOS загружает весь файл в память, прежде чем выполнить его. Ему совершенно все равно на файл , который загружается . […] Загрузочный сектор DR-DOS […] найдет […] файлы ядра, если они логически хранятся в корневом каталоге. Их физическое расположение на диске и то, фрагментированы они или нет, не имеет значения для загрузочного сектора DR-DOS. Следовательно, вы можете просто скопировать файлы ядра на диск (даже с помощью простого ), и как только загрузочный сектор станет сектором DR-DOS, он найдет и загрузит их. Конечно, трудно уместить все это всего в 512 байт, размер одного сектора, но это значительное улучшение удобства, если вам нужно настроить систему DR-DOS, и это также ключ к работе утилиты DR-DOS multi-OS LOADER . Файлы ядра MS-DOS должны находиться в определенных местах, но файлы DR-DOS могут быть где угодно, поэтому вам не нужно физически менять их местами каждый раз, когда вы загружаете другую ОС. Кроме того, это позволяет обновить систему DR-DOS, просто скопировав файлы ядра поверх старых, нет необходимости в , нет сложных процедур настройки, как требуется для MS-DOS/ PC DOS . Вы даже можете иметь несколько файлов ядра DR-DOS под разными именами, хранящихся на одном диске, и LOADER будет переключаться между ними в соответствии с именами файлов, указанными в файле BOOT.LST . […]IBMBIO.COMIBMDOS.COMIBMBIO.COMCOPYSYS
  11. ^ Пол, Маттиас Р. (14 августа 2017 г.) [7 августа 2017 г.]. "Продолжение саги о Windows 3.1 в расширенном режиме на OmniBook 300". MoHPC - музей калькуляторов HP . Архивировано из оригинала 6 октября 2017 г. Получено 6 октября 2017 г. [ …] DR-DOS не только разбивает диск на разделы, но и может форматировать только что созданные тома и инициализировать их загрузочные секторы за один раз, поэтому нет риска случайно испортить не тот том и нет необходимости в или . После этого вы можете просто скопировать оставшиеся файлы DR-DOS, включая системные файлы. Важно знать, что, в отличие от MS-DOS / PC DOS , DR-DOS имеет "умные" загрузочные секторы, которые фактически "монтируют" файловую систему для поиска и загрузки системных файлов в корневом каталоге, а не ожидают, что они будут размещены в определенном месте. Физически системные файлы могут располагаться где угодно, а также могут быть фрагментированы. […] FDISKFORMAT /SSYS
  12. ^ "Глава 6 - Устранение неполадок при запуске и проблемах с диском". Windows NT server resource kit . Microsoft. Архивировано из оригинала 15 мая 2007 г.
  13. ^ "Tint". coreboot . Получено 20 ноября 2010 .

Внешние ссылки