Ответы:
Официального списка нет, общий компилируется в само ядро, другие могут быть проанализированы расширениями ядра. Вот список, который я нашел до сих пор.
Общие параметры загрузки:
-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
: Проверка элементов свободной зоны.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
: Установить виртуальные цвета.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
: Уровень отладки ACPIacpi_layer
: ACPI Debug Layeracpi_sleep
: ACPI Sleepnvdebug
: Отладка NVDAResmannvrm
: NVDAResmanndrv_debug_level
: Уровень отладки NDRV (NVDAResman)pstep
: Power Step Debug (ACPI_SMC)hpet
: AppleHPETbusratio
(например 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
(который используется для анализа аргументов загрузки ядра).
Поиск в 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 Контролирует, выводит ли ядро полное ядро (если флаг снят) или просто журнал паники (если флаг установлен).
static void parse_bsd_args(void)
opensource.apple.com/source/xnu/xnu-2782.1.97/bsd/kern/…
void i386_init(void)
opensource.apple.com/source/xnu/xnu-2782.1.97/osfmk/i386/…
void gzalloc_configure(void)
opensource.apple.com/source/xnu/xnu-2782.1.97/osfmk/kern/…
-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)
Ядро 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 .
Не забывайте об очень полезной (если вы обновились до Lion и хотите использовать свой Mac в «закрытом режиме раскладушки» с открытой крышкой)
sudo nvram boot-args="iog=0x0"
слава к: chenga.8
Однако меня беспокоит то, что я не нахожу объяснения этому. Почему 0x0? Почему не 0x1? Что означает «йог» в любом случае?
Я должен отметить, что на моем MacBook это не работает.
Apple, кажется, не предоставляет полный список. Погуглил несколько известных вариантов и site:apple.com
не дал результатов. Сокращение списка опций позволяет найти статьи, подобные этой, и некоторый исходный код, анализирующий эти аргументы, но ничего комплексного.
Вы также можете найти PE_parse_boot_arg
функцию, которая хорошо разбирает загрузочные аргументы.
При этом в Интернете есть несколько сторонних страниц, где пользователи предоставляют наиболее полную информацию, которую я могу найти, но она может быть устаревшей: