Процесс загрузки Mac
Так же, как Windows и Linux, 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 |
Так что это был самый простой способ понять процесс загрузки macOS. Есть еще сотни других небольших процессов, которые инициируются и выполняются во время каждых четырех последовательностей загрузки, и я не могу включить их в руководство, поскольку включение сделает его более сложным для понимания.