Відповіді:
Офіційного списку немає, загальний компілюється в ядро само-себе, інший може бути проаналізований розширеннями ядра. Ось список, який я знайшов поки що.
Загальні параметри завантаження:
-v
: Завжди завантажуйте систему в режимі докладної роботи, не затримуючи її 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
У ОС 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
: MBbu Debug {1}.initmcl
: Init mbuf кластери.socket_debug
: Налагодження розетки (нетто).net_affinity
: Чиста спорідненість (нетто).rte_debug
: Налагодження маршруту (нетто) {flags}.-rwroot_hack
: Горіння кореневого читання / запису.IOKit:
mseg
: Макс сегмент.dart
: Видаліть присутній картограф.io
: IO Kit Debug.Мах:
keepsyms
: Не розвантажуйте KLD / переклад адрес-символів {1}.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
: віддайте перевагу високій пам’яті}.immediate_NMI
: Примусовий негайний відладчик NMI {1}.-legacy
: Примусовий 32-бітовий режим.lcks
: Блокування статистики.novmx
: У Rosetta відсутня емуляція altivec {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 спін (шт.).vmmforce
: Сила ВММ (проц.).fn
: Сила дрімота (ppc) (acpi) {0/1/2}.pmsx
: Експериментальний степеновий режим управління потужністю (ppc) {1}.ctrc
: Встановлення трасування на конкретний процесор (ppc).tb
: Розмір буфера простеження за замовчуванням (ppc).wcte
: Запис увімкнення таймера комбінування (проміле).mcklog
: Очистити прапор перевірки машини (шт.).mcksoft
: Відновлення програмного забезпечення машини (шт.).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
: Рівень налагодження ACPIacpi_layer
: Шар налагодження ACPIacpi_sleep
: ACPI Сонnvdebug
: Налагодження NVDAResmannvrm
: NVDAResmanndrv_debug_level
: Рівень налагодження NDRV (NVDAResman)pstep
: Power Step Debug (ACPI_SMC)hpet
: AppleHPETbusratio
(наприклад busratio=20
): він використовував i7 cpu в 10.5.6, після 10.5.7 він не потребує x86osx .Джерело: xnu-1228 / Аргументи завантаження
Наприклад, коли ви перебуваєте в режимі одиночного режиму ( 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
(який використовується для розбору аргументів завантаження ядра).
Гуглінг для boot-args site:developer.apple.com
дає хороші ресурси. Напр
cpus=1
змушує систему використовувати лише одне ядро CPU. srv=1
встановлюється на Xserve і на машинах, на яких встановлений сервер Mac OS X, і нібито змінює деякі параметри настройки ядра для зручної роботи з сервером. _panicd_ip=a.b.c.d
Дозволяє вказати IP-адресу панічного сервера налагодження для запису ядер ядра ядра. debug=0xH
(Де Н - 1-4-значне шістнадцяткове число) Дозволяє встановити прапори налагодження ядра з цього списку:
DB_HALT 0x01 Зупиняється під час завантаження і чекає приєднання налагоджувача (gdb). DB_PRT 0x02 Відправити налагодження ядра виводу printf в консоль. DB_NMI 0x04 Перехід до налагоджувача на NMI (Command – Power, Command-Option-Control-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)
Ядро Дарвіна називається "xnu", найкраще, що я міг зробити, це зібрати вихідний код на те, що шукали.
Приклад: ОС X 10.8.5
https://gist.github.com/reklis/fa26d4e8db62d6eea9ea
Порядок:
Перейдіть сюди (або ваша версія OS X)
http://www.opensource.apple.com/release/mac-os-x-1085/
Завантажте XNU tarball, extract, grep для "parse_boot"
cd xnu; grep -iRn parse_boot .
Не забувайте про надзвичайно корисне (якщо ви оновились до Lion і хочете використовувати ваш Mac у «закритому режимі розкладачки» з відкритою кришкою)
sudo nvram boot-args="iog=0x0"
kudos to: chenga.8
Однак мене турбує те, що я не знаходжу цього пояснення. Чому 0x0? Чому б не 0х1? Що означає "йог" взагалі?
Слід зазначити, що на моїй макбукні це не працює.
Apple, схоже, не пропонує вичерпного списку. Гугл для кількох відомих варіантів і site:apple.com
не дає жодних результатів. Скорочення списку опцій знаходять статті , як це і деякі вихідного код розборі цих аргументів, але нічого всеосяжного.
Ви також можете шукати PE_parse_boot_arg
функцію, яка добре аналізує завантажувальні аргументи.
Незважаючи на це, в Інтернеті є кілька сторінок сторонніх сторін, де користувачі надають найбільш вичерпну інформацію, яку я міг би знайти, але вона може бути застарілою: