Apakah ada daftar boot-args yang tersedia untuk darwin / OS X

25

Di OS X Anda dapat mengatur parameter boot dengan

nvram boot-args=[options]

Di mana opsi yang saya tahu tentang -v (verbose) -x (safe mode) dan arch = x86_64 (boot ke 64 bit kernel pada mesin 64 bit yang mampu).

Apakah ada yang lain? Sepertinya tidak ada dokumentasi.

stib
sumber

Jawaban:

23

Tidak ada daftar resmi, yang umum dikompilasi ke dalam kernel sendiri, yang lain dapat diuraikan oleh ekstensi kernel. Inilah daftar yang saya temukan sejauh ini.

Opsi boot umum:

  • -v: Selalu boot sistem dalam mode Verbose tanpa perlu menahan CMD- Vpada saat startup.
  • -x: Selalu boot sistem ke Safe Mode tanpa harus menahan Shiftsaat startup.
  • f: Mode Aman Lama.
  • -s: Boot sistem ke mode Pengguna Tunggal tanpa perlu menahan CMD- Spada saat startup.
  • -F - Abaikan File Boot.
  • iog(mis. iog=0x0)

    Ini membalikkan mode "Clamshell" untuk sistem laptop Apple, di mana ketika Anda menutup layar tetapi menghubungkan sistem ke monitor eksternal dan keyboard, sistem akan tetap terjaga. Setelah menjalankan perintah ini, saat menghubungkan monitor eksternal, tampilan internal akan dinonaktifkan, yang dapat bermanfaat dalam beberapa situasi seperti situasi di mana Anda mencerminkan desktop Anda tetapi ingin menjalankan layar eksternal pada resolusi yang lebih tinggi daripada yang dapat dijalankan oleh laptop Anda . CNET

  • arch

    Mengubah cara sistem melakukan boot, baik ke kernel 32-bit ( i386) atau 64-bit ( x86_64). Perhatikan bahwa ekstensi kernel pihak ketiga mungkin hanya 32-bit atau 64-bit.

  • Graphics Mode: VESA Graphics Dimensions Mode.

  • Text Mode: Dimensi Mode Teks VGA.
  • Boot Graphics: Grafik atau Mode Teks.
  • Quiet Boot: Quiet Bootmode.
  • MKext Cache: File cache mkext.
  • Kernel Cache: File Cache Kernel.
  • rd: Root Device.
  • boot-uuid: Boot UUID.
  • platform: Pakar Platform {ACPI}.
  • config: Muat alternatif config plist (misalnya config=foobarakan memuat /Library/Preferences/SystemConfiguration/foobar.plistbukannya com.apple.Boot.plist) x86osx .

  • serverperfmode=1

    Pada OS X El Capitan 10.11 dan yang lebih baru, ini memungkinkan mode kinerja untuk mendedikasikan sumber daya sistem tambahan untuk aplikasi server.

DTrace:

  • dtrace_dof_mode: Setel mode DTrace DOF {0/1/2/3}.
  • DisableFBT: Nonaktifkan FBT {1}.
  • IgnoreFBTBlacklist: Abaikan daftar hitam modul kritis tertentu {1}.

BSD:

  • -b: Jangan jalankan /etc/rc.boot.
  • -l: Memori kebocoran logging ( osfmk/kern/startup.c).
  • srv: Boot as server {1}.
  • ncl: Jumlah cluster.
  • nbuf: Jumlah buffer untuk BSD.
  • kmem: Akses memori kernel {1}.
  • trace: Ukuran buffer jejak kernel.
  • msgbuf: Penyangga Pesan.
  • rp: Path root.
  • mcache_flags: Bendera cache memori.
  • mbuf_debug: MBuf Debug {1}.
  • initmcl: Init mbuf cluster.
  • socket_debug: Socket debug (net).
  • net_affinity: Afinitas Bersih (bersih).
  • rte_debug: Rute debug (bersih) {flags}.
  • -rwroot_hack: Pasang root baca / tulis.

