Есть ли список доступных загрузочных аргументов для darwin / OS X


25

В OS X вы можете установить параметры загрузки с

nvram boot-args=[options]

Где опции, которые я знаю о -v (подробный) -x (безопасный режим) и arch = x86_64 (загрузка в 64-битное ядро ​​на 64-битных компьютерах).

Есть ли другие? Там, кажется, нет никакой документации.

Ответы:


23

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

Общие параметры загрузки:

  • -v: Всегда загружайте систему в режиме Verbose без необходимости удерживать CMD- Vпри запуске.
  • -x: Всегда загружайте систему в безопасном режиме без необходимости удерживать Shiftпри запуске.
  • f: Старый безопасный режим.
  • -s: Загрузка системы в однопользовательском режиме без необходимости удержания CMD- Sпри запуске.
  • -F - Игнорировать загрузочный файл.
  • iog(например iog=0x0)

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

  • arch

    Изменяет, как система загружается, в 32-битное ( i386) или 64-битное ( x86_64) ядро. Обратите внимание, что сторонние расширения ядра могут быть только 32-разрядными или 64-разрядными.

  • Graphics Mode: VESA Размеры графического режима.

  • Text Mode: Размеры текстового режима VGA.
  • Boot Graphics: Графический или текстовый режим.
  • Quiet Boot: Тихий загрузочный режим.
  • MKext Cache: Mkext кэш-файл.
  • Kernel Cache: Файл кэша ядра
  • rd: Корневое устройство.
  • boot-uuid: Загрузка UUID.
  • platform: Эксперт по платформам {ACPI}.
  • config: Загрузить альтернативный список конфигурации (например config=foobar, /Library/Preferences/SystemConfiguration/foobar.plistвместо com.apple.Boot.plist) будет загружен x86osx .

  • serverperfmode=1

    В OS X El Capitan 10.11 и более поздних версиях это позволяет режиму производительности выделять дополнительные системные ресурсы для серверных приложений.

DTrace:

  • dtrace_dof_mode: Установите режимы DTrace DOF {0/1/2/3}.
  • DisableFBT: Отключить FBT {1}.
  • IgnoreFBTBlacklist: Игнорировать черный список определенных критических модулей {1}.

BSD:

  • -b: Не запускайте /etc/rc.boot.
  • -l: Регистрация утечек памяти ( osfmk/kern/startup.c).
  • srv: Загрузка как сервер {1}.
  • ncl: Количество кластеров.
  • nbuf: Количество буферов для BSD.
  • kmem: Доступ к памяти ядра {1}.
  • trace: Размер буфера трассировки ядра.
  • msgbuf: Буфер сообщений.
  • rp: Корневой путь.
  • mcache_flags: Флаги кеша памяти.
  • mbuf_debug: MBuf Debug {1}.
  • initmcl: Инициализация кластеров mbuf.
  • socket_debugОтладка сокета (нетто).
  • net_affinity: Чистая близость (нетто).
  • rte_debug: Route debug (net) {flags}.
  • -rwroot_hack: Монтировать root для чтения / записи.

IOKit:

  • mseg: Макс. Сегмент.
  • dart: Удалить маппер присутствует.
  • io: IO Kit Debug.

Мах:

  • keepsyms: Не выгружать KLD / преобразование адреса и символа {1}.
  • debug: Отладка ядра {флаги} (например debug=0x14e).

    Включает функции отладки ядра, которые покажут вам дополнительную информацию. Например

    • 0x01 - Остановитесь во время загрузки и дождитесь подключения отладчика.
    • 0x02 - Отправить вывод отладочной информации ядра на консоль
    • 0x04 - Заходить в отладчик по немаскируемому прерыванию
    • 0x08 - Отправить отладочную информацию ядра на последовательный порт
    • 0x10 - Сделать ddb отладчиком по умолчанию
    • 0x20 - Вывести диагностическую информацию в системный журнал
    • 0x40 - Разрешить отладчик для ARP и маршрутизации
    • 0x80 - Поддержка старых версий GDB на новых системах
    • 0x100 - Отключить графический диалог паники
  • nvram_paniclog: отправить паниклог в NVRAM {1}.

  • pmsafe_debug: Переведите процессоры в «безопасный» режим питания {1}.
  • preempt: Установка скорости вытеснения по умолчанию.
  • unsafe: Макс небезопасных квантов.
  • poll: Макс. Кванты опроса.
  • yield: График смещения доходности опроса.
  • idlehalt: Остановить холостой поток, чтобы процессор перешел в режим пониженного энергопотребления {1}.
  • panic_io_port: При панике читать с этого порта ввода / вывода {0x0 до 0xffff}.
  • _fpu: Ограничить возможности процессора при загрузке {387 / mmx / sse}.
  • disable high mem/2: предпочитаю высокую память}.
  • immediate_NMI: Принудительный немедленный отладчик NMI {1}.
  • -legacy: Принудительно использовать 32-битный режим.
  • lcks: Заблокировать статистику.
  • novmx: Нет эмуляции altivec в Rosetta {1}.
  • max_valid_dma_addr: Максимальный действительный адрес DMA.
  • maxbouncepoolМаксимальный размер пула отказов.
  • maxloreserveМаксимальный низкий резерв.
  • npvhash: Физический в виртуальный хэш
  • wpkernel: Ядро защиты от записи {1}.
  • -no_shared_cr3: Отключить общее адресное пространство ядра для 64-битных пользователей.
  • -pmap_trace: Включить трассировку ядра для pmap.
  • _panicd_ip: IP-адрес сервера паники.
  • _router_ip: IP роутера.
  • panicd_port: Порт сервера паники.
  • -zc: Проверка элементов свободной зоны.
  • mtxspinMutex Spin (PPC).
  • vmmforce: Сила VMM (шт.)
  • fn: Force nap (ppc) (acpi) {0/1/2}.
  • pmsx: Экспериментальный шаговый режим управления питанием (ppc) {1}.
  • ctrc: Установить трассировку для конкретного процессора (ppc).
  • tb: Размер буфера трассировки не по умолчанию (ppc).
  • wcte: Включить запись таймера комбайна (ppc).
  • mcklog: Сбросить флажок проверки машины (ppc).
  • mcksoft: Восстановление программного обеспечения проверки компьютера (ppc).
  • ht_shift: Размер хеш-таблицы не по умолчанию (ppc) {1}.
  • zsize: Размер целевой зоны.
  • colors: Установить виртуальные цвета.
  • fill: Заполнить страницы.
  • serialbaud: Установить скорость последовательной передачи.

