Как зайти в Boot Menu на стационарном ПК или ноутбуке
Сейчас мы разберемся, как зайти в Boot Menu, обычно, это необходимо для выбора загрузочного устройства: загрузочной флешки или CD/DVD диска, с которых требуется загрузиться на компьютере. Boot Menu BIOS отвечает за выбор загрузочного диска и за выбор приоритета загрузки с дисков компьютера.
Сразу после включения компьютера, в BIOS — «базовой системе ввода/вывода» происходит инициализация, определение и настройка оборудования компьютера, подготавливается загрузка операционной системы. На компьютерах используются современные версии UEFI BIOS и устаревшие версии BIOS (Legasy BIOS).
Для выбора загрузочного устройства, необходимо войти в загрузочное меню BIOS. Это понадобиться в следующих случаях: при установке или переустановке Windows, или установке на ПК другой операционной системы, для загрузки с антивирусного LiveCD (LiveDVD) или LiveUSB диска для лечения компьютера от заражения, для запуска другой операционной системы, которая может работать на компьютере с внешнего диска, например, запустить с флешки один из дистрибутивов Linux — TAILS, в других ситуациях.
Загрузочные диски, обычно, находятся на съемных носителях: загрузочная флешка на USB накопителе, а образ системы или «живой» диск записывается на оптическом CD/DVD диске. Для возможности загрузки с внешнего диска, на компьютере необходимо выбрать этот диск в загрузочном меню БИОС.
Для запуска Boot Menu используется одна «горячая» клавиша на клавиатуре, на которую нужно нажать сразу после появления экрана загрузки, в это время на экране отображается логотип производителя ноутбука или материнской платы. Для успешного входа в меню загрузки следует быстро нажать несколько раз на соответствующую клавишу. Если сразу войти не получилось, повторите попытку при следующем запуске системы.
В статье вы найдете инструкции и таблицы для входа в Boot Menu на стационарном компьютере и на ноутбуках разных моделей.
Выбор загрузочных устройств в BIOS или в Boot Menu: отличия между двумя способами
Сразу после включения компьютера, выбрать загрузочное устройство можно двумя способами:
- непосредственно из BIOS;
- из Boot Menu.
В первом случае потребуется войти в БИОС, а затем в соответствующей вкладке поменять приоритет загрузки, выполняемой с устройств компьютера. По умолчанию, загрузка системы осуществляется с жесткого диска компьютера.
В списке устройств, в зависимости от комплектации ПК, находится оборудование, с которого возможно выполнить загрузку: жесткий диск, привод CD/DVD, подключенные USB устройства и т. д. Пользователь, с помощью клавиш со стрелками на клавиатуре, выбирает нужное устройство, передвигает его на первое место в списке, а затем сохраняет изменения в настройках БИОС.
После применения изменений, компьютер начнет загружаться с самого первого устройства, установленного в БИОС Boot Menu. Если первое устройство не имеет загрузочного диска, загрузка начнется со следующего устройства и т. д. Например, на ПК был установлен приоритет загрузки с CD/DVD диска, а жесткий диск находится в качестве второго загрузочного устройства, если в дисководе отсутствует загрузочный CD/DVD диск, компьютер загрузится с жесткого диска. Соответственно, если в приводе вставлен диск с Windows, на ПК произойдет загрузка с DVD диска.
Выбор приоритета загрузки в БИОС — постоянная настройка, которую можно изменить, если такая потребность снова понадобится.
Загрузка Boot Menu, наоборот, временная настройка. В отдельном окне пользователь заходит в меню загрузки, выбирает загрузочное устройство для запуска на компьютере. Это действие носит однократный характер в текущий момент времени. Данный способ удобен тем, что пользователю не придется вызывать БИОС, для изменения настройки порядка загрузки системы.
Если понадобится снова загрузиться на компьютере с загрузочного диска (USB флешки или CD/DVD-диска), пользователю придется войти в Boot Menu, для выбора загрузочного устройства.
Отключение функции быстрого запуска в Windows 10, Windows 8.1, Windows 8
На многих современных компьютерах, работающих под управлением операционных систем Windows 10, Windows 8.1, Windows 8, во время запуска системы не отображается экран загрузки, или экран отображается в очень короткий промежуток времени. Это сделано для увеличения скорости запуска Windows, потому что на ПК активирована функция быстрого запуска.
Все происходит так быстро, что пользователь просто не успеет нажать на нужную «горячую» клавишу для входа в Бут Меню. В этом случае, потребуется отключить быструю загрузку операционной системы Windows.
- В Панели управления выберите раздел «Электропитание».
- В окне «Электропитание» выберите параметр «Действие кнопок питания».
- В окне «Системные параметры» выберите опцию «Изменение параметров, которые сейчас недоступны».
- В разделе «Параметры завершения работы» снимите флажок напротив пункта «Включить быстрый запуск (рекомендуется)», а после этого нажмите на кнопку «Сохранить изменения».
В некоторых UEFI BIOS имеется функция быстрого запуска, поэтому ее необходимо отключить в настройках БИОС.
Как вызвать Boot Menu на настольном компьютере: таблица
На стационарных ПК вход в меню загрузки зависит от производителя материнской платы и версии BIOS, используемой на оборудовании. В основном, материнские платы выпускают известные тайваньские компании.
Самыми распространенными клавишами для входа в меню загрузки являются клавиши «F12», «F11», «Esc», другие клавиши клавиатуры используются не так часто.
Что такое Boot Menu и как в него зайти с ноутбука или ПК
Что такое Boot Menu | бут меню, зачем оно нужно, как зайти в бут меню. На самом деле при выборе устройств меню загрузки использовать лучше всего.
Всем более или менее опытным пользователям компьютера известно, что при установке ОС, либо использовании инструмента с дискового носителя или флешки необходимо выставлять приоритетность этих устройств в BIOS, простыми словами – что будет загружаться на первом месте при запуске ПК. Для этого можно использовать.
Boot Menu (бут меню) – меню загрузки предназначенное для упрощения выбора устройств, с которых возможно произвести загрузку. Вы включаете компьютер, заходите в boot menu, с использованием специальных клавиш, а дальше выбираете стрелочками устройство загрузки, например, флешка или дисковод. Это упрощает возможность ко многим действиям неопытным пользователям.
Сейчас мы узнаем, как зайти в Boot Menu при помощи обычных сочетаний клавиш на клавиатуре. А также, как это сделать на ноутбуках.
Как зайти в Boot Menu – меню загрузки BIOS
Когда мы входим в BIOS, то нажимаем определенную комбинацию на клавиатуре. В случае Boot Menu тоже самое. Во многих случаях для ноутбуков и системных плат актуальны такие способы: Esc, F11, F12, правда существуют и прочие варианты зайти в бут меню.
Пользоваться данной возможностью имеет смысл, если вам не нужно менять какие-то параметры в BIOS, кроме выставления порядка загрузки.
Итак, при наличии у вас ноутбука с Windows 8, а теперь уже c Windows 10, приведенные выше клавиши не факт, что будут работать. В некоторых моделях при выключении ноутбука устройство, можно считать, переходит в режим гибернации, а не выключается, как обычно, поэтому попытка войти в бут меню выходит неудачной.
Чтобы избавиться от этой проблемы можно использовать следующие методы:
- При отключении компьютера зажать и не отпускать клавишу Shift, это действие должно полностью выключить компьютер;
- Не отключайте устройство, а лучше перезагрузите, а потом нажмите нужную кнопку;
- Зайдите в параметры Электропитания (можно через значок батареи на панели задач, либо через Панель управления, при наличии стационарного компьютера), слева войдите в раздел «Действия кнопок питания». Щелкнем по ссылке «Изменение параметров, которые сейчас недоступны» и уберём снизу галочку с опции «Включить быстрый запуск»;
- Убедитесь, что вы нажимаете правильную клавишу. О переходе в бут меню с конкретного ноутбука и системной платы можете прочитать в интернете, а также из документации.
Как войти в Boot Menu с ноутбука Asus
Наиболее возможными вариантами входа для Asus являются следующие клавиши:
- ESC – для многих марок;
- F8 – для устройств, где имена могут начинаться с букв X и K, если не сработало, тогда используем Esc.
Вход в меню загрузки с ноутбука Lenovo
В данных моделях еще проще, вы нажимаете клавишу F12 и попадаете в бут меню. Также на многих ноутбуках этой марки есть специальная кнопочка со стрелкой, которая позволяет выбрать тип загрузки, например, BIOS, Boot Menu, или режим восстановления.
Как запустить бут меню с ноутбуков Acer
Здесь вход в загрузочное меню представляется возможным при помощи клавиши F12.
Если не работает, значит нужно зайти в BIOS и перевести там опцию F12 Boot Menu во включенное положение – Enabled. Потом сохраняем примененные действия, перезагружаемся и снова пытаемся войти с использованием клавиши F12.
Вход в Boot Menu ноутбука HP
Как раз ноутбук этой марки есть у меня, поэтому я знаю о нём многое. Вход в меню загрузки с этого устройства можно произвести так:
- Esc – довольно частый вариант;
- F9 – при нажатии на клавишу Esc.
Так же все нюансы о BIOS HP Pavilion читайте по указанной ссылке. Там описаны все параметры подсистемы, а также, как её обновить. Перед обновлением необходимо узнать версию биоса. А перед тем, как обновлять биос, необходимо сделать его резервную копию.
Вход в Бут Меню на других моделях системных плат
В вариантах, описанных мною ниже практически тоже самое, что и описано выше, то есть те же клавиши:
- Ноутбуки Dell – клавиша F12.
- Toshiba – клавиша F12.
- Samsung – клавиша Esc.
- Системные платы от Intel, FoxConn, Phoenix-Award – клавиша Esc.
- Материнские платы от Gigabyte – клавиша F12.
- Плата от Asus, AMI – клавиша F8 или F11, как и на ноутбуках.
- MSI, ECS, AsRock, Sony – клавиша F11.
- BioStar – клавиша F9.
- Asus AMI – клавиша ESC.
- Fujitsu – F12.
Вот, большинство моделей я описал. Если вы недовольны, что в списке нет вашего ноутбука или модели системной платы, то прошу, оставляйте комментарии, и я постараюсь вам помочь. Более подробно вы всегда найдете в инструкции к своей системной плате компьютера или ноутбука. Если бумажной версии нету, ищите электронную в интернете.
Так же вход в бут меню может быть отключен в BIOS, а значит в него необходимо зайти и включить, там же можно иногда узнать клавишу входа в это меню. А если по какой-то непонятной причине вы поставили пароль на Биос и не можете войти в него, тогда читайте статью, как сбросить пароль БИОС на компьютере и ноутбуке.
Почему не работает Boot Menu на ноутбуке
Если у вас бут меню отказывается работать, то есть не запускается или не видит подключенные устройства, то этому есть ряд объяснений.
Выяснилось, что на некоторых ноутбуков этот режим не функционирует по той простой причине, что включен UEFI режим, а не BIOS Legacy Mode. В этом случае можно попробовать включить или Legacy биос или UEFI и проверить работу меню загрузки.
Вторая причина – редкий сбой. В этом случае не выходит зайти как в меню загрузки, так и в БИОС. Лечиться обычно просто – выключением и повторным включением компьютера. Второй способ – сброс BIOS с помощью вытаскивания CMOS батарейки.
Возможно, что бут меню на вашем устройстве выключено, а на некоторых моделях ноутбуков есть возможность его включить. Зайдите в БИОС и найдите там пункт F12 Boot Menu, который должен быть переведен в положение Enabled.
Boot в компьютере что это
Boot — И совсем это не ботинок, а всего-навсего процесс загрузки компьютера. Этим термином обозначается участок жесткого диска, содержащий необходимую для загрузки (системную) информацию
Смотреть что такое BOOT в других словарях:
[buːt]ботинокбутсыпыточные колодкиудар, пинокбашмакбагажник; багажное отделениеносильщикоберткановичок, новобранец, рекрутнегрнадевать ботинкиодевать к. смотреть
boot: translation•Roman•I.•/Roman• noun 1 strong shoeADJECTIVE ▪ heavy ▪ light, lightweight ▪ high, knee-length, thigh-high, thigh-length ▪ ankle. смотреть
I 1. [bu:t] n 1. 1) ботинок, башмакhigh /riding/ boot — сапог2) pl спорт. бутсыnailed boots — альпинистские окованные ботинки3) разг. пинок ногой2. ист. смотреть
Boot: übersetzungSchiff* * *Boot [bo:t], das; -[e]s, -e:kleines, meist offenes Schiff:die Boote liegen am Ufer; mit dem Boot hinausfahren. Syn.: ↑ Kahn. смотреть
I 1.
— сапог 2) pl спорт. бутсы nailed
s — альпинистские окованные ботинки 3) разг. пинок ногой 2. смотреть
Ⅰboot [bu:t] 1. n 1) боти́нок;high (или riding) boot сапо́г 2) pl спорт. бу́тсы 3) отделе́ние для багажа́ (в автомобиле, в карете) 4) разг. пино́к но. смотреть
I 1. сущ. 1) а) мн. ботинки, сапоги walking boots брит., hiking boots амер. — туристические ботинки — a pair of boots — boot-hook — bower boot — high boot — leather boot — put on a boot — riding boot — take off a boot б) мн.; спорт. бутсы 2) переносное значение — нечто похожее на ботинки, то, что делается ботинками а) пыточные колодки б) удар, пинок в) защитный чехол вроде чулка для ног лошади г) у некоторых птиц — оперенные лапы д) тех. башмак (внешний стояночный страховочный тормоз) 3) ист. подставка с сиденьем для слуг на карете 4) связано с багажом а) багажник; багажное отделение б) мн. носильщик 5) обертка (початка кукурузы) 6) амер.; воен. разг. новичок, новобранец, рекрут — boot camp 7) сл. негр • — be in smb.'s boots — boot and saddle! — boots and all — die in one's boots — get the order of the boot — get the boot — have one's heart in one's boots — like old boots — move one's boots — seven-league boots — start one's boots — the boot is on the other foot — the boot is on the other leg 2. гл. 1) а) надевать ботинки б) одевать кому-л. ботинки, сапоги 2) о действиях, производимых обувью а) бить ногами б) пытать с помощью колодок в) воен. сл. производить наказание плетьми, используя вместо плети сапоги г) вдарить (очень сильно по футбольному мячу) д) перен. бить (неважно, чем) е) разг. выгонять с работы ("пинком"); изгонять (агрессора); выставлять за дверь, спускать с лестницы и т. п. • — boot out II 1. сущ. от этого корня образованы better, best сравнительная и превосходная степени от good 1) выгода, польза — to boot 2) преимущество Alice was, to the boot of all that, the best dancer. — Ну и последнее преимущество Алисы — она лучшая танцовщица. 3) ист. компенсация, сатисфакция; деньги, выплачиваемые за нанесенный ущерб, обычно убийство If the great toe be struck off, let twenty shillings be paid him as boot. — Если будет у кого отрублен большой палец, ему причитаются двадцать шиллингов в возмещение. Syn: advantage, benefit •• to boot разг. — в придачу 4) награбленное; добро, добытое в результате набегов или войн, трофеи — make boot 2. гл. 1) помогать, способствовать (не о людях, обычно с отрицанием или в негативном смысле); быть полезным или нужным It boots not to look backwards. — К чему смотреть назад? Boots it to you now, that the whole world loves you? — Так что, помогает тебе теперь, что тебя все любят? 2) иметь значение, играть роль What boots it which prevails? — Какая разница, кто одержит верх? 3) уст. редк. одаривать; делать богатым And I will boot you with this gift. — Я подарю тебе вот это. III 1. сущ.; информ. начальная загрузка (от глагола boot III 2. ) 2. гл.; информ. 1) выполнять начальную загрузку, загружать (сокращение от bootstrap, "завязывать шнурки", т. е., готовиться; часто в варианте to boot up) If you boot up your system without the keyboard being plugged in, you will see an error message. — Если при начальной загрузке не подключена клавиатура, то выдается сообщение об ошибке. 2) загружаться (о компьютере, программе). смотреть
• ___ hill Cemetery Ariz. • Axe • Bad thing to get on the job • Bounce • Brit's trunk • British car trunk • Britspeak for trunk compartment • Brooks &. смотреть
О работе ПК ч.3: От включения до полной загрузки Windows 10
Мы продолжаем разбираться как работает ПК на примере клавиатуры и Windows 10. В этой статье поговорим о том как происходит единение софта и железа.
Старт системы
Полностью компьютер выключен когда он отключен от питания и конденсаторы на материнской плате разрядились. До эры смартфонов мобильные телефоны часто глючили и если перезагрузка не лечила проблему, то приходилось доставать батарею и ждать 10 секунд, потому что сбрасывалось программное состояние ОС, в то время как чипы на материнской плате и контроллеры устройств оставались активными сохраняя состояние, драйвера ОС к ним просто реконнектились. 10 секунд — время на разрядку конденсаторов, состояние чипов сбрасывается только при полном отключении.
Если же ПК подключен к розетке или батарее, то он находится в режиме Stand-By, это значит что по шине питания подаётся маленькое напряжения (5В) от которого запитываются некоторые чипы на материнке. Как минимум это системный контроллер, по сути это мини-компьютер запускающий большой компьютер. Получив уведомление о нажатии кнопки Power он просит блок питания/батарею подать больше напряжения и после инициализирует весь чип-сет, в том числе и процессор. Инициализация включает в себя перекачку кода и данных прошивки материнки (BIOS/UEFI) в оперативную память и настройку CPU на её исполнение.
Думать что кнопка Power это рубильник который подаёт электричество на CPU и тот начинает исполнять с заранее известного адреса прошивку BIOS неправильно. Возможно старые компьютеры так и работали. Кнопка включения находится на своей плате, вместе со светодиодами состояний и к материнке она подключается через специальный разъём. На картинке ниже видны контакты для кнопки Power, Reset, а также светодиодов с состоянием Power и чтения жёсткого диска. Нажатие кнопки включения переводится в сигнал на контакты материнки, откуда он достигает системный контроллер.
Контакты на материнке для подключения кнопки включения, светодиодов состояния Power, жёсткого диска и динамиков.
Плата ноутбука с кнопкой включения и светодиодом состояния
- Включать и выключать компьютер, т.е. выполнять программы имея доступ ко всей вычислительной мощности, периферии машины и сети.
- Обходить ограничения файервола.
- Видеть все данные в CPU и RAM, что даёт доступ к запароленным файлам.
- Красть ключи шифрования и получать доступ к паролям
- Логировать нажатия клавиш и движения мыши
- Видеть что отображается на экране
- Вредоносный код в Intel ME не может быть детектирован антивирусом, потому как на такой низкий уровень он добраться не может
- И конечно же скрытно отправлять данные по сети используя свой стек для работы с сетью.
Прикладная иллюстрация как блок питания получает сигнал от материнки на включение. Если вы задумаете установить мощную видеокарту (Nvidia 2070 S) на офисный ПК, то просто вставить её недостаточно, потому как она требует питание в 600W, в то время как такой ПК имеет блок на
500W. Первое что придёт в голову – купить новый блок питания на 650W с отдельной линией для видеокарты. Но и здесь будут разочарования, потому как разъёмы материнки будут не совпадать с разъёмами БП, а если его отдельно воткнуть в розетку и подключить к видюхе тоже ничего не будет – в блоке питания вентилятор не крутится и изображения нет. Так происходит, потому что БП должен получить сигнал от материнки на полное включение. Очевидное решение – новая материнка с совместимыми разъёмами, однако она стоит
$300. Есть решение проще, хоть оно и вызывает опасения пожаробезопасности. Берём скрепку, разгибаем и вставляем в зелёный (PS_ON) и один из чёрных пинов (COM). Теперь всё должно работать.
Поиск загрузчика ОС
Есть два вида прошивки материнки – BIOS (Basic Input Output System) на старых машинах и UEFI (Unified Extensible Firmware Interface) на новых. Windows 10 поддерживает обе и абстрагирует различия между ними. UEFI правильней называть ОС чем прошивкой, потому как он предлагает больше возможностей, к примеру богатый графический интерфейс вместо текстового, наличие мышки, больший объём доступной памяти, улучшенная модель безопасности и валидации файлов ОС, взаимодействие с железом через API, вместо прерываний как в BIOS.
Пример экрана монитора BIOS.
Программа BIOS хранится на отдельном чипе, подключенном к Южному мосту. Этот чип можно достать и перепрошить новой программой, по факту это просто носитель памяти, а не самостоятельный микрокомпьютер.
Настройки BIOS (системное время, например), хранятся на другом чипе который как правило находится возле круглой батарейки, которая на самом деле является литиевым аккумулятором, подзаряжающимся во время работы ПК. Называется он CMOS, что означает Complementary Metal Oxide Semiconductor, а по-русски просто — КМОП, что есть комплементарная структура металл-оксид-полупроводник.
- Проверку целостности программ BIOS в ПЗУ, используя контрольную сумму.
- Обнаружение и инициализацию основных контроллеров, системных шин и подключённых устройств (графического адаптера, контроллеров дисководов и т. п.), а также выполнение программ, входящих в BIOS устройств и обеспечивающих их самоинициализацию.
- Определение размера оперативной памяти и тестирования первого сегмента (64 килобайт).
- Проверка всех регистров процессора;
- Проверка контрольной суммы ПЗУ;
- Проверка системного таймера и порта звуковой сигнализации (для IBM PC — ИМС i8253 или аналог);
- Тест контроллера прямого доступа к памяти;
- Тест регенератора оперативной памяти;
- Тест нижней области ОЗУ для проецирования резидентных программ в BIOS;
- Загрузка резидентных программ;
- Тест стандартного графического адаптера (VGA или PCI-E);
- Тест оперативной памяти;
- Тест основных устройств ввода (НЕ манипуляторов);
- Тест CMOS
- Тест основных портов LPT/COM;
- Тест накопителей на гибких магнитных дисках (НГМД);
- Тест накопителей на жёстких магнитных дисках (НЖМД);
- Самодиагностика функциональных подсистем BIOS;
- Передача управления загрузчику.
Если всё прошло успешно, BIOS начинает процесс поиска загрузчика ОС. Для этого он начинает просматривать все подключенные к материнской плате жёсткие диски. Данные на физических дисках адресуются в единицах называемых сектор, обычно он 512 байт, однако современный стандарт – 4096 байт. Установщик Windows в самый первый сектор на диске записывает специальный программный код и данные о разделах. Этот сектор называется Master Boot Record. Диск разбивается на разделы (partitions), отформатированный своей файловой системой. Максимум 4 раздела, каждый из который может быть расширенным (extended partition), такой можно рекурсивно делить на 4 раздела и теоретически их число не ограничено. Как только BIOS находит Master Boot Record он считывает оттуда код и передаёт ему управление. Этот код поочередно просматривает данные о разделах и находит тот который помечен как активный, в нём находится код загрузчика Windows (Это не раздел с C:\Windows\System32!), этот раздел называется system partition. Как правило он занимает 100Мб и скрыт от пользователя. В первом секторе этого раздела хранится загрузочный код, которому передаётся управление. Это volume boot sector, код в нём ищет файл Bootmgr, с которого и начинается процесс загрузки Windows. Файл Bootmgr создан через соединение в один файлов Startup.com и Bootmgr.exe.
- Выбирает соотвествующую версию ядра Windows. Можете думать о нём как о Windows10.exe, хотя на самом деле он называется NtOsKrnl.exe. Какие есть версии? Согласно википедии:
- ntoskrnl.exe — однопроцессорное ядро Windows. без поддержки режима PAE
- ntkrnlmp.exe (англ. NT Kernel, Multi-Processor version) — многопроцессорное ядро Windows. без поддержки режима PAE
- ntkrnlpa.exe — однопроцессорное ядро Windows с поддержкой режима PAE.
- ntkrpamp.exe — многопроцессорное ядро Windows с поддержкой режима PAE.
- Загружает HAL.dll (Hardware Abstraction Layer), который абстрагирует особенности материнки и CPU.
- Загружает файл шрифтов vgaoem.fon
- Загружает файлы в которых содержится инфомрация о представлениях даты времени, форматов чисел и пр. Эта функциональность называется National Language System.
- Загружает в память реестр SYSTEM, в нём содержится информация о драйверах которые надо загрузить. Информация о всех драйверах находится в HKLM\SYSTEM\CurrentControlSet\Services\. Драйвера которые надо загрузить имеют ключ start = SERVICE_BOOT_START (0). Об устройстве реестра мы поговорим в другой статье.
- Загружает драйвер файловой системы для раздела на котором располагаются файлы драйверов.
- Загружает драйвера в память, но пока не инициализирует их из-за круговых зависимостей.
- Подготавливает регистры CPU для выполнения ядра Windows выбранного на первом шаге – NtOsKrnl.exe.
Запуск на UEFI
Пример экрана загрузки UEFI
BIOS существует больше 30 лет и в попытках исправить его недостатки компания Intel в 1998 году создала стандарт Intel Boot Initiative, позже переименованный в EFI и в 2005 году пожертвованный организации EFI Forum. Недостатки BIOS:
• Работает только в 16-битном режиме
• Может адресовать только 1Mb оперативной памяти
• Часто имеет проблемы совместимости
• MBR ограничен только четырьмя главными разделами диска
• Диск с ОС не может быть больше чем 2.2Tb.
• Имеет очень ограниченные возможности для валидации загрузчика ОС.
На смену BIOS пришёл UEFI, по сути это миниатюрная ОС которая может работать и в 32-bit и в 64-bit. Для совместимости есть опция Compatibility Support Module, которая включается в настройках и эмулирует работу BIOS.
- Инициализация и запуск Firmware, запуск чип-сета.
- POST тест, аналогично BIOS
- Загрузка EFI-драйверов и поиск диска подпадающего под требования EFI для загрузочного диска
- Поиск папки с именем EFI. Спецификация UEFI требует чтобы был раздел для EFI System Partition, отформатированный под файловую систему FAT, размером 100Мб – 1Гб или не более 1% от размера диска. Каждая установленная Windows имеет свою директорию на этом разделе – EFI\Microsoft.
- Читает из настроек UEFI сохранённых в NVRAM (энергонезависимая память) путь к файлу загрузчика.
- Находит и запускает EFI/Microsoft/Boot/BootMgrFw.efi.
- BootMgrFw.efi находит раздел реестра BCD, который хранится в отдельном файле с именем BCD. Из него он находит WinLoad.efi, который расположен в C:\Windows\System32\winload.efi.
Инициализация ядра
- Пути к System (загрузчик Windows) и Boot (C:\Windows\System32) директориям.
- Указатель на таблицы виртуальной памяти которые создал WinLoad
- Дерево с описанием подключенного hardware, оно используется для создания HKLM\HARDWARE ветки реестра.
- Копия загруженного реестра HKLM\System
- Указатель на список загруженных (но не инициализированных) драйверов участвующих в старте Windows.
- Прочая информация необходимая для загрузки.
- Первая фаза инициализации ядра:
- Слой Executive инициализирует свои объекты состояний – глобальные объекты, списки, блокировки. Производится проверка Windows SKU (Stock Keeping Unit), примеры Windows 10 SKU — Home, Pro, Mobile, Enterprise, Education.
- Если включен Driver Verifier, то он инициализируется.
- Менеджер памяти создаёт структуры данных, необходимые для работы внутренних API для работы с памятью (memory services), резервирует память для внутреннего пользования ядром.
- Если подключен отладчик ядра (kernel debugger) ему отправляется уведомление загрузить символы для драйверов загружаемых во время старта системы.
- Инициализируется информация о версии билда Windows.
- Старт Object Manager – позволяет регистрировать именованные объекты к которым могут получать доступ по имени другие компоненты. Яркий пример – мьютекс по которому приложение позволяет запустить единственный экземпляр. Здесь же создаётся храниться handle table, по которой устанавливается соответствие к примеру между HWND и объектом описывающим окно.
- Старт Security Reference Monitor подготавливает всё необходимое для создания первого аккаунта.
- Process Manager подготавливает все списки и глобальные объекты для создания процессов и потоков. Создаются процесс Idle и System (в нём исполняется “Windows10.exe” он же NtOsKrnl.exe), они пока не исполняются, потому как прерывания выключены.
- Инициализация User-Mode Debugging Framework.
- Первая фаза инициализации Plug and Play Manager. PnP – это стандарт который реализовывается на уровне производителей периферии, материнских плат и ОС. Он позволяет получать расширенную информацию о подключенных устройствах и подключать их без перезагрузки ПК.
- Вторая фаза инициализации ядра. Она содержит 51 шаг, поэтому я пропущу многие из них:
- По завершению первой фазы главный поток процесса System (NtOsKrnl.exe) уже начал исполнение. В нём производится вторая фаза инициализации. Поток получает самый высокий приоритет – 31.
- HAL настраивает таблицу прерываний и включает прерывания.
- Показывается Windows Startup Screen, которая по умолчанию представляет из себя чёрный экран с progress bar.
- Executive слой инициализирует инфраструктуру для таких объектов синхронизации как Semaphore, Mutex, Event, Timer.
- Объекты для User-Mode Debugger проинициализированы.
- Создана symbolic link \SystemRoot.
- NtDll.dll отображена в память. Она отображается во все процессы и содержит Windows APIs.
- Инициализирован драйвер файловой системы.
- Подсистема межпроцессного общения между компонентами Windows ALPC проинициализирована. Можете думать о ней как о named pipes или Windows Communication Foundation для межпроцессного общения.
- Начинается инициализация I/O Manager, который создаёт необходимые структуры данных для инициализации и хранения драйверов подключенной к компьютеру периферии. Этот процесс очень сложный.
Здесь же инициализируются компоненты Windows Management Instrumentation и Event Tracing for Windows (на него полагается Windows Performance Analyzer). После этого шага все драйвера проинициализированы. - Запускается процесс SMSS.exe (Session Manager Sub System). Он отвечает за создание режима пользователя, в котором будет создана визуальная часть Windows.
Запуск подсистем – SMSS, CSRSS, WinInit
SMSS.exe отличается от пользовательских процессов, это нативный процесс и это даёт ему дополнительные полномочия. SMSS.exe работает с ядром в обход Windows API, он использует то что называется Native API. Windows API – обёртка вокруг Native API. SMSS.exe первым делом запускает подсистему Windows (CSRSS.exe – Client Server Runtime Sub System) и заканчивает инициализацию реестра.
Процесс и потоки SMSS.exe помечены как критические, это значит что если они неожиданно завершаться, к примеру из-за ошибки, это приведёт к падению системы. Для общения с подсистемами, к примеру вызову API создающему новую сессию, SMSS создаёт ALPC-порт с именем SmApiPort. Загружаются из реестра переменные среды окружения, запускаются программы такие как Check Disk (autochk.exe, эти программы записаны в реестре HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute). SMSS.exe запускается для каждой пользовательской сессии. Глобальные переменные (очередь сообщений например) у каждой сессии своя за счёт механизма виртуальной памяти. В Windows есть контексты потока, процесса и сессии. Каждый SMSS.exe запускает свой экземпляр подсистемы, на данный момент это только CSRSS.exe (Windows), в прошлом поддерживались операционные системы OS/2 (os2ss.exe) и POSIX (psxss.exe), но эта идея была неудачной. Самый первый SMSS.exe засыпает в ожидании процесса WinInit.exe. Остальные экземпляры вместо этого создают процесс WinLogon который показывает UI для входа.
- Services.exe – Services Control Manager (SCM) запускает сервисы и драйвера помеченные как AutoStart. Сервисы запускаются в процессах svchost.exe. Есть утилита tlist.exe, которая запущенная с параметром tlist.exe -s напечатает в консоли имена сервисов в каждом из svchost.exe.
- LSASS.exe – Local System Authority.
- LSM.exe – Local Session Manager.
- Запускает скрипты указанные в реестрах:
- HKCU\Software\Policies\Microsoft\Windows\System\Scripts
- HKLM\SOFTWARE\Policies\Microsoft\Windows\System\Scripts
- Если групповая политика безопасности определяет User Profile Quota, запускает %SystemRoot%\System32\Proquota.exe
- Запускает оболочку Windows, по умолчанию это Explorer.exe. Этот параметр конфигурируется через реестр:
- HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell
Дерево процессов выглядит следующим образом, на нём можно увидеть кто и кого создал (показаны не все процессы, может немного отличаться от последний версий Windows).
Где здесь клавиатура?
Во время запуска ядро Windows считывает из реестра информацию о контроллере системной шины, как правило это шина PCI (реже MSI), к ней подключены контроллеры портов ввода-вывода, в том числе и USB, PS/2. Информация о нём записывается во время установки Windows. Система загружает для него драйвер и рекурсивно обходит все порты так же загружая для каждого из них свой драйвер. Драйвера могут комбинироваться в узлы (driver node), к примеру драйвер клавиатуры, будет соединён с драйвером порта PS2. А вот порт USB сложнее — сначала драйвер порта, потом драйвер для работы с протоколом HID и только потом клавиатура.
Каждый порт контроллируется своим чипом, который мониторит подключение, принимает/отправляет сигналы между CPU и устройством. Если чип-сет Южный мост не встроен в CPU, как это часто делают в ноутбуках, а существует отдельным чипом на материнке, то правильней говорить: сигнал между Южным мостом и контроллером порта. Чип контроллирующий порт имеет выделенную линию с контроллером прерываний (PIC или APIC), по которой он может попросить обратить на себя внимание CPU, к примеру считать данные от клавиатуры (порт PS/2, с USB другая история). Поскольку ОС загрузила для порта драйвер, она может отдавать ему команды, читать и отправлять данные. В нашем примере был загружен драйвер из C:\Windows\System32\i8042prt.sys. Давайте вспомним предыдущую статью. В старых компьютерах с PIC на чипе Intel 8259 было 15 линий прерываний, где клавиатура была подключена к ножке IRQ1, таймер IRQ0, а мышка к IRQ12, который на самом деле был пятой ножкой второго чипа 8259, который мультиплексировал свои прерывания через ножку IRQ2 первого контроллера. В современных PIC могут быть 255 контактов для сигналов прерываний. Во время загрузки ОС программирует APIC/PIC возвращать определённое число когда скажем пришло прерывание от порта клавиатуры или USB и по этому номеру CPU находит в таблице векторов прерываний функцию которую надо выполнить. Номер прерываний определяют HAL и Plug’n’Play Manager. Контроллер прерываний ищет сигнал на своих ножках в определённом порядке, к примеру в бесконечном цикле проверяет напряжение на ножках от 1 до MAX_PIN. Этот порядок определяет приоритет, к примеру клавиатура будет замечена раньше мышки, а таймер раньше клавиатуры. Чтобы не зависеть от особенностей работы контроллеров прерываний Windows абстрагирует концепцию IRQ (Interrupt Request) в IRQL (Interrupt Request Level). Будь у контроллера прерываний хоть 15 хоть 255 линий они все будут отображены на 32 IRQL для x86 и 15 IRQL для x64 и IA64.
![]() |
![]() |
- High – когда происходит краш системы, обычно это вызов функции KeBugCheckEx.
- Power Fail – не используется. Изначально был придуман для Windows NT.
- Interprocessor Interrupt – нужен отправить запрос другому CPU на мультипроцессорной системе выполнить действие, например обновить TLB cache, system shutdown, system crash (BSOD).
- Clock – нужен чтобы обновлять системные часы, а так же вести статистику сколько времени потоки проводят в режиме пользователя и ядра.
- Profile – используется для real-time clock (local APIC-timer) когда механизм kernel-profiling включен.
- Device 1 … Device N – прерывания от устройств I/O. Во время прерывания данные от клавиатуры, мыши и других устройств считываются в отдельные буфера и сохраняются в объектах типа DPC (Deferred Procedure Call), чтобы обработать их позже и дать возможность устройствам переслать данные. После приоритет снижается до Dispatch DPC
- Dispatch DPC — как только данные от устройств получены можно начинать их обрабатывать.
- APC — Asynchronous Procedure Call. Через этот механизм вы можете исполнить код когда поток будет спать вызвав WaitForSingleObject, Sleep и другие.
- Passive/Low — здесь исполняются все приложения в User Mode.
Механизм IRQL реализовывается на уровне софта в Hardware Abstraction Layer (HAL.dll), а не железа. В Windows системах есть драйвер шины (bus driver), который определяет наличие устройств подключенных к шинам – PCI, USB и др. и номера прерываний которые могут быть назначены каждому устройству. Драйвер шины сообщает эту информацию Plug and play manager, который уже решает какие номера прерываний назначить каждому устройству. Далее арбитр прерываний внутри PnP Mgr (PnP interrupt arbiter) устанавливает связи между IRQ и IRQL.
Когда приходит прерывание от клавиатуры, любой исполняемый в данный момент поток (это может быть ваша программа) назначается на его обработку. Interrupt dispatcher повышает приоритет IRQL CPU до одного из уровней Device1-DeviceN. После этого менеджер виртуальной памяти не сможет найти страницу если она не загружена в RAM (не сможет обработать Page Fault), планировщик потоков не сможет прервать выполнение, потому что они все работают с меньшим уровнем IRQL. Главная задача драйвера клавиатуры в этот момент считать полученные данные и сохранить их для дальнейшей обработки. Данные записываются в объект типа _DPC (Deferred Procedure Call), который сохраняется в список DPC потока (что-то вроде std::list<DPC>, в ядре ОС вместо массивов используются связанные списки). Как только прерывания от всех внешних устройств обработаны, IRQL потока понижается до уровня DPC в котором и производится обработка отложенных процедур (DPC). В коде обработчика DPC для клавиатуры вызывается функция из драйвера клавиатуры Kbdclass.sys:
Так вот, драйвер клавиатуры (kbdclass.sys) получает данные от порта (USB, PS2) через прерывание и записывает их через WriteFile, компонент внутри ядра Windows просыпается, считывает их используя API ReadFile и добавляет в очередь сообщений с клавиатуры. API для работы с файлом могут использоваться для чтения данных с драйверов. С этого момента начинается обработка данных стеком ввода Windows, об этом в следующей статье.
Если у вас есть ПК с PS2 портом и вы умеете пользоваться WinDbg в режиме ядра, то можете легко найти обработчик прерываний клавиатуры напечатав команду !idt, которая выведет на экран всю таблицу векторов прерываний. Прерывание вклинивается в ход выполнения программы, слово вектор здесь подразумевает направление, направление исполнения программы. WinDbg был сделан специально для отладки Windows, самая последняя версия называется WinDbgX. Он имеет текстовый интерфейс, который отпугивает людей привыкших к Visual Studio, однако предоставляет гораздо больше возможностей, в частности исполнение скриптов. Прерывание фиолетового порта PS2 выделено красным. Функция которая его обрабатывает называется I8042KeyboardInterruptService, которая находится в файле i8042prt.sys.
Сейчас возникает вопрос, откуда у обработчика прерываний аргумент? Кто его передаёт? Ведь CPU ничего не знает о нём. Если поставите в неё breakpoint, то удивитесь ещё больше увидев несколько функций выше по стеку:
0: kd> kC
# Call Site
00 i8042prt!I8042KeyboardInterruptService
01 nt!KiCallInterruptServiceRoutine
02 nt!KiInterruptSubDispatch
03 nt!KiInterruptDispatch
04 nt!KiIdleLoop
- Указатель на объект представляющий драйвер в памяти.
- Указатель на функцию i8042prt!I8042KeyboardInterruptService, которая и вызывает код считывающий данные из порта PS2 через ассемблерную команду IN AL, 0x60 – сохранить значение из порта номер 0x60 в регистре AL.
- Функция dispatcher – ей передаётся указатель функцию из пункта №2 и она вызывает её.
- Состояние регистров CPU. Перед вызовом прерывания состояние CPU будет сохранено сюда, и отсюда же будет восстановлено.
- Приоритет прерывания. Не тот который определяет контроллер прерываний, а тот который Windows считает нужным. Это IRQL (Interrupt Request Level) – абстракция над IRQ.
Пару слов о USB
Ознакомление с работой порта USB потребовало бы отдельной статьи описывающей его работу и плюс описание обработки данных HID на Windows. Это очень сильно усложнило бы материал, к тому же уже есть хорошие статьи по теме, поэтому PS2 идеальный пример из-за своей простоты.
USB создавался как универсальный порт для всех устройств, будь то клавиатура, фотоаппарат, сканнер, игровой руль с педалями, принтер и пр. Вдобавок он поддерживает вложенность портов – USB материнки => монитор с USB => клавиатура с USB к которой подключена мышка, флешка и USB-hub к которому подключен жёсткий диск. Взглянув на контакты USB 2.0 вы увидите что они не заточены под передачу каких-то определённых данных, как у PS2. Их всего четыре – витая пара для передачи битов данных, плюс и минус питания.
Провода кабеля USB 2.0
USB 3.0 быстрее за счёт дополнительных пяти контактов. Как видите там нету линии CLOCK для синхронизации, поэтому логика передачи данных сложнее. Слева USB 2.0 и справа USB 3.0 для сравнения.
![]() |
![]() |
Все данные передаются через протокол HID (Human Interface Device), который описывает форматы, порядок взаимодействия и передачи данных и всё остальное. Стандарт USB 2.0 занимает 650 страниц, документ HID Class Specification, описывающий работу устройств (мыши, клавиатуры и пр) – 97 страниц, их рекомендуется изучить если вы работаете с USB.
Первым делом подключенное устройство должно рассказать о себе, для этого оно отправляет несколько структур данных, в которых указывается ID устройства и ID производителя по которым Plug’n’Play manager может найти в реестре информацию, загрузить и соединить драйвера. USB устройства пассивны, т.е. хост должен сам с определённым интервалом проверять наличие данных. Частота опроса и размер пакета данных задаются в одном из дескрипторов устройства USB. Максимальный размер пакета – 64 байта, что для информации о нажатых клавишах более чем достаточно.
В Windows есть встроенная поддержка HID, она не такая простая как связь драйвера порта PS2 с драйвером клавиатуры, потому что драйвер HID должен уметь обрабатывать все поддерживаемые протоколом сценарии. Вне зависимости от провайдера данных — порты PS2, USB или Remote Desktop или виртуальная машина – на самом верху driver node будет находится Kbdclass, от которого ядро ОС и будет получать информацию. Уведомление о подсоединении клавиатуры будет обрабатываться через Plug’n’Play Manager, так что для ядра Windows не имеет значение какой порт или источник данных от устройства используется.