Darwin / OS X için uygun açılış dizilerinin bir listesi var mı?


25

OS X’de önyükleme parametrelerini

nvram boot-args=[options]

-V (ayrıntılı) -x (güvenli mod) ve arch = x86_64 (64 bit özellikli makinelerde 64 bit çekirdeğe önyükleme) hakkında bildiğim seçenekler.

Başka var mı? Herhangi bir dokümantasyon görünmüyor.

Yanıtlar:


23

Resmi bir liste yok, sıradan olanı kendinden çekirdeğe derlendi, diğeri çekirdek uzantılarıyla ayrıştırılabilir. İşte şimdiye kadar bulduğum liste.

Genel önyükleme seçenekleri:

  • -v: Her zaman beklemeye gerek kalmadan Ayrıntılı modunda sistemi önyükleme CMD- Vbaşlangıçta.
  • -x: Başlangıçta beklemeye gerek kalmadan sistemi her zaman Güvenli Mod'daShift başlatın.
  • f: Eski Güvenli Mod.
  • -s: Önyükleme beklemeye gerek kalmadan tek kullanıcı moduna sistem CMD- Sbaşlangıçta.
  • -F - Boot Dosyasını Yoksay.
  • iog(örn. iog=0x0)

    Bu, Apple'ın dizüstü bilgisayar sistemleri için "Kapak" modunu tersine çevirir; ekranı kapattığınızda sistemi harici bir monitöre ve klavyeye bağladığınızda sistem uyanık kalır. Bu komutu çalıştırdıktan sonra, harici bir monitör bağlarken, iç ekran devre dışı bırakılır; bu, masaüstünüzü aynaladığınız bazı durumlarda yararlı olabilir ancak harici ekranı dizüstü bilgisayarınızın çalıştırabileceğinden daha yüksek bir çözünürlükte çalıştırmak isteyebilirsiniz. . CNET

  • arch

    Sistemin 32-bit ( i386) veya 64-bit ( x86_64) çekirdeğine nasıl önyükleneceğini değiştirir . Üçüncü taraf çekirdeği uzantılarının yalnızca 32 bit veya 64 bit olabileceğini unutmayın.

  • Graphics Mode: VESA Grafik Modu Boyutları.

  • Text Mode: VGA Metin Modu Boyutları.
  • Boot Graphics: Grafik veya Metin Modu.
  • Quiet Boot: Sessiz Önyükleme Modu.
  • MKext Cache: Mkext önbellek dosyası.
  • Kernel Cache: Çekirdek Önbellek dosyası.
  • rd: Kök cihaz.
  • boot-uuid: UUID'yi önyükleyin.
  • platform: Platform Uzmanı {ACPI}.
  • config: Alternatif yapılandırma pistiniconfig=foobar yükle (örneğin /Library/Preferences/SystemConfiguration/foobar.plistyerine yüklenecek com.apple.Boot.plist) x86osx .

  • serverperfmode=1

    OS X El Capitan 10.11 ve sonraki sürümlerinde, bu performans modunun sunucu uygulamaları için ek sistem kaynaklarını tahsis etmesini sağlar .

DTrace:

  • dtrace_dof_mode: DTrace DOF modlarını {0/1/2/3} ayarlayın.
  • DisableFBT: FBT'yi {1} devre dışı bırak.
  • IgnoreFBTBlacklist: Bazı kritik modüllerin kara listesini yok sayın {1}.

BSD:

  • -b: /Etc/rc.boot komutunu çalıştırmayın.
  • -l: Hafıza kaydı ( osfmk/kern/startup.c) ile sızdırıyor .
  • srv: {1} sunucusu olarak önyükleme yapın.
  • ncl: Küme sayısı.
  • nbuf: BSD için tampon sayısı.
  • kmem: Çekirdek belleği erişimi {1}.
  • trace: Çekirdek izleme arabelleği boyutu.
  • msgbuf: Mesaj Tamponu.
  • rp: Kök yolu.
  • mcache_flags: Bellek önbellek bayrakları.
  • mbuf_debug: MBuf Hata Ayıklama {1}.
  • initmcl: Init mbuf kümeleri.
  • socket_debug: Soket hata ayıklama (net).
  • net_affinity: Net İlişkisi (net).
  • rte_debug: Hata ayıklama (net) {flags}.
  • -rwroot_hack: Mount root okuma / yazma.

IOKit:

  • mseg: Maksimum bölüm.
  • dart: Mevcut eşleştiriciyi kaldır.
  • io: IO Kit Hata Ayıklama.