Варианты загрузки от xnu/osfmk/i386/i386_init.c:

  • diag: Диагностический вывод.
  • serial: Серийная диагностическая консоль. Поддержка последовательной клавиатуры и / или консоли.

  • maxmem

    Максимум памяти для использования. Он ограничивает адресуемую память указанным количеством (например maxmem=32).

  • cpus=1

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

  • himemory_mode

    Он используется для отладки больших конфигураций физической памяти для систем более 4 ГБ. Режимы: 0 - все доступные страницы, 1 - отключить высокий мем, 2 - предпочитать высокий мем.

  • immediate_NMI

    Поддержка отладки для систем более 4 ГБ путем принудительного немедленного отладчика NMI.

  • urgency_notification_abstime

Другие:

  • bluetoothHostControllerSwitchBehavior( never/ always)

    Сообщите драйверу Bluetooth, переключаться ли на подключенный ключ. Для использования внешнего ключа по умолчанию даже после перезагрузки используйте always.

  • smbios: Подробный SMBIOS (AppleSMBIOS.kext) {1}

  • acpi: Отладка платформы AppleACPIP {1-8}
  • acpi_level: Уровень отладки ACPI
  • acpi_layer: ACPI Debug Layer
  • acpi_sleep: ACPI Sleep
  • nvdebug: Отладка NVDAResman
  • nvrm: NVDAResman
  • ndrv_debug_level: Уровень отладки NDRV (NVDAResman)
  • pstep: Power Step Debug (ACPI_SMC)
  • hpet: AppleHPET
  • busratio(например busratio=20): он использовал процессор i7 в 10.5.6, после 10.5.7 ему не нужен x86osx .

Источник: xnu-1228 / Boot Arguments


использование

Например, когда вы находитесь в одиночном режиме ( CMD- Sпосле звука при запуске), чтобы перейти в безопасный режим и многословно с дополнительным выводом отладочной информации ядра на консоль, попробуйте:

sudo nvram boot-args="-x -v debug=0x14e"

Чтобы добавить аргумент в существующий (без переопределения), попробуйте:

sudo nvram boot-args="-v $(nvram boot-args 2>/dev/null | cut -f 2-)"

Чтобы удалить загрузочные аргументы, запустите:

sudo nvram boot-args=""
sudo nvram -d boot-args

Другие неофициальные параметры можно найти в kernelдвоичном коде, например

$ strings /System/Library/Kernels/kernel | grep -C7 maxmem
kernel_early_bootstrap
diag
serial
Serial mode specified: %08X
PE_init_printf
version_variant = %s
version         = %s
maxmem
himemory_mode
himemory_mode: %d
immediate_NMI
urgency_notification_abstime
i386_vm_init
power_management_init
machine_startup

Или проверьте либо в исходных файлах Apple, либо в GitHub, выполнив поиск PE_parse_boot_argn(который используется для анализа аргументов загрузки ядра).


2
Это один из моих самых любимых ответов! Спасибо!
Крис

10