IOKit:

  • mseg: Segmen maks.
  • dart: Hapus mapper sekarang.
  • io: IO Kit Debug.

Mach:

  • keepsyms: Jangan membongkar terjemahan KLD / Address-simbol {1}.
  • debug: Kernel debug {flags} (mis debug=0x14e.).

    Mengaktifkan fitur debugging kernel yang akan menunjukkan kepada Anda informasi tambahan. Misalnya

    • 0x01 - Berhenti saat boot dan tunggu debugger untuk melampirkan
    • 0x02 - Kirim output debugging kernel ke konsol
    • 0x04 - Masuk ke debugger pada interupsi nonmaskable
    • 0x08 - Kirim informasi debug kernel ke port serial
    • 0x10 - Jadikan ddb debugger default
    • 0x20 - Keluarkan informasi diagnostik ke log sistem
    • 0x40 - Biarkan debugger ke ARP dan rute
    • 0x80 - Mendukung gdb versi lama pada sistem yang lebih baru
    • 0x100 - Nonaktifkan layar dialog panik grafis
  • nvram_paniclog: komit paniclog ke NVRAM {1}.

  • pmsafe_debug: Masukkan CPU ke mode daya "aman" {1}.
  • preempt: Tetapkan tingkat preemption default.
  • unsafe: Max quanta tidak aman.
  • poll: Max quanta polling.
  • yield: Jadwalkan pergeseran hasil jajak pendapat.
  • idlehalt: Hentikan utas menganggur untuk memungkinkan cpu ke mode daya rendah {1}.
  • panic_io_port: Dalam panik membaca dari port I / O ini {0x0 hingga 0xffff}.
  • _fpu: Batasi fitur cpu waktu boot {387 / mmx / sse}.
  • disable high mem/2: lebih suka mem tinggi}.
  • immediate_NMI: Paksa debugger NMI segera {1}.
  • -legacy: Memaksa mode 32bit lama.
  • lcks: Mengunci statistik.
  • novmx: Tidak ada emulasi altivec di Rosetta {1}.
  • max_valid_dma_addr: Alamat DMA maks. Valid.
  • maxbouncepool: Ukuran kolam pantul maks.
  • maxloreserve: Maks cadangan rendah.
  • npvhash: Hash pemetaan fisik ke virtual.
  • wpkernel: Tulis proteksi kernel {1}.
  • -no_shared_cr3: Nonaktifkan ruang alamat kernel bersama untuk pengguna 64 bit.
  • -pmap_trace: Aktifkan jejak kernel untuk pmap.
  • _panicd_ip: IP server panik.
  • _router_ip: IP router.
  • panicd_port: Port server panik.
  • -zc: Pemeriksaan elemen zona bebas.
  • mtxspin: Mutex spin (ppc).
  • vmmforce: Kekuatan VMM (ppc).
  • fn: Force nap (ppc) (acpi) {0/1/2}.
  • pmsx: Mode stepper manajemen daya eksperimental (ppc) {1}.
  • ctrc: Setel penelusuran ke CPU spesifik (ppc).
  • tb: Ukuran buffer jejak non-standar (ppc).
  • wcte: Menulis gabungan timer aktifkan (ppc).
  • mcklog: Hapus tanda centang periksa mesin (ppc).
  • mcksoft: Pemulihan perangkat lunak periksa mesin (ppc).
  • ht_shift: Ukuran tabel hash non-default (ppc) {1}.
  • zsize: Ukuran zona target.
  • colors: Atur warna VM.
  • fill: Isi halaman.
  • serialbaud: Atur baud rate serial.

Opsi boot dari xnu/osfmk/i386/i386_init.c:

  • diag: Keluaran diagnostik.
  • serial: Konsol diagnostik serial. Dukungan untuk keyboard seri dan / atau konsol.

  • maxmem

    Memori maksimum untuk digunakan. Ini membatasi memori yang dapat dialamatkan ke jumlah yang ditentukan (misalnya maxmem=32).

  • cpus=1

    Membatasi jumlah prosesor aktif dalam sistem hingga level yang ditentukan. Ini mungkin membantu menghemat daya, kemungkinan tidak berguna untuk banyak hal lain kecuali Anda menguji dan memprogram.

  • himemory_mode

    Ini digunakan untuk men-debug konfigurasi memori fisik besar untuk sistem lebih dari 4GB. Mode: 0 - semua halaman tersedia, 1 - nonaktifkan mem tinggi, 2 - lebih suka mem tinggi.

  • immediate_NMI

    Dukungan debug untuk sistem lebih dari 4GB dengan memaksa debugger NMI langsung.

  • urgency_notification_abstime

Lain:

  • bluetoothHostControllerSwitchBehavior( never/ always)

    Beri tahu driver Bluetooth apakah akan beralih ke dongle yang Anda sambungkan. Untuk menjadikan dongle eksternal sebagai default bahkan setelah reboot, gunakan always.

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

  • acpi: Debug AppleACPIPlatform {1-8}
  • acpi_level: Level Debug ACPI
  • acpi_layer: ACPI Debug Layer
  • acpi_sleep: ACPI Sleep
  • nvdebug: NVDAResman debug
  • nvrm: NVDAResman
  • ndrv_debug_level: Tingkat Debug NDRV (NVDAResman)
  • pstep: Power Step Debug (ACPI_SMC)
  • hpet: AppleHPET
  • busratio(misalnya busratio=20): Dulu i7 cpu di 10.5.6, setelah 10.5.7 tidak perlu x86osx .

Sumber: xnu-1228 / Argumen Booting


Pemakaian

Misalnya ketika Anda berada dalam Mode Tunggal ( CMD- Ssetelah suara saat startup), untuk menjalankan ke mode aman dan secara lisan dengan output debugging kernel tambahan ke konsol, coba:

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

Untuk menambahkan argumen ke yang sudah ada (tanpa mengesampingkan), coba:

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

Untuk menghapus argumen boot, jalankan:

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

Parameter non-resmi lainnya dapat ditemukan di kernelbiner sendiri, misalnya

$ 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

Atau periksa di file sumber Apple atau di GitHub dengan mencari PE_parse_boot_argn(yang digunakan untuk menguraikan argumen boot kernel).

kenorb
sumber
2
Ini adalah salah satu jawaban favorit saya sepanjang masa! Terima kasih!
Chris
10

Googling untuk boot-args site:developer.apple.commemberi beberapa sumber daya yang baik. Misalnya

  • cpus=1 memaksa sistem untuk hanya menggunakan inti CPU tunggal.
  • srv=1 diatur pada Xserves dan mesin yang telah menginstal Mac OS X Server, dan konon mengubah beberapa parameter tuning kernel untuk operasi yang ramah-server.
  • _panicd_ip=a.b.c.d Memungkinkan Anda menentukan alamat IP server debug panik untuk menulis dump inti kernel.
  • debug=0xH (Di mana H adalah angka heksadesimal 1-4 digit) Memungkinkan Anda mengatur flag debugging kernel dari daftar ini:

    DB_HALT 0x01 Hentikan saat boot dan tunggu debugger attach (gdb).  
    DB_PRT 0x02 Kirim hasil debug kernel printf ke konsol.  
    DB_NMI 0x04 Masuk ke debugger di NMI (Command – Power, Command-Option-Control-Shift-Escape, atau interrupt switch).  
    DB_KPRT 0x08 Kirim output kernel debugging kprintf ke port serial.  
    DB_KDB 0x10 Jadikan ddb (kdb) default debugger (membutuhkan kernel khusus).  
    DB_SLOG 0x20 Output info diagnostik tertentu ke log sistem.  
    DB_ARP 0x40 Izinkan debugger ke ARP dan rute (memungkinkan debugging melintasi router dan menghilangkan kebutuhan untuk entri ARP permanen, tetapi merupakan celah keamanan potensial) —tidak tersedia di semua kernel.  
    DB_KDP_BP_DIS 0x80 Mendukung gdb versi lama pada sistem yang lebih baru.  
    DB_LOG_PI_SCRN 0x100 Nonaktifkan dialog panik grafis.  
    DB_KERN_DUMP_ON_PANIC 0x0400 Menyebabkan kernel dump inti ketika sistem panik.  
    DB_KERN_DUMP_ON_NMI 0x0800 Menyebabkan kernel dump inti ketika pengguna memicu NMI.  
    DB_DBG_POST_CORE 0x1000 Mengontrol perilaku kernel setelah membuang inti sebagai respons terhadap NMI (DB_KERN_DUMP_ON_NMI). Jika pengguna memicu NMI dan flag ini jelas, kernel akan membuang inti dan kemudian melanjutkan. Sebaliknya, jika flag ini disetel, kernel akan membuang inti dan kemudian menunggu koneksi debugger.  
    DB_PANICLOG_DUMP 0x2000 Mengontrol apakah kernel membuang inti penuh (jika flag jelas) atau hanya log panik (jika flag diatur).  
    
Spiff
sumber
1
static void parse_bsd_args(void) opensource.apple.com/source/xnu/xnu-2782.1.97/bsd/kern/…
Denis Denisov
1
void gzalloc_configure(void) opensource.apple.com/source/xnu/xnu-2782.1.97/osfmk/kern/…
Denis Denisov
8

Berikut ini beberapa lainnya :

-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)
Tambalan
sumber
Hanya tautan biasa tidak sangat membantu. Harap rentangkan jawaban Anda untuk benar-benar memuat daftar beberapa opsi, seperti yang dilakukan oleh posting lain di sini.
nhinkle
@nhinkle: Selesai. Saya awalnya tidak melakukannya karena kurangnya dukungan tabel StackExchange membuatnya sulit untuk membuat daftar mereka dengan cara yang tidak jelek jelek. Tapi saya kira informasi yang jelek lebih baik daripada tidak ada informasi. :-)
Patches
Terima kasih atas pembaruannya, @Patches. Itu jauh lebih bermanfaat sekarang, +1!
nhinkle
3

Kernel darwin disebut "xnu", yang terbaik yang bisa saya lakukan adalah untuk mengambil kode sumber untuk apa yang sedang dicari.

Contoh: OS X 10.8.5

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

Prosedur:

Buka di sini (atau versi OS X Anda)

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

Unduh tar XNU, ekstrak, ambil untuk "parse_boot"

cd xnu; grep -iRn parse_boot .

slf
sumber
Tautan hebat - terima kasih! Mengetahui bahwa fungsi yang relevan adalah PE_parse_boot * jauh lebih berguna daripada memuntahkan daftar opsi statis dan tak terhindarkan basi.
Ted Middleton
1

Jangan lupa hal yang sangat berguna (jika Anda memperbarui ke Lion dan ingin menggunakan mac Anda dalam 'mode clamshell tertutup' dengan tutupnya terbuka)

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

pujian untuk: chenga.8

Namun, yang menggangguku adalah aku tidak menemukan penjelasan untuk itu. Kenapa 0x0? Kenapa tidak 0x1? Apa artinya 'iog'?

Saya harus menunjukkan bahwa pada macbook saya tidak berfungsi.

lorenzog
sumber
0x0 adalah periode desimal hex pertama.
Trevor Rudolph
Ini bekerja untuk saya pada 10.7 dan 10.8, tetapi Anda harus memulai kembali, dan kemudian tutup dan buka tutupnya setelah memulai.
Lri
0

Apple sepertinya tidak memberikan daftar lengkap. Googling untuk beberapa opsi yang diketahui dan site:apple.comtidak membuahkan hasil apa pun. Mengurangi daftar opsi menemukan artikel seperti ini dan beberapa kode sumber menguraikan argumen ini, tetapi tidak ada yang komprehensif.

Anda juga bisa mencari PE_parse_boot_arg, fungsi yang, mem-parsing argumen boot.


Yang sedang berkata, ada beberapa halaman pihak ketiga di web di mana pengguna memberikan informasi paling komprehensif yang bisa saya temukan, tetapi mungkin sudah ketinggalan zaman:

Daniel Beck
sumber