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

BIOS (Base Input/Output System) представляет собой специальное программное обеспечение , которое встроено в микроконтроллер на материнской плате, переводится с английского языка как основная система ввода-вывода. Данный программный код обеспечивает взаимодействие операционной системы с оборудованием, позволяет совместить аппаратные различия в компьютерном оборудовании.

Какова роль BIOS?

При первоначальной загрузке компьютера БИОС с помощью встроенных программных алгоритмов тестирует аппаратное оборудование на предмет работоспособности. Микроконтроллер посылает инструкции для запуска к каждому компоненту компьютера. Взамен он должен в обязательном порядке получить ответ от устройства. Если BIOS ответ не получает, система сообщает об этом пользователю посредством выдачи сообщения на монитор или звукового сигнала.

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

Как попасть в BIOS?

Информацию, как попасть в БИОС, можно считать в процессе загрузки компьютера. Чаще всего выдается системой запись вида: Press DEL to enter SETUP. В этом случает для входа в систему необходимо нажать клавишу DELETE в процессе загрузки компьютера. В некоторых случаях для того чтобы войти в меню BIOS, необходимо нажать определенные сочетания клавиш. Чаще всего используются F1, F2, F10, ESC или сочетания Ctrl+Alt+Ins, Ctrl+Alt+Esc.

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

Меню настроек BIOS

Наиболее распространены системы AMI BIOS и Award BIOS . Версия AMI BIOS имеет три раздела:

  • Main позволяет менять настройки системного времени. Даты, приоритет съемных носителей, содержит информацию о системе;
  • Advanced включает параметры работы центрального процессора и параметры конфигурации встроенной аппаратуры, настройки USB-портов и питания;
  • Boot содержит параметры загрузки, в том числе и настройки безопасности в процессе загрузки.

Меню Award BIOS имеет более сложную конфигурацию. Система содержит такие разделы:

  • Standart CMOS Features позволяет настраивать системную дату и время, тип используемого дисковода, а также характеристики имеющихся накопителей.
  • Advanced BIOS Features включает множество опций, в частности, порядок опроса накопителей при загрузке, включение/отключение многопоточности процессора, параметры взаимодействия ядер, информацию о состоянии жестких дисков . Данный раздел позволяет оптимизировать работу оперативной памяти .
  • Advanced Chipset Features содержит важные настройки работы встроенного оборудования: центрального процессора, оперативной памяти и системных шин передачи данных. Изменять данные настройки самостоятельно не рекомендуется.
  • Integrated Peripherals отвечает за настройку компонентов, встроенных в материнскую плату (USB-контроллер, видеокарта и звуковая карта, сетевой контроллер и различные порты).

В общем виде меню BIOS включает такие разделы (возможные названия блоков указаны в скобках):

  • общие параметры (STANDARD CMOS SETUP или MAIN);
  • свойства BIOS (ADVANCED или BIOS FEATURES SETUP);
  • свойства чипсетов (CHIPSET FEATURES SETUP или Chip Configuration);
  • свойства интегрированного оборудования (INTEGRATED PERIPHERALS или I/O Devices Configuration);
  • свойства слотов PCI (PNP/PCI CONFIGURATION или PCI CONFIGURATION);
  • управление питанием (POWER MANAGMENT SETUP или POWER);
  • пароли системы (SUPERVISOR PASSWORD или USER PASSWO RD);
  • сохранение и восстановление настроек (SAVE SETUP, LOAD SETUP DEFAULTS или LOAD BIOS DEFAULT);
  • выход из конфигурации (EXIT).

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

Многие начинающие пользователи спрашивают у поисковика – как настроить БИОС для того, что бы загрузиться с компакт диска. А так же, если необходимо загрузиться с флешки. В первую очередь загрузка из под BIOS требуется в тех случаях, когда вам нужно и сделать это можно только переустановкой операционной системы (Windows). А так же, если у вас есть загрузочный образ с утилитами, например для разделения жесткого диска на разделы и тут, естественно, тоже не обойтись без загрузки с диска или флешки через БИОС . В общем, поводов для загрузки с диска очень и очень много так, что начну уже рассказ о настройке BIOS.

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

Еще одной ключевой особенностью UEFI является возможность работы с жесткими дисками огромных объемов, размеченных по стандарту GPT (Guid Partition Table). Последний не поддерживается ни одной модификацией BIOS, так как имеет 64-битные адреса секторов.

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


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

Несмотря на всю прогрессивность UEFI, все же существует ряд ограничений, сдерживающих активное развитие и распространение этого загрузчика. Дело в том, что для реализации всех возможностей нового загрузочного интерфейса требуется полноценная его поддержка со стороны операционных систем. На сегодняшний день в полной мере использовать возможности UEFI позволяет только Windows 8. Ограниченную поддержку нового интерфейса имеют 64-разрядные версии Windows 7, Vista и Linux на ядре 3.2 и выше. Так же возможности UEFI используются в загрузочном менеджере BootCamp компанией Apple в собственных системах Mac OS X.

Ну а как же происходит загрузка компьютера с UEFI, если на нем используются неподдерживаемая операционная система (WindowsXP, 32-битная Windows 7) или файловая разметка (MBR)? Для таких случаев в новый загрузочный интерфейс встроен модуль поддержки совместимости (Compatibility Support Module), по сути, представляющий из себя традиционную BIOS. Именно поэтому, можно видеть, как многие современные компьютеры, оснащенные системными платами с UEFI, загружается традиционным способом в режиме эмуляции BIOS. Чаше всего это происходит потому, что их владельцы продолжают использовать разделы HDD с традиционной MBR и не хотят переходить к разметке GPT.

Заключение

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

Но при этом говорить о полном отказе в ближайшее время от базовой системы ввода/вывода пока преждевременно. В первую очередь нужно вспомнить, что до сих пор большинство компьютеров находятся под управлением WindowsXP и 32-битной Windows 7, которые не поддерживаются UEFI. Да и жесткие диски, размеченные по стандарту GPT в большинстве своем можно встретить разве что в новых моделях ноутбуков на базе Windows 8.

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

Давным-давно, когда я был маленьким работал в институтской лаборатории на большом компьютере СМ-3 (что-то вроде знаменитой PDP-11), bootstrapping (загрузка) ЭВМ выглядела так. В фотосчитыватель заправлялась коротенькая бумажная перфолента с пробитой на ней программой начальной загрузки, запускался процесс считывания, а дальше … как повезет.

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

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

Основные определения и этапы загрузки операционной системы

Включение компьютера, POST, BootMonitor

Начальный этап загрузки операционной системы после включения компьютера начинается в BIOS (Basic Input/Output System — базовая система ввода-вывода). В настройках BIOS мы указываем загрузочное устройство, или ряд загрузочных устройств в порядке их приоритета. Возможны различные варианты загрузки и их комбинации: с жесткого диска, CD/DVD – диска, USB-flash и другие.

Сразу после прохождения POST (Power-On Self-Test — самотестирование после включения) BIOS компьютера начнет поочередно перебирать указанные загрузочные устройства до тех пор, пока на одном из них не найдет подходящую специальную запись, в которой содержится информация о дальнейших действиях.

Загрузчик 1-го уровня. Master Boot Record

Master Boot Record — главная загрузочная запись, расположена в первых физических секторах загрузочных устройств хранения. Она содержит таблицу разделов (Partition Table) и исполняемый код.

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

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

Загрузчик 2-го уровня. Partition Boot Sector

Следующим этапом загрузки компьютера является передача управления исполняемому коду, записанному в PBS (Partition Boot Sector — загрузочный сектор активного раздела). PBS расположен в первом секторе (секторах) соответствующего раздела диска. В коде PBS прописано имя файла загрузчика операционной системы, которому и передается управление на этом этапе.

Начальный этап загрузки операционной системы. Менеджер загрузки ОС

Первоначально в Linux загрузчиком являлся LILO (Linux Loader). В силу имевшихся в нем недостатков, главным из которых была неспособность понимать используемые в Linux файловые системы, позднее начал использоваться загрузчик GRUB (GRand Unified Bootloader) в котором недостатки LILO были исправлены.

