BOOT.INI — это внутренний файл Windows с параметрами запуска. К нему обращается ОС, когда вы включаете компьютер. Если вас не устраивают изначальные настройки запуска, их можно изменить. Нужно лишь внести изменения в этот файл. Но отыскать его непросто: системные папки часто скрыты от глаз пользователя, чтобы человек случайно не удалил или не переместил важный каталог. В новых Windows этот файл отсутствует.
Что такое BOOT.INI?
Если на компьютере не одна ОС, при запуске будет предложен выбор. Именно за это отвечает BOOT.INI. В нём прописано, какая из систем приоритетная, с какими настройками её загружать и т. п.
При включении Windows обращается к нескольким файлам, которые контролируют загрузку на разных этапах. Это ntbootdd.sys, ntdetect.com, ntldr, bootsect.dos. И, конечно, сам BOOT.INI. Если какой-то из них переименовать, перетащить, удалить или неаккуратно отредактировать, это может вызвать проблемы. Компьютер будет без конца перезагружаться, выдавать ошибки или элементарно не включаться. Поэтому с внутренними данными операционной системы надо обращаться осторожно. Неправильная цифра или не в том месте поставленное тире — и вам придётся восстанавливать ОС.
Будьте осторожны при редактировании boot.ini, поскольку в случае ошибки потребуется переустановка или восстановление Windows
Как найти BOOT.INI
Вначале поговорим о Windows XP. Где находится BOOT.INI в этой модели? Его можно найти непосредственно в корневой директории (там, где основные дистрибутивы системы). Но увидеть его не получится, если не активировано отображение скрытых объектов. Чтобы включить эту опцию:
- Зайдите в «Панель управления» (в меню «Пуск»).
- Откройте «Параметры папок» в разделе «Оформление и персонализация».
- Найдите вкладку «Вид».
- Прокрутите ползунок вниз. Там будет строчка «Показывать скрытые файлы». Поставьте галочку.
Теперь вы сможете увидеть BOOT.INI. Он находится прямо на системном диске (обычно это диск C:). Сам файл имеет иконку в виде листка с шестерёнкой. Он будет полупрозрачным. Это означает, что он скрытый, и снять с него этот атрибут невозможно.
Если вы не представляете, где именно установлена ваша ОС, зайдите в меню «Пуск — Поиск». Выберите «Файлы и папки» и в поле для ввода напишите название или часть названия. В окне отобразятся все результаты с таким именем.
Если вы используете Windows 7, во всех моделях, начиная с Vista, эти настройки заменили на файл конфигурации «BCD», который не имеет расширения. Его можно запустить как часть реестра, но настроить или изменить в нём что-то будет трудно. Он содержит очень много параметров и значений, в которых непросто ориентироваться. В Windows 10 BOOT.INI тоже отсутствует, поэтому менять параметры загрузки придётся другим способом.
BCD намного полезнее и функциональнее своего «предшественника», но этот файл не предназначен для ручной настройки. Он нужен для нужд системы, и исправлять в нём что-либо не стоит.
Как редактировать?
BOOT.INI можно отредактировать в любом текстовом процессоре. Подойдёт обычный блокнот Windows или «продвинутый» Notepad+. Но перед этим надо разрешить доступ к файлу, иначе после внесения изменений его нельзя будет сохранить.
- Кликните по нему правой кнопкой мыши.
- Выберите «Свойства».
- Во вкладке «Общие» уберите галочку из пункта «Только чтение».
- Нажмите «Применить».
После этого можно менять значения в BOOT.INI. Файл имеет чёткую структуру. Не рекомендуется удалять в нём что-то, перемещать операторы без надобности, стирать скобки или знаки препинания. Вкратце о каждом параметре:
- «Timeout» показывает, сколько времени даётся на выбор ОС при запуске (если установлено несколько). Напишите после знака равенства «=» нужную вам цифру. Таймер ведёт отсчёт в секундах.
- В «default» обозначена операционная система, заданная по умолчанию. Она будет загружена, если за отведённое время вы не выберите, какую именно ОС активировать. Этот параметр может выглядеть примерно так: «scsi(0)disk(0)rdisk(0)partition(1)WINDOWS».
- «Scsi» — контроллер, который управляет физическим диском. Если их несколько, второй будет иметь вид «scsi(1)».
- «Partition» — это раздел, в котором находится ОС. К примеру, «Partition(1)» указывает на C:, «partition(2)» — на D: и так далее.
- Ниже параметра «operating systems» представлен список установленных операционных систем. Если у вас одна ОС, там будет одна строчка.
- Могут быть вписаны и другие параметры. Например, «/SOS», чтобы при запуске показывались имена драйверов, или «/debug» для отладки ядра. Все возможные команды есть на официальном сайте Microsoft.
Как менять порядок загрузки без файла BOOT.INI
Так как отредактировать BOOT.INI в Windows 7 и более поздних версиях не получится из-за отсутствия этого файла, придётся настраивать порядок загрузки другим способом. Конечно, можно попробовать поработать с BCD, но разобраться во всех его опциях будет непросто.
Если вам надо поменять время, которое даётся на выбор ОС, или поставить другую систему по умолчанию, сделать это можно так:
- Откройте «Мой компьютер».
- Щёлкните в любом свободном месте окна правой кнопкой мыши.
- Зайдите в «Свойства».
- Затем — в«Дополнительные настройки».
- На вкладке «Дополнительно» в разделе «Восстановление и загрузка» нажмите «Параметры». Там будут нужные опции.
Ещё один способ:
- Перейдите в Пуск — Выполнить.
- В открывшемся окне напишите «msconfig» (без кавычек). Появятся настройки конфигурации.
- Вкладка «Загрузки». Откроется список установленных ОС. Можно решить, какую из них назначить по умолчанию, и изменить таймаут при запуске и выборе системы.
К сожалению, эти методы не позволяют задать особые параметры.
Использование программ
Описанные выше задачи можно упростить. Для этого существуют специальные утилиты — менеджеры загрузок. С ними можно обойтись и без BOOT.INI. Вот некоторые из этих программ:
- Оболочка для BCD. С её помощью можно настроить этот файл.
- OSL2000 BootManager. Поддерживает работу с большим количеством операционных систем (до 100 штук).
- Обеспечивает быстрый перезапуск в нужную ОС.
В Windows XP BOOT.INI отвечает за порядок загрузки системы. Его можно изменить, прописав команды вручную. В последующих версиях ОС файл убрали. Но настройка параметров запуска всё равно доступна. Если вы не разбираетесь в этом вопросе, воспользуйтесь предназначенными для этого программами. Так не придётся трогать собственную информацию Windows.
В современных версиях Windows информация для запуска операционной системы храните в файле конфигурации загрузки BCD (Boot Configuration Data). В этом файле хранятся данные об установленной Windows и параметрах ее загрузки. Если файл BCD удален или поврежден, Windows перестает загружаться. Также вы не сможете загрузить Windows, если повреждена MBR запись на жестком диске. В этой статье мы покажем, как корректно пересоздать файл хранилища данных конфигурации загрузки BCD и
Master Boot Record
(MBR) на примере Windows 10 и 11.
Содержание:
- Ошибка “The boot configuration data file is missing some required information”
- Автоматическое восстановление конфигурации загрузчика Windows
- Идентификация разметки дисков и букв томов
- Восстановление загрузочного сектора MBR в Windows 10/11
- Пересоздание BCD файла загрузчика Windows 10
Ошибка “The boot configuration data file is missing some required information”
Если файл BCD поврежден, отсутствует, если вы удалили / отформатировали отдельный раздел диска с меткой System Reserved (и размером 500Мб), специальный OEM раздел, то скорее всего при попытке загрузить Windows появится такое сообщение:
Your PC needs to be repaired The Boot Configuration Data file is missing some required information File: BootBCD Error code: 0xc0000034
Также ошибка может выглядеть так:
The Boot Configuration Data for your PC is missing or contain errors. File: bootbcd Error Code: 0xc000000f
При повреждении MBR может быть ошибка No operating system found.
Автоматическое восстановление конфигурации загрузчика Windows
При появлении такой ошибки, в первую очередь попробуйте исправить проблему с загрузкой ОС с помощью режима автоматического восстановления (Startup Repair), который можно запустить из среды восстановления Windows RE.
Совет. Желательно периодически проверять работоспособность среды WinRE, и если она не работает, воспользоваться для ее восстановления методикой из статьи Восстановление среды WinRE в Windows.
Если автоматическое восстановление с помощью Startup Repair не помогло решить проблему, вам нужно загрузиться с загрузочного или установочного диска с Windows или в среде WinRe (Repair your computer -> Troubleshoot -> Advanced options -> Command Prompt), запустить командную строку и попробовать полностью пересоздать файл конфигурации загрузчика BCD и обновить MBR запись.
В этом примере я буду использовать установочный диск с Windows 10. Выберите в настройках BIOS первичным загрузочным устройство DVD диск или USB флешку с дистрибутивом Windows (в зависимости от того, с какого устройства вы хотите загрузить компьютер). Загрузитесь с установочного диска и на экране выбора языка установки нажмите сочетание клавиш Shift+F10. Перед вами откроется консоль командной строки.
Попробуйте восстановить BCD файл автоматически, выполнив команду:
bootrec /RebuildBCD
Перезагрузите компьютер и проверьте, загружается ли Windows (не забудьте изменить приоритет загрузочных устройств в BIOS). Если Windows не загружается, еще раз загрузитесь с установочного диска и откройте окно командной строки.
Идентификация разметки дисков и букв томов
Очень важно. Все инструкции, описанные ниже, подходят для обычных компьютеров с BIOS (или загружающихся в режиме UEFI legacy) и MBR таблицей разделов. На компьютерах с UEFI прошивками для пересоздания BCD нужно использовать следующе инструкци: восстановлению EFI загрузчика в Windows 10 или восстановление удаленного EFI раздела в Windows.
Как понять, используется ли у вас BIOS или UEFI система? Проще всего проверить тип таблицы разделов на диске, на котором установлена Windows: GPT или MBR. Для этого выполните команду:
diskpart
Затем выполните:
list disk
- Если у диска в столбце Gpt указана звездочка (*), значит на диске используется таблица разделов GPT. Это значит, что у вас компьютер с UEFI, и для восстановления загрузчика нужно использовать статью по ссылке выше.
- Если в столбце GPT звездочка отсутствует, значит у вас на диске таблица разделов MBR, и вы можете продолжить следовать данной инструкции.
Далее вам нужно идентифицировать локальные диски и разделы системы (скорее всего назначенные им буквы дисков будут отличаться от дисков, которые вы видели при работе в Windows). Проще всего это сделать с помощью утилиты diskpart. Выполните следующие команды:
diskpart
list vol
Перед вами появится список разделов в системе, назначенные им буквы дисков и их размер. В нашем случае к компьютеру подключен 1 жесткий диск, на котором имеются всего два раздела:
- Раздел System Reserved размером 500 Мб, которому назначена буква диска C:. На этом небольшом служебном разделе по-умолчанию хранится файл конфигурации загрузки BCD (подробнее)
- NTFS раздел размером 39 Гб, которому назначена буква D:. На этом разделе находится установленная Windows, программы и данные пользователя.
Важно. Запомните буквы дисков, назначенные разделам. Данные буквы дисков будут использоваться в последующих командах.
Восстановление загрузочного сектора MBR в Windows 10/11
С помощью утилиты bootrec.exe можно перезаписать данные в MBR и загрузочном секторе, поместим в них ссылки на загрузчик Windows (bootloader).
Попробуйте перезаписать основную загрузочную запись (MBR) системного раздела для совместимости с загрузчиком Windows (существующая таблица разделов не перезаписывается).
bootrec.exe /fixmbr
Добавьте в загрузочные секторы диска код для загрузки файла bootmgr ( диспетчера загрузки Windows):
bootsect.exe /nt60 all /force
Прежде, чем идти далее, попробуйте автоматически пересоздать конфигурацию загрузчика BCD командами (это самый простой способ для начинающих):
bootrec /FixBoot
– команда создает новый загрузочный сектор на системном разделе (перезаписывает загрузочную запись раздела PBR).
bootrec /ScanOs
– просканировать диски и найти установленные копии Window, которых нет в хранилище конфигурации загрузки
В случае успешного сканирования появится запрос на добавление записей о найденный Windows в BCD:
Scanning all disks for Windows installations. Please wait, since this may take a while... Successfully scanned Windows installations. Total identified Windows installations: 1 [1] D:Windows Add installation to boot list? Yes/No/All:
bootrec /RebuildBcd
– пересоздать хранилище конфигурации загрузкика, добавить в BCD найденные на компьютере копии Windows/
После этого перезагрузите компьютер и проверьте загрузку Windows. Если ОС не загружается, следуйте инструкции.
Если команда bootsect.exe не найдена, попробуйте указать полный путь к ней:
X:bootbootsect.exe /nt60 all /force
Пересоздание BCD файла загрузчика Windows 10
Далее с помощью команды BCDedit нужно создать новый файл с конфигурацией загрузчика (предполагается, что у вас нет резервной копии BCD).
Ваши дальнейшие действия зависят от того, есть ли на диске отдельный раздел System Reserved или нет. В командной строке выполните:
diskpart
list vol
Проверьте, есть ли на диске компьютера системный раздел System Reserved. Его можно идентифицировать по метке тома, либо более точнее по размеру (500 Мб для Windows 10+, 350 Мб для Windows 8.1 и 100 Мб для Windows 7).
- Если раздела нет (вы случайно удалили его), можно хранить конфигурацию загрузчика BCD на основном диске, где находится каталог Windows. Чтобы создать конфигурационные файл загрузчика BCD и Bootmgr на указанном диске, выполните команду:
bcdboot C:Windows /S C:
Должно появится сообщение
Boot files successfully created
. - Если раздел System Reserved у вас имеется, удалите старый (поврежденный) файл BCD и создайте вместо него новый:
del c:bootbcd
Если разделу System Reserved не назначена буква диска (по-умолчанию), вы можете сами назначить ее с помощью diskpart.
Запустите:
diskpart
Выберите диск (в моем случае в компьютере имеется всего один жесткий диск, а вы можете вывести список дисков командой list disk):
select disk 0
На скриншота выше видно, что раздел с меткой System Reserverd называется Volume 1. Выберите его:
select volume 1
Назначьте букву диска (я назначил букву C:, но вы можете использовать любую другую букву, в этом случае измените путь в следующих командах):
assign letter C:
exit
Создайте временный пустой файл bcd.tmp:
bcdedit /createstore c:bootbcd.tmp
Создайте запись для диспетчера загрузки bootmgr:
bcdedit.exe /store c:bootbcd.tmp /create {bootmgr} /d "Windows Boot Manager"
Импортируйте в BCD настройки из файла bcd.tmp:
bcdedit.exe /import c:bootbcd.tmp
Если команда bcdedit возвращает ошибку (
Ошибка создания хранилища. Отказано в доступе, access denied
) при доступе к файлу BCD, попробуйте снять с него атрибуты скрытый, read-only и системный:
attrib C:BootBCD -s -h -r
Укажите, что загрузчик находится на служебном разделе System Reserved (ему назначена буква диска C: )
bcdedit.exe /set {bootmgr} device partition=c:
Настройте время ожидания при выборе ОС:
bcdedit.exe /timeout 10
Удалите временный файл:
del c:bootbcd.tmp
Итак, вы создали пустой BCD файл с параметрами загрузчика. Теперь в него нужно добавить записи об установленных на диске Windows .
Создайте в хранилище BCD новую запись для Windows 10:
bcdedit.exe /create /d "Windows 10" /application osloader
Команда должна вернуть уникальный идентификатор (GUID) данной записи загрузчика:
The entry {8a7f03d0-5338-11e7-b495-c7fffbb9ccfs} was successfully created.
Укажем, что bootmgr должен использовать данную запись по-умолчанию (после истечения времени ожидания при выборе ОС, для загрузки будет используется именно эта запись).
bcdedit /default {8a7f03d0-5338-11e7-b495-c7fffbb9ccfs}
Теперь в новой записи загрузчика осталось указать пути к имеющейся на диске установленной копии Windows 10. Ранее мы определили, что в среде WinPE диску с установленной Windows присвоена буква D:. Используйте эту букву диска в следующих командах:
bcdedit.exe /set {default}device partition=d:
bcdedit.exe /set {default} osdevice partition=d:
bcdedit.exe /set {default} path Windowssystem32winload.exe
bcdedit.exe /set {default} systemroot Windows
Осталось сделать данную загрузочную запись в BCD видимой (по умолчанию она скрыта):
bcdedit.exe /displayorder {default} /addlast
Итак, мы полностью пересоздали загрузчик Windows 10 (обновили файл BCD и перезаписали загрузочный сектор MBR).
Теперь нужно сделать раздел, на котором находится файл BCD с конфигурацией загрузчика активным (BIOS передает управлению загрузчику ОС с активным MBR раздел). Допустим, разделы на вашем диске распределены так.
- Volume 0 – загрузочная/установочная флешка (ISO образ) диск, с которого вы загрузили компьютер
- Volume 1 – раздел System Reserved с BCD загрузчиком (размер 500 Мб)
- Volume 2 – раздел с файлами Windows (здесь находятся каталог Windows, Program Files, Users и т.д.)
В этом примере нужно сделать активным раздел Volume 1 (в вашем случае определите номер раздела самостоятельно). Сделать раздел активным можно с помощью diskpart:
diskpart
list disk
sel disk 0
list vol
select volume 1
(файлы bootmgr и «BootBCD» находятся на этом разделе)
active
exit
Проверьте, что раздел volume 1 теперь активный:
select vol 1
detail partition
Все верно (
Active: Yes
).
Теперь вы можете перезагрузить компьютер и убедится, что Windows загружается в штатном режиме.
16.12.2018 Windows Задать вопросНаписать пост
Разберём за что отвечал файл «boot.ini», куда он пропал и каким образом настраивать порядок загрузки в версиях Windows после 7. На самом деле окно настройки почти не изменялось, хотя сам файл постоянно переезжал и менял расширение.
Само название переводится, как «загрузка». А расширение обозначает, что это файл конфигурации. Он содержит в себе информацию о том, в каком порядке и как будет загружаться операционная система. Если в Windows XP файл boot.ini можно без труда найти в корне диска «С:» (является скрытым), то уже в Windows 7 он полностью исчез. На смену ему пришла утилита конфигурации.
Расположение параметров загрузки
Поскольку в «boot.ini» (или «boot.sdi» — для более поздних версий Windows) содержится порядок загрузки системы, а также дополнительные опции для этой процедуры, изменение параметров может повлечь практически непоправимые последствия. Не стоит изменять что-либо наугад, хотя способ изменений весьма прост: требуется найти и переделать файл. От версии операционной системы (ОС) зависит, как это делается:
- Windows XP – включаем отображение скрытых файлов. Находим «boot.ini» в корневом каталоге диска «С:» и открываем его с помощью блокнота;
- В Windows 7 и более поздних, файл расположен в папке «system32». Но имеет расширение, которое невозможно отредактировать блокнотом. Вместо него используется альтернативный метод – специальная утилита.
В Windows XP не рекомендуется предпринимать какие-либо действия и редактировать файл, кроме удаления посторонних записей.
Редактирование файла
Изменить записи с помощью блокнота в «семёрке» уже нельзя. Зато действуют 2 альтернативных способа: «msconfig», вызывающий окно с настройками системы и «bcdedit», который позволяет сделать необходимое с помощью консольных команд. Различие заключается только в графическом интерфейсе первого.
Использование msconfig
С графическим представлением проще работать. Поэтому данная утилита кажется очень удобной многим пользователям. Вызывается она следующим образом:
- Нажимаем «Win+R» для вызова окна «Выполнить».
- Вписываем в строку «msconfig».
- Открываем раздел «загрузка».
- Вносим необходимые изменения.
- Нажимаем «Применить» и «Ок».
Данное окно открывает огромное количество опций и настроек:
- Построение порядка загрузки. Просто перемещаем нужную версию ОС выше по списку.
- Тайм-аут. Определяет время, предоставленное пользователю для выбора загружаемой версии Windows.
- Безопасный режим. Имеет ряд основных настроек. Полезная опция, которая отключает загрузку программ и большинства драйверов, что помогает справиться с настройкой. Например, удалить драйвер видеокарты и установить новый.
- Опции загрузки. Устанавливают некоторые дополнительные аргументы при загрузке системы. «Без GUI» загружает систему в режиме консоли (без интерфейса). «Базовое видео» запускает режим в котором не используется драйвер видеокарты. «Журнал загрузки» записывает порядок запуска ОС. «Информация об ОС» выводит дополнительные сведения о Windows в процессе загрузки.
- Дополнительные параметры. Позволяют провести downgrade компьютера системными средствами. Опция полезна только разработчикам и «ретро-геймерам». В остальных случаях не стоит её трогать.
- Использовать по умолчанию. Указывает, что данная система будет загружаться, если не был сделан выбор.
- Удалить. Уничтожает загрузочную запись, исключая ОС из списка загрузки.
Без графической составляющей (bcdedit)
Является копией предыдущего способа с той лишь разницей, что вместо графической составляющей предстоит работать с чёрным окном консоли. Опции, по сути, такие же, отличается только порядок их включения. Вместо нажатий на галочки требуется вводить команды. Вызывается «bcdedit» следующим образом:
- Запускаем «Командную строку» от имени Администратора.
- Вводим команду «bcdedit» и нажимаем «enter».
- Пробуем изменить настройки.
Примечание: весьма полезной командой будет «bcdedit /?» — она выводит справку по работе с консольной версией настройки порядка загрузки.
Список наиболее полезных аргументов для данной команды:
- /v отображает полные описания установленных копий Windows;
- /bootsequence указывает, что Диспетчер загрузки будет использовать цикл записей единожды;
- /default устанавливает копию Windows для загрузки по умолчанию;
- /timeout выставляет время на выбор ОС;
- /deletevalue удаляет копию записанной команды из хранилища.
Остальные значения чуть сложнее в использовании. Впрочем, данный способ тоже не самый простой. Куда как удобнее использовать «msconfig».
Ещё один способ
Есть способ о существовании которого следует упомянуть. Это редактирование записей реестра. Вот только ошибки в таком редактировании могут стать фатальными и единственным способом исправить что-либо станет полная переустановка Windows. Причем при наличии двух предыдущих утилит правку реестра лучше не применять.
Reader Interactions
Содержание
- Что за файл boot.ini, где его найти и как настроить
- Boot.ini – назначение файла
- Расположение параметров загрузки
- Редактирование файла
- Использование msconfig
- Без графической составляющей (bcdedit)
- Ещё один способ
- Энциклопедия Windows
- Скрытая папка Boot с загрузочными файлами Windows 7
- Отображение скрытых папок и файлов
- Отображение скрытого раздела
- Содержание:
- ↑ Восстановление загрузчика Windows 7
- ↑ Восстановление загрузчика Windows 7 автоматически
- Восстановление загрузчика Windows 7 вручную
- ↑ Восстановление загрузчика Windows 7 вручную (способ №2)
- ↑ Как ещё можно восстановить загрузчик Windows 7
- Восстановление запуска Windows 7: поднимаем загрузчик
- Способ 1: С помощью стандартного меню
- Способ 2: Через загрузочную флешку или диск
- Способ 3: Командная строка (fixmbr и fixboot)
- Способ 4: Активация раздела MBR
- Способ 5: Командная строка (Bootrec.exe)
- Способ 6: Системный
- Способ 7: Есть две операционные системы
- Способ 8: Ошибка «NTLDR is missing»
- Способ 9: Ошибка «BOOTMGR is missing»
- Восстановление загрузчика Windows 7 — 3 способа
- Выполнение восстановления Windows 7 автоматически средством системы
- Восстановление загрузчика Windows 7 с помощью утилиты Bootrec
- Как восстановить загрузчик Windows 7 командной строки с помощью утилиты BCDboot
- Выводы статьи
Что за файл boot.ini, где его найти и как настроить
Разберём за что отвечал файл «boot.ini», куда он пропал и каким образом настраивать порядок загрузки в версиях Windows после 7. На самом деле окно настройки почти не изменялось, хотя сам файл постоянно переезжал и менял расширение.
Boot.ini – назначение файла
Само название переводится, как «загрузка». А расширение обозначает, что это файл конфигурации. Он содержит в себе информацию о том, в каком порядке и как будет загружаться операционная система. Если в Windows XP файл boot.ini можно без труда найти в корне диска «С:» (является скрытым), то уже в Windows 7 он полностью исчез. На смену ему пришла утилита конфигурации.
Расположение параметров загрузки
Поскольку в «boot.ini» (или «boot.sdi» — для более поздних версий Windows) содержится порядок загрузки системы, а также дополнительные опции для этой процедуры, изменение параметров может повлечь практически непоправимые последствия. Не стоит изменять что-либо наугад, хотя способ изменений весьма прост: требуется найти и переделать файл. От версии операционной системы (ОС) зависит, как это делается:
В Windows XP не рекомендуется предпринимать какие-либо действия и редактировать файл, кроме удаления посторонних записей.
Редактирование файла
Изменить записи с помощью блокнота в «семёрке» уже нельзя. Зато действуют 2 альтернативных способа: «msconfig», вызывающий окно с настройками системы и «bcdedit», который позволяет сделать необходимое с помощью консольных команд. Различие заключается только в графическом интерфейсе первого.
Использование msconfig
С графическим представлением проще работать. Поэтому данная утилита кажется очень удобной многим пользователям. Вызывается она следующим образом:
Данное окно открывает огромное количество опций и настроек:
Без графической составляющей (bcdedit)
Является копией предыдущего способа с той лишь разницей, что вместо графической составляющей предстоит работать с чёрным окном консоли. Опции, по сути, такие же, отличается только порядок их включения. Вместо нажатий на галочки требуется вводить команды. Вызывается «bcdedit» следующим образом:
Примечание: весьма полезной командой будет «bcdedit /?» — она выводит справку по работе с консольной версией настройки порядка загрузки.
Список наиболее полезных аргументов для данной команды:
Остальные значения чуть сложнее в использовании. Впрочем, данный способ тоже не самый простой. Куда как удобнее использовать «msconfig».
Ещё один способ
Есть способ о существовании которого следует упомянуть. Это редактирование записей реестра. Вот только ошибки в таком редактировании могут стать фатальными и единственным способом исправить что-либо станет полная переустановка Windows. Причем при наличии двух предыдущих утилит правку реестра лучше не применять.
Источник
Энциклопедия Windows
Все об использовании и настройке Windows
Скрытая папка Boot с загрузочными файлами Windows 7
Все загрузочные файлы Windows 7 находятся в папке Boot, которая, как правило, расположена на диске С:. Однако, папка надежно спрятана, чтобы наши шаловливые ручки до нее не дотянулись. Не удивительно, от содержимого папки зависит, загрузится ли Windows или нет.
Однако бывают ситуации, когда изменить метод загрузки Windows 7 очень хочется. Например, при работе с драйверами без цифровой подписи может понадобится такая программа, как ReadyDriverPlus. Для работы этой программе нужно указать путь к папке C:Boot. Вы заходите на диск C: и…в упор эту папку не наблюдаете. Ее там нет, просто шаром покати. И как же ее найти?
Есть два простых варианта, рассматриваемых далее.
Отображение скрытых папок и файлов
Данный рецепт прекрасно известен многим пользователям Windows 7, ну да будет не лишним напомнить про него еще раз. По умолчанию в Windows 7 системные файлы и папки спрятаны – оно и понятно, ну кому нужно, чтобы какой-то чайник залез куда не надо и испортил все что мог? Впрочем, файлы и папки спрятаны совсем недалеко.
Вот теперь не осталось у Windows ни одной папки или файла, скрытого от ваших глаз. Зайдите на диск С:. Теперь в нем появилась куча скрытых папок, с которыми лучше не баловаться!
Отображение скрытого раздела
Ну хорошо, я вижу все скрытые папки, но папки Boot по прежнему нет? Где моя папка Boot, сволочи, отдайте мои загрузочные файлы!
Спокойно – сейчас найдем. Раз ее нет в скрытых папках, значит она прячется…в скрытом разделе Windows 7. Злобные чебуреки из Microsoft спрятали от нас этот раздел, но мы сейчас это исправим. Размер раздела всего 100 Мбайт, и найти его можно следующим образом.
Нажмите комбинацию клавиш и введите в открывшемся окне команду diskmgmt.msc. Откроется окно Управление дисками. В этом окне нам нужен скрытый раздел (подписанный как “Зарезервировано системой”). А вот и он, смотрим картинку.
Этот раздел прячется и его не видно. Чтобы вывести его на божий свет, щелкните на разделе правой кнопкой и выберите команду Изменить букву диска или путь к диску.
Откроется новое окно, в котором щелкните на кнопке Добавить и выберите свободную букву диска, вроде Y: или любой другой.
Теперь проверяем: выберите команду Пуск > Компьютер, вот и он – наш ранее скрытый раздел.
Заходим в него и что я вижу? Та самая папочка Boot, в которой и находятся загрузочные файлы для Windows 7.
Йес, миссия выполнена, я крут и вы все тоже молодцы 😉
Источник
Содержание:
↑ Восстановление загрузчика Windows 7
Привет друзья! Самое главное не волнуйтесь, проблема у вас несложная и в принципе простое средство «Восстановление запуска Windows 7» описанное в нашей статье должно помочь, но! Если данная статья вам не поможет, то должны помочь две другие:
в этих статьях описаны ещё несколько хороших способов восстановить загрузку вашей операционной системы, кроме них есть ещё одна Как восстановить систему Windows 7, так что пробуйте и просто так не сдавайтесь.
Напомню вам, что нельзя устанавливать старшую операционную систему после младшей, Windows 7 ни в коем случае не будет загружаться после установки на компьютер Windows XP, так как последняя при установке переписывает главную загрузочную запись (MBR) на себя. Поэтому вы установили дополнительный менеджер загрузки EasyBCD, который используется для настройки загрузки нескольких операционных систем и имеет в свою очередь свой загрузчик.
↑ Восстановление загрузчика Windows 7 автоматически
далее Восстановление системы.
Происходит недолгий поиск установленных систем Windows и анализ проблем мешающих их загрузке
Обычно проблемы быстро бывают найдены и среда восстановления предлагает устранить их автоматически. Нажмите на кнопку «Исправить и перезапустить», после этого компьютер перезагрузится и загрузка Windows 7 будет восстановлена.
Если проблемы с загрузкой системы продолжатся или вам не будет предложено исправить проблемы автоматически, значит в этом окне нужно выбрать операционную систему, которую нужно восстановить, она у вас скорее всего одна и Далее.
Восстановление загрузчика Windows 7 вручную
Если и это средство не поможет, выбираем средство Командная строка
lis vol (выводим список разделов жёсткого диска и видим, что «Том 1» является скрытым разделом System Reserved (Зарезервировано системой), объём 100 Мб, на нём должны располагаться файлы загрузки Windows 7 и именно его нужно сделать активным). Также видим раздел с установленной Windows 7, у него буква D:, объём 60 Гб.
sel vol 1 (выбираем Том 1)
activ (делаем его активным)
exit (выходим из diskpart)
bcdboot D:Windows (где D: раздел с установленной Windows 7), данная команда восстанавливает файлы загрузки Windows 7 (файл bootmgr и файлы конфигурации хранилища загрузки (BCD))!
«Файлы загрузки успешно созданы»
↑ Восстановление загрузчика Windows 7 вручную (способ №2)
В окне командной строки вводим команду Bootrec и Enter
Операция успешно завершена. В первый сектор загрузочного раздела записана новая загрузочная запись.
Вторая команда Bootrec.exe /FixBoot записывает новый загрузочный сектор.
Операция успешно завершена. Exit. Далее пробуем загрузить нашу Windows 7.
Кроме вышеприведённого способа, есть ещё один, вводим в командной строке bootsect /NT60 SYS, основной загрузочный код, так же будет обновлён.
↑ Как ещё можно восстановить загрузчик Windows 7
Том «Зарезервировано системой» будет отмечен как активный. Нажимаем ОК.
То же самое делаем с Диском 2. Программа Acronis Disk Director работает в режиме отложенной операции, чтобы изменения вступили в силу нажимаем кнопку «Применить ожидающие операции»
Источник
Восстановление запуска Windows 7: поднимаем загрузчик
ВНИМАНИЕ! Все способы представленные в статье проверены специалистом.
Всем привет! Сегодня мы поговорим про восстановление загрузчика в Windows 7. В итоге вы можете наблюдать только один симптом – система отказывается загружаться. Это может произойти из-за поломки системных файлов, которые отвечают за загрузку основных модулей системы. Сам часто сталкивался с данной проблемой, поэтому я решил написать подробную инструкцию.
Вытащите из компьютера или ноутбука все флешки и диски. Если после этого система загрузится, то проверьте загрузочный BOOT MENU в BIOS – вам нужно выставить приоритет загрузки жесткого диска (HDD или SSD). Далее я приведу несколько способов, чтобы произвести восстановление загрузки в «семерке». Если у вас будут какие-то вопросы, то пишите в комментариях.
Способ 1: С помощью стандартного меню
Если вы не знаете как восстановить загрузчик, то можно попробовать зайти в безопасный режим. Возможно восстановление загрузчика вообще не потребуется, а система не загружается из-за других причин, поэтому это нужно проверить.
ПРИМЕЧАНИЕ! Если окно безопасного режима не появилось, или что-то пошло не так – перейдите к следующему способу.
При загрузке зажмите кнопку «F8» на клавиатуре. После этого вы должны увидеть вот такое меню. Для начала нажимаем на первый пункт, который постарается восстановить загрузку ОС. Если ничего не получилось, то нажимаем «Безопасный режим».
Если вам удалось запустить «Безопасный режим», делаем следующее:
В самом конце система один раз перезагрузится и постарается восстановить системные файлы на тот период. Восстановление будет идти только на системном диске. Если данный способ не дал результата, то скорее всего есть поломка в загрузочном файле MBR. Не переживайте – сейчас мы его восстановим.
Способ 2: Через загрузочную флешку или диск
Восстановить загрузку Windows можно с помощью установочного диска или флешки. Инструкцию по созданию флешки или диска можете посмотреть тут. Чтобы восстановить загрузку – вам понадобится загрузочный носитель с любой версией Windows 7, но лучше, конечно, устанавливать именно ту версию, которая стоит у вас.
СОВЕТ! Смотрите подсказку на основном экране, для «заморозки» начального экрана нажмите на кнопку «Pause».
Как только вы попадете в меню установщика – вам нужно выбрать ссылку «Восстановление системы».
Сначала загрузочный носитель сам постарается найти и решить проблему с загрузкой. По идее он должен её обнаружить самостоятельно.
Если такое произойдет, то вылезет окошко с предупреждением, что вашей системе «плохо» и её нужно вылечить. Нажимаем на кнопку для исправления и перезапуска. Если ничего не помогает, или вообще такое окошко не вылезет, идем дальше.
Чтобы выполнить восстановление запуска – нужно выбрать именно первую галочку. Также убедитесь, что система выбрала именно вашу ОС на жестком диске. Нажмите «Далее»
Теперь перед нами появится вот такое меню. В первую очередь пробуем сделать автоматическое «Восстановление запуска» – просто выбираем этот пункт. Далее ждем пока процедура закончится, а ПК перезагрузится.
Способ 3: Командная строка (fixmbr и fixboot)
Если прошлый способ не дал результата, то попробуем выполнить восстановление из командной строки. Проделываем все те же действия, чтобы появилось меню восстановления. Далее выбираем раздел «Командная строка».
Откроется черная консоль, где нужно будет поочередно прописать всего две команды:
bootrec /fixmbr
bootrec /fixboot
Эти команды берут системные файлы, которые отвечают за загрузку системы с загрузочной флешки или диска, и перезаписывает их на ваш жесткий диск. Поэтому даже если они побиты программами или вирусами – после данной процедуры система должна нормально загружаться.
Способ 4: Активация раздела MBR
Если это не поможет, то снова запустите командную строку и пропишите следующие команды:
Выводим список всех разделов:
Нас интересует два раздела. Первый – имеет размер в 100 мегабайт и содержит в себе все загрузочные модули Виндовс. Второй – это диск на котором расположена ваша ОС. Диск с вашей операционной системой вы должны обнаружить самостоятельно – смотрите по размеру. Также Имя (буква) диска может отличаться от фактического, поэтому на него даже не смотрим.
Теперь нам надо выбрать раздел с загрузочными модулями (используем цифру тома):
sel vol 1
activ
exit
Вписываем команду с буквой тома, где расположена у вас винда. В моем случае это диск «D», но у вас может быть совершенно другая буква:
Способ 5: Командная строка (Bootrec.exe)
Опять открываем волшебную консоль через загрузочный носитель и прописываем команды:
Bootrec.exe /FixMbr
Bootrec.exe /FixBoot
exit
В самом конце перезагружаемся.
Способ 6: Системный
В общем если у нас не получается восстановить файл вручную, то мы можем заставить это сделать загрузочный носитель. Для этого нам нужно сначала удалить файл с загрузочными модулями, который занимает 100 МБ. А потом зайти через стандартное восстановление, через загрузочный диск – далее система сама себя реанимирует.
Из-под командной строки прописываем:
diskpart
list vol
Выбираем раздел с загрузочными модулями:
sel vol 1
format fs=ntfs
activ
Два раза прописываем команду:
Далее система не сможет загрузиться, так как файл мы удалили, поэтому опять загружаемся с носителя. Программа предложит исправить загрузку – соглашаемся и перезагружаемся.
Если система загрузится – то хорошо, если он все также будет выдавать ошибку или зависать, то опять подгружаемся с носителя, и уже из списка способов выбираем «Восстановление запуска».
Способ 7: Есть две операционные системы
Данный способ помогает, когда у вас существует две операционные системы, но загружается совершенно другая. Также могут быть проблемы с загрузкой обоих, особенно после установки второй ОС. Мы сейчас попробуем сделать обе ОС активными, чтобы вы смогли выбирать их при загрузке. Опять через загрузочную флешку заходим в консоль и прописываем волшебные заклинания:
Bootrec /ScanOs
Bootrec.exe /RebuildBcd
После этого система предложит записать обе системы в меню загрузки. В обоих случаях нужно ввести в консоль обычную букву «Y» и нажать «Enter».
Прежде чем выходить командной «exit» – введите ещё одну команду:
Она поможет реанимировать некоторые BOOT модули.
Способ 8: Ошибка «NTLDR is missing»
Если при загрузке системы вы видите вот такое окошко: «NTLDR is missing Press ctrl+alt+del to restart», – то не спешите паниковать. Данная ошибка возникает достаточно редко на «семерке» и обычно файл NTLDR находится на других версиях «окон». Но не будем вдаваться в суть проблемы и начнем её решать. Как вы уже догадались, решается она также – через консоль. Запускать вы её уже научились, так что про это писать не буду.
После запуска вводим команды:
diskpart
list volume
Тут нам нужно опять найти букву, которой присвоен системный диск. В моем случае это опять буковка «D».
Exit
bcdboot.exe D:Windows
Опять же нужно вписать букву именно системного диска – смотрите по вашему объему.
Итак, загрузочный модуль мы создали. Теперь нужно его активировать. Для этого вводим команды:
Команда выводит все подключённые физические носители. У меня он всего один, но у вас может быть два – вам нужно выбрать тот, на котором загружена система.
sel disk *НОМЕР ЖЕСТКОГО ДИСКА*
list partition
Здесь выведутся именно разделы выбранного вами жёсткого диска. Выбираем раздел с объёмом 100 мегабайт и вписываем в следующую команду номер:
sel part 1
active
exit
Способ 9: Ошибка «BOOTMGR is missing»
При загрузке вы можете наблюдать вот такое сообщение: «BOOTMGR is missing. Press Ctrl+Alt+Del to restart». Как я уже и говорил, в системе есть так называемый загрузочный файл MGR, который как раз так и называется «BOOTMGR». Весит он, как вы поняли, всего 100 МБ. Иногда данный файл может ломаться или вообще удаляться вирусами. Тогда вы и видите ошибку, что файл «BOOTMGR» – не найден.
Тут есть два варианта. Первый – он настолько поломан, что не может запустить систему. Второй – он удален или перенесен в другой раздел. Как вариант – система могла выбрать в качестве загрузки другой раздел, диск или устройство. По решению именно этой проблемы смотрим инструкцию по этой ссылке.
Источник
Восстановление загрузчика Windows 7 — 3 способа
Восстановление загрузчика Windows 7 — выполнение действий для восстановления работоспособности операционной системы, после возникновения неполадок при загрузке Windows. Из-за сбоя системы, пользователь может потерять данные, личные файлы, находящиеся на компьютере.
В один прекрасный момент времени, операционная система не сможет загрузиться на компьютере. На экране появляются различные сообщения (не всегда на русском языке), в которых говорится о проблеме с загрузкой Windows.
Основные причины возникновения неполадок с загрузчиком Windows 7:
Проблему с загрузчиком необходимо решить, иначе не получится воспользоваться Windows, потому что система не запускается на компьютере. Неполадки можно устранить радикальным способом: заново установить Windows 7 на ПК.
Если есть резервная копия системы, созданная средством системы, или при помощи сторонних программ нужно выполнить восстановление из резервного образа Windows, созданного заранее. Многие пользователи, к сожалению, не удаляют должного внимания резервному копированию системы, поэтому эти способы им не подойдут.
Как восстановить загрузчик Windows 7? Для восстановления файлов загрузки операционной системы воспользуйтесь встроенными средствами Windows: автоматическое восстановление запуска, а также при помощи утилит BootRec и BCDboot, входящих в состав операционной системы, запускаемых в командной строке.
Перед использованием средств операционной системы, необходимо узнать разметку жесткого диска MBR или GPT. Современные компьютеры имеют стиль разметки жесткого диска GPT и новый БИОС — UEFI, а во времена Windows 7, на дисках использовалась разметка MBR, и теперь уже устаревший BIOS. На некоторых компьютерах, Windows 7 с разрядностью 64 бит, установлена на диски с UEFI и GPT, а в основном, на ПК с Windows 7 используется разметка MBR (главная загрузочная запись).
В этой статье мы рассмотрим инструкции, как в Windows 7 восстановить загрузчик системными средствами: сначала выполним автоматическое восстановление, а затем попробуем восстановить загрузчик из командной строки.
Для выполнения операций по восстановлению загрузчика, потребуется либо Диск восстановления Windows 7, либо установочный DVD диск с операционной системой, или загрузочная флешка Windows 7. Загрузочные носители нужны для получения возможности загрузить на персональном компьютере среду восстановления Windows RE (Windows Recovery Environment), с помощью которой можно попытаться решить проблему с невозможностью запуска системы.
Выполнение восстановления Windows 7 автоматически средством системы
Самый простой способ: автоматическое восстановление загрузочного раздела на жестком диске средством операционной системы. Это действие происходит без участия пользователя, необходимо только загрузится на компьютере с загрузочного диска.
Сразу после запуска компьютера, при помощи клавиш клавиатуры нужно войти в загрузочное меню (Boot Menu) для выбора внешнего устройства для загрузки: DVD диска или USB флешки. Какие клавиши следует нажимать, зависит от производителя оборудования, узнайте заранее об этом.
Другой способ: можно войти в BIOS и выставить там приоритет загрузки с подключенного устройства: USB накопителя или DVD диска.
На этом примере, я использую установочный диск Windows 7, все действия с загрузочной флешки выполняются подобным образом.
В первом окне программы установки Windows нажмите на кнопку «Далее».
В окне с предложением начать установку операционной системы на компьютер, в левом нижнем углу нажмите на «Восстановление системы».
В открывшемся окне «Параметры восстановления системы» запустится поиск установленных систем.
Через некоторое время появится сообщение о том, что обнаружены проблемы в параметрах загрузки компьютера.
Нажмите на «Подробности» для того, чтобы посмотреть описание исправления.
Для запуска автоматического устранения неполадок с загрузкой системы, нажмите на кнопку «Исправить и перезапустить».
После восстановления загрузчика, операционная система Windows 7 снова загрузится на компьютере.
Автоматическое устранение проблем средствами системы можно запустить немного по-другому:
Если проблема автоматически не решена, перейдите к следующим способам, в которых пользователю придется вручную вводить команды в командной строке Windows.
Восстановление загрузчика Windows 7 с помощью утилиты Bootrec
Следующий способ предполагает восстановление загрузчика Windows 7 через командную строку. Для этого мы используем утилиту Bootrec.exe. Это способ работает только с дисками, имеющими основную загрузочную запись MBR.
С загрузочного диска нужно войти в среду восстановления Windows, описанным выше способом.
В окне «Параметры восстановления системы» нажмите на опцию «Командная строка».
В утилите Bootrec.exe используются следующие базовые команды:
Команда FixMbr применяется для исправления основной загрузочной записи, а также для удаления из главной загрузочной записи некорректного кода.
Команда FixBoot используется при следующих условиях: повреждение загрузочного сектора, загрузочный сектор заменен на нестандартный загрузочный сектор, на компьютер с Windows 7 была установлена более ранняя версия Windows (Windows XP или Windows Vista).
Команда ScanOS служит для поиска на всех дисках операционных систем, совместимых с Windows 7. В результате, будут отображены все записи, относящиеся к другим операционным системам, установленным на компьютере, которые не отображаются в меню диспетчера загрузки.
Команда RebuildBcd позволяет обнаружить и добавить в хранилище конфигурации загрузки, установленные на компьютере системы. Параметр используется для полного перестроения конфигурации хранилища загрузки системы.
В окне интерпретатора командной строки введите команду (после ввода команд в командной строке нажимайте на клавишу «Enter»):
Если проблема не устранена, возможно, понадобится ввод следующей команды:
Остальные команды применяются, если на компьютере установлено несколько операционных систем.
Закройте командную строку, а в окне «Параметры восстановления системы» нажмите на кнопку «Перезагрузка».
Как восстановить загрузчик Windows 7 командной строки с помощью утилиты BCDboot
При помощи утилиты bcdboot.exe можно восстановить загрузчик Windows 7 на компьютерах с MBR или GPT стилями разметки жесткого диска.
Загрузитесь со съемного устройства пройдите путь до окна с выбором способа восстановления системы, а затем запустите командную строку. Другой вариант: в самом первом окне нажмите на клавиатуре на клавиши «Shift» + «F10» для входа в окно командной строки.
В окне командной строки введите команду для запуска утилиты DiskPart:
Для вывода информации о дисках компьютера введите следующую команду:
Нам нужно узнать букву диска (имя тома), на котором установлена операционная система.
Имя тома (буква диска) в утилите Diskpart может отличаться от буквы диска в Проводнике. Например, в моем случае, в Проводнике системный раздел имеет букву «C», а в diskpart он обозначен буквой «E».
Для выхода из утилиты diskpart введите:
Далее в окне интерпретатора командной строки введите команду:
В этой команде: «X» — буква диска, на котором установлена операционная система. В моем случае, это буква «E», у вас может быть другое имя тома (диска).
Закройте командную строку.
В окне «Параметры восстановления системы» нажмите на кнопку для перезагрузки компьютера.
Выводы статьи
При возникновении неполадок с загрузчиком Windows 7, необходимо восстановить файлы загрузки системы, загрузившись на компьютере с загрузочного диска Windows. Восстановить поврежденные или отсутствующие файлы можно при помощи средств операционной системы: автоматическим устранением неполадок загрузки Виндовс, используя утилиты Bootrec и BCDboot, запускаемые из командной строки в среде восстановления.
Источник
Не для кого не секрет. что на один компьютер/ ноутбук можно установить две и более операционных систем. Для этого можно установить дополнительные жесткие диски на компьютер/ ноутбук, а можно просто разделить жесткий диск на несколько логических и на каждый из них установить операционную систему. После установки второй и последующих ОС Windows, при загрузке компьютера вы получите меню загрузки операционных систем. Именно о изменении параметров загрузки пойдет речь в этой статье.
Для тех, кто не понимает о чем идет речь, покажу все в картинках:
Так выглядит меню загрузки при установки последней ОС Windows 8.
А так выглядит меню при установке последней ОС Windows Vista, 7.
До Windows Vista (Windows 2000, XP) все изменения в загрузки вносились в файл boot.ini. Boot.ini представляет собой системный файл, содержащий сведения об установленных на компьютере операционных системах Windows. Эти данные отображаются во время загрузки компьютера/ ноутбука. Для того, что бы изменить параметры загрузки, достаточно открыть файлы boot.ini любым текстовым редактором и внести изменения.
Начиная с операционной системы Windows Vista (Windows 7, 8, 10) файл boot.ini заменен файлом данных конфигурации загрузки (BCD). Этот файл более универсален, чем boot.ini, и его можно использовать на платформах, в которых для загрузки системы используются другие средства, а не BIOS.
Но как вносить изменения в параметры загрузки в Windows Vista 7, 8, 10? Для этого есть два способа предусмотренные разработчиками Windows:
1 С помощью графического интерфейса;
2 С помощью командной строки.
Изменить параметры загрузки с помощью графического интерфейса в Windows Vista, 7, 8.
Что бы воспользоваться этим способом нажмите сочетание клавиш «Win» + «R», В строке «Выполнить» наберите msconfig, и нажмите клавишу Enter.
Далее выберите вкладку «Загрузка».
Нужно сказать, что этим способом доступно довольно мало настроек, но большинство пользователям этого будет вполне достаточно. Данный инструмент позволит:
1) Получить информацию о текущей и загружаемой по умолчанию системах.
2) Отредактировать время (таймаут). По истечении этого времени будет загружена операционная система, определенная для загрузки по умолчанию без вмешательства пользователя. Для этого укажите время (в секундах) в поле «Таймаут».
3) Изменить систему, загружаемую по умолчанию. Для этого выберите, какую систему хотите загружать по умолчанию (без внешнего вмешательства) и нажмите кнопку «Использовать по умолчанию».
4) Удалить ненужную запись из меню загрузки. Выберите запись, которую хотите удалить и нажмите кнопку «Удалить».
Все изменения вступят после нажатия клавиши «Ок» и перезагрузки системы.
Изменить параметры загрузки с помощью командной строки (bcdedit) в Windows Vista, 7, 8.
Более широкие возможности для изменения параметров загрузки предоставляет утилита bcdedit. Bcdedit — это средство командной строки, предназначенное для управления данными конфигурации загрузки. Оно может использоваться для различных задач: создание новых хранилищ, изменение существующих хранилищ, добавление параметров меню загрузки и многого другого.
Для того, что бы познакомится с этой командой поближе, запустите командную строку с правами администратора и выполните команду:
/bcdedit /?
В этой статье я бы хотел более подробно остановиться на примерах использования команды bcdedit.
Пример использования bcdedit.
Прежде чем начинать вносить изменения в загрузчике Windows, предварительно нужно создать его резервную копию. Для этого создайте на любом диске папку BootBackup и введите в командной строке следующую команду (командная строка должна быть запущена от имени Администратора):
bcdedit /export D:BootBackupbcd
Где D: диск размещения папки BootBackup.
Если вы чувствуете, что что то пошло не так, для того что бы вернуть все в изначальное состояние выполните команду восстановления BCD:
bcdedit /import D:BootCopybcd
Где D: диск размещения папки BootBackup.
Следующим шагом выясним основную информацию о своей BCD. Для этого выполните команду bcdedit.
Где:
идентификатор – ID той или иной записи;
device – показывает раздел, на котором расположены файлы загрузки (это может быть операционная система или папка BOOT);
osdevice – показывает раздел, на котором расположены системные файлы операционной системы. Обычно, значения параметров device и osdevice равны;
path – если device определял раздел диска, который содержит файлы операционной системы, то этот параметр определяет остальной путь к загрузчику операционной системы;
default – показывает ID операционной системы, загружаемой по умолчанию, если операционная система, в которой запустили командную строку, загружается по умолчанию, параметру default присваивается значение {current};
displayorder – показывает порядок, в котором расположены записи о загружаемых системах;
timeout – таймаут (смотри выше), значение показано и устанавливается в секундах;
locale – указывает язык загрузочного меню или меню дополнительных параметров загрузки;
description – показывает название операционной системы, отображающееся в меню загрузки.
Как изменить операционную систему, загружаемую по умолчанию.
Укажите значение /default и идентификатор ОС, которая должна загружаться по умолчанию.
bcdedit /default {ID}
Теперь операционная система с указанным {ID} будет загружаться по умолчанию.
Как изменить значение задержки загрузки
Чтобы изменить значение задержки, по истечению которого начнется загрузка операционной системы, выполните такую команду:
bcdedit /timeout XX
где XX – число в секундах, по умолчанию используется 30 сек.
Удаление записи из BCD и диспетчера загрузки выполняется с помощью команды:
bcdedit /delete {ID}
Есть особенность выполнения команды: если в качестве ID указывается известная запись, например {ntldr}, то команда должна выполняться с ключом /f:
bcdedit /delete {ntldr} /f
Если же ID записывается в буквенно- цифровом коде, ключ /f не нужен.
Для того, что бы получить более подробную информацию о возможностях утилиты bcdedit, необходимо использовать справку bcdedit /?
Я очень надеюсь, моя статья помогла Вам! Просьба поделиться ссылкой с друзьями:
Что за файл boot.ini, где его найти и как настроить
Разберём за что отвечал файл «boot.ini», куда он пропал и каким образом настраивать порядок загрузки в версиях Windows после 7. На самом деле окно настройки почти не изменялось, хотя сам файл постоянно переезжал и менял расширение.
Boot.ini – назначение файла
Само название переводится, как «загрузка». А расширение обозначает, что это файл конфигурации. Он содержит в себе информацию о том, в каком порядке и как будет загружаться операционная система. Если в Windows XP файл boot.ini можно без труда найти в корне диска «С:» (является скрытым), то уже в Windows 7 он полностью исчез. На смену ему пришла утилита конфигурации.
Расположение параметров загрузки
Поскольку в «boot.ini» (или «boot.sdi» — для более поздних версий Windows) содержится порядок загрузки системы, а также дополнительные опции для этой процедуры, изменение параметров может повлечь практически непоправимые последствия. Не стоит изменять что-либо наугад, хотя способ изменений весьма прост: требуется найти и переделать файл. От версии операционной системы (ОС) зависит, как это делается:
- WindowsXP – включаем отображение скрытых файлов. Находим «boot.ini» в корневом каталоге диска «С:» и открываем его с помощью блокнота;
- В Windows7 и более поздних, файл расположен в папке «system32». Но имеет расширение, которое невозможно отредактировать блокнотом. Вместо него используется альтернативный метод – специальная утилита.
В Windows XP не рекомендуется предпринимать какие-либо действия и редактировать файл, кроме удаления посторонних записей.
Редактирование файла
Изменить записи с помощью блокнота в «семёрке» уже нельзя. Зато действуют 2 альтернативных способа: «msconfig», вызывающий окно с настройками системы и «bcdedit», который позволяет сделать необходимое с помощью консольных команд. Различие заключается только в графическом интерфейсе первого.
Использование msconfig
С графическим представлением проще работать. Поэтому данная утилита кажется очень удобной многим пользователям. Вызывается она следующим образом:
- Нажимаем «Win+R» для вызова окна «Выполнить».
- Вписываем в строку «msconfig».
- Открываем раздел «загрузка».
- Вносим необходимые изменения.
- Нажимаем «Применить» и «Ок».
Данное окно открывает огромное количество опций и настроек:
- Построение порядка загрузки. Просто перемещаем нужную версию ОС выше по списку.
- Тайм-аут. Определяет время, предоставленное пользователю для выбора загружаемой версии Windows.
- Безопасный режим. Имеет ряд основных настроек. Полезная опция, которая отключает загрузку программ и большинства драйверов, что помогает справиться с настройкой. Например, удалить драйвер видеокарты и установить новый.
- Опции загрузки. Устанавливают некоторые дополнительные аргументы при загрузке системы. «Без GUI» загружает систему в режиме консоли (без интерфейса). «Базовое видео» запускает режим в котором не используется драйвер видеокарты. «Журнал загрузки» записывает порядок запуска ОС. «Информация об ОС» выводит дополнительные сведения о Windows в процессе загрузки.
- Дополнительные параметры. Позволяют провести downgrade компьютера системными средствами. Опция полезна только разработчикам и «ретро-геймерам». В остальных случаях не стоит её трогать.
- Использовать по умолчанию. Указывает, что данная система будет загружаться, если не был сделан выбор.
- Удалить. Уничтожает загрузочную запись, исключая ОС из списка загрузки.
Без графической составляющей (bcdedit)
Является копией предыдущего способа с той лишь разницей, что вместо графической составляющей предстоит работать с чёрным окном консоли. Опции, по сути, такие же, отличается только порядок их включения. Вместо нажатий на галочки требуется вводить команды. Вызывается «bcdedit» следующим образом:
- Запускаем «Командную строку» от имени Администратора.
- Вводим команду «bcdedit» и нажимаем «enter».
- Пробуем изменить настройки.
Примечание: весьма полезной командой будет «bcdedit /?» — она выводит справку по работе с консольной версией настройки порядка загрузки.
Список наиболее полезных аргументов для данной команды:
- /v отображает полные описания установленных копий Windows;
- /bootsequence указывает, что Диспетчер загрузки будет использовать цикл записей единожды;
- /default устанавливает копию Windows для загрузки по умолчанию;
- /timeout выставляет время на выбор ОС;
- /deletevalue удаляет копию записанной команды из хранилища.
Остальные значения чуть сложнее в использовании. Впрочем, данный способ тоже не самый простой. Куда как удобнее использовать «msconfig».
Ещё один способ
Есть способ о существовании которого следует упомянуть. Это редактирование записей реестра. Вот только ошибки в таком редактировании могут стать фатальными и единственным способом исправить что-либо станет полная переустановка Windows. Причем при наличии двух предыдущих утилит правку реестра лучше не применять.
Источник
Общие сведения о файле Boot.ini
в этом разделе описаны параметры загрузки, поддерживаемые в Windows XP и Windows Server 2003. если вы изменяете параметры загрузки для современных версий Windows, см. раздел варианты загрузки в Windows Vista и более позднихверсиях.
файл Boot.ini — это текстовый файл, содержащий параметры загрузки для компьютеров с операционной системой BIOS, работающей под управлением NT, до Windows Vista. Он находится в корне системного раздела, обычно c:Boot.ini. В следующем примере показано содержимое типичного файла Boot.ini.
Boot.ini имеет два основных раздела:
Раздел [boot loader] содержит параметры, которые применяются ко всем загрузочным записям в системе. Параметры включают время ожидания, значение времени ожидания в меню загрузки и по умолчаниюрасположение операционной системы по умолчанию.
В следующем примере показан раздел [boot loader] Boot.ini.
Раздел [Operating Systems] состоит из одной или нескольких загрузочных записей для каждой операционной системы или загрузочной программы, установленной на компьютере.
Загрузочная запись — это набор параметров, определяющих конфигурацию нагрузки для операционной системы или загрузочной программы. Загрузочная запись указывает операционную систему или загрузочную программу, а также расположение файлов. Он также может включать параметры, которые настраивают операционную систему или программу.
в следующем примере показан раздел [operating systems] Boot.ini на компьютере с двумя операционными системами, microsoft Windows XP и microsoft Windows 2000. Он имеет две загрузочные записи — по одной для каждой операционной системы.
Каждая загрузочная запись содержит следующие элементы:
Расположение операционной системы. Boot.ini использует соглашение об именовании Advanced RISC Computing (ARC) для вывода пути к разделу диска и каталогу, в котором находится операционная система. Пример:
Понятное имя загрузочной записи. Понятное имя представляет загрузочную запись в меню загрузки. Понятное имя заключено в кавычки и представляет загрузочную запись в меню загрузки. Пример:
Параметры записи загрузки, также известные как Параметры загрузки или Параметры загрузки , включают, отключают и настраивают функции операционной системы. Параметры загрузки похожи на параметры командной строки, каждая из которых начинается со знака косой черты (/), например /Debug. Для каждой загрузочной записи можно установить ноль или более параметров загрузки.
Источник
Файл BOOT.INI: для чего он нужен, где его найти и как отредактировать
BOOT.INI — это внутренний файл Windows с параметрами запуска. К нему обращается ОС, когда вы включаете компьютер. Если вас не устраивают изначальные настройки запуска, их можно изменить. Нужно лишь внести изменения в этот файл. Но отыскать его непросто: системные папки часто скрыты от глаз пользователя, чтобы человек случайно не удалил или не переместил важный каталог. В новых Windows этот файл отсутствует.
Что такое BOOT.INI?
Если на компьютере не одна ОС, при запуске будет предложен выбор. Именно за это отвечает BOOT.INI. В нём прописано, какая из систем приоритетная, с какими настройками её загружать и т. п.
При включении Windows обращается к нескольким файлам, которые контролируют загрузку на разных этапах. Это ntbootdd.sys, ntdetect.com, ntldr, bootsect.dos. И, конечно, сам BOOT.INI. Если какой-то из них переименовать, перетащить, удалить или неаккуратно отредактировать, это может вызвать проблемы. Компьютер будет без конца перезагружаться, выдавать ошибки или элементарно не включаться. Поэтому с внутренними данными операционной системы надо обращаться осторожно. Неправильная цифра или не в том месте поставленное тире — и вам придётся восстанавливать ОС.
Будьте осторожны при редактировании boot.ini, поскольку в случае ошибки потребуется переустановка или восстановление Windows
Как найти BOOT.INI
Вначале поговорим о Windows XP. Где находится BOOT.INI в этой модели? Его можно найти непосредственно в корневой директории (там, где основные дистрибутивы системы). Но увидеть его не получится, если не активировано отображение скрытых объектов. Чтобы включить эту опцию:
- Зайдите в «Панель управления» (в меню «Пуск»).
- Откройте «Параметры папок» в разделе «Оформление и персонализация».
- Найдите вкладку «Вид».
- Прокрутите ползунок вниз. Там будет строчка «Показывать скрытые файлы». Поставьте галочку.
Теперь вы сможете увидеть BOOT.INI. Он находится прямо на системном диске (обычно это диск C:). Сам файл имеет иконку в виде листка с шестерёнкой. Он будет полупрозрачным. Это означает, что он скрытый, и снять с него этот атрибут невозможно.
Если вы не представляете, где именно установлена ваша ОС, зайдите в меню «Пуск — Поиск». Выберите «Файлы и папки» и в поле для ввода напишите название или часть названия. В окне отобразятся все результаты с таким именем.
Если вы используете Windows 7, во всех моделях, начиная с Vista, эти настройки заменили на файл конфигурации «BCD», который не имеет расширения. Его можно запустить как часть реестра, но настроить или изменить в нём что-то будет трудно. Он содержит очень много параметров и значений, в которых непросто ориентироваться. В Windows 10 BOOT.INI тоже отсутствует, поэтому менять параметры загрузки придётся другим способом.
BCD намного полезнее и функциональнее своего «предшественника», но этот файл не предназначен для ручной настройки. Он нужен для нужд системы, и исправлять в нём что-либо не стоит.
Как редактировать?
BOOT.INI можно отредактировать в любом текстовом процессоре. Подойдёт обычный блокнот Windows или «продвинутый» Notepad+. Но перед этим надо разрешить доступ к файлу, иначе после внесения изменений его нельзя будет сохранить.
- Кликните по нему правой кнопкой мыши.
- Выберите «Свойства».
- Во вкладке «Общие» уберите галочку из пункта «Только чтение».
- Нажмите «Применить».
После этого можно менять значения в BOOT.INI. Файл имеет чёткую структуру. Не рекомендуется удалять в нём что-то, перемещать операторы без надобности, стирать скобки или знаки препинания. Вкратце о каждом параметре:
- «Timeout» показывает, сколько времени даётся на выбор ОС при запуске (если установлено несколько). Напишите после знака равенства «=» нужную вам цифру. Таймер ведёт отсчёт в секундах.
- В «default» обозначена операционная система, заданная по умолчанию. Она будет загружена, если за отведённое время вы не выберите, какую именно ОС активировать. Этот параметр может выглядеть примерно так: «scsi(0)disk(0)rdisk(0)partition(1)WINDOWS».
- «Scsi» — контроллер, который управляет физическим диском. Если их несколько, второй будет иметь вид «scsi(1)».
- «Partition» — это раздел, в котором находится ОС. К примеру, «Partition(1)» указывает на C:, «partition(2)» — на D: и так далее.
- Ниже параметра «operating systems» представлен список установленных операционных систем. Если у вас одна ОС, там будет одна строчка.
- Могут быть вписаны и другие параметры. Например, «/SOS», чтобы при запуске показывались имена драйверов, или «/debug» для отладки ядра. Все возможные команды есть на официальном сайте Microsoft.
Как менять порядок загрузки без файла BOOT.INI
Так как отредактировать BOOT.INI в Windows 7 и более поздних версиях не получится из-за отсутствия этого файла, придётся настраивать порядок загрузки другим способом. Конечно, можно попробовать поработать с BCD, но разобраться во всех его опциях будет непросто.
Если вам надо поменять время, которое даётся на выбор ОС, или поставить другую систему по умолчанию, сделать это можно так:
- Откройте «Мой компьютер».
- Щёлкните в любом свободном месте окна правой кнопкой мыши.
- Зайдите в «Свойства».
- Затем — в«Дополнительные настройки».
- На вкладке «Дополнительно» в разделе «Восстановление и загрузка» нажмите «Параметры». Там будут нужные опции.
Ещё один способ:
- Перейдите в Пуск — Выполнить.
- В открывшемся окне напишите «msconfig» (без кавычек). Появятся настройки конфигурации.
- Вкладка «Загрузки». Откроется список установленных ОС. Можно решить, какую из них назначить по умолчанию, и изменить таймаут при запуске и выборе системы.
К сожалению, эти методы не позволяют задать особые параметры.
Использование программ
Описанные выше задачи можно упростить. Для этого существуют специальные утилиты — менеджеры загрузок. С ними можно обойтись и без BOOT.INI. Вот некоторые из этих программ:
- Оболочка для BCD. С её помощью можно настроить этот файл.
- OSL2000 BootManager. Поддерживает работу с большим количеством операционных систем (до 100 штук).
- Обеспечивает быстрый перезапуск в нужную ОС.
Источник
В Windows Vista, Windows 7, Windows 8 / 8.1 и Windows 10 данные конфигурации загрузки системы (BCD) хранятся в файле в папке «Boot». Полный путь к этому файлу — «[активный раздел] BootBCD».
Информация BCD находится в файле данных с именем bootmgfw. efi в разделе EFI в папке EFIMicrosoftBoot. Вы также найдете копию этого файла в иерархии каталогов Windows Side-by-Side (WinSxS).
Где находятся загрузочные файлы в Windows 7?
Таблица-4 Файлы автозагрузки Windows
Имя файла | Расположение диска |
---|---|
BCD | Boot |
ntoskrnl.exe | % SystemRoot% System32 |
Hal.dll | % SystemRoot% System32 |
Smss.exe | % SystemRoot% System32 |
Как открыть файл BCD?
Для открытия файла BCD вам потребуется подходящее программное обеспечение, такое как двоичный файл картографических данных. Без соответствующего программного обеспечения вы получите сообщение Windows «Как вы хотите открыть этот файл?» (Windows 10) или «Windows не может открыть этот файл» (Windows 7) или аналогичное предупреждение Mac / iPhone / Android.
Как скопировать файл BCD в Windows 7?
Откройте командную строку с правами администратора. Введите следующую команду: bcdedit / export HDD1: BootBCD, где HDD1 — буква драйвера вашего целевого диска. В моем случае HDD1 был C, поэтому команда была bcdedit / export C: BootBCD. Теперь вам нужно отредактировать файл BCD, чтобы все записи были правильными.
Как мне вручную восстановить мой BCD?
Восстановить BCD в Windows 10
- Загрузите компьютер в расширенный режим восстановления.
- Запустите командную строку, доступную в разделе «Дополнительные параметры».
- Чтобы восстановить BCD или файл данных конфигурации загрузки, используйте команду — bootrec / rebuildbcd.
- Он будет сканировать другие операционные системы и позволит вам выбрать ОС, которые вы хотите добавить в BCD.
22 июн. 2019 г.
Что такое настройки BCD?
BCDEdit — это инструмент командной строки для управления данными конфигурации загрузки (BCD). Файлы BCD представляют собой хранилище, которое используется для описания загрузочных приложений и настроек загрузочных приложений. BCDEdit можно использовать для различных целей, включая создание новых хранилищ, изменение существующих хранилищ, добавление параметров меню загрузки и т. Д.
Какие файлы загрузки в Windows 7?
Четыре загрузочных файла для Windows 7 и Vista: bootmgr: код загрузчика операционной системы; аналогичен ntldr в предыдущих версиях Windows. База данных конфигурации загрузки (BCD): создает меню выбора операционной системы; похож на boot. ini в Windows XP, но данные находятся в хранилище BCD.
- Перезагрузите компьютер.
- Нажмите клавишу F8, чтобы открыть дополнительные параметры загрузки.
- Выберите Восстановить компьютер. Расширенные параметры загрузки в Windows 7.
- Нажмите Ввод.
- В параметрах восстановления системы щелкните Командная строка.
- Введите: bcdedit.exe.
- Нажмите Ввод.
Как изменить автозагрузку Windows?
Чтобы изменить параметры загрузки в Windows, используйте инструмент BCDEdit (BCDEdit.exe), входящий в состав Windows. Чтобы использовать BCDEdit, вы должны быть членом группы администраторов на компьютере. Вы также можете использовать служебную программу настройки системы (MSConfig.exe) для изменения параметров загрузки.
Что такое BCD-файл при загрузке?
Данные конфигурации загрузки (BCD) — это независимая от прошивки база данных для данных конфигурации во время загрузки. Он используется новым диспетчером загрузки Windows от Microsoft и заменяет загрузку. ini, который использовался NTLDR.
Что такое журнал BCD?
BCD. Файлы LOG * представляют собой журнал (-ы) транзакций куста для целей восстановления. Если у вас есть машина Windows, вы можете смонтировать куст из regedit: нажмите HKEY_LOCAL_MACHINE, перейдите в File-> Load Hive и перейдите к файлу BCD. BCD, который использовался для загрузки Windows, обычно уже смонтирован как BCD00000000.
Что такое расширение файла BCD?
BCD — это файл настроек Microsoft Windows, используемый системным реестром. В файлах BCD хранятся конфигурации, используемые при загрузке системы. Формат файла BCD был введен в Windows Vista в качестве замены для загрузки. ini, используемый загрузчиком NTLDR.
Как сделать резервную копию моего BCD?
Чтобы сделать резервную копию текущего реестра BCD, вызовите команду BCDEdit / export, как показано здесь. Позже вы можете восстановить исходный файл реестра BCD, вызвав команду BCDEdit / import, как показано здесь. Примечание. Имя файла и расширение, которое вы используете, не имеют значения.
Как сделать Windows 7 загрузочным USB?
Переместите опцию «USB» в верхнюю часть списка. Нажимайте соответствующую клавишу, пока выбранный параметр «USB» не окажется в верхней части списка «Порядок загрузки». Это гарантирует, что при повторной загрузке компьютера ваш компьютер будет искать загрузочный USB-порт вместо жесткого диска по умолчанию.
Как открыть загрузочный ini в Windows 7?
Введите MSCONFIG в меню «Пуск», чтобы запустить служебную программу настройки системы. На вкладке «Загрузка» установите параметры и ОС, которую вы хотите запустить. Изменения будут записаны в загрузочные файлы автоматически. Щелкните ОК, чтобы сохранить изменения.
Мы продолжаем разбираться как работает ПК на примере клавиатуры и 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:WindowsSystem32!), этот раздел называется 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, в нём содержится информация о драйверах которые надо загрузить. Информация о всех драйверах находится в HKLMSYSTEMCurrentControlSetServices. Драйвера которые надо загрузить имеют ключ 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 имеет свою директорию на этом разделе – EFIMicrosoft.
- Читает из настроек UEFI сохранённых в NVRAM (энергонезависимая память) путь к файлу загрузчика.
- Находит и запускает EFI/Microsoft/Boot/BootMgrFw.efi.
- BootMgrFw.efi находит раздел реестра BCD, который хранится в отдельном файле с именем BCD. Из него он находит WinLoad.efi, который расположен в C:WindowsSystem32winload.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:WindowsSystem32) директориям.
- Указатель на таблицы виртуальной памяти которые создал WinLoad
- Дерево с описанием подключенного hardware, оно используется для создания HKLMHARDWARE ветки реестра.
- Копия загруженного реестра HKLMSystem
- Указатель на список загруженных (но не инициализированных) драйверов участвующих в старте 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, эти программы записаны в реестре HKLMSYSTEMCurrentControlSetControlSession ManagerBootExecute). 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 запускает процесс указанный в ключе реестра HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinLogonUserinit. По умолчанию это процесс UserInit.exe, который:
- Запускает скрипты указанные в реестрах:
- HKCUSoftwarePoliciesMicrosoftWindowsSystemScripts
- HKLMSOFTWAREPoliciesMicrosoftWindowsSystemScripts
- Если групповая политика безопасности определяет User Profile Quota, запускает %SystemRoot%System32Proquota.exe
- Запускает оболочку Windows, по умолчанию это Explorer.exe. Этот параметр конфигурируется через реестр:
- HKCUSoftwareMicrosoftWindows NTCurrentVersionWinlogonShell
- HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonShell
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:WindowsSystem32i8042prt.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