Mach:

  • keepsyms: {1} KLD / Adres sembolü çevirisini boşaltmayınız.
  • debug: Çekirdek hata ayıklaması {flags} (örneğin debug=0x14e).

    Size ekstra bilgi gösterecek olan çekirdek hata ayıklama özelliklerini etkinleştirir. Örneğin

    • 0x01 - Açılışta durun ve hata ayıklayıcının eklenmesini bekleyin
    • 0x02 - Çekirdeğe hata ayıklama çıktısını konsola gönder
    • 0x04 - Maske edilemez bir kesmede hata ayıklayıcıya bırakma
    • 0x08 - Çekirdek hata ayıklama bilgilerini seri bağlantı noktasına gönderme
    • 0x10 - Varsayılan hata ayıklayıcısını ddb yapın
    • 0x20 - Sistem günlüğüne arıza teşhisi bilgileri
    • 0x40 - Hata ayıklayıcının ARP'ye ve yönlendirmeye izin ver
    • 0x80 - Daha yeni sistemlerde eski gdb sürümlerini destekleyin
    • 0x100 - Grafiksel panik iletişim ekranını devre dışı bırakın
  • nvram_paniclog: panikloğu NVRAM {1} 'e ver.

  • pmsafe_debug: CPU'ları {1} "güvenli" güç moduna getirin.
  • preempt: Varsayılan preemption oranını ayarlayın.
  • unsafe: Max güvensiz kanta.
  • poll: Max anket alanı.
  • yield: Anket verimi değişimini programlayın.
  • idlehalt: CPU'nun düşük güç moduna {1} geçmesine izin vermek için boşta kalan ipliği durdurun.
  • panic_io_port: Panik içinde bu G / Ç bağlantı noktasından {0x0 - 0xffff} okuyun.
  • _fpu: Limit açılış zamanı işlemci özellikleri {387 / mmx / sse}.
  • disable high mem/2: yüksek mem tercih et}.
  • immediate_NMI: Hemen NMI hata ayıklayıcısını {1} zorla.
  • -legacy: Eski 32bit modunu zorla.
  • lcks: İstatistikleri kilitle.
  • novmx: Rosetta {1} 'da altivec emülasyonu yok.
  • max_valid_dma_addr: Maksimum geçerli DMA adresi.
  • maxbouncepool: Maksimum sıçrama havuzu boyutu.
  • maxloreserve: Azami düşük rezerv.
  • npvhash: Fizikselden sanal eşleme karmasına.
  • wpkernel: Yazma koruma çekirdeği {1}.
  • -no_shared_cr3: 64 bit kullanıcılar için paylaşılan çekirdek adres alanını devre dışı bırakın.
  • -pmap_trace: Pmap için çekirdek izlerini etkinleştirin.
  • _panicd_ip: Panik sunucusunun IP adresi.
  • _router_ip: Yönlendiricinin IP adresi.
  • panicd_port: Panik sunucusu limanı.
  • -zc: Serbest bölge eleman kontrolü.
  • mtxspin: Mutex dönüşü (ppc).
  • vmmforce: VMM gücü (ppc).
  • fn: Zorla nap (ppc) (acpi) {0/1/2}.
  • pmsx: Deneysel güç yönetimi step modu (ppc) {1}.
  • ctrc: İzlemeyi belirli cpu'ya (ppc) ayarlayın.
  • tb: Varsayılan olmayan izleme arabelleği boyutu (ppc).
  • wcte: Yazma birleştirme zamanlayıcı etkin (ppc).
  • mcklog: Makine kontrol bayrağını temizleyin (ppc).
  • mcksoft: Makine kontrol yazılımı kurtarma (ppc).
  • ht_shift: Varsayılan olmayan karma tablo boyutu (ppc) {1}.
  • zsize: Hedef bölge büyüklüğü.
  • colors: VM renklerini ayarlayın.
  • fill: Sayfaları doldurun.
  • serialbaud: Seri baud hızını ayarlayın.

Önyükleme seçenekleri xnu/osfmk/i386/i386_init.c:

  • diag: Diyagnostik çıkış.
  • serial: Seri diyagnostik konsolu. Seri klavye ve / veya konsol desteği.

  • maxmem

    Kullanılacak maksimum bellek. Adreslenebilir belleği belirtilen miktarla sınırlandırır (örn. maxmem=32).

  • cpus=1

    Sistemdeki aktif işlemci sayısını ayarlanan seviyeyle sınırlandırır. Bu, gücün korunmasına yardımcı olabilir, test etme ve programlama yapmadığınız sürece başkaları için pek de faydalı olmayabilir.

  • himemory_mode

    4GB'tan büyük sistemler için büyük fiziksel bellek yapılandırmalarında hata ayıklamak için kullanılır. Modlar: 0 - tüm sayfalar mevcut, 1 - yüksek notu devre dışı bırak, 2 - yüksek notu tercih et.

  • immediate_NMI

    Acil NMI hata ayıklayıcısını zorlayarak 4 GB'ın üzerindeki sistemler için hata ayıklama desteği.

  • urgency_notification_abstime

Diğer:

  • bluetoothHostControllerSwitchBehavior( never/ always)

    Bluetooth sürücüsüne, taktığınız dongle'a geçip geçmeyeceğinizi söyleyin. Harici dongle'ı yeniden başlattıktan sonra bile varsayılan yapmak için kullanın always.

  • smbios: Ayrıntılı SMBIOS (AppleSMBIOS.kext) {1}

  • acpi: AppleACPIPlatform Hata Ayıkla {1-8}
  • acpi_level: ACPI Hata Ayıklama Seviyesi
  • acpi_layer: ACPI Hata Ayıklama Katmanı
  • acpi_sleep: ACPI Uyku
  • nvdebug: NVDAResman hata ayıklama
  • nvrm: NVDAResman
  • ndrv_debug_level: NDRV Hata Ayıklama Seviyesi (NVDAResman)
  • pstep: Güç Adımında Hata Ayıklama (ACPI_SMC)
  • hpet: AppleHPET
  • busratio(örn. busratio=20): 10.5.6'da i7 işlemci kullanıyordu, 10.5.7'den sonra x86osx'a ihtiyacı yok .

Kaynak: xnu-1228 / Önyükleme Argümanları


kullanım

Örneğin, Tekli Moddayken ( CMD- Sbaşlangıçtaki sesten sonra), güvenli moda geçmek ve konsola ekstra çekirdek hata ayıklama çıktısı vermek için ayrıntılı olarak deneyin:

sudo nvram boot-args="-x -v debug=0x14e"

Argümanı var olana (geçersiz kılmadan) eklemek için şunu deneyin:

sudo nvram boot-args="-v $(nvram boot-args 2>/dev/null | cut -f 2-)"

Önyükleme bağımsız değişkenlerini kaldırmak için şunu çalıştırın:

sudo nvram boot-args=""
sudo nvram -d boot-args

Diğer resmi olmayan parametreler kernelkendiliğinden ikili olarak bulunabilir , örn.

$ 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

Ya da ( kaynakPE_parse_boot_argn önyükleme argümanlarını ayrıştırmak için kullanılır) arayarak Apple kaynak dosyalarında veya GitHub'da kontrol edin .


2
Bu, tüm zamanların en sevdiğim cevaplarından biri! Teşekkür ederim!
Chris

10

Google için boot-args site:developer.apple.combazı iyi kaynaklar verir. Örneğin

  • cpus=1 sistemi sadece tek bir CPU çekirdeği kullanmaya zorlar.
  • srv=1 Xserves ve Mac OS X Server'ın kurulu olduğu makinelerde ayarlanmıştır ve sözde sunucu dostu işlem için bazı çekirdek ayarlama parametrelerini değiştirmiştir.
  • _panicd_ip=a.b.c.d Çekirdek çekirdek dökümlerini yazmak için bir panik hata ayıklama sunucusunun IP adresini belirtmenizi sağlar.
  • debug=0xH (H, 1-4 basamaklı onaltılık bir sayıdır) Bu listeden çekirdek hata ayıklama bayraklarını ayarlamanızı sağlar:

    DB_HALT 0x01 Önyükleme sırasında durdurun ve hata ayıklayıcı ekini (gdb) bekleyin.  
    DB_PRT 0x02 Çekirdeğe hata ayıklama printf çıktısını konsola gönderin.  
    DB_NMI 0x04 NMI'de hata ayıklayıcıya bırakma (Komut-Güç, Komut-Seçenek-Kontrol-ÜstKrkt-Escape veya kesme anahtarı).  
    DB_KPRT 0x08 Çekirdek hata ayıklama kprintf çıkışını seri bağlantı noktasına gönder.  
    DB_KDB 0x10 DDB'yi (kdb) varsayılan hata ayıklayıcı (özel bir çekirdek gerektirir) yapın.  
    DB_SLOG 0x20 Sistem günlüğüne belirli tanılama bilgileri verir.  
    DB_ARP 0x40 Hata ayıklayıcının ARP'ye ve yönlendirmeye izin ver (yönlendiriciler arasında hata ayıklamaya izin verir ve kalıcı bir ARP girişi için olan gereksinimi ortadan kaldırır, ancak potansiyel bir güvenlik deliğidir) - tüm çekirdeklerde bulunmaz.  
    DB_KDP_BP_DIS 0x80 Yeni sistemlerde eski gdb sürümlerini destekleyin.  
    DB_LOG_PI_SCRN 0x100 Grafiksel panik iletişim kutusunu devre dışı bırakın.  
    DB_KERN_DUMP_ON_PANIC 0x0400 Sistem paniklerken çekirdeğin çekirdek dökümüne neden olur.  
    DB_KERN_DUMP_ON_NMI 0x0800 Kullanıcı bir NMI tetiklediğinde çekirdeğin çekirdek dökümüne neden olur.  
    DB_DBG_POST_CORE 0x1000 Bir NMI'ye yanıt olarak çekirdek çöktükten sonra çekirdeğin davranışını kontrol eder (DB_KERN_DUMP_ON_NMI). Kullanıcı bir NMI'yi tetiklerse ve bu bayrak temizse, çekirdek çekirdeği dökecek ve sonra devam edecektir. Tersine, eğer bu bayrak ayarlanmışsa çekirdek çekirdek dökecek ve ardından bir hata ayıklayıcı bağlantısı için bekleyecektir.  
    DB_PANICLOG_DUMP 0x2000 Çekirdeğin tam bir çekirdek dökümü (bayrak temizse) veya yalnızca bir panik günlüğü (bayrak ayarlanmışsa) atıp atmadığını kontrol eder.  
    




8

İşte biraz daha :

-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)

Sadece düz bir bağlantı çok yardımcı değil. Lütfen cevabınızı, buradaki diğer yazılar gibi, bazı seçeneklerin bir listesini içerecek şekilde genişletin.
nhinkle

@ nhinkle: Tamamlandı. Ben aslında bunu yapmadım, çünkü StackExchange'in masa desteği eksikliği, onları acı verici şekilde çirkin olmayan bir şekilde listelemeyi zorlaştırıyor. Ama çirkin bilginin hiçbir bilgiden daha iyi olmadığını düşünüyorum. :-)
Yamalar

Güncelleme için teşekkürler, @ Patches. Bu şimdi çok daha yararlı, +1!
nhinkle

3

Darwin çekirdeğine "xnu" denir, yapabileceğim en iyi şey, aranan kaynak kodunu bulmaktı.

Örnek: OS X 10.8.5

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

Prosedür:

Buraya gidin (veya OS X sürümünüz)

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

Download XNU tarball, özü, "parse_boot" için grep

cd xnu; grep -iRn parse_boot .


Harika linkler - teşekkürler! İlgili işlevin PE_parse_boot * olduğunu bilmek, statik ve kaçınılmaz bir seçenek listesinin yetkisizleştirilmesinden çok daha faydalıdır.
Ted Middleton

1

Son derece kullanışlı olanı unutmamak için (Lion'a güncelleme yaptıysanız ve mac'unuzu 'kapalı kapaklı modda' kapağı açıkken kullanmak istiyorsanız)

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

şerefine : chenga.8

Ancak beni rahatsız eden şey, bunun için bir açıklama bulamamam. Neden 0x0? Neden 0x1 değil? 'İog' zaten ne anlama geliyor?

MacBook'umda çalışmadığını belirtmeliyim.


0x0 ilk onaltılık dönemdir.
Trevor Rudolph

Benim için hem 10.7 hem de 10.8'de çalıştı, ancak yeniden başlatmanız ve ardından başlattıktan sonra kapağı kapatıp açmanız gerekir.
Lri

0

Apple, kapsamlı bir liste sunmuyor gibi görünüyor. Birkaç bilinen seçenek için googling ve site:apple.comsonuç vermez. Seçenekler listesini azaltmak, bunun gibi makaleler ve bazı argümanları bu argümanları ayrıştırırken bulur , ancak kapsamlı değildir.

Ayrıca PE_parse_boot_arg, önyükleme argümanlarını ayrıştıran bir işlevi de arayabilirsiniz .


Söylendiği gibi, web'de kullanıcıların bulabildiğim en kapsamlı bilgiyi sağladığı birkaç üçüncü taraf sayfa var, ancak güncel olmayabilir:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.