21

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

nvram boot-args=[options]

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

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

6 ответов6

15

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

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

  • -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=gfx будет загружать /Library/Preferences/SystemConfiguration/foo.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: отладка маршрута (net) {флаги}.
  • -rwroot_hack: монтировать root для чтения / записи.

IOKit:

  • mseg: максимальный сегмент.
  • dart: удалить маппер присутствует.
  • io IO Kit отладки.

Мах:

  • keepsyms: не выгружать перевод KLD/Address-символов {1}.
  • debug: ядро debug {flags} (например, 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: предпочесть high mem}.
  • 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: проверка элементов свободной зоны.
  • mtxspin: Mutex 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: установить цвета VM.
  • 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): в 10.5.6 использовался процессор i7, после 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 (который используется для анализа аргументов загрузки ядра).

9

Поиск по сайту для 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 (команда-питание, команда-опция-управление-сдвиг-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)
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, Extract, Grep для "parse_boot"

cd xnu; grep -iRn parse_boot .

1

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

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

слава к: chenga.8

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

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

0

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

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


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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .