10

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

Как исправить черный экран смерти Mac?

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

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

Понимание процесса загрузки Mac

1). Инициализация загрузочного ПЗУ

  • Как только вы нажимаете кнопку питания, чтобы включить ваш Mac, он посылает электрические сигналы на главную логическую плату (также называемую материнской платой), которая инициализирует небольшой программный код, называемый BootROM, и делает доступной память (ОЗУ). BootROM управляет двумя другими подпрограммами, называемыми POST и EFI.
  • BootROM сначала выполняет POST (самотестирование при включении), который проверяет и активирует все другие аппаратные компоненты, необходимые для загрузки вашего Mac. Он также проверяет, достаточно ли памяти (ОЗУ) доступно и находится ли в хорошем состоянии, и воспроизводит звук запуска (с одиночным звуковым сигналом, также называемым звуковым сигналом), сигнализирующий о том, что все необходимое оборудование работает, в противном случае вы слышите дополнительные звуковые сигналы, указывающие на возможный аппаратный сбой, который останавливает процесс запуска. При выполнении POST дисплей остается черным.
  • После завершения POST ваш BootROM отправляет сигнал проверки видео на встроенные или подключенные дисплеи, и когда это происходит, экран становится серым на этом этапе процесса загрузки Mac.
  • Подмножество BootROM, которое называется EFI (Extensible Firmware Interface), затем выбирает предпочтительный раздел операционной системы для использования.
  • Если найдено более одной операционной системы, загружается последняя выбранная операционная система в системных настройках. На этом этапе пользователь может удерживать нажатой клавишу выбора, заставляя EFI отображать варианты доступных операционных систем. Весь этот процесс завершается так быстро, в течение нескольких секунд, что, если пользователь хочет получить экран выбора операционной системы, ему нужно удерживать клавишу выбора, как только он нажмет кнопку питания.

2). Выполнение загрузчика

  • После выбора раздела macOS загрузочное ПЗУ передает управление файлу загрузчика с именем Boot.efi (ранее известному как BootX), который находится в  папке /System/Library/CoreServices  в корневом разделе.
  • Как только файл Boot.efi (загрузчик) найден, он рисует «логотип Apple» на экране.
  • Основная задача этого файла Boot.efi заключается в загрузке основных расширений ядра (аппаратных драйверов, также известных как kexts) из папки кэша, расположенной в  каталоге /System/Library/Caches/com.apple.kext.caches/Startup/kernelcache  , в основную память (ОЗУ), а затем позволить ядру взять на себя управление системой.
  • Этот кеш подобен последней удачной конфигурации в Windows и содержит точно такой же набор расширений ядра, которые использовались во время предыдущей успешной загрузки. Если загрузчик не может загрузить какое-либо из этих расширений из кэша ядра из-за отсутствия, повреждения или неиспользуемого состояния, он просматривает список всего набора кекстов и драйверов, хранящихся в папке  /System/Library/Extensions  , ищет и загружает все те кексты, для атрибута которых задано значение, необходимое во время загрузки. Более поздний процесс занимает очень много времени, так как загрузчик просматривает каждый кекст и драйвер, чтобы проверить, требуется ли это во время загрузки или нет.
  • Когда загрузчик начинает загрузку расширений ядра, под логотипом Apple на экране появляется индикатор выполнения или вращающееся колесо, указывающее на ход процесса загрузки.
  • Однако, если шифрование FileVault включено, загрузчик сначала рисует окно входа в систему на экране, запрашивая пароль FileVault, прежде чем загружать какие-либо расширения ядра. Администратору компьютера необходимо ввести пароль FileVault, чтобы разрешить доступ к зашифрованному диску для загрузки с него. В противном случае это окно входа отображается позже.

3). Инициализация ядра и рутирование

  • Как мы читали ранее, Boot.efi (загрузчик) находит системную папку на вашем загрузочном диске и загружает расширения ядра в основную память (ОЗУ). Как только он загрузил все необходимые расширения ядра, он передает управление недавно загруженным расширениям ядра, и пользователь по-прежнему видит экран с серым логотипом Apple с полосой загрузки.
  • Эта фаза известна как инициализация ядра, поскольку ранее загруженные кексты начинают загрузку дополнительных драйверов и базовой системы BSD Unix, необходимых для загрузки вашего Mac, а затем инициализируют комплект ввода-вывода , который связывает загруженные драйверы с ядром. На этом этапе экран меняется на темно-серую вращающуюся шестеренку прямо под логотипом Apple.
  • На этом этапе загружено достаточно драйверов, чтобы ядро ​​могло найти корневое устройство. После того, как корневое устройство найдено, ядро ​​​​укореняет себя из BSD и монтирует системный раздел как корневую или файловую систему верхнего уровня, что также известно как рутирование.
  • После монтирования корневого раздела ядро ​​передает управление процессам корневой системы, которые отображают экран входа в систему и создают пользовательский интерфейс и среду. Этот процесс известен как инициализация системы.

4). Инициализация системы

  • На этом этапе темно-серый логотип Apple заменяется окном входа в систему или фоном рабочего стола пользователя, если включен автоматический вход.
  • Процессы корневой системы берут на себя управление от ядра и запускают первый неядерный процесс под названием Launchd , расположенный в /sbin/launchd, который имеет идентификационный номер процесса (PID) равный 1 и работает от имени пользователя root. Он работает как родительский процесс и порождает несколько других дочерних процессов.
  • Таким образом, основная задача процесса Launchd — завершить инициализацию системы и запустить все остальные процессы, отвечающие за создание пользовательского интерфейса и среды. Три основных процесса для создания пользовательской среды — это «loginwindow» , «SystemStarter»  и «user launchd» , которые затем обрабатывают различные другие задачи, включая отображение окна входа в систему и выполнение системного сценария и элементов запуска.
Просто для информации . Вот как мы сравниваем процесс загрузки в Mac , Windows и Linux.
Сравнение процесса загрузки в Mac, Windows и Linux
Сравнение процесса загрузки в Mac, Windows и Linux
Так что это был самый простой способ понять процесс загрузки macOS. Есть еще сотни других небольших процессов, которые инициируются и выполняются во время каждых четырех последовательностей загрузки, и я не могу включить их в руководство, поскольку включение сделает его более сложным для понимания.