क्या डार्विन / ओएस एक्स के लिए उपलब्ध बूट-आर्ग्स की एक सूची है


25

OS X में आप बूट पैरामीटर सेट कर सकते हैं

nvram boot-args=[options]

जहाँ मैं -v (क्रिया) -x (सुरक्षित मोड) और आर्क = 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: वीईएसए ग्राफिक्स मोड आयाम।

  • Text Mode: वीजीए टेक्स्ट मोड आयाम।
  • Boot Graphics: ग्राफिक्स या टेक्स्ट मोड।
  • Quiet Boot: चुप बूटमोड।
  • MKext Cache: Mxtxt कैश फ़ाइल।
  • Kernel Cache: कर्नेल कैश फ़ाइल।
  • rd: मूल उपकरण।
  • boot-uuid: बूट यूयूआईडी।
  • platform: प्लेटफ़ॉर्म एक्सपर्ट {ACPI}।
  • config: लोड वैकल्पिक config plist (उदाहरण के बजाय config=foobarलोड होगा ) x86osx/Library/Preferences/SystemConfiguration/foobar.plistcom.apple.Boot.plist

  • serverperfmode=1

    OS X El Capitan पर 10.11 और बाद में, यह प्रदर्शन मोड को सर्वर अनुप्रयोगों के लिए अतिरिक्त सिस्टम संसाधन समर्पित करने में सक्षम बनाता है ।

DTrace:

  • dtrace_dof_mode: डीट्रेस डीओएफ मोड {0/1/2/3} सेट करें।
  • DisableFBT: FBT {1} अक्षम करें।
  • IgnoreFBTBlacklist: कुछ महत्वपूर्ण मॉड्यूल {1} के ब्लैकलिस्ट को अनदेखा करें।

बीएसडी:

  • -b: /Etc/rc.boot न चलाएं।
  • -l: मेमोरी लीक लॉगिंग ( osfmk/kern/startup.c)।
  • srv: सर्वर के रूप में बूट {1}।
  • ncl: गुच्छों की संख्या।
  • nbuf: बीएसडी के लिए बफ़र्स की संख्या।
  • kmem: कर्नेल मेमोरी एक्सेस {1}।
  • trace: कर्नेल ट्रेस बफर आकार।
  • msgbuf: संदेश बफर।
  • rp: जड़ पथ।
  • mcache_flags: मेमोरी कैश फ्लैग।
  • mbuf_debug: MBuf डीबग {1}।
  • initmcl: इनिट mbuf क्लस्टर।
  • socket_debug: सॉकेट डीबग (नेट)।
  • net_affinity: नेट एफिनिटी (नेट)।
  • rte_debug: रूट डिबग (नेट) {झंडे}।
  • -rwroot_hack: माउंट रूट पढ़ा / लिखा।

IOKit:

  • mseg: मैक्स खंड।
  • dart: मौजूद मैपर निकालें।
  • io: आईओ किट डीबग।

मच:

  • keepsyms: KLD / पता-प्रतीक अनुवाद {1} अनलोड न करें।
  • debug: कर्नेल डिबग {झंडे} (जैसे debug=0x14e)।

    कर्नेल डीबगिंग सुविधाओं को सक्षम करता है जो आपको अतिरिक्त जानकारी दिखाएंगे। उदाहरण के लिए

    • 0x01 - बूट समय पर रुकें और डीबगर को संलग्न करने के लिए प्रतीक्षा करें
    • 0x02 - कंसोल को कर्नेल डीबगिंग आउटपुट भेजें
    • 0x04 - गैर-विवादास्पद व्यवधान पर डीबगर में छोड़ें
    • 0x08 - एक सीरियल पोर्ट के लिए कर्नेल डिबगिंग जानकारी भेजें
    • 0x10 - ddb को डिफॉल्ट डिबगर बनाएं
    • 0x20 - सिस्टम लॉग को आउटपुट डायग्नोस्टिक्स की जानकारी
    • 0x40 - एआरपी और मार्ग के लिए डिबगर की अनुमति दें
    • 0x80 - नए सिस्टम पर gdb के पुराने संस्करणों का समर्थन करें
    • 0x100 - चित्रमय आतंक संवाद स्क्रीन को अक्षम करें
  • nvram_paniclog: एनवीआरएएम {1} को आतंकित करें।

  • pmsafe_debug: सीपीयू को "सुरक्षित" पावर मोड {1} में डालें।
  • preempt: डिफ़ॉल्ट प्रीमेशन रेट सेट करें।
  • unsafe: मैक्स असुरक्षित क्वांटा।
  • poll: मैक्स पोल क्वांटा।
  • yield: मतदान परिणाम की शिफ्ट अनुसूची।
  • idlehalt: कम शक्ति मोड {1} में सीपीयू की अनुमति देने के लिए निष्क्रिय निष्क्रिय धागा।
  • panic_io_port: इस I / O पोर्ट {0x0 से 0xffff} से पढ़े गए घबराहट में।
  • _fpu: बूट-टाइम सीपीयू को सीमित करें {387 / mmx / sse}।
  • disable high mem/2: उच्च मेम} को प्राथमिकता दें।
  • immediate_NMI: तत्काल एनएमआई डिबगर {1} पर बल दें।
  • -legacy: बल विरासत 32 बिट मोड।
  • lcks: लॉक आँकड़े।
  • novmx: रोजेटा {1} में कोई अल्टिवेक एमुलेशन नहीं।
  • max_valid_dma_addr: अधिकतम वैध डीएमए पता।
  • maxbouncepool: अधिकतम उछाल पूल आकार।
  • maxloreserve: अधिकतम कम आरक्षित।
  • npvhash: फिजिकल टू वर्चुअल मैपिंग हैश।
  • wpkernel: कर्नेल {1} को सुरक्षित रखें।
  • -no_shared_cr3: 64 बिट उपयोगकर्ताओं के लिए साझा कर्नेल पता स्थान अक्षम करें।
  • -pmap_trace: Pmap के लिए कर्नेल निशान सक्षम करें।
  • _panicd_ip: पैनिक सर्वर का आई.पी.
  • _router_ip: राउटर का आई.पी.
  • panicd_port: पैनिक सर्वर का पोर्ट।
  • -zc: फ्री ज़ोन एलिमेंट चेकिंग।
  • mtxspin: म्यूटेक्स स्पिन (पीपीसी)।
  • vmmforce: वीएमएम बल (पीपीसी)।
  • fn: बल झपकी (पीपीसी) (एसीपी) {0/1/2}।
  • pmsx: प्रायोगिक शक्ति प्रबंधन स्टेपर मोड (पीपीसी) {१}।
  • ctrc: विशिष्ट सीपीयू (पीपीसी) पर ट्रेसिंग सेट करें।
  • tb: गैर-डिफ़ॉल्ट ट्रेस बफर आकार (पीपीसी)।
  • wcte: टाइमर संयोजन सक्षम करें (पीपीसी) लिखें।
  • mcklog: क्लियर मशीन चेक फ्लैग (पीपीसी)।
  • mcksoft: मशीन चेक सॉफ्टवेयर रिकवरी (पीपीसी)।
  • ht_shift: गैर-डिफ़ॉल्ट हैश तालिका आकार (पीपीसी) {1}।
  • zsize: लक्ष्य क्षेत्र आकार।
  • colors: VM रंगों को सेट करें।
  • fill: पृष्ठों को भरें।
  • serialbaud: सीरियल बॉड रेट सेट करें।

से बूट विकल्प xnu/osfmk/i386/i386_init.c:

  • diag: नैदानिक ​​उत्पादन।
  • serial: सीरियल डायग्नोस्टिक कंसोल। एक सीरियल कीबोर्ड और / या कंसोल के लिए समर्थन।

  • maxmem

    अधिकतम मेमोरी का उपयोग करने के लिए। यह पता योग्य मेमोरी को निर्दिष्ट राशि (जैसे maxmem=32) तक सीमित करता है ।

  • cpus=1

    सिस्टम में सक्रिय प्रोसेसर की संख्या निर्धारित स्तर तक सीमित करता है। यह शक्ति को संरक्षित करने में मदद कर सकता है, जब तक आप परीक्षण और प्रोग्रामिंग नहीं करते हैं तब तक यह बहुत उपयोगी नहीं है।

  • himemory_mode

    इसका उपयोग 4GB से अधिक सिस्टम के लिए बड़ी भौतिक मेमोरी कॉन्फ़िगरेशन को डीबग करने के लिए किया जाता है। मोड: 0 - सभी पृष्ठ उपलब्ध, 1 - उच्च मेम अक्षम करें, 2 - उच्च मेम पसंद करते हैं।

  • immediate_NMI

    तत्काल एनएमआई डीबगर को मजबूर करके 4 जीबी से अधिक सिस्टम के लिए डिबग समर्थन।

  • urgency_notification_abstime

अन्य:

  • bluetoothHostControllerSwitchBehavior( never/ always)

    ब्लूटूथ चालक को बताएं कि क्या आपने उस डोंगल पर स्विच करना है जिसे आपने प्लग इन किया है। रिबूट के बाद भी बाहरी डोंगल को डिफ़ॉल्ट बनाने के लिए उपयोग करें always

  • smbios: Verbose SMBIOS (AppleSMBIOS.kext) {1}

  • acpi: डिबग AppleACPIPlatform {1-8}
  • acpi_level: एसीपीआई डिबग स्तर
  • acpi_layer: एसीपीआई डिबग लेयर
  • acpi_sleep: एसीपीआई नींद
  • nvdebug: NVDAResman डिबग
  • nvrm: NVDAResman
  • ndrv_debug_level: NDRV डिबग स्तर (NVDAResman)
  • pstep: पावर स्टेप डीबग (ACPI_SMC)
  • hpet: AppleHPET
  • busratio(उदाहरण busratio=20): 10.57 के बाद यह i7 cpu का उपयोग करता है, 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

के लिए Googling boot-args site:developer.apple.comकुछ अच्छी संसाधनों देता है। उदाहरण के लिए

  • cpus=1 सिस्टम को केवल एक सीपीयू कोर का उपयोग करने के लिए मजबूर करता है।
  • srv=1 Xserves और मशीनों पर सेट किया गया है जिसमें Mac OS X सर्वर स्थापित है, और माना जाता है कि सर्वर के अनुकूल संचालन के लिए कुछ कर्नेल ट्यूनिंग मापदंडों को बदलता है।
  • _panicd_ip=a.b.c.d आपको कर्नेल कोर डंप को लिखने के लिए एक आतंक डिबग सर्वर का आईपी पता निर्दिष्ट करने देता है।
  • debug=0xH (जहां H 1-4 अंकों वाला हेक्साडेसिमल नंबर है) आप इस सूची से कर्नेल डीबगिंग झंडे सेट करते हैं:

    DB_HALT 0x01 बूट-टाइम पर रुकें और डीबगर अनुलग्नक (gdb) की प्रतीक्षा करें।  
    DB_PRT 0x02 कंसोल के लिए कर्नेल डिबगिंग प्रिंटफ आउटपुट भेजें।  
    DB_NMI 0x04 एनएमआई (कमांड-पावर, कमांड-ऑप्शन-कंट्रोल-शिफ्ट-एस्केप, या इंटरप्ट स्विच) पर डिबगर में छोड़ें।  
    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

@ हिंकल: हो गया। मैंने मूल रूप से ऐसा इसलिए नहीं किया क्योंकि स्टेक्सएक्सचेंज की टेबल सपोर्ट की कमी से उन्हें इस तरह से सूचीबद्ध करना कठिन हो जाता है जो दर्दनाक रूप से बदसूरत नहीं है। लेकिन मुझे लगता है कि बदसूरत जानकारी किसी भी जानकारी से बेहतर है। :-)
पैच

अपडेट के लिए धन्यवाद, @ बैच। यह अब और अधिक उपयोगी है, +1!
nhinkle

3

डार्विन कर्नेल को "xnu" कहा जाता है, सबसे अच्छा मैं जो कर रहा था उसके लिए स्रोत कोड को टटोलना चाहता था।

उदाहरण: OS X 10.8.5

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

प्रक्रिया:

यहां जाएं (या आपका OS X संस्करण)

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

"Parse_boot" के लिए XNU टारबॉल, अर्क, grep डाउनलोड करें

cd xnu; grep -iRn parse_boot .


बढ़िया लिंक - धन्यवाद! यह जानते हुए कि प्रासंगिक कार्य PE_parse_boot * विकल्पों की एक स्थिर और अपरिहार्य रूप से बासी सूची को पुनर्जन्म करने की तुलना में बहुत अधिक उपयोगी है।
टेड मिडलटन

1

अत्यधिक उपयोगी को न भूलें (यदि आपने शेर को अद्यतन किया है और अपने मैक का उपयोग अपने ढक्कन के साथ 'बंद क्लैमशेल मोड' में करना चाहते हैं)

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

kudos to: चेंगा.8

हालाँकि, जो मुझे परेशान करता है, वह यह है कि मुझे इसके लिए कोई स्पष्टीकरण नहीं मिला। 0x0 क्यों? 0x1 क्यों नहीं? वैसे भी 'iog' क्या है?

मुझे कहना चाहिए कि मेरी मैकबुक पर यह काम नहीं करता है।


0x0 पहली हेक्स दशमलव अवधि है।
ट्रेवर रुडोल्फ

इसने मेरे लिए १०., और १०., दोनों पर काम किया, लेकिन आपको फिर से शुरू करना होगा, और फिर शुरू करने के बाद ढक्कन को बंद करना और खोलना होगा।
21:13 पर लारी

0

Apple एक व्यापक सूची प्रदान नहीं करता है। कुछ ज्ञात विकल्पों के लिए Googling और site:apple.comकोई परिणाम नहीं देता है। विकल्पों की सूची को कम करने से इस तरह के एक और कुछ स्रोत कोड इन तर्कों को पार्स करने वाले लेख मिलते हैं , लेकिन कुछ भी व्यापक नहीं है।

आप यह भी खोज सकते हैं PE_parse_boot_argकि, एक फ़ंक्शन जो, ठीक है, बूट तर्क देता है।


कहा जा रहा है कि वेब पर कुछ थर्ड पार्टी पेज हैं, जहां उपयोगकर्ता मुझे मिलने वाली सबसे व्यापक जानकारी प्रदान करते हैं, लेकिन यह पुराना हो सकता है:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.