Введение: Встреча с Вызовом
Привет, читатели моего блога! Сегодня я хочу поделиться историей о том, как я столкнулся с необходимостью запустить Windows 7 через BIOS. Это было новое и немного сложное испытание для меня, ведь я раньше никогда не делал ничего подобного.
Шаг 1: Понимание BIOS
Что такое BIOS?
Первое, что мне нужно было сделать, это разобраться, что такое BIOS. BIOS (Basic Input/Output System) – это базовая система ввода-вывода, которая управляет запуском компьютера и обеспечивает взаимодействие операционной системы с аппаратным обеспечением.
Зачем Запускать Windows через BIOS?
В моем случае, необходимость в таком действии возникла из-за проблем с загрузкой системы. Я подозревал, что проблема была связана с настройками загрузочного устройства в BIOS.
Шаг 2: Вход в BIOS
Перезагрузка Компьютера
Я начал с перезагрузки компьютера. В момент включения необходимо было нажать определенную клавишу, чтобы войти в BIOS. Обычно это клавиша Delete, F2, F10 или Esc – зависит от производителя материнской платы.
Ориентация в BIOS
Попав в BIOS, я оказался перед текстовым интерфейсом с рядом вкладок и настроек. Сначала это казалось сложным, но я старался не спешить и внимательно изучал доступные опции.
Шаг 3: Настройка Порядка Загрузки
Нахождение Раздела Boot
Мне нужно было найти раздел (Boot Menu), где можно настроить порядок загрузки устройств. Целью было установить загрузку с диска или раздела, где установлена Windows 7.
Изменение Порядка Загрузки
После нахождения нужного раздела, я установил жесткий диск или USB-накопитель (в зависимости от того, откуда мне нужно было загрузиться) в качестве первого устройства загрузки.
Шаг 4: Сохранение Изменений и Выход из BIOS
Сохранение Настроек
После изменения настроек загрузки я сохранил изменения. Для этого обычно используется клавиша F10, после чего система спрашивает подтверждение сохранения.
Выход из BIOS
После сохранения я вышел из BIOS, выбрав соответствующий пункт меню или просто перезагрузив компьютер.
Шаг 5: Загрузка Windows 7
Проверка Результата
Компьютер автоматически перезагрузился, и я наблюдал, как система начала загружаться с выбранного мной устройства. Если все было сделано правильно, загрузка Windows 7 должна была начаться без проблем.
Диагностика Возможных Проблем
В случае, если что-то пошло не так, мне пришлось бы вернуться в BIOS и повторить попытку или искать другие причины неудачной загрузки.
Заключение: Успешный Опыт Работы с BIOS
Итак, мне удалось запустить Windows 7 через BIOS. Этот опыт не только помог мне решить проблему с загрузкой системы, но и дал ценные знания о работе с базовыми настройками компьютера.
Мои Рекомендации:
• Будьте Внимательны: Одна неверная настройка в BIOS может привести к проблемам с загрузкой системы.
• Не Бойтесь Экспериментировать: Научиться работать с BIOS – полезный навык для любого пользователя ПК.
• Используйте Доступную Информацию: В интернете много руководств и видео по работе с BIOS различных производителей.
Надеюсь, моя история будет полезной для тех, кто столкнулся с аналогичной задачей. Удачи вам в настройке и запуске вашей системы!
Multi-booting, and particularly dual-booting Windows and Linux, is becoming more and more mainstream with each passing year. On a PC with multiple operating systems (OS), the Windows Boot Manager is what lets the user pick which OS to boot to.
Of course, in single-OS systems, it’s usually better to disable Windows Boot Manager. Unless you’ve made multiple boot entries from a single OS, all it does is make the boot process longer for no reason.
In any case, we’ve listed all the necessary steps to enable or disable Windows Boot Manager via both GUI and Command-Line in the guide below.
Enable or Disable Boot Manager via GUI
As usual, the GUI method is very convenient but doesn’t allow for much flexibility. It’s very easy to enable or disable the Windows Boot Manager, but there’s not much room for further modification. Regardless, here are the necessary steps:
- Press Windows + R, type
systempropertiesadvanced
, and press Enter. - In the Startup and Recovery section, click on Settings.
- To enable BOOTMGR, turn on the checkmark for the Time to display list of operating systems options.
- Set the time in seconds. The default value is 30, but you can replace it with however many seconds (3 – 999) you want the Boot Manager screen to display before the timeout expires and loads the default Boot Entry.
- Press OK to apply the changes.
- To disable BOOTMGR, uncheck the Time to display the list of operating systems box.
- Press OK to apply the changes.
Enable or Disable Boot Manager via Command Line
The CLI method is somewhat technical but allows for lots more ways to modify the Windows Boot Manager.
You’ll use the bcdedit
command to enable/disable Bootmgr. Keep in mind that you may need to turn off Secure Boot or BitLocker for bcdedit
to function properly. With that said, here are the necessary steps:
- Press Windows + R to launch Run.
- Type cmd and press CTRL + Shift + Enter to launch Elevated Command Prompt.
- To enable BOOTMGR, type the following commands and press Enter after each:
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 30
Note: You can replace 30 with however many seconds (3 – 999) you want the Boot Manager screen to display for before the timeout expires and loads the default Boot Entry. - To disable BOOTMGR, type the following command and press Enter:
bcdedit /set {bootmgr} displaybootmenu no
How to Modify Boot Manager
Modifying bootmgr not only includes enabling and disabling it, but also adding or removing an entry, editing the display order, changing the default entry, and much more.
Add New Boot Entry to Bootmgr
You can create multiple new boot entries for an operating system and customize each to have a different set of configurations. The easiest way to do so is to copy an existing boot entry and then modify it. Here’s how you can do that:
- Type the following command in the elevated command prompt:
bcdedit /copy {current} /d "TestEntry"
- Current is the last used boot entry. If you want to use another boot entry, replace current with any other identifier value as appropriate.
- Change TestEntry to whatever you wish to name the new entry.
- Finally, press Enter to execute the command.
- You’ll receive a message similar to:
The entry was successfully copied to {1f126914-2e93-11e5-a85b-be1ae2100b04}.
Here, the value inside the curly brackets is the new entry’s GUID. You can use this ID to modify this boot entry however you wish.
Remove or Delete Boot Entry
Removing a boot loader entry removes it from the boot menu, but it will still be present in the BCD store. You’ll need to delete it instead to remove it entirely. Here are the steps to do so via GUI:
- Press Windows + R, type msconfig, and press Enter.
- Switch to the boot tab.
- Select the boot entry you wish to delete and press the Delete button.
With the command line, you can choose to remove it or delete it as you prefer. You can do either using the steps listed below:
- Press Windows + R, type cmd and press CTRL + Shift + Enter.
- Type
bcdedit
and press Enter. - Under each Windows Boot Loader section, check the value of the device element. Once you’ve identified the appropriate partition, note the value of identifier above it.
- To remove the boot entry, replace identifier with its value from Step 3 and use the following command:
bcdedit /displayorder {identifier} /remove
- To delete the boot entry, replace identifier once again and use the following command:
bcdedit /delete {identifier}
Edit Display Order on a Multi-Boot Menu
You can set the display order of boot entries on a multi-boot menu using the /displayorder switch.
- In an elevated command prompt, execute the
bcdedit
command and note the value of identifier for each entry. - Replace the IDs with the boot entry’s GUID or a reserved identifier like {current} and use the following command:
bcdedit /displayorder {ID1} {ID2}
- Add as many more {IDs} as appropriate depending on how many entries you have. Don’t forget the curly brackets and space between the identifiers.
E.g. if you use the following command: bcdedit /displayorder {current} {9f25ee7a-e7b7-11db-94b5-f7e662935912} {e16cd9d6-379f-11e5-99d4-de034410edac}
This sets the display order as:
- current
- 9f25ee7a-e7b7-11db-94b5-f7e662935912
- e16cd9d6-379f-11e5-99d4-de034410edac
Alternatively, you can also use the /addfirst and /addlast modifiers to directly add an entry as the first or last items respectively on the Boot Manager menu. E.g.bcdedit /displayorder {5370b175-2e93-11e5-a85b-be1ae2100b04 } /addfirst
Change Default OS in Windows Boot Manager
You can easily change the default OS in Windows Boot Manager via System Configuration. Here are the steps to do so:
- Launch System Configuration using the run command msconfig.
- In the boot tab, select the OS you want to set as the default one.
- Click on Set as Default and press OK to apply the changes.
You can also specify the default boot entry by using the bcdedit /default {ID}
command in Elevated Command Prompt. Don’t forget to replace ID with the appropriate value of the boot entry though.
How to Get Windows 7 or Windows 10 Style Dual Boot Screen?
Here are the steps to get the dual boot screen you want using the bootmenupolicy
parameter:
- Open Elevated Command Prompt and use the commands listed below as appropriate.
- For the Windows 10 style Metro Boot Loader:
bcdedit /set {default} bootmenupolicy standard
- For the Windows 7 style Classic Boot Loader:
bcdedit /set {default} bootmenupolicy legacy
Мы продолжаем разбираться как работает ПК на примере клавиатуры и Windows 10. В этой статье поговорим о том как происходит единение софта и железа.
Старт системы
Полностью компьютер выключен когда он отключен от питания и конденсаторы на материнской плате разрядились. До эры смартфонов мобильные телефоны часто глючили и если перезагрузка не лечила проблему, то приходилось доставать батарею и ждать 10 секунд, потому что сбрасывалось программное состояние ОС, в то время как чипы на материнской плате и контроллеры устройств оставались активными сохраняя состояние, драйвера ОС к ним просто реконнектились. 10 секунд — время на разрядку конденсаторов, состояние чипов сбрасывается только при полном отключении.
Если же ПК подключен к розетке или батарее, то он находится в режиме Stand-By, это значит что по шине питания подаётся маленькое напряжения (5В) от которого запитываются некоторые чипы на материнке. Как минимум это системный контроллер, по сути это мини-компьютер запускающий большой компьютер. Получив уведомление о нажатии кнопки Power он просит блок питания/батарею подать больше напряжения и после инициализирует весь чип-сет, в том числе и процессор. Инициализация включает в себя перекачку кода и данных прошивки материнки (BIOS/UEFI) в оперативную память и настройку CPU на её исполнение.
Думать что кнопка Power это рубильник который подаёт электричество на CPU и тот начинает исполнять с заранее известного адреса прошивку BIOS неправильно. Возможно старые компьютеры так и работали. Кнопка включения находится на своей плате, вместе со светодиодами состояний и к материнке она подключается через специальный разъём. На картинке ниже видны контакты для кнопки Power, Reset, а также светодиодов с состоянием Power и чтения жёсткого диска. Нажатие кнопки включения переводится в сигнал на контакты материнки, откуда он достигает системный контроллер.
Контакты на материнке для подключения кнопки включения, светодиодов состояния Power, жёсткого диска и динамиков.
Плата ноутбука с кнопкой включения и светодиодом состояния
Cистемный контроллер обладает огромными полномочиями – включать и выключать компьютер, исполнять код в режиме ядра. Помимо него могут быть и другие чипы со сравнимыми возможностями, такие как Intel Management Engine или AMD Secure Technology (часть CPU), которые так же работают когда компьютер «выключен». Чип с Intel ME имеет в себе x86 CPU с операционной системой MINIX 3. Что он может делать:
- Включать и выключать компьютер, т.е. выполнять программы имея доступ ко всей вычислительной мощности, периферии машины и сети.
- Обходить ограничения файервола.
- Видеть все данные в 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 выполняет проверку подсистем, эта процедура называется POST – Power On Self Test. Тест может быть сокращённый либо полный, это задаётся в настройках BIOS. Процитирую Википедию, что в себя включают эти тесты:
Сокращённый тест включает:
- Проверку целостности программ BIOS в ПЗУ, используя контрольную сумму.
- Обнаружение и инициализацию основных контроллеров, системных шин и подключённых устройств (графического адаптера, контроллеров дисководов и т. п.), а также выполнение программ, входящих в BIOS устройств и обеспечивающих их самоинициализацию.
- Определение размера оперативной памяти и тестирования первого сегмента (64 килобайт).
Полный регламент работы POST:
- Проверка всех регистров процессора;
- Проверка контрольной суммы ПЗУ;
- Проверка системного таймера и порта звуковой сигнализации (для IBM PC — ИМС i8253 или аналог);
- Тест контроллера прямого доступа к памяти;
- Тест регенератора оперативной памяти;
- Тест нижней области ОЗУ для проецирования резидентных программ в BIOS;
- Загрузка резидентных программ;
- Тест стандартного графического адаптера (VGA или PCI-E);
- Тест оперативной памяти;
- Тест основных устройств ввода (НЕ манипуляторов);
- Тест CMOS
- Тест основных портов LPT/COM;
- Тест накопителей на гибких магнитных дисках (НГМД);
- Тест накопителей на жёстких магнитных дисках (НЖМД);
- Самодиагностика функциональных подсистем BIOS;
- Передача управления загрузчику.
По результатам этого теста может быть обнаружена неисправность, к примеру нерабочая видеокарта или клавиатура. Поскольку экран монитора может не работать результаты тестов сообщаются в виде последовательности звуковых сигналов разной высоты. Что конкретно они значат надо смотреть в документации к материнской плате. Старые компьютеры часто бибикали во время старта — это программа 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.
Процессор начинает свою работу в режиме который называется «Реальный». Это режим совместимости, в нём CPU работает так же как и старые 16-bit процессоры, не имевшие поддержки виртуальной памяти и работавшие напрямую с физической памятью через 20-bit шину адресов, позволявшую адресовать 1Мб памяти. Простые MS-DOS программы выполнялись в этом режиме и имели расширение .COM. Первое что делает Startup.com (Bootmgr) – переключает процессор в режим «Защищённый», где под защитой понимается защита процессов друг от друга. В этом режиме поддерживается виртуальная память и 32х битные адреса, которыми можно адресовать 4Гб оперативной памяти. Следующим этапом Bootmgr заполняет таблицу виртуальных адресов на первые 16Мб RAM и включает трансляцию с виртуальных адресов в физические. В этом режиме и работает Windows. Поскольку на этом этапе подсистемы ОС ещё не созданы, Bootmgr имеет свою простую и неполную реализацию файловой системы NTFS, благодаря которой он находит BCD файл (Boot Configuration Data), в котором хранятся настройки параметров загрузки ОС. Вы можете редактировать его через утилиту BcdEdit.exe. В этих настройках BCD может быть указано, что Windows была в состоянии гибернации, и тогда Bootmgr запустит программу WinResume.exe, которая считывает состояние из файла Hyberfil.sys в память и перезапускает драйвера. Если BCD говорит, что есть несколько ОС, то Bootmgr выведет на экран их список и попросит пользователя выбрать. Если ОС одна, то Bootmgr запускает WinLoad.exe, этот процесс и выполняет основную работу по инициализации Windows:
- Выбирает соотвествующую версию ядра 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.
Во время загрузки драйверов WinLoad проверяет их цифровые подписи и если они не совпадают, то будет синий (BSOD) или зелёный (GSOD, для insider preview сборок) «экран смерти».
Запуск на 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.
В UEFI загрузка происходит в родной для процессора битности – 32 или 64, есть доступ ко всей памяти, поддерживается виртуальная память, включен Secure Boot и есть возможность запустить antimalware до начала загрузки ОС. Порядок загрузки ОС в UEFI:
- Инициализация и запуск 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.
Чтобы посмотреть содержимое раздела EFI System Partition откройте консоль с правами админа (WinKey+X => Windows PowerShell (Admin)) и выполните команды mountvol Z: /s, Z:, dir. CD — меняет директорию.
Главное отличие компонентов BootMgr и WinLoad для UEFI от своих копий для BIOS тем что они используют EFI API, вместо прерываний BIOS и форматы загрузочных разделов MBR BIOS и EFI System Partition сильно отличаются.
Инициализация ядра
Напоминаю, что мы рассматриваем загрузку ПК в контексте работы клавиатуры, поэтому не стоит заострять внимание на всех этапах. Надо понять где в этом процессе находится клавиатура, важные для понимания этапы выделены.
На предыдущем этапе был запущен компонент WinLoad.exe/WinLoad.efi, который запускает NtOsKrnl.exe указав ему параметры загрузки в глобальной переменной nt!KeLoaderBlock (память режима ядра доступна всем процессам), которые WinLoad собрал во время своей работы. Они включают:
- Пути к System (загрузчик Windows) и Boot (C:\Windows\System32) директориям.
- Указатель на таблицы виртуальной памяти которые создал WinLoad
- Дерево с описанием подключенного hardware, оно используется для создания HKLM\HARDWARE ветки реестра.
- Копия загруженного реестра HKLM\System
- Указатель на список загруженных (но не инициализированных) драйверов участвующих в старте Windows.
- Прочая информация необходимая для загрузки.
Инициализация ядра Windows происходит в два этапа. До этого происходит инициализация Hardware Abstraction Layer, который в числе всего прочего настраивает контроллеры прерывания для каждого CPU.
На этой же стадии загружаются в память строки с сообщениями для BSOD, потому как в момент падения они могут быть недоступны или повреждены.
- Первая фаза инициализации ядра:
- Слой 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 для входа.
WinInit.exe инициализирует подсистемы для создания графической оболочки – Windows Station и десктопы, это не тот рабочий стол который вы видите, это иная концепция Windows. Далее он запускает процессы:
- 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.
WinLogon.exe – загружает провайдеры аутентификации (credential providers), которые могут быть password, Smartcard, PIN, Hello Face. Он порождает процесс LogonUI.exe который и показывает пользователю интерфейс для аутентификации, а после валидирует введённые данные (логин и пароль, PIN).
Если всё прошло успешно, то WinLogon запускает процесс указанный в ключе реестра HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon\Userinit. По умолчанию это процесс UserInit.exe, который:
- Запускает скрипты указанные в реестрах:
- 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
WinLogon уведомляет Network Provider о залогинившемся пользователе, на что тот восстанавливает и подключает системные диски и принтеры сохранённые в реестре. Network Provider представляет из себя файл mpr.dll из системной папки, который хостится в процессе svchost.exe, т.е. сервис Windows.
Дерево процессов выглядит следующим образом, на нём можно увидеть кто и кого создал (показаны не все процессы, может немного отличаться от последний версий 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.
Что означают приоритеты IRQL:
- 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, потому что все пользовательские программы выполняеются с приоритетом Passive/Low (0). Как только происходит событие с большим уровнем приоритета (событие от клавиатуры, таймер планировщика потоков), процессор сохраняет состояние прерванного потока, которое представляет из себя значения регистров CPU, и вызывает диспетчер прерываний (interrupt dispatcher, просто функция), который повышает приоритет IRQL через API KeRaiseIrql в HAL и вызывает непосредственно сам код обработчика (interrupt’s service routine). После этого IRQL CPU понижается до прежнего уровня через функцию KeLowerIrql и прерванный поток начинает обработку с того же места где его прервали. На этом механизме основан планировщик потоков. Он устанавливает таймер, который с определённым интервалом (квант времени) генерирует прерывание с приоритетом DPC/Dispatch (2) и в своей interrupt’s service routine по определённому алгоритму назначает новый поток на исполнение.
Механизм 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:
VOID KeyboardClassServiceCallback(
_In_ PDEVICE_OBJECT DeviceObject,
_In_ PKEYBOARD_INPUT_DATA InputDataStart,
_In_ PKEYBOARD_INPUT_DATA InputDataEnd,
_Inout_ PULONG InputDataConsumed
);
Так вот, драйвер клавиатуры (kbdclass.sys) получает данные от порта (USB, PS2) через прерывание и записывает их через WriteFile, компонент внутри ядра Windows просыпается, считывает их используя API ReadFile и добавляет в очередь сообщений с клавиатуры. API для работы с файлом могут использоваться для чтения данных с драйверов. С этого момента начинается обработка данных стеком ввода Windows, об этом в следующей статье.
Если у вас есть ПК с PS2 портом и вы умеете пользоваться WinDbg в режиме ядра, то можете легко найти обработчик прерываний клавиатуры напечатав команду !idt, которая выведет на экран всю таблицу векторов прерываний. Прерывание вклинивается в ход выполнения программы, слово вектор здесь подразумевает направление, направление исполнения программы. WinDbg был сделан специально для отладки Windows, самая последняя версия называется WinDbgX. Он имеет текстовый интерфейс, который отпугивает людей привыкших к Visual Studio, однако предоставляет гораздо больше возможностей, в частности исполнение скриптов. Прерывание фиолетового порта PS2 выделено красным. Функция которая его обрабатывает называется I8042KeyboardInterruptService, которая находится в файле i8042prt.sys.
BOOLEAN
I8042KeyboardInterruptService(
IN PKINTERRUPT Interrupt,
IN PVOID Context
);
Routine Description:
This is the interrupt service routine for the keyboard device when
scan code set 1 is in use.
Arguments:
Interrupt - A pointer to the interrupt object for this interrupt.
Context - A pointer to the device object.
Return Value:
Returns TRUE if the interrupt was expected (and therefore processed);
otherwise, FALSE is returned.
Сейчас возникает вопрос, откуда у обработчика прерываний аргумент? Кто его передаёт? Ведь CPU ничего не знает о нём. Если поставите в неё breakpoint, то удивитесь ещё больше увидев несколько функций выше по стеку:
0: kd> kC
# Call Site
00 i8042prt!I8042KeyboardInterruptService
01 nt!KiCallInterruptServiceRoutine
02 nt!KiInterruptSubDispatch
03 nt!KiInterruptDispatch
04 nt!KiIdleLoop
Объяснение здесь простое – это не та функция которая сохранена в регистре IDT процессора. То что вы видите на картинке выше на самом деле объекты типа _KINTERRUPT. В таблице прерываний сохранён специальный ассемблерный код (nt!KiIdleLoop), который знает как найти объект описывающий прерывание в памяти. Что же интересного есть в нём?
- Указатель на объект представляющий драйвер в памяти.
- Указатель на функцию i8042prt!I8042KeyboardInterruptService, которая и вызывает код считывающий данные из порта PS2 через ассемблерную команду IN AL, 0x60 – сохранить значение из порта номер 0x60 в регистре AL.
- Функция dispatcher – ей передаётся указатель функцию из пункта №2 и она вызывает её.
- Состояние регистров CPU. Перед вызовом прерывания состояние CPU будет сохранено сюда, и отсюда же будет восстановлено.
- Приоритет прерывания. Не тот который определяет контроллер прерываний, а тот который Windows считает нужным. Это IRQL (Interrupt Request Level) – абстракция над IRQ.
Как только обработчик прерываний клавиатуры будет вызван, он уведомит драйвер клавиатуры о полученных данных, после чего будет уведомлено ядро ОС, которое обработав данные отправит их дальше по стеку ввода, где они могут быть доставлены приложению, которое на них отреагирует, или перед этим в обработчик языков (азиатские иероглифы, автокоррекция, автозаполнение).
Ядро ОС напрямую не взаимодействует с драйвером клавиатуры, для этих целей используется Plug’n’Play Manager. Этот компонент предоставляет API IoRegisterPlugPlayNotification, который вызовет предоставленную callback-функцию когда устройство будет добавлено или удалено.
Пару слов о 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 не имеет значение какой порт или источник данных от устройства используется.
ч.1 — Основы ОС и компьютера
ч.2 — Как работает материнская плата и клавиатура через порт PS2
При установке Windows с флешки возникает необходимость выставить загрузку с USB накопителя, для чего требуется настроить BIOS таким образом, чтобы компьютер загружался с нужного носителя. В этой статье речь пойдет, о том как поставить загрузку с флешки в БИОС или UEFI на компьютере или ноутбуке.
В статье приведены примеры для различных вариантов интерфейса БИОС/UEFI и даны решения для наиболее часто встречающихся проблем, с которыми можно столкнуться при изменении порядка загрузки. В конце также описано, что делать, если вы не можете зайти в БИОС или ПО UEFI на современных ПК и ноутбуках.
- Использование Boot Menu
- Вход в БИОС
- Изменение порядка загрузки в БИОС и UEFI для загрузки с USB
- Загрузка с флешки в старых версиях БИОС
- Загрузка с USB без входа в БИОС
- Что делать, если не получается открыть БИОС или Boot Menu
- Видео инструкция
Использование Boot Menu для загрузки с флешки
В большинстве случаев, поставить загрузку с флешки в БИОС требуется для какой-то однократной задачи: установки Windows, проверки компьютера на вирусы или восстановления системы с помощью LiveCD, сброса пароля Windows. Во всех этих случаях не обязательно изменять настройки БИОС или UEFI, достаточно вызвать Boot Menu (меню загрузки) при включении компьютера и один раз выбрать флешку как устройство загрузки.
Например, при установке Windows, вы нажимаете нужную клавишу для открытия Boot Menu, выбираете подключенный USB накопитель с дистрибутивом системы, начинаете установку — настройка, копирование файлов и прочее и, после того, как произойдет первая перезагрузка, компьютер сам загрузится, но уже с жесткого диска и продолжит процесс установки в штатном режиме.
Очень подробно о входе в данное меню на ноутбуках и компьютерах различных марок я написал в статье Как зайти в Boot Menu (там же есть видео инструкция). Обратите внимание, что флешка в Boot Menu может и не отображаться. Почему это происходит подробно в статье Что делать, если БИОС/UEFI не видит загрузочную флешку в Boot Menu.
Как попасть в BIOS для выбора вариантов загрузки
В разных случаях для того, чтобы попасть в утилиту настройки БИОС нужно выполнить, по сути, одно и то же действия: сразу после включения компьютера, при появлении первого черного экрана с информацией об установленной памяти или же логотипом производителя компьютера или материнской платы, нажать нужную кнопку на клавиатуре — наиболее распространенные варианты — это Delete и F2. Если при завершении работы уже установленной системы и включении компьютера вы не успеваете открыть БИОС, используйте не «завершение работы», а пункт «Перезагрузка» и сразу при потемнении экрана начните многократно нажимать по нужной клавише.
Обычно, эта информация имеется внизу или, в старых БИОС — вверху среди текста начального экрана: «Press Del to enter Setup», «Press F2 for Settings» и аналогичная.
По нажатию нужной кнопки в нужный момент (чем раньше, тем лучше — это нужно сделать до начала загрузки операционной системы) Вы попадете в меню настроек — BIOS Setup Utility (название может быть другим, но суть одна — это интерфейс настроек БИОС/UEFI). Внешний вид этого меню может отличаться, рассмотрим несколько наиболее распространенных вариантов.
Изменение порядка загрузки в UEFI BIOS для загрузки с USB
На современных материнских платах интерфейс БИОС, а если точнее — ПО UEFI как правило, чаще является графическим на ПК, но текстовым на ноутбуках. Во всех случаях разобраться с тем, как именно поставить загрузку с флешки обычно бывает не сложно. Далее будут приведены некоторые примеры и по аналогии, вероятнее всего, вы сможете успешно изменить порядок загрузки и на вашей системе.
Как правило, для того, чтобы поставить загрузку с флешки, нам требуется выполнить следующие шаги (описываю применительно к изображению выше, что является одним из наиболее распространенных вариантов, а далее приведу и другие реализации изменения порядка загрузки):
- Перейти в раздел Boot в БИОС/UEFI. Это можно сделать либо с помощью стрелок на клавиатуре (вправо), либо в некоторых случаях — с помощью мыши. Иногда параметры загрузки можно настроить прямо на главном экране БИОС.
- В зависимости от конкретного БИОС вы увидите либо список устройств загрузки (дисков, подключенных к компьютеру), либо несколько пунктов Boot Option с номерами.
- В первом случае требуется поместить вашу флешку на первое место: для этого выбираем её и с помощью клавиши F5 двигаем вверх (Fn+F5 на некоторых ноутбуках). Во втором случае выбираем Boot Option 1, нажимаем Enter и выбираем в списке загрузочную флешку.
- Сохраняем настройки: это можно сделать на вкладке Exit, либо, чаще всего — нажатием по клавише F10 с подтверждением Save Settings and Exit Setup.
Самая распространенная проблема при указании устройства загрузки в современных БИОС/UEFI — отсутствие загрузочной флешки в списке устройств загрузки. Чаще всего такое происходит, если тип загрузки, установленный в БИОС (на скриншоте выше — UEFI в разделе OS Type) и тип загрузки, поддерживаемый флешкой, не совпадают. Например, если для приведенного выше изображения использовать флешку под режим Legacy, выбрать её в качестве первого устройства загрузки не получилось бы. Подробнее о проблеме и методах её исправления в упоминавшейся ранее статье о том, почему БИОС не видит загрузочную флешку.
Выше был приведён пример одного из наиболее типичных вариантов БИОС (UEFI) на сегодня, но возможны и другие реализации.
- Например, на некоторых материнских платах Gigabyte вы увидите список подключенных устройств в пункте Boot Sequence на первом экране и достаточно будет перетащить вашу флешку на первое место мышью.
- Другой вариант реализации, тоже на Gigabyte: вкладка Boot отсутствует, необходимо зайти в BIOS Features, а затем перейти в Boot Option Priorities.
- Интересен подход на фирменных материнских платах Intel: здесь порядок загрузки можно настроить прямо на главном экране, отдельно для режима Legacy и режима UEFI (с помощью мыши), а в Adavnced Options получить более подробное представление о доступных устройствах загрузки для каждого из режимов.
- Далее — относительно простой пример установки USB флешки в качестве первого устройства загрузки на Asus. Обратите внимание, что здесь для того, чтобы включить поддержку Legacy загрузки требуется задействовать опцию CSM (Compatibility Support Mode) на той же вкладке Boot.
- Ниже — пример того, как сделать загрузку с флешки на ноутбуке HP. Здесь в БИОС необходимо зайти в System Configuration, а уже там в Boot Options, где можно найти (для некоторых моделей) отдельный список устройств загрузки для UEFI и Legacy режима. Флешку устанавливаем на первое место с помощью клавиш F5/F6 для нужного режима загрузки.
Если ничего похожего у себя в БИОС вы не находите, внимательно изучите различные разделы БИОС/UEFI, такие как BIOS Features, System Configuration, Advanced Configuration и попробуйте найти что-то связанное с Boot в этих разделах.
Настройка загрузки с флешки в старых версиях БИОС
На старых материнских платах и ноутбуках бывают некоторые особенности изменения порядка загрузки, особенно когда пользователю требуется настроить загрузку с USB накопителя. Рассмотрим несколько примеров.
AMI BIOS
Не только в AMI BIOS, но и в некоторых других вариантах БИОС тех же лет вы можете не обнаружить флешки для выбора в качестве устройства загрузки, а имеющиеся пункты, наподобие USB-HDD могут не работать. Решение для такой ситуации имеется.
Учтите, что для того, чтобы проделать все описываемые действия, флешка должна быть подключена к компьютеру заранее, до входа в БИОС. Для того, чтобы установить загрузку с флешки в AMI BIOS:
- В меню сверху, нажимая клавишу «вправо», выберите пункт «Boot» (Загрузка), но не переходим в Boot Device Priority.
- После этого выбираем пункт «Hard Disk Drives» (Жесткие диски) и в появившемся меню, нажимаем Enter на «1st Drive» (Первый диск). Если такого пункта нет, посмотрите, имеется ли раздел Integrated Peripherals в БИОС — иногда порядок жестких дисков (отдельно от порядка загрузки) можно настроить там.
- В списке выбираем название флешки, она будет видна именно в списке жестких дисков — на второй картинке, например, это — Kingmax USB 2.0 Flash Disk. Нажимаем Enter, затем — Esc.
- Далее выберите «Boot device priority» (Приоритет загрузочных устройств).
- Выберите пункт «First boot device» (Перовое устройство загрузки), нажмите Enter.
- Укажите флешку в качестве первого устройства загрузки, она будет присутствовать здесь как обычный жесткий диск.
По завершении нажимаем Esc, в меню сверху с пункта Boot (Загрузка) передвигаемся до пункта Exit (Выход) и выбираем «Save changes and exit» (Сохранить изменения и выйти) или «Exit saving changes» — на запрос о том, уверены ли Вы в том, что хотите сохранить сделанные изменения, нужно будет выбрать Yes или набрать с клавиатуры «Y», затем нажать Enter. После этого компьютер перезагрузится и начнет использовать для загрузки выбранную вами флешку, диск или другое устройство.
Загрузка с флешки в БИОС AWARD или Phoenix
Для того, чтобы выбрать устройство для загрузки в Award BIOS, в главном меню настроек выберите «Advanced BIOS Features» (расширенные настройки биос), после чего с выбранным пунктом First Boot Device (Первое устройство загрузки) нажимаем Enter.
Появится список устройств, с которых можно произвести загрузку — HDD-0, HDD-1 и т.д., CD-ROM, USB-HDD и другие. Для загрузки с флешки необходимо установить USB-HDD или USB-Flash. Для загрузки с компакт диска DVD или CD — CD-ROM. После этого выходим на один уровень вверх, нажатием Esc, и выбираем пункт меню «Save & Exit Setup» (Сохранить и выйти). Если способ с USB-HDD не сработал, попробуйте использовать подход, показанный в предыдущем способе, но ищите порядок жестких дисков в разделе Integrated Peripherals.
Настройка загрузки с внешнего носителя в старых версиях H2O BIOS
Для загрузки с флешки в InsydeH20 BIOS, который встречается на многих ноутбуках, в главном меню с помощью клавиши «вправо» необходимо дойти до пункта «Boot» (Загрузка). Установить пункт External Device Boot (Загрузка с внешнего устройства) в положение Enabled (Включено). Ниже, в разделе Boot Priority (Приоритет загрузки), с помощью клавиш F5 и F6 установить External Device на первую позицию. Если необходимо осуществить загрузку с DVD или CD, выбираем Internal Optic Disc Drive (Внутренний оптический накопитель).
После этого перейдите к пункту Exit в меню сверху и выберите «Save and Exit Setup» (Сохранить настройки и выйти). Компьютер перезагрузится с нужного носителя.
Загрузка с USB без входа в БИОС (только для Windows 11, 10 и Windows 8.1 с UEFI)
Если на вашем компьютере установлена одна из последних версий Windows, а материнская плата с ПО UEFI, то вы можете выполнить загрузку с флешки даже не входя в параметры BIOS. Способ работает не на любой системе (рассматриваемый далее пункт может отсутствовать даже на UEFI системах), а загрузочный накопитель должен быть подключен на момент выполнения действий.
Для того, чтобы выполнить перезагрузку этим методом, удерживая Shift нажмите по пункту «Перезагрузка» в меню выключения в меню Пуск либо на экране блокировки. Второй метод: зайдите в параметры — изменение параметров компьютера (через панель справа в Windows 8 и 8.1), затем откройте «Обновление и восстановление» — «Восстановление» и нажмите кнопку «Перезагрузить» в пункте «Особые варианты загрузки».
На появившемся экране «Выбор действия» выберите «Использовать устройство. USB-устройство, сетевое подключение или DVD-диск».
На следующем экране вы увидите список устройств, с которых можно загрузиться, среди которых должна быть и ваша флешка. Если вдруг ее нет — нажмите «Просмотреть другие устройства». После выбора, компьютер перезагрузится с указанного вами USB накопителя.
Что делать, если не получается зайти в БИОС, чтобы поставить загрузку с флешки
В связи с тем, что современные операционные системы используют технологии быстрой загрузки, может оказаться, что у вас попросту не получается зайти в БИОС, чтобы каким-то образом изменить настройки и загрузиться с нужного устройства. В этом случае я могу предложить два решения.
Первое — зайти в ПО UEFI (БИОС) с помощью особых вариантов загрузки Windows 10 (см. Как зайти в БИОС или UEFI Windows 10) или Windows 8 и 8.1. Как это сделать я подробно описал здесь: Как зайти в БИОС в Windows 8.1 и 8
Второе — попробовать отключить быструю загрузку Windows, после чего зайти в БИОС обычным способом, с помощью клавиши Del или F2. Для отключения быстрой загрузки, зайдите в панель управления — электропитание. В списке слева выберите пункт «Действия кнопок питания».
И в следующем окне уберите пункт «Включить быстрый запуск» — это должно помочь в использовании клавиш после включения компьютера. Подробнее: Как отключить быстрый запуск Windows 10.
Видео инструкция
Насколько могу судить, описал все типичные и наиболее распространенные варианты: один из них должен обязательно помочь, при условии, что сам загрузочный накопитель в порядке. Если вдруг что-то не получается — жду в комментариях.
Порой возникает необходимость загрузить компьютер (или ноутбук – разницы нет) в обход установленной операционной системы, с внешних носителей: CD/DVD дисков или флешки. Это могут быть так называемые LiveCD или другие утилиты для восстановления, тестирования и прочих нужд.
1. Вставляем флешку в разъем USB или устанавливаем диск в дисковод. В случае с дисководом, открыть его можно только при работающем компьютере (о способе с применением иголки или шпильки говорить не будем).
2. Включаем компьютер. Появляется окно с заставкой (обычно логотип материнской платы) и внизу экрана, как правило, будет написано, какую клавишу надо нажать на клавиатуре, чтобы загрузить Bios и попасть в Boot Menu. Нужно успеть нажать нужную клавишу, прежде чем начнется загрузка операционной системы. В противном случае придется перезагрузить компьютер и попробовать еще раз.
Совет: нажимайте нужную клавишу многократно, как только экран монитора загорелся при включении.
Если вам требуется произвести операцию загрузки с внешнего носителя разово, то можно воспользоваться быстрым Boot Menu (настройки не будут запомнены). Если планируется загружаться с дисков и флешек регулярно, можно произвести настройку Bios. Не советую делать это для загрузки с флешек, потому что тогда при запуске система всякий раз сперва будет пытаться загрузиться с флешек (если вы забыли их вынуть), и только потом обращаться к вашему жесткому диску. На это будет затрачиваться дополнительное время при включении компьютера и загрузке операционной системы. Это было лирическое отступление, вернемся к практическим действиям.
В большинстве случаев, на материнских платах разных производителей, кнопки для запуска Bios и Boot Menu разные.
3.1. Для запуска Boot Menu обычно используется одна из клавиш верхнего ряда клавиатуры. Наиболее часто: Esc, F1, F2, F7, F11, F12.
Boot Menu выглядит примерно следующим образом:
В списке указаны все носители, с которых можно попробовать загрузиться: дисководы, жесткие диски, флешки (в данном случае HL-DT-STDVDRAM GT40N — это дисковод и WDC WD5000BPVT-60HXZT3 — жесткий диск, если вставить флешку, то и она появиться с этом списке). Стрелками на клавиатуре выбираем нужный носитель и нажимаем Enter. Пойдет загрузка с указанного носителя, но наш выбор не будет запомнен. При повторной необходимости загрузки операцию придется повторить.
3.2. Если по каким-то причинами вам не удалось загрузиться с диска или флешки, используя описание из пункта 3.1., тогда переходим к настройкам Bios.
Наиболее частые клавиши, используемые для загрузки Bios также клавиши верхнего ряда клавиатуры: Del, F2, Esc, F10, F12.
Попадаем в Bios. На рисунке представлен один из вариантов его внешнего вида. Интерфейс на разных материнских платах может отличаться, но суть требуемых настроек остается одинаковой.
Находим раздел Boot (или Boot Menu). Переходим в него путем нажатия клавиш стрелок – влево-вправо – и нажимаем Enter, для раскрытия раздела.
Выбираем стрелками Boot Option #1 (может называться First Boot Priority или аналогично) и нажимаем Enter. Открывается окно выбора. Здесь указываем, с какого устройства мы хотим загружаться в первую очередь. Выбираем и нажимаем Enter.
Аналогично можно назначить устройства, с которого будем грузиться во вторую очередь и т.д.
Если в списке устройств вы не обнаружили своего (например, если собираемся грузиться с флешки, а компьютер решил, что это еще один жесткий диск). Тогда следует зайти в раздел Hard Drive Priorities. Там будут представлены все жесткие диски, и можно будет установить очередность загрузки для них аналогичным образом.
Когда все необходимые изменения внесены, нажимаем F10 (что фактически вызывает команду Сохранить и Выйти – Save and Exit) и подтверждаем сохранение настроек, выбрав Yes (иногда требуется ввести букву y с клавиатуры).
После этого загрузка начнется с указанного устройства – с диска или флешки.
На этом всё. Удачи!
Оцените статью. Вам не сложно, а автору приятно