Если речь идет о версиях Windows до Vista, например, Windows XP, то будет загружен Ntldr. Он, в свою очередь, считывает информацию из текстового файла Boot.ini, в котором записана информация об установленных операционных системах.

Загрузка ядра операционной системы

Завершающим этапом загрузки операционной системы является загрузка ядра ОС и передача ему управления.

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

Меня попросили помочь одному человеку купить и привести в порядок компьютер для дома. Товарищ этот на тот момент времени только-только вышел на пенсию, а до этого работал в должности начальника и компьютер видел, по большей части, издалека, на столе у своей секретарши. После выхода на пенсию у него появилось время и желание компьютер освоить. Ну что, по-моему, замечательно. Компьютер мы ему подобрали недорогой, но добротный и с хорошим, по тем временам, монитором. Я поставил и настроил кое-какие программы, показал как ими пользоваться. Господин обзавелся книжкой из серии «Что-то там для чайников » и мы расстались абсолютно довольные друг другом.

Примерно через неделю мой подопечный позвонил мне по телефону и чуть не плача сообщил, что все пропало и компьютер больше не работает. Благо, запираться он не стал и честно рассказал, как было дело. А дело было так. Товарищ полез исследовать содержимое своего компьютера и нашел в корне диска С:\ несколько подозрительных и «ненужных», на его взгляд, файлов. Он решил освободить место и файлики эти попросту удалил. Думаю, что все уже догадались, что это были boot.ini, ntldr, ntdetect и др. Поправить ситуацию сложности не представляло, разве что пришлось ехать к нему еще раз.

К слову сказать, для того, чтобы получить проблемы с загрузкой Windows XP, можно было и ничего не стирать, а слегка «подправить», например, boot.ini.

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

Особенности загрузки операционных систем Windows Vista / 7 / 8

В Windows Vista или Windows 7 / 8 диспетчер загрузки называется Bootmgr. Он читает список установленных операционных систем не из простого текстового файла, коим является boot.ini, а из системного хранилища BCD (Boot Configuration Data), доступ к которому осуществляется посредством специальной утилиты bcdedit.exe .

Но это еще не все. Откроем “Управление компьютером” –> “Управление дисками” >

Процесс стандартной инсталляции операционной системы Windows Vista / 7 / 8 создает в начале диска дополнительный раздел «Зарезервировано системой». Ему не присваивается буква диска, благодаря чему, если не сделать дополнительных шагов, и сам раздел и его содержимое будут скрыты от пользователя. Этот основной раздел имеет статус «Системный» и «Активный» и, следовательно, удалить его тоже нельзя.

В Windows 7 размер такого раздела составляет 100 МБ, из которых занято около 30 МБ, в Windows 8 – уже 350 МБ, причем занято из них 105 МБ. Такая разница объясняется тем, что в Windows 8 на этот раздел перенесена папка “Recovery”.

Посмотрим содержимое раздела «Зарезервировано системой». Для этого назначим ему букву диска, например, «W» в “Управление дисками”. Дополнительно откроем «Панель управления» –> «Параметры папок» и на вкладке «Вид» снимем галку с «Скрывать защищенные системные файлы» и поставим отметку на «Показывать скрытые файлы, папки и диски».

Если в системе установлен файловый менеджер FAR Manager, то для просмотра можно воспользоваться им и не заниматься настройкой видимости скрытых файлов.

Так выглядит содержимое раздела «Зарезервировано системой» в Windows 8 >

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

А так выглядит часть содержимого папки «Boot» >

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

Для полноты картины осталось сказать о том, какой раздел называется загрузочным. Ответ уже показан на картинке с томами Windows 7. Очевидно, что это раздел, на котором находятся все основные файлы операционной системы.

Ну что же, запомнить названия разделов диска очень легко по принципу «всё наоборот» — на системном нет системы (операционной), но расположен загрузчик третьего уровня, на загрузочном как раз отсутствует загрузчик, но находится сама система. Естественно, эта «запоминалка» работает только тогда, когда есть несколько разделов. Если раздел один, то он может быть сразу системным, активным и загрузочным.

Главной задачей загрузчика 3-го уровня, в роли которого выступает, в зависимости от типа ОС, Bootmgr, Ntldr или GRUB, является чтение с загрузочного диска и загрузка ядра операционной системы. Кроме того, в случае множественной загрузки, когда на компьютере установлено несколько операционных систем, загрузчик 3-го уровня позволяет выбирать нужную при каждом запуске компьютера.

Классической ошибкой, которой Microsoft посвятила , является установка Windows XP после Windows Vista / 7 /8. Установщик Windows XP помечает свой раздел как активный, после чего, во время загрузки, MBR передает управление PBS этого раздела а он, в свою очередь, — Ntldr. Загрузчик Windows XP ничего не знает о более поздних версиях операционных систем Windows и их загрузка становится невозможной. Лечится достаточно легко, но неискушенного пользователя такая ситуация может поставить в тупик.

Добавить к этому практически нечего и можно переходить непосредственно к редактированию загрузочного меню. Начнем с .

9 комментариев

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

  1. Подскажите пожалуйста как именно лечить?:
    «Загрузчик Windows XP ничего не знает о более поздних версиях операционных систем Windows и их загрузка становится невозможной. Лечится достаточно легко, но неискушенного пользователя такая ситуация может поставить в тупик.»

    Поставил ХР после Vista на ноутбук — в итоге запуск системи доходит до начала загрузки ХР и все по новой перезагружаєтса, а если отключить (на время загрузки ОС) адаптер питания то все загружается нормально. Если загружать в безопасном режиме, то адаптер отключать не надо. Что ето может бить и как с етим бороться?

    ПОЖАЛУЙСТА ОТПИШИТЕ. ЗАРАНИЕ СПАСИБО. ИЗВИНИТЕ ЗА «ЛОМАННИЙ» РУССКИЙ.

    • По поводу влияния адаптера питания на загрузку ХР ничего не скажу — конкретных идей нет. По поводу восстановления загрузки Vista, если это актуально, то в конце поста есть ссылка на статью суппорта Microsoft (919529), посвященную непосредственно этой теме. Для восстановления потребуется установочный диск Vista. В командной строке с правами администратора нужно выполнить:
      Х:\boot\bootsect.exe /nt60 all
      где X: — буква оптического привода.
      А вот загрузку XP нужно будет добавлять вручную с помощью редактора . Набор команд будет таким:
      Bcdedit /create {ntldr} /d "Microsoft Windows XP"
      если данная команда завершиться неудачей, то:
      Bcdedit /set {ntldr} description "Microsoft Windows XP"
      далее:
      bcdedit /set {ntldr} device partition=X:
      Х: - буква диска раздела, на котором находятся файлы загрузчика XP, и путь к нему:
      bcdedit /set {ntldr} path \ntldr
      bcdedit /displayorder {ntldr} /addlast

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

    • Юрий! Боюсь, что тех сведений, которые Вы сообщили, явно недостаточно для каких-либо рекомендация. Какая Windows и о каких этапах идет речь? Уточните.

    Доброго здоровья, Александр.
    Как понять, предотвратить, а если повторится — правильно выйти из вот такой ситуации.
    Ноутбук. Установлена Windows-7. После включения и ввода пароля выдал «missing operating system» — то бишь «отсутствует операционная система». Выключения с повторным включением дали тот же результат. Запуститься удалось только вынув и спустя некоторое время вставив аккумулятор.
    Накануне, правда, имело место быть некорректное выключение: предварительно не были отключены флешка и модем. Раньше такая забывчивость тоже случалась, но подобного эффекта не было.
    Буду признателен за доступный старому «чайнику» ответ (мне лет на десять больше, чем господину в забавном случае, но познакомился с КОМПом примерно в том же возрасте).

    • Владимир, здравствуйте. С наступающими праздниками и всех благ.
      В данной ситуации Вы сделали все правильно — сбросили «залипший» глюк.
      Как поется в песенке: «Одна дождинка — еще не дождь. Одна снежинка — еще не снег». Возможно, что ничего подобного больше и не произойдет. Вот если с запуском начнутся регулярные проблемы, тогда надо будет разбираться. А вообще, Windows 7 и выше достаточно устойчивы к нештатным выключениям.
      Что делать? Вы сами ответили на свой вопрос — стараться штатно отключать устройства. И если есть возможность подключить по USB внешний диск, то я обязательно сделал бы (на самом деле делаю достаточно регулярно) бекап системы, например с помощью .

Надоело, что Windows 7,8,10 медленно загружается? ДА, чем больше времени установлена операционная система, тем больше начинает мучить эта тема. Компьютеры становятся всё мощнее и производительнее, но вместе с этим растут и запросы программ, которые разрабатываются под новое оборудование. Так, например, Windows XP загружается на порядок быстрее, чем Windows 7/10 на одинаковом оборудовании.

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

Шаг первый, службы и процессы

В ОС Windows частенько запускаются лишние службы, которые тормозят загрузку и работу системы. Также предусмотрена поддержка разнообразного оборудования, поэтому службы, обеспечивающие его правильную работу, запускаются вместе с системой. Конечно, если система посчитала, что в службе нет необходимости (поскольку, соответствующего устройства в компьютере попросту нет), то она отключается. Но на запуск, проверку и остановку службы всё равно тратится время.

Запускаем программу «Конфигурация системы», для этого жмём «Win+ R», пишем в окошке: msconfig и жмём Enter. Чтобы отключить временно ненужные службы, переходим в одноимённую вкладку:

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

Пользуясь той же логикой, отключаем программы, загружаемые при старте системы, на следующей вкладке «Автозагрузка». Более подробно рассказано в отдельной статье. Для применения новых параметров запуска необходимо будет перезагрузить компьютер.

Шаг второй, реестр

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

Не редко деинсталляторы программ работают неэффективно, оставляя в реестре записи о своём присутствии и работе (параметры, регистрируемые библиотеки, привязка к определённым расширениям файлов и т.д.). Такие записи можно считать мусором, захламляющим БД. И от этого мусора необходимо избавляться, для чего стоит использовать такие утилиты как, например, Reg Organizer, CCleaner, Ashampoo WinOptimizer и другие.

Запускаем CCleaner, переходим в раздел «Реестр», нажимаем «Поиск проблем», и по окончанию — «Исправить выбранное»:

Во время такой очистки, да и просто во время работы Windows, реестр постоянно подвергается фрагментации. Значит необходимо будет выполнить ДЕфрагментацию реестра. Это можно сделать с помощью программы Defraggler , того же разработчика. Однако, сделаю важное замечание, что в некоторых случаях «чистка» реестра может затронуть и важные параметры. Поэтому обязательно предварительно , и в случае проблем в работе Windows вы сразу сможете восстановиться до предыдущего состояния.

Шаг третий, главный

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

Поскольку рассматриваемая ОС создана компанией Microsoft, то воспользуемся профилировщиком, созданным в той же компании – Windows Performance Toolkit. С недавних пор этот инструмент стал входить в состав Windows SDK . На сайте компании Microsoft можно скачать web-установщик.

Все входящие компоненты ставить необязательно, можно обойтись лишь Windows Performance Toolkit

Данный инструмент позволяет провести трассировку загрузки операционной системы с самого начала. Нам нужен исполняемый файл «xbootmgr.exe», который находится в той папке, куда вы соизволили установить Windows Perfomance Toolkit, по умолчанию он располагается в директории «C:\Program Files\Microsoft Windows Performance Toolkit\».

Посмотрите видео или продолжите чтение статьи:

Для вызова утилиты следует запустить xbootmgr.exe с параметром, например параметр «-help» отобразит список всех возможных функций. Для этого нажимаем кнопки «Win + R» или идём в меню «Пуск -> Выполнить», и в окно вводим команду:

xbootmgr –help

Путь к файлу добавлять не обязательно, если и так запускается:

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

xbootmgr -trace boot

Она перезагрузит компьютер и соберёт данные во время запуска. Результат её работы можно посмотреть в файле boot_BASE+CSWITCH_1.etl , который xbootmgr сохранит в своей папке или в папке «C:\Users\ваше_имя». В этом файле содержится вся информация о поведении программ при запуске системы, можно увидеть много интересного. Для этого нужно кликнуть по файлу два раза, чтобы открылся Анализатор:

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

Теперь перейдём к делу — запустим процесс автоматического анализа и ускорения загрузки Windows. Выполните команду:

xbootmgr -trace boot –prepsystem

В ходе оптимизации, по умолчанию, будет выполнено 6 перезагрузок и в той же директории будет сохранено 6 файлов с информацией о поведении программ при каждой перезагрузке. Весь этот процесс довольно длительный, но участия пользователя не требует. С успехом можно пообедать пока программа работает. И не забудьте сначала проверить, что есть пару Гигабайт свободного места на диске «C:»!

После перезагрузок будут появляться сообщения в белом окошке, например «Delaying for boot trace 1 of 6» с отсчётом времени:

При этом не нужно пытаться работать за ноутбуком, просто ждите. Будут появляться и другие сообщения. На втором этапе окошко «Preparing system» у меня провисело минут 30, при этом процессор ничем загружен не был, но потом всё-таки перезагрузка произошла и остальные этапы прошли быстро. Реально на весь процесс может уйти час.

Что же делает Xbootmgr? Он не отключает не нужные службы и процессы, как могло показаться. Xbootmgr оптимизирует загрузку таким образом, чтобы в каждый момент времени ресурсы компьютера использовались максимально. Т.е., чтобы не было такого, когда процессор загружен на 100%, а жёсткий диск отдыхает, или наоборот. Также происходит . После последней перезагрузки ничего делать не надо, Windows будет загружаться, и даже работать, быстрее.

Шаг четвёртый, опасный

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

Значит надо помочь ей задействовать имеющиеся ресурсы в параметрах запуска системы. Для этого нужно покопаться в конфигурации. Сочетанием клавиш «Win + «R» открываем окно «Выполнить» и пишем команду msconfig , жмём «Ок». В появившемся окне конфигурирования системы выбираем вкладку «Загрузка»

Выбираем «Дополнительные параметры»

В появившемся окне выставляем на максимум параметры «Число процессоров» и «Максимум памяти». Теперь внимание! Закрываем и снова открываем программу, смотрим что значение «Максимум памяти» не сбросилось в «0». Если так, то снимаем отсюда галочку, иначе система может не запуститься вообще . Перезагружаемся, готово.

Замечание: Если вы решите добавить оперативной памяти или заменить процессор на другой (с большим количеством ядер), то вышеуказанные параметры необходимо будет изменить. В противном случае, система просто не будет использовать дополнительную память и/или дополнительные ядра процессора.

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

  1. Power On Self Test (POST) - запускается только один раз и сразу после включения питания. В этом тесте проверяется аппаратура на наличие грубых ошибок (функционирование аппаратуры вообще). Одним из видимых шагов на экране - тестирование памяти.
  2. Инициализация - запускается каждый раз, когда машина перегружается (например, когда пользователь нажимает Ctrl-Alt-Del) - инициализирует все доступные устройства на плате и в слотах расширения (ISA, PCI, AGP).
  3. Третья часть - это собственно BIOS (BASIC INPUT/OUTPUT SYSTEM) - базовая система ввода/вывода на низком уровне. Этими функциями пользуются некоторые операционные системы (DOS, Windows и др.) Обычно, весь BIOS располагается на отдельном чипе, который программируется на заводе, хотя в современных компьютерах может быть перепрограммирован прямо из системы. Т.е. сейчас используется Flash Memory.

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

Тест памяти - это наиболее видимая часть теста аппаратуры на этапе POST. Кстати, о видимости - видеоадаптер - тоже аппаратура, и его как раз необходимо инициализировать в первую очередь - чтобы пользователь мог видеть процесс тестирования и инициализации устройств. Так же, необходимо установить еще и режим (частоту обновления, разрешение) экрана. Ведь видеокарты могут быть сделаны разными фирмами, да еще и разные модели - кому как не БИОСу самой карточки знать досконально, как ее нужно инициализировать?
На каждой видеокарте есть свой BIOS, который опрашивается на его наличие при тестировании аппаратуры. Сначала системный БИОС ищет видео по стандартным адресам ISA VGA, - если там нет адаптера, то он ищется на PCI , потом на AGP (или сначала AGP, а потом PCI - это прописывается в установках BIOS SETUP). И если, видеобиос найден в одном из слотов, то управление передается на него.

И вообще, присутствие БИОСа на различных адаптерах заставляет системный БИОС отдавать им управление - в случае с видеоадаптером - это включение режима и т.д., в случае с сетевой картой - загрузка с сети (в случае с без дисковыми машинами - удаленная загрузка с сети) - при наличие BIOS на сетевой карте и наличие жесткого диска БИОС, например, может спросить - как будем грузиться - с сети или с имеющегося HDD? При наличии SCSI адаптера - он должен проинициализировать свои устройства (диски, CD-приводы, ленточные накопители и т.п.) и если таковые найдутся из числа дисков SCSI - необходимо будет поддержать int13 для того, чтобы система могла обращаться к ним, как к обычным жестким дискам. Хотя, инициализация SCSI устройств необязательна - например, при старте, ее можно отключать - если SCSI устройство не является загрузочным, это разумно.

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

Итак, коротко можно описать следующим образом: все, кроме SCSI, IDE, USB "оживает" сразу - из адаптеров исключение составляет видеоадаптер, который инициализируется даже до проверки памяти.

Далее - если в слотах ISA находятся другие устройства, имеющие свои ПЗУ (с BIOS) - они инициализируются на этапе проверки внешних устройств, потом проходит проверка и назначение PCI (проверка устройств Plug and Play). Кстати, PnP есть и на ISA адаптерах.
Только после этого начинается проверка наличия устройств на IDE шине.

Тут может возникнуть вопрос - а как быть, если на ISA нет видеоадаптера, а есть на PCI - но ведь он "оживает" сразу - не дожидаясь даже проверки всего PCI? Просто на PCI есть BIOS, отображаемый в обычное пространство памяти, и все VGA PCI имеют еще и стандартную VGA программную часть, находящуюся в тех же регистрах, как и в случае, если бы это был ISA адаптер. Системный BIOS проверяет, есть ли VGA на ISA шине - если да, то на PCI шину и "не лезет", если нет - то сканирует PCI.

Ну, и в конце концов, после инициализации - считывается первый сектор первой дорожки первой головки жесткого диска и управление передается загрузочному сектору, который уже управляет дальнейшими действиями (либо выдается сообщение типа "NO SYSTEM TO BOOT"). Или подобным же образом система грузится с дискеты.

А вы никогда не задумывались над тем, что же происходит с операционной системой в тот момент, когда она рисует свой логотип и говорит «Starting Windows»? И вообще, почему она долго загружается? Ведь при старте системы уж точно не решаются никакие задачи, сложные с вычислительной точки зрения!

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

Давайте интереса ради разберемся, какие модули, в каком количестве и в каком порядке загружаются при старте ОС. Чтобы выяснить это, можно, например, получить лог загрузки системы. Подопытная ОС в моем случае - Windows 7 Enterprise x64. Логировать процесс загрузки будем при помощи отладчика ядра. Существует несколько вариантов отладчиков ядра, лично я предпочитаю WinDbg. Также нам понадобятся некоторые вспомогательные средства для волшебного превращения лога в нечто более приятное глазу.

Mining and crafting

Настройка отладки хорошо гуглится, поэтому описывать подробно этот процесс я не буду. Поскольку нас интересует все происходящее с момента старта системы, нам нужно отметить пункт «Cycle Initial Break», с помощью чего отладчик остановится, как только в отлаживаемой системе будет загружена подсистема отладки ядра. Дублирование вывода в файл можно осуществить при помощи команд ".logopen" и ".logclose", это просто. Другая полезная команда - ".cls". Она очищает экран команд, и да, только экран команд.

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

Если у вас достаточно маны, вводите следующую команду:
bu nt!MiCreateImageFileMap "dt nt!_EPROCESS -d ImageFileName @$proc; dt nt!_FILE_OBJECT -d FileName @rcx; g"
Магическая строчка буквально означает следующее:

  • bu (Set Unresolved Breakpoint) - установить неразрешенную точку останова. Не то чтобы кто-то или что-то не разрешал, просто для ее установки необходимо определиться, по какому адресу ее ставить. Дело в том, что заранее не известно, по какому адресу она должна располагаться. При загрузке любого модуля проверяется присутствие в нем необходимой функции, и если такая функция найдена, точка останова устанавливается автоматически. Такой способ установки незаменим при включенном ASLR - рандомизации адресного пространства, поскольку модули будут загружаться каждый раз по разным адресам, и точка останова, установленная по фиксированному адресу, с большой вероятностью окажется не у дел.
  • nt!MiCreateImageFileMap - символ, на котором нужно останавливаться. В WinDbg принята запись в форме "module_name!function_name". В данном случае nt является предопределенным псевдонимом для ntoskrnl.exe.
  • далее следует часть WinDbg-скрипта, которая будет выполняться каждый раз при остановке на этой функции. «dt nt!_EPROCESS -d ImageFileName @$proc» по-русски означает «отобразить поле ImageFileName структуры _EPROCESS из модуля nt при условии ее отображения по адресу, определенному в псевдорегистре «текущий процесс»». Следующая после разделителя ";" команда означает примерно то же самое, только адрес структуры берется из регистра rcx, в котором в Microsoft x64 ABI передается первый параметр функции. «g» означает «go», т.е. продолжить исполнение.

Небольшая рекомендация по использованию логирующих точек останова: старайтесь не использовать расширения отладчика (команды, начинающиеся с "!"), поскольку в таком случае логирование будет выполняться на порядок медленнее.

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

Карта звездного неба


Условно выделим несколько групп загрузки.

Начинается работа OC в модуле ntoskrnl.exe, являющимся ядром ОС. А если еще конкретнее - с функции KiSystemStartup(). Вместе с загружаемыми системными компонентами она формирует фундамент ОС: разделение режимов работы, базовые сервисы для пользовательских приложений и т.п. В эту же группу входят драйверы, отмеченные для загрузки во время старта системы. В двух словах, в этой ракушке зарождается ОС Windows.

Следующий узел - менеджер сессий (session manager). Его представляет первый после системного процесс, стартующий в Windows - smss.exe. Процесс примечателен тем, что является родным (native) процессом Windows, то есть он не использует подсистему Win32, которая в общем-то еще не загружена. Этот процесс использует только нативные сервисы операционной системы посредством ntdll.dll, представляющей собой интерфейс режима пользователя для сервисов ОС. Также этот процесс является доверенным компонентом операционной системы и обладает исключительными правами, например, он может создавать маркеры безопасности (security tokens). Но главное его предназначение - создание сеансов и инициализация подсистем, как графической, так и различных исполняемых (Windows, POSIX). Эта ракушка воздает каждому по потребностям.

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

Самой массивной оказалась группа сервисов. Во многом она обязана своим объемом службе SuperFetch. Эта та самая, про которую говорят, что она по выходным заранее прогружает офисный пакет, а в начале рабочей недели - Steam с игрушками. Superfetch прогружает огромное количество модулей при старте системы, чтобы потом «все быстрее работало». Да и кроме него в системе хватает сервисных приложений и автозапускающихся драйверов. Думаю, все видели оснастку «Службы и приложения». Эта звезда жизни заводит в системе все, что нужно и не очень.

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

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

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

Граф загрузки был построен для ОС Windows 7 Enterprise x64, установленной на виртуальной машине VMware. Ниже приведены векторное изображение графа и непосредственно файл в формате gml, с которым можно поиграться в любом редакторе графов.