Com apple plist boot: Изучаем файл настроек загрузки Mac OS X

Изучаем файл настроек загрузки Mac OS X

В Mac OS X тысячи файлов настроек с расширением .plist, в которых прописаны абсолютно все параметры работы системы и отдельных программ. Но есть среди них и самый важный файл, отвечающий за параметры загрузки самой Mac OS X — com.apple.Boot.plist. Любой неверный параметр, прописанный там, серьёзно осложнит вам жизнь, потому что Мак может перестать загружаться. Тем не менее, знать устройство этого файла стоит любому пользователю, потому что через него можно настроить многие аспекты поведения компьютера. А особенно важно понимать устройство com.apple.Boot.plist владельцам хакинтошей, которым неизбежно придётся редактировать этот файл.

Кратко опишем, что позволяет сделать файл com.apple.Boot.plist:

  • зафиксировать определённые режимы загрузки (см. здесь). Например, можно заставить систему всегда загружаться в 64-битном режиме, вместо того, чтобы держать клавиши 6 и 4 при загрузке.
  • настроить графический режим загрузки: изменить разрешение экрана для заставки с яблочком или для текстового режима загрузки
  • ограничить количество используемой памяти или ядер процессора
  • загрузить систему с другим ядром
  • настроить задержку загрузчика перед выбором системы по умолчанию

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

Редактирование файла

Теперь пару слов о том, как редактировать файл com.apple.Boot.plist. Он лежит в папке /Library/Preferences/SystemConfiguration/. Но открыв его в стандартном редакторе TextEdit, вы не сможете сохранить внесённые изменения, потому что сделать это вам не позволят права доступа к файлу.

Варианты есть такие:

1) Терминал. Вводите команды и нажмите Enter после каждой из них:

sudo -s

Введите пароль администратора (символы на экране не появятся) и нажмите Enter.

nano /Library/Preferences/SystemConfiguration/com.apple.Boot.plist

Если не хотите вводить такую длинную строку, можете сократить её, как показано ниже:

nano /L*/Pref*/SystemC*/com.apple.Boot.plist

Прямо в Терминале откроется окно редактора. Мышь в нём работать не будет, курсор нужно перемещать стрелками клавиатуры.

Когда закончите редактирование, нажмите Ctrl+X, затем Y и Enter.

2) TextMate. Этот вариант поудобнее — программа TextMate умеет редактировать почти любой код в любых файлах, даже защищённых системой. Открыть в ней com.apple.Boot.plist вы сможете через контекстное меню файла, через меню File-Open в самой программе или перетаскиванием файла на иконку TextMate в Доке.

При сохранении файла вам попросят ввести пароль.

Разметка файла

Теперь о главном: поговорим о содержимом файла com. apple.Boot.plist. По умолчанию это содержимое всегда выглядит вот так:

<?xml version=»1.0″ encoding=»UTF-8″?>

<!DOCTYPE plist PUBLIC «-//Apple Computer//DTD PLIST 1.0//EN» «http://www.apple.com/DTDs/PropertyList-1.0.dtd»>

<plist version=»1.0″>

<dict>

<key>Kernel</key>

<string>mach_kernel</string>

<key>Kernel Flags</key>

<string></string>

</dict>

</plist>

<?xml version=»1.0″ encoding=»UTF-8″?>

<!DOCTYPE plist PUBLIC «-//Apple Computer//DTD PLIST 1.0//EN» «http://www.apple.com/DTDs/PropertyList-1.0.dtd»>

<plist version=»1.0″>

<dict>

<key>Kernel</key>

<string>mach_kernel</string>

<key>Kernel Flags</key>

<string></string>

</dict>

</plist>

Нас интересует только то, что находится между тегами <dict> и </dict>.

Секция Kernel — это имя ядра системы. Если написать просто имя файла, то загрузчик станет искать его в корне диска. Можно прописать путь к файлу ядра от корневой папки (что-нибудь вроде /Users/kernel) или даже путь к другому диску (в формате rd(0,1)/kernel, где первая цифра — это номер жёсткого диска, причём счёт начинается с нуля; а вторая — номер раздела на этом диске, здесь счёт идёт с единицы).

Если у вас хакинтош, то вам очень пригодится дополнительная секция Timeout, задающая паузу загрузчика (в секундах), после которой он начнёт грузить систему по умолчанию:

<?xml version=»1.0″ encoding=»UTF-8″?>

<!DOCTYPE plist PUBLIC «-//Apple Computer//DTD PLIST 1.0//EN» «http://www.apple.com/DTDs/PropertyList-1.0.dtd»>

<plist version=»1.0″>

<dict>

<key>Kernel</key>

<string>beta</string>

<key>Timeout</key>

<string>0</string>

<key>Kernel Flags</key>

<string>»Graphics Mode»=»1280x1024x32″</string>

</dict>

</plist>

Но самая важная секция — Kernel Flags. Здесь содержатся т.н. флаги ядра — короткие обозначения режимов загрузки системы. Всего их более 50, большинство из них имеют сугубо техническую направленность. Но пользователю могут пригодиться следующие:

-v загрузка в текстовом режиме (на экране вместо яблока вы увидите все системные сообщения)

-x загрузка в безопасном режиме (отключатся все посторонние расширения системы)

-s загрузка в режиме командной строки (на экране появится командная строка Терминала)

-F загрузка в обход имеющихся кэшей системных файлов

«Graphics Mode»=»1280x1024x32» — графический режим видеокарты при загрузке. Первая цифра — ширина экрана, вторая — высота (обе в пикселях), третья — глубина цвета (в битах)

«Text Mode»= аналогичная настройка для текстового режима

«Boot Graphics»=»Yes» (или «No») — ещё один переключатель графического/текстового режима загрузки

«MKext Cache»= — путь к кэшу расширений ядра

«Kernel Cache»= — путь к кэшу ядра

maxmem=2048 — максимальный объём используемой памяти (в мегабайтах)

cpus=2 — количество используемых системой ядер процессора

rd=disk1s2 — загрузка системы с другого раздела с ядром, находящимся на данном разделе. Принцип тот же: первая цифра — это номер жёсткого диска (счёт начинается с нуля), вторая — номер раздела на этом диске (счёт идёт с единицы)

boot-uuid= — обозначение раздела загрузки через специальный идентификатор. Об этом мы поговорим отдельно в цикле статей про хакинтош

arch=x86_64 — загрузка ядра в 64-битном режиме

-legacy — принудительная загрузка в 32-битном режиме

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

Ядра и загрузчики Mac OS от сторонних программистов для хакинтошей могут иметь свои дополнительные параметры.

Устранение проблем

Как мы уже говорили, ошибка в настройке com.apple.Boot.plist может привести к отказу системы загружаться. Чтобы исправить эту ошибку, вам придётся загрузиться с установочного DVD Mac OS X, но не устанавливать систему снова, а просто выбрать в верхем меню «Терминал» и ввести:

nano /Volumes/…/Library/Preferences/SystemConfiguration/com. apple.Boot.plist

Вместо трёх точек введите название раздела, на котором установлена Mac OS X.

macos — невозможно изменить разрешения для com.apple.Boot.plist

Вы используете защиту целостности системы (SIP), которая предотвращает изменение различных системных файлов и каталогов, когда она включена (что по умолчанию есть в El Capitan ( OSX 10.11). Он предназначен для обеспечения большей защиты от вредоносных программ, которые пытаются изменить систему для своих собственных целей. защищены SIP. Поскольку Apple намеревается, чтобы эти защищенные элементы не были изменены кем-либо, кроме Apple (или других проверенных подписантов, утвержденных Apple для определенного программного обеспечения, производимого ими), у меня есть сомнения относительно того, что после изменения разрешений SIP может быть повторно включена без отключения выполнения машины (отключена «временно» программным обеспечением, а не постоянным отключением оборудования). модификации недостаточно важны, чтобы отключить защиту SIP. (Одной из причин, по которой может потребоваться отключить SIP, может быть разрешение запуска определенных программ на машине, которые не будут работать с включенным SIP.) Я могу ошибаться здесь, но я считаю, что отключение защиты SIP снизит безопасность не больше, чем если бы одна застряла. с Yosemite (OSX 10.10), в котором SIP не включен так полно, как в El Capitan. Кроме того, Apple предупреждает, что если SIP отключен, вы будете использовать неподдерживаемую конфигурацию, которая, вероятно, сломается в будущем и оставит ваш компьютер в неизвестном состоянии.

Итак, первая часть заключается в том, чтобы определить, следует ли отключить или включить SIP, в зависимости от вашей ситуации и с учетом различных плюсов и минусов. Если кто-то решит отключить SIP, это можно сделать только в консоли восстановления (это не совсем так, но в целом так; есть и другие способы для машин, которые не могут быть загружены в консоль восстановления). Шаги:

  • Перезагрузите машину и загрузитесь в консоль восстановления, что делается путем удержания команды и R 9. 0011 ключи вниз при перезапуске. (Я хотел бы добавить, что если вы не знали, как попасть в консоль восстановления, то вам, вероятно, не стоит этого делать.)
  • Откройте программу Terminal , выбрав Terminal в меню Utilities .
  • В Терминале введите строку

     csrutil отключить
     
  • Перезагрузите машину либо перезапустив меню Apple , либо введя следующую команду в Терминале:

     перезагрузка
     
  • После перезагрузки машины вы можете проверить, отключен ли SIP, вызвав Терминал и введя:

     статус csrutil
     

    , который должен отображать следующее:

     Состояние защиты целостности системы: включено (пользовательская конфигурация).
    Конфигурация:
       Apple Внутренний: отключен
       Подписание Kext: отключено
       Защита файловой системы: отключена
       Ограничения отладки: отключено
       Ограничения DTrace: отключены
       Защита NVRAM: отключена
    Это неподдерживаемая конфигурация, которая может сломаться
    будущее и оставить вашу машину в неизвестном состоянии. 
     

mac — Как я могу попытаться загрузить более старую версию macOS, чем поддерживает мое оборудование?

Перво-наперво — нам нужно заставить работать многословную загрузку, чтобы мы могли видеть, что делает компьютер. Не знаю почему cmd V не работает, но есть другой способ.

Откройте установщик загрузочного USB в Finder и перейдите к Library/Preferences/SystemConfiguration/, затем откройте com.apple.Boot.plist в текстовом редакторе. Важный раздел будет выглядеть примерно так:

 <дикт>
    Флаги ядра
    <строка>

 

Итак, на данный момент флаги не установлены. Давайте добавим флаг verbose, изменив и его:

 
    Флаги ядра
    <строка>-v

 

Если я загружу установщик USB с этим изменением, вместо запрещенного знака я получу сообщение, которое гласит: «Mac OS X не поддерживается на этой платформе!». Это прогресс — теперь мы точно знаем, что столкнулись с аппаратной проверкой, — но нам все еще нужно обойти эту проверку.

Снова откройте установщик USB в Finder, но на этот раз перейдите к System/Library/CoreServices и откройте PlatformSupport.plist в текстовом редакторе. Внутри вы увидите список «SupportedBoardIds» и «SupportedModelProperties».

 <дикт>
    SupportedBoardIds
    <массив>
        Mac-031B6874CF7F642A
        Mac-F2268DC8
        [...]
        Mac-F2218EC8
    
    Поддерживаемые свойства модели
    <массив>
        MacBookPro4,1
        Macmini5,3
        [...]
        MacBookAir5,1
    

 

Все, что нам нужно сделать, это добавить идентификатор платы и модель нашего Mac в соответствующие списки. Вы можете найти свою модель в System Profiler в разделе «Обзор оборудования», где она указана как «Идентификатор модели». В моем случае у меня «MacBookAir7,1».

Чтобы найти идентификатор платы, откройте Терминал и введите: ioreg -l | grep -i идентификатор платы . Идентификатор моей платы оказался «Mac-9F18E312C5C2BF0B».

Я добавил эту информацию в PlatformSupport.plist вот так:

 
    SupportedBoardIds
    <массив>
        Mac-031B6874CF7F642A
        Mac-F2268DC8
        [...]
        Mac-F2218EC8
        <строка>Mac-9F18E312C5C2BF0B
    
    Поддерживаемые свойства модели
    <массив>
        MacBookPro4,1
        Macmini5,3
        [...]
        MacBookAir5,1
        MacBookAir7,1
    

 

И теперь, когда я загружаю программу установки, я получаю… панику ядра! Та-да! 🎉


В некоторых случаях это может быть конец пути, но у меня есть еще одна хитрость в рукаве. Ядро XNU, используемое macOS, имеет открытый исходный код, поэтому можно скомпилировать собственное ядро ​​с поддержкой дополнительного оборудования. на 9 нельзя0010 мне сделать это, но существуют других людей, которые умнее меня.

В моем Macbook Air 2015 года используется процессор Broadwell, и я нашел это ядро ​​для версии 10.9.5, в которой предполагается добавить поддержку Broadwell. Я мог бы также дать ему попробовать!

Я загрузил вложение и скопировал mach_kernel в корень моего установочного USB-накопителя. Обратите внимание: если бы я пытался установить OS X 10.10 или новее, я бы скопировал ее в System/Library/Kernels 9.0062 вместо этого.

Чтобы установщик мог использовать мое пользовательское ядро, мне нужно указать ему игнорировать кеш ядра. Для этого я снова открыл Library/Preferences/SystemConfiguration/com.apple.Boot.plist в текстовом редакторе и добавил флаг -f :

 
    Флаги ядра
    <строка>-v
    <строка>-f

 

Затем я снова попытался загрузить программу установки и. ..

Минуточку. Это не должно было работать на самом деле!

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

Крайне важно, чтобы вы не разрешали вашему Mac автоматически перезагружаться в конце установки , иначе вы просто получите еще один запрещенный знак. Помните, как мы добавили модель нашего Mac и идентификатор платы к PlatformSupport.plist ? Нам нужно и внести это изменение в копию, которая была установлена ​​на вашем жестком диске.

Когда ваш Mac сообщит вам, что установка завершена, немедленно откройте приложение «Терминал» и cp PlatformSupport.plist из System/Library/CoreServices на вашем USB-установщике в эквивалентное место на вашем жестком диске. Если вы используете кастомное ядро, как и я, обязательно скопируйте и его. После внесения этих изменений вы можете безопасно перезагрузить программу установки!

Вот и все, мой Macbook Air 2015 года успешно загрузился в полностью установленную копию Mavericks. К сожалению, я быстро обнаружил, что никакого графического ускорения не было, и я по-прежнему не мог использовать внутреннюю клавиатуру или трекпад, но я был , который мог просматривать веб-страницы, воспроизводить музыку и совершать звонки в Zoom. И кто знает, может быть, вам повезет больше, чем мне, с вашим железом!

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


P.S. Последнее замечание о пользовательских ядрах: они, как правило, заменяются с каждым обновлением ОС, включая незначительные обновления безопасности. Перед установкой обновления создайте резервную копию своего пользовательского mach_kernel , а затем скопируйте его обратно после завершения установки, но до перезагрузите компьютер!

П.

scroll to top