Азбука админа: процесс загрузки Windows. Как сделать загрузку Windows первой в Grub

В данной статье я поэтапно опишу процесс загрузки операционных систем Windows XP, Vista и Seven. Хотя этот вопрос рассматривается в сети достаточно часто, не затронуть его я не могу. Подобная информация бывает очень полезна при диагностировании неисправности и восстановления работоспособности “умершей” ОСи.

Сегодня мы рассмотрим:

  • Старт BIOS;
  • Загрузку Windows XP;
  • Загрузку Windows Vista/7.

Загрузка BIOS

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

При включении компьютера BIOS проверяет “железо” и если есть проблемы, то информирует нас звуковыми сигналами (набор длинных и коротких гудков). Вот таблица звуковых сигналов BIOS:

Сигналы AMI

Сигнал Возможная неисправность
Отсутствует Неисправен блок питания
Ошибка четности ОЗУ
Ошибка в первых 64 кБ ОЗУ
Неисправность системного таймера
Неисправен CPU
Неисправен контроллер клавиатуры
Неисправна системная плата
Неисправна память видеокарты
Ошибка контрольной суммы BIOS
10к Невозможна запись в CMOS
11к Неисправен кэш на системной плате
1д+2к Неисправна видеокарта
1д+3к Неисправна видеокарта
1д+8к Не подключен монитор

Сигналы AWARD

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

После проверки BIOS считывает настройки из CMOS и в соответствии с мини стартует загрузчик с указанного носителя (CD, HDD, Flash карта). Если загрузка производится с жёсткого диска, то система считывает первые 512 байт Master Boot Record (MBR) и передаёт ему управление.

Если MBR не найден, то загрузка останавливается. Восстановить MBR можно с помощью консоли восстановления Windows (Recovery Console) командой fixmbr.

Процесс загрузки Windows XP

Загрузкой Windows управляет NTLDR, который состоит из двух частей - первый StartUp переводит процессор в защищённый режим и стартует загрузчик ОС. Загрузчик содержит в себе основные функции для работы с дисками отформатированными в FAT*, NTFS и CDFS системы. Загрузчик считывает содержимое boot.ini и, в соответствии с его содержимым (количество ОС, диски на котором установленны и т.п.), продолжает загрузку. Если Windows была переведена в состояние гибернации, то NTLDR загружает в память компьютера файл hiberfil.sys и передаёт управление в ядро Windows. Если вы завершили работу компьютера простым выключением/перезагрузкой, то NTLDR загружает DOS’овский файл NTDETECT.COM, который строит список аппаратного обеспечения и загружает саму операционную систему Windows.

Если файл NTLDR удалён/перемещён/повреждён, то система не загрузится и выведет сообщение “NTLDR is missing. Press CTRL+ALT+DEL to restart“. Решить эту проблему можно в консоли восстановления Windows (Recovery Console) командой fixboot или скопировав NTLDR с рабочей системы в корень диска.

Перед загрузкой ядра, NTLDR выводит на экран опции запуска (Если была нажата клавиша F8, или работа системы была завершена аварийно). После выбора параметров запуска, стартует ядро системы - ntoskrnl.exe (мы видим анимацию из белых прямоугольников на чёрном экране). Далее загружается тип абстрактного уровня аппаратного обеспечения - HALL.DLL. Это нужно, чтобы ядро могло абстрагироваться от железа, оба файла находятся в директории System32. Далее загружается библиотека расширения ядра отладчика аппаратного обеспечения kdcom.dll и bootvid.dll, который загружает логотип Windows и индикатор статуса загрузки).

Одним из самых ответственных моментов является загрузка системного реестра config\system, очень часто система не может прочитать файл system и загрузка становится невозможна или начинается .

Процесс загрузки Windows Vista/7

Процесс загрузки Windows Vista и Windows 7 (Seven) начинает отличатся от процесса загрузки предыдущих версий ОС уже после чтения MBR. Установщик Windows создаёт небольшой загрузочный раздел, в котором и находяться всё, что нужно для запуска ОС. MBR передаёт загрузку PBR (Partition Boot Record), а затем стартует BOOTMGR (Windows Boot Manager). BOOTMGR пришёл на смену NTLDR и руководит загрузкой операционной системы. BOOTMGR читает параметры загрузки из Boot Configuration Database (BCD, Базы данных загрузочной конфигурации, пришла на смену boot.ini) и загружает Winload.exe (OS loader boot application, загрузчик ОС). Winload.exe загружает ядро операционной системы, далее процесс загрузки похож на старт Windows XP.

Для редактирования Boot Configuration Database (BCD) можно использовать утилиту Bcdedit.exe запустив её из Windows Recovery Environment (WinRE). Там же можно задействовать утилиту Bootrec.exe для исправления ошибок.

Инструкция

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

Откройте: «Пуск» - «Панель управления» - «Система» - «Дополнительно» - «Загрузка и восстановление». Вы увидите раскрывающийся список операционных систем и выставленное для их выбора время. Раскройте список и выберите ту ОС, которая должна загружаться по умолчанию. Список обычно соответствует тому меню, которое вы видите при старте системы – например, если вам нужна вторая ОС в стартовом списке, то и здесь выберите вторую.

Измените время выбора с 30 секунд на 3. Трех секунд вполне достаточно, чтобы сделать, при необходимости, выбор другой операционной системы. Вы можете вообще убрать загрузочный список, сняв птичку со строки «Отображать список операционных систем». В этом случае сразу будет загружаться выбранная вами ОС. Но делать этого не рекомендуется, так как при крахе системы или других проблемах вы не сможете загрузиться со второй ОС.

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

Многие пользователи, в дополнение к Windows, устанавливают на компьютер операционную систему Linux. Загрузчиком в этом случае обычно является Grub, при старте системы появляется загрузочное меню, в котором сначала идет Linux, затем Windows. Чтобы изменить этот порядок, найдите файл /boot/grub/menu.lst и отредактируйте его, поменяв в нем названия ОС местами. После такой правки по умолчанию будет загружаться Windows.

Источники:

  • как изменить операционную систему

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

Вам понадобится

  • Компьютер, торрент-клиент, доступ в интернет.

Инструкция

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

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

Чтобы добиться максимальной скорости при с торрент-трекера, вы можете назначить для него приоритет. Для этого кликните правой кнопкой мышки на загружаемом файле и наведите курсор на пункт «Назначить приоритет». В появившемся окне установите значение «Высокий». В таком случае, при пакетной загрузке основное преимущество перед другими будет иметь именно этот файл.

Видео по теме

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

Инструкция

Нажмите кнопку «Пуск» для вызова главного меню системы и перейдите в пункт «Выполнить» для редактирования меню загрузки .

Введите значение msconfig.exe в открывшейся строке поиска и нажмите клавишу Enter для подтверждения выполнения команды.(Альтернативным способом запуска утилиты msconfig.exe является использование одновременного нажатия клавиш Win+R.)

Перейдите на вкладку «Загрузка» и изучите все предлагаемые варианты загрузки .

Выберите желаемую конфигурацию и удалите все ненужные элементы меню загрузки .

Нажмите клавишу Enter для применения выбранных изменений.Возможен вариант установки нескольких операционных систем, расположенных в разных разделах. Для удаления файлов предыдущих OS выполните следующие операции.

Вернитесь в основное меню «Пуск» и перейдите в пункт «Выполнить»для определения разделов, содержащих ненужные OS.

Введите значение diskmgmt.msc в строку поиска и нажмите клавишу Enter для подтверждения выполнения команды.

Выберите файлы операционных систем, разделы которых помечены «Основной раздел».
Файлы, разделы которых носят отметку «Активен», «Система» или «Загрузка» удалению не подлежат, т.к. относятся к текущей операционной системе и обеспечивают под управлением OS Windows.

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

Вернитесь в главное меню «Пуск» и перейдите в пункт «Выполнить».

Введите значение sysdm.cpl в строку поиска и нажмите клавишу Enter для подтверждения выполнения команды.

Перейдите на вкладку «Дополнительно» в открывшемся окне и нажмите кнопку «Настройка» в разделе «Загрузка и восстановление».

Снимите флажок на поле «отображать список операционных систем» в области «Загрузка операционной системы» и нажмите кнопку OK.

Видео по теме

Полезный совет

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

Источники:

  • как убрать загрузку windows xp

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

Вам понадобится

  • - браузер.

Инструкция

Запустите браузер Google Chrome, чтобы изменить папку сохранения загрузок для данного браузера. Укажите любую папку на вашем компьютере, куда должны сохраняться все загружаемые вами , либо выберите указание папки при каждой загрузки, тогда программа всякий раз будет спрашивать вас, в какую именно папку сохранять файл.

Нажмите на кнопку с изображением гаечного ключа на панели инструментов Google Chrome, чтобы поменять место загрузки по умолчанию. Выберите пункт меню «Параметры», выберите вкладку «Расширенные», перейдите в раздел «Загрузки», чтобы изменить по умолчанию, щелкните по кнопке «Изменить», далее выберите необходимую папку. Чтобы выбирать отдельную папку для каждой загрузки, поставьте флажок возле пункта «Запрашивать место для сохранения каждого файла».

Найдите загруженные файлы браузером Google Chrome, если вы не меняли расположение загрузок по умолчанию: ОС Windows XP:/Documents and Settings/«Имя пользователя»/Мои документы/Downloads; ОС Windows Vista: /Users/«Имя пользователя»/Downloads; ОС Mac: /Users/Downloads; Linux: home/«Имя пользователя»/Downloads.

Откройте браузер Opera, чтобы изменить папку для загрузок. Перейдите в меню «Инструменты» – «Общие настройки» – выберите вкладку «Расширенные», в этой вкладке выберите пункт «Загрузки». Внизу окна укажите путь к папке, в которую будут загружаться файлы, для этого нажмите кнопку «Обзор», выберите папку и нажмите «ОК».

Запустите браузер Mozilla Firefox, чтобы осуществить изменение места загрузок по умолчанию. Перейдите в меню «Инструменты» – «Настройки» – «Общие». В группе настроек «Загрузки» установите флажок в пункте «Путь для сохранения файлов», нажмите кнопку «Обзор» и укажите папку, в которую необходимо сохранять загрузки.

Источники:

  • как изменить указанную

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

Вам понадобится

  • - компьютер с ОС Windows.

Инструкция

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

Затем найдите строку «Отображать список операционных систем». В этой строке снимите флажок и нажмите OK. Закройте все окна, в каждом из них нажимая OK. Теперь окна с выбором вариантов загрузки не будет. Вместо этого будет загружаться выбранная вами операционная система. Если вам будет необходимо вернуть окно, в котором можно выбрать ОС и варианты выбора загрузки, то просто обратно поставьте флажок в пункт «Отображать выбор ОС».

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

Если у вас всего одна операционная система, то убрать варианты ее загрузки можно таким путем. Нажмите «Пуск». В списке программ выберите «Все программы». Дальше откройте «Стандартные». В стандартных программах есть «Командная строка». Запустите ее, далее введите команду msconfig.exe и нажмите Enter. Через несколько секунд появится окно «Конфигурация системы».

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

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

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

Изменение меню «Пуск» средствами Windows

Чтобы добавить в меню какую-либо часто используемую программу, нужно отыскать ее значок в списке недавно запущенных программ, кликнуть по нему правой кнопкой мышки и выбрать в открывшемся контекстном меню пункт «Закрепить в меню Пуск». Убрать значок программы из меню можно таким же способом - выбрав пункт «Изъять из меню Пуск».

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

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

Настроить вид правой области меню, где отображаются такие компоненты, как «Панель управления», «Компьютер» и т.д., можно на той же вкладке настройки меню «Пуск».

Изменение меню «Пуск» с помощью сторонних программ

Некоторым пользователям не нравится внешний вид меню «Пуск» в Windows 8. Чтобы вернуть его к привычному виду, можно воспользоваться рядом бесплатных программ.

Приложение Start8 позволяет вернуть меню «Пуск» вид, характерный для Windows 7. После установки этой программы в контекстном меню кнопки «Пуск» появляется дополнительный пункт «Настроить Start8», с помощью которого можно произвести все необходимые настройки внешнего вида меню. Зайдя в настройки, можно выбрать стиль оформления меню, размер отображаемых в нем значков, запретить или разрешить показ ярлыков недавно запущенных приложений и т.д.

Еще одна популярная программа, которая позволяет придать меню «Пуск» внешний вид, характерный для Windows XP и Windows 7, называется Classic Shell. Это приложение так же позволяет настраивать меню «Пуск» по своему вкусу. Помимо этого, с ее помощью можно изменить внешний вид кнопки «Пуск», параметры контекстного меню и многое другое.

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

Вам понадобится

  • Операционная система Windows Seven.

Установка на компьютер нескольких операционных систем сводит на нет усилия производителей компьютерных устройств, добившихся ускоренного запуска Windows благодаря комплектации современных ПК и ноутбуков материнскими платами с и SSD-накопителями в качестве альтернативы медленным HDD. Запуск Windows, если их на компьютере установлено как минимум две, без вмешательства пользователя при выборе операционной системы в перечне загрузчика будет отсрочен на 30 секунд – предустановленное значение таймера перед запуском системы, стоящей в перечне загрузки первой. Как отредактировать меню загрузки нескольких Windows и установить свои параметры? В том числе и чтобы при запуске компьютера не отвлекаться на выбор системы, используемой преимущественно, при этом сохранить возможность доступа ко второй (или нескольким) Windows.

1. Редактирование меню загрузки Windows 8.1 и 10 в окне загрузчика

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

А вот если последними на компьютер устанавливались версии Windows 8.1 и 10, получим и более привлекательное внешне, и более функциональное меню загрузчика. Некоторые параметры загрузки нескольких систем можно сменить прямо в окне загрузчика.

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

Правда, выбор значений для таймера невелик.

Более гибко настроить меню загрузки нескольких Windows можно только внутри одной из систем.

2. Редактирование меню загрузки нескольких Windows внутри системы

Редактирование меню загрузки Windows осуществляется в свойствах системы. Жмем клавиши Win+Pause и выбираем «Дополнительные параметры».

Появится окошко системных свойств, здесь необходимо нажать кнопку «Параметры» в самом низу, в графе «Загрузка и восстановление».

Что нам предлагается? Можем выбрать Windows, которая будет загружаться по умолчанию.

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

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

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

По завершении редактирования меню загрузчика жмем «Ок» внизу.

3. Полное удаление второй Windows

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

Отличного Вам дня!

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

Сегодня мы с вами рассмотрим один из способов, который позволит привести список доступных для использования ОС в соответствии с вашими предпочтениями. Как пример будем использовать ноутбук с установленной Windows 10 и Linux Mint 18, в вашем случае операционных систем может быть и больше. Все настройки загрузчика будем проводить в ОС Linux.

Сразу отметим, что истинным адептам Linux наш метод не особо понравится, т. к. они в большинстве своем считают, что для настройки всего и вся вокруг достаточно только терминала и файлов загрузчика GRUB, а остальное дело 3-х минут. Но ими не учитывается, что многие ставят ОС Linux для ознакомления, и сразу впадать в беспричинное пользование терминалом желания у этих пользователей нет. По данной причине, мы рассмотрим наиболее привычный большинству пользователей способ - установим специальную программу Grub Customizer, в которой очень удобно проводить настройки загрузчика ОС.

Все же нам придется воспользоваться услугами терминала, чтобы установить программу. Для этого открываем терминал (Ctrl+Alt+T) и последовательно выполним следующие команды:

1. sudo add-apt-repository ppa:danielrichter2007/grub-customizer
2. sudo apt-get update
3. sudo apt-get install grub-customizer

После того, как программа установлена ее можно запустить из главного меню.

Так выглядит Grub Customizer в меню Linux Mint 18.

После запуска программа проведет сканирование в процессе которого будут определены установленные ОС и порядок их загрузки.

В окне программы Grub Customizer мы видим, какие системы установлены на жестком диске компьютера.

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

Благодаря Grub Customizer, мы можем изменять порядок загрузки ОС по своему желанию.

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

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

Так в программе выглядит выбор загружаемой по умолчанию ОС.

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

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

Но и это еще не все, Grub Customizer позволяет настроить внешний вид меню загрузки. Вы можете установить фоновый рисунок, шрифт, а также цвет шрифта.

Grub Customizer поможет вам преобразить меню GRUB/GRUB2.

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

Как изменить порядок загрузки операционных систем в GRUB/GRUB2 обновлено: Февраль 8, 2017 автором: Максим Иванов

А вы никогда не задумывались над тем, что же происходит с операционной системой в тот момент, когда она рисует свой логотип и говорит «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, с которым можно поиграться в любом редакторе графов.



В продолжение темы:
Android

Веб-сервисы в 1СВ данной статье будет рассмотрены вопросы интеграции 1С с уже существующими веб-сервисами и использование самой 1С как веб-сервиса. При этом под веб-сервисами...