Поиск в Google boot-args site:developer.apple.comдает хорошие ресурсы. Например

  • cpus=1 вынуждает систему использовать только одно ядро ​​процессора.
  • srv=1 устанавливается на Xserve и компьютерах, на которых установлен Mac OS X Server, и предположительно изменяет некоторые параметры настройки ядра для обеспечения дружественной работы на сервере.
  • _panicd_ip=a.b.c.d Позволяет указать IP-адрес сервера отладки паники для записи дампов ядра ядра.
  • debug=0xH (Где H - шестнадцатеричное число от 1 до 4) Позволяет установить флаги отладки ядра из этого списка:

    DB_HALT 0x01 Остановить во время загрузки и дождаться присоединения отладчика (gdb).  
    DB_PRT 0x02 Отправить отладочную информацию ядра printf на консоль.  
    DB_NMI 0x04 Вставить в отладчик на NMI (команда-питание, команда-опция-управление-управление-Shift-Escape или прерывание).  
    DB_KPRT 0x08 Отправить вывод отладочной информации ядра kprintf на последовательный порт.  
    DB_KDB 0x10 Сделать ddb (kdb) отладчиком по умолчанию (требуется собственное ядро).  
    DB_SLOG 0x20 Вывести определенную диагностическую информацию в системный журнал.  
    DB_ARP 0x40 Разрешить отладчику ARP и маршрутизировать (разрешает отладку между маршрутизаторами и устраняет необходимость в постоянной записи ARP, но является потенциальной дырой в безопасности) - доступно не во всех ядрах.  
    DB_KDP_BP_DIS 0x80 Поддержка старых версий GDB на более новых системах.  
    DB_LOG_PI_SCRN 0x100 Отключить графический диалог паники.  
    DB_KERN_DUMP_ON_PANIC 0x0400 Заставляет дамп ядра выдавать ядро ​​при панике системы.  
    DB_KERN_DUMP_ON_NMI 0x0800 Заставляет дамп ядра создавать дамп ядра, когда пользователь запускает NMI.  
    DB_DBG_POST_CORE 0x1000 Управляет поведением ядра после сброса ядра в ответ на NMI (DB_KERN_DUMP_ON_NMI). Если пользователь запускает NMI и этот флаг сброшен, ядро ​​сбросит ядро ​​и продолжит работу. И наоборот, если этот флаг установлен, ядро ​​будет выгружать ядро, а затем ждать подключения отладчика.  
    DB_PANICLOG_DUMP 0x2000 Контролирует, выводит ли ядро ​​полное ядро ​​(если флаг снят) или просто журнал паники (если флаг установлен).  
    




8

Вот еще немного :

-f                            Force rebuild extensions cache
-v                            Verbose booting shows debug information
-s                            Boots into single user mode (means only terminal based mode)
-x                            Boots into safe mode
-legacy                       Boots into 32bit instead of 64bit mode
rd=disk0s1                    Force to boot a specific partition on a specific drive (BSD drive notation, means disk0 = physical disk 1). Here disk1 partition 1 is forced to be booted.
Graphics Mode=1024x768x32@75  Forces to boot with a resolution of 1024 x 768 with 32bit colors at 75Hz
Kernel=mach_kernel            Forces to load a specific kernel, helpful for testing of new kernels.
cpus=1                        Force using only 1 CPU core, may help addressing issues
idlehalt=0                    May solve stuttering and shuttering on dualcore CPUs
platform=X86PC                Forces to not use powermanagement (disables ACPI)
platform=ACPI                 Forces to use powermanagement (enables ACPI, but may crash your system)

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

@nhinkle: Готово. Первоначально я этого не делал, потому что отсутствие поддержки таблиц в StackExchange затрудняет их перечисление таким образом, чтобы это не было до боли уродливо. Но я полагаю, что уродливая информация лучше, чем отсутствие информации. :-)
патчи

Спасибо за обновление, @Patches. Это намного полезнее, +1!
nhinkle

3

Ядро darwin называется «xnu», лучшее, что я мог сделать, это найти исходный код для того, что искали.

Пример: OS X 10.8.5

https://gist.github.com/reklis/fa26d4e8db62d6eea9ea

Процедура:

Перейдите сюда (или ваша версия OS X)

http://www.opensource.apple.com/release/mac-os-x-1085/

Скачайте tar-архив XNU, извлеките, grep для "parse_boot"

cd xnu; grep -iRn parse_boot .


Великолепные ссылки - спасибо! Знание, что соответствующей функцией является PE_parse_boot *, гораздо полезнее, чем регургитация статического и неизбежно устаревшего списка опций.
Тед Миддлтон

1

Не забывайте об очень полезной (если вы обновились до Lion и хотите использовать свой Mac в «закрытом режиме раскладушки» с открытой крышкой)

sudo nvram boot-args="iog=0x0"

слава к: chenga.8

Однако меня беспокоит то, что я не нахожу объяснения этому. Почему 0x0? Почему не 0x1? Что означает «йог» в любом случае?

Я должен отметить, что на моем MacBook это не работает.


0x0 - это первый шестнадцатеричный десятичный период.
Тревор Рудольф

У меня это работало как на 10,7, так и на 10,8, но вам нужно перезагрузить, а затем закрыть и открыть крышку после запуска.
Лри

0

Apple, кажется, не предоставляет полный список. Погуглил несколько известных вариантов и site:apple.comне дал результатов. Сокращение списка опций позволяет найти статьи, подобные этой, и некоторый исходный код, анализирующий эти аргументы, но ничего комплексного.

Вы также можете найти PE_parse_boot_argфункцию, которая хорошо разбирает загрузочные аргументы.


При этом в Интернете есть несколько сторонних страниц, где пользователи предоставляют наиболее полную информацию, которую я могу найти, но она может быть устаревшей:

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.