Какая команда запускается первой при загрузке компьютера
Первое устройство, которое запускается после нажатия кнопки включения компьютера, — блок питания. Если все питающие напряжения окажутся в норме, на системную плату будет подан специальный сигнал Power Good, свидетельствующий об успешном тестировании блока питания и разрешающий запуск компонентов системной платы.
После этого чипсет формирует сигнал сброса центрального процессора, по которому очищаются регистры процессора, и он запускается. Упрощенно процессор работает следующим образом:
1. считывает из системной памяти команду, которая записана в ячейке памяти по первоначальному адресу;
2. выполняет эту команду, после чего читает и выполняет следующую команду и т. д.
Таким образом, его работа — последовательно читать и выполнять команды из памяти. Системная память сконфигурирована так, что первая команда, которую считает процессор после сброса, будет находиться в микросхеме BIOS. Последовательно выбирая команды из BIOS, процессор начнет выполнять процедуру самотестирования, или POST.
После того как успешно завершилась процедура POST, вызывается программное прерывание BIOS INT 19h п запускается процедура поиска загрузочного сектора, который может находиться на жестком диске или сменном носителе. Порядок опроса устройств устанавливается с помощью параметров BIOS First Boot Device, Second Boot Device и Third Boot Device.
Рассмотрим пример, когда в системе установлен следующий порядок загрузки: первое загрузочное устройство — дискета (F1 орру), второе — CD/D VD и третье — жесткий диск (HDD-0).
3. Загрузка с HDD начнется, если нет дискеты в дисководе и загрузочного компакт-диска в приводе для CD. В этом случае BIOS обращается к первому физическому сектору диска, откуда считывает таблицу разделов жесткого диска и код главной загрузочной записи (MBR). После этого BIOS заканчивает свою работу и передает управление коду MBR. Жесткий диск может состоять из одного или нескольких разделов, и один из них должен быть помечен как активный. Программа, содержащаяся в MBR, считывает загрузчик операционной системы, который находится в первом секторе активного раздела, и запускает его. После этого начинают загружаться основные системные файлы.
В таком порядке можно загружаться с любого устройства, не изменяя параметры BIOS. Однако для обычного использования компьютера желательно установить в BIOS Setup первоочередную загрузку с жесткого диска, поскольку в этом случае процесс пойдет быстрее и не нужно будет постоянно проверять, есть ли диски в дисководах.
Мониторинг состояния системы. BIOS, встроенные утилиты.
Старые IBM PC/XT, которые не имели полноценной операционной системы, либо её загрузка не была необходимой пользователю, вызывали встроенный интерпретатор языка BASIC. В некоторых BIOS’ах реализуется дополнительная функциональность:
§ Воспроизведение аудио-CD или DVD-дисков.
§ Обновление самого BIOS’а (с внешних носителей).
§ Использование простых браузеров.
Мониторинг системы можно осуществлять через специальный пункт BIOS.
Сигналы системных ошибок компьютерной техники. Свет, звук, текст.
При появлении аппаратной ошибки, компьютер (BIOS) выдает сигналы на встроенный динамик. Эти сигналы можно расшифровать, тем самым выявить причину неполадки, чтобы правильно воспользоваться этими данными, вам необходимо определить какой у вас BIOS.
Это можно узнать :
1) при загрузке компьютера, первое что появляется на экране - название BIOS;
2) при загрузке компьютера, зайдя в BIOS с помощью клавиши DEL (либо F12, F4, в зависимости от типа BIOS), обычно марка BIOS пишется вверху;
3) если же ваш монитор не выводит изображение на экран, необходимо вскрыть боковую крышку ПК, и найти микросхему BIOS на материнской плате, и посмотреть наименование на ней (обычно это микросхема с блестящей наклейкой).
Ниже приведены расшифровки сигналов различных BIOS.
Сигналы AWARD BIOS
Для включения практически любого компьютера используется кнопка «Power» («Питание»), расположенная на лицевой части его корпуса. Корректное выключение компьютера производится из операционной системы, хотя можно так же воспользоваться этой кнопкой. Так же кнопка «Power» поможет произвести экстренное выключение в случае «зависания» компьютера.
Рядом с кнопкой включения на системном блоке, часто располагается еще одна кнопка, более маленького размера. Называется она «Reset» («Перезапуск») и служит для аварийной перезагрузки компьютера без выключения питания. На ноутбуках данная кнопка отсутствует.
Монитор имеет собственную кнопку включения и выключения питания. Правда, включить его достаточно лишь в первый раз или после полного отключения электричества. В дальнейшем при включении компьютера, монитор будет включаться автоматически, а при его выключении, автоматически переходить в «спящий режим» (выключаться).
На большинстве компьютеров, после успешной проверки его компонентов, выводится на экран сводная таблица, содержащая информацию о конфигурации системы. Из нее можно узнать о типе и характеристиках установленных процессора, памяти, жесткого диска и прочих устройствах вашего ПК.
Правда, вся эта информация довольно быстро сменяет друг друга на экране и что бы успеть ее увидеть , можно временно приостановить загрузку компьютера с помощью клавиши Pause/Break. Нажмите ее в нужный момент и бегущие строки остановятся. Для возобновления загрузки ПК нажмите любую другую клавишу.
Итак, если аппаратная составляющая вашего компьютера в порядке и средства самотестирования не выявили никаких проблем, то далее начинается непосредственно процесс загрузки операционной системы. В течение некоторого времени в оперативную память и на жесткий диск загружаются самые важные компоненты ОС:
- Ядро, состоящее из комбинации программных и конфигурационных файлов;
- Драйверы, отвечающие за подключение к системе и корректную работу различных устройств;
- Динамические библиотеки, использующиеся разными программами для выполнения основных операций в системе;
- Графическая оболочка (пользовательский интерфейс), то есть, то, что вы будете видеть на экране монитора во время работы с ОС.
Пользователи же в этот момент наблюдают на экране монитора стартовую заставку той операционной системы, которая установлена на вашем компьютере.
Наконец перед вами должен появиться основной экран ОС или так называемый рабочий стол. Еще какое-то непродолжительное время может понадобиться системе для загрузки вспомогательных приложений, например антивируса. После этого экран «успокоится» и на этом загрузку системы можно считать законченной, а компьютер готовым к работе.
Этапы загрузки операционных систем
Давным-давно, когда я был маленьким работал в институтской лаборатории на большом компьютере СМ-3 (что-то вроде знаменитой PDP-11), bootstrapping (загрузка) ЭВМ выглядела так. В фотосчитыватель заправлялась коротенькая бумажная перфолента с пробитой на ней программой начальной загрузки, запускался процесс считывания, а дальше … как повезет.
Дело в том, что бумажная ленточка постепенно изнашивалась, начинала плохо читаться, и ЭВМ могла с первого раза «не завестись». В этом случае процесс нужно было повторять, порой несколько раз, до победного конца. Когда ленточка окончательно выходила из строя и машина никак не хотела «оживать», приходилось временно вводить программу начальной загрузки вручную при помощи расположенных на передней панели переключателей. Тут, главное, было не торопиться и не делать ошибок.
В современных компьютерах процесс загрузки большей частью автоматизирован, однако это не означает, что он не заслуживает того, чтобы с ним познакомиться.
Основные определения и этапы загрузки операционной системы
Загрузчик 1-го уровня. Master Boot Record
Master Boot Record — главная загрузочная запись, расположена в первых физических секторах загрузочных устройств хранения. Она содержит таблицу разделов (Partition Table) и исполняемый код.
Главной задачей программы, записанной в MBR, является поиск активного системного раздела диска и передача управления его загрузочному сектору. Таким образом, эту стадию можно назвать подготовительной, в силу того, что непосредственно загрузки самой ОС еще не происходит.
Системным принято называть раздел диска (устройства хранения) на котором расположены файлы операционной системы, отвечающие за процесс загрузки ОС (сама операционная система может размещаться в другом разделе). В принципе, системных разделов может быть несколько, поэтому один из них отмечается как активный. Именно его ищет программа, загруженная с MBR.
Загрузчик 2-го уровня. Partition Boot Sector
Следующим этапом загрузки компьютера является передача управления исполняемому коду, записанному в PBS (Partition Boot Sector — загрузочный сектор активного раздела). PBS расположен в первом секторе (секторах) соответствующего раздела диска. В коде PBS прописано имя файла загрузчика операционной системы, которому и передается управление на этом этапе.
Особенности загрузки операционных систем 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 и их загрузка становится невозможной. Лечится достаточно легко, но неискушенного пользователя такая ситуация может поставить в тупик.
Добавить к этому практически нечего и можно переходить непосредственно к редактированию загрузочного меню. Начнем с загрузочного меню Windows.
А вы никогда не задумывались над тем, что же происходит с операционной системой в тот момент, когда она рисует свой логотип и говорит «Starting Windows»? И вообще, почему она долго загружается? Ведь при старте системы уж точно не решаются никакие задачи, сложные с вычислительной точки зрения!
Что тогда подразумевает под собой загрузка операционной системы? По большей части это проецирование в память исполняемых модулей и инициализация служебных структур данных. Структуры данных живут в памяти, поэтому операции с ними по идее должны быть быстрыми. Все наталкивает на мысль о том, что время съедается именно процессом загрузки исполняемых модулей в память.
Давайте интереса ради разберемся, какие модули, в каком количестве и в каком порядке загружаются при старте ОС. Чтобы выяснить это, можно, например, получить лог загрузки системы. Подопытная ОС в моем случае — Windows 7 Enterprise x64. Логировать процесс загрузки будем при помощи отладчика ядра. Существует несколько вариантов отладчиков ядра, лично я предпочитаю WinDbg. Также нам понадобятся некоторые вспомогательные средства для волшебного превращения лога в нечто более приятное глазу.
Mining and crafting
Настройка отладки хорошо гуглится, поэтому описывать подробно этот процесс я не буду. Поскольку нас интересует все происходящее с момента старта системы, нам нужно отметить пункт «Cycle Initial Break», с помощью чего отладчик остановится, как только в отлаживаемой системе будет загружена подсистема отладки ядра. Дублирование вывода в файл можно осуществить при помощи команд ".logopen" и ".logclose", это просто. Другая полезная команда — ".cls". Она очищает экран команд, и да, только экран команд.
Интересующая нас функция — «MiCreateImageFileMap». Это внутренняя функция менеджера памяти, проецирующая исполняемый файл в память. Проецирование в память происходит при создании секции, например, при запуске исполняемого файла. Однако учтите, что если исполняемый файл проецируется в память, это не гарантия того, что будет выполнен его код! Эта функция просто создает проекцию, чаще всего «про запас», чтобы, если кто-то надумает запустить модуль на исполнение, можно было сэкономить время его загрузки. На эту функцию поставим логирующую точку останова.
Если у вас достаточно маны, вводите следующую команду:
- 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, с которым можно поиграться в любом редакторе графов.
Граф в формате GML
Векторное изображение графа
Внимание! Бонус!
Граф загрузки для чистой ОС Windows 8 Enterprise x64 на живой машине ;)
Граф в формате GML
Векторное изображение графа
Простой 2 комментария
к сожалению, не помогло.
ещё один момент - компьютер запускается, но монитор включается только при загрузке рабочего стола. что происходи до этого момента - неизвестно
Picasso2019, тогда только читать мануал к материнке, там точно должно быть про вход в настройки UEFI BIOS.
ещё есть такая встроенная утилита MSI fast boot. Там при нажатии на кнопку GO2BIOS компьютер должен перезагпрузиться и войти в биос автоматически, но у меня комп просто перезагружается и висит чёрный экран
значит, вполне возможно, он вошёл, но похоже видеокарта не инициализировалась или основной стоит другая.
Инициализация видеокарточкой монитора происходит слишком быстро, монитор просто не успевает ничего отобразить и сразу переходит к запуску OS.
При включении компа сразу вслепую жмите кнопки для входа в биос (del, f2, f10) смотря что там у вас.
Вы уверены что у вас выключение было а не уход в сон?
Делайте именно перезагрузку, абслютно все железо для windows, что я видел, включая soc на планшетах, давало примерно одну секунду чтобы нажать del/f2/esc чтобы зайти в bios.
То что загрузка очень быстрая - это настройки в bios (fast boot) и гибернация в windows, когда вместо выключения, содержимое оперативной памяти просто сгружается на диск, а при включении считывается (даже состояние оборудования не меняется, за некоторыми исключениями).
p.s. очень редко но бывает что железо не видит вашей клавиатуры, но опять это потому что в bios например отключена поддержка usb keyboard (мало кто ее вообще отключает)
Попробуй выключить компьютер из сети. Затем достать батарейку питающую "биос и часы". Затем нажать кнопку включения - чтобы заряд с конденсаторов "ушёл". Подожди 2 минуты, воткни сетевой кабель обратно и попробуй снова запустить компутер (без батарейки). Возможно, он сам войдёт в биос или хотя бы сброшенные настройки позволят увидеть процесс загрузки полностью.
Сбросил Биос - не помогло. Есть предположение, что причина в связке видеокарта + монитор и в их настройках. Ещё один вопрос - могли ли приложения msi, которые были на диске с драйверами, стать причиной этой проблемы? Кстати, до установки видновс, Биос включался
Picasso2019, тогда попробуй ещё вариант - перед включением (нажатием кнопки включения) зажать Insert. Или нажать её сразу после нажатия кнопки включения или "подолбить" её же несколько раз.
Ну, или отключи винт на время проверки.
Загрузка ядра операционной системы
Завершающим этапом загрузки операционной системы является загрузка ядра ОС и передача ему управления.
Видимо Microsoft как то узнала об этом случае и в следующей версии своей ОС решила припрятать файлы загрузчика получше.
Начальный этап загрузки операционной системы. Менеджер загрузки ОС
Первоначально в Linux загрузчиком являлся LILO (Linux Loader). В силу имевшихся в нем недостатков, главным из которых была неспособность понимать используемые в Linux файловые системы, позднее начал использоваться загрузчик GRUB (GRand Unified Bootloader) в котором недостатки LILO были исправлены.
Если речь идет о версиях Windows до Vista, например, Windows XP, то будет загружен Ntldr. Он, в свою очередь, считывает информацию из текстового файла Boot.ini, в котором записана информация об установленных операционных системах.
Включение компьютера, POST, BootMonitor
Начальный этап загрузки операционной системы после включения компьютера начинается в BIOS (Basic Input/Output System — базовая система ввода-вывода). В настройках BIOS мы указываем загрузочное устройство, или ряд загрузочных устройств в порядке их приоритета. Возможны различные варианты загрузки и их комбинации: с жесткого диска, CD/DVD – диска, USB-flash и другие.
Сразу после прохождения POST (Power-On Self-Test — самотестирование после включения) BIOS компьютера начнет поочередно перебирать указанные загрузочные устройства до тех пор, пока на одном из них не найдет подходящую специальную запись, в которой содержится информация о дальнейших действиях.
Читайте также: