Чи є список доступних завантажувальних програм для darwin / OS X


25

В OS X можна встановити параметри завантаження за допомогою

nvram boot-args=[options]

Де я знаю параметри про -v (багатослівний) -x (безпечний режим) та arch = x86_64 (завантаження в 64-бітове ядро ​​на 64-бітних машинах).

Чи є інші? Здається, немає жодної документації.

Відповіді:


23

Офіційного списку немає, загальний компілюється в ядро ​​само-себе, інший може бути проаналізований розширеннями ядра. Ось список, який я знайшов поки що.

Загальні параметри завантаження:

  • -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: Рівень налагодження ACPI
  • acpi_layer: Шар налагодження ACPI
  • acpi_sleep: ACPI Сон
  • nvdebug: Налагодження NVDAResman
  • nvrm: NVDAResman
  • ndrv_debug_level: Рівень налагодження NDRV (NVDAResman)
  • pstep: Power Step Debug (ACPI_SMC)
  • hpet: AppleHPET
  • busratio(наприклад 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(який використовується для розбору аргументів завантаження ядра).


2
Це одна з моїх улюблених завжди відповідей! Дякую!
Кріс

10

Гуглінг для 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 Контролює, чи буде ядро ​​скидає повне ядро ​​(якщо прапор ясний) або просто журнал паніки (якщо встановлено прапор).  
    




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

Ядро Дарвіна називається "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 .


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

1

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

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

kudos to: chenga.8

Однак мене турбує те, що я не знаходжу цього пояснення. Чому 0x0? Чому б не 0х1? Що означає "йог" взагалі?

Слід зазначити, що на моїй макбукні це не працює.


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.