Có một danh sách các boot-args có sẵn cho darwin / OS X không


25

Trong OS X, bạn có thể đặt tham số khởi động với

nvram boot-args=[options]

Trong đó các tùy chọn tôi biết về -v (verbose) -x (chế độ an toàn) và arch = x86_64 (khởi động vào kernel 64 bit trên các máy có khả năng 64 bit).

Có ai khác không? Dường như không có bất kỳ tài liệu nào.

Câu trả lời:


23

Không có danh sách chính thức, danh sách chung được biên dịch thành kernel tự, cái khác có thể được phân tích cú pháp bởi các phần mở rộng kernel. Đây là danh sách mà tôi đã tìm thấy cho đến nay.

Tùy chọn khởi động chung:

  • -v: Luôn khởi động hệ thống ở chế độ Verbose mà không cần phải giữ CMD- Vkhi khởi động.
  • -x: Luôn khởi động hệ thống vào Chế độ an toàn mà không cần phải giữ Shiftkhi khởi động.
  • f: Chế độ an toàn cũ.
  • -s: Khởi động hệ thống vào chế độ Người dùng đơn mà không cần phải giữ CMD- Skhi khởi động.
  • -F - Bỏ qua tập tin khởi động.
  • iog(ví dụ iog=0x0)

    Điều này đảo ngược chế độ "Clamshell" cho các hệ thống máy tính xách tay của Apple, khi bạn đóng màn hình nhưng kết nối hệ thống với màn hình ngoài và bàn phím, hệ thống sẽ tỉnh táo. Sau khi chạy lệnh này, khi kết nối màn hình ngoài, màn hình bên trong sẽ bị tắt, điều này có thể có ích trong một số trường hợp như bạn đang phản chiếu máy tính để bàn của mình nhưng muốn chạy màn hình ngoài ở độ phân giải cao hơn máy tính xách tay của bạn có thể chạy . Cnet

  • arch

    Thay đổi cách hệ thống khởi động, thành kernel 32 bit ( i386) hoặc 64 bit ( x86_64). Lưu ý rằng các phần mở rộng kernel của bên thứ ba có thể chỉ là 32 bit hoặc 64 bit.

  • Graphics Mode: Kích thước chế độ đồ họa VESA.

  • Text Mode: Kích thước chế độ văn bản VGA.
  • Boot Graphics: Chế độ đồ họa hoặc văn bản.
  • Quiet Boot: Bootmode yên tĩnh.
  • MKext Cache: Tập tin bộ nhớ cache Mkext.
  • Kernel Cache: Tập tin Kernel Cache.
  • rd: Thiết bị gốc.
  • boot-uuid: Khởi động UUID.
  • platform: Chuyên gia nền tảng {ACPI}.
  • config: Tải cấu hình thay thế plist (ví dụ: config=foobarsẽ tải /Library/Preferences/SystemConfiguration/foobar.plistthay vì com.apple.Boot.plist) x86osx .

  • serverperfmode=1

    Trên OS X El Capitan 10.11 trở lên, điều này cho phép chế độ hiệu suất dành riêng tài nguyên hệ thống bổ sung cho các ứng dụng máy chủ.

DTrace:

  • dtrace_dof_mode: Đặt chế độ DTrace DOF {0/1/2/3}.
  • DisableFBT: Vô hiệu hóa FBT {1}.
  • IgnoreFBTBlacklist: Bỏ qua danh sách đen của các mô-đun quan trọng nhất định {1}.

BSD:

  • -b: Đừng chạy /etc/rc.boot.
  • -l: Ghi nhớ rò rỉ bộ nhớ ( osfmk/kern/startup.c).
  • srv: Khởi động như máy chủ {1}.
  • ncl: Số cụm.
  • nbuf: Số lượng bộ đệm cho BSD.
  • kmem: Truy cập bộ nhớ kernel {1}.
  • trace: Kích thước bộ đệm hạt nhân.
  • msgbuf: Bộ đệm tin nhắn.
  • rp: Đường dẫn gốc.
  • mcache_flags: Cờ bộ nhớ cache.
  • mbuf_debug: Gỡ lỗi MBuf {1}.
  • initmcl: Ban đầu cụm mbuf.
  • socket_debug: Gỡ lỗi ổ cắm (mạng).
  • net_affinity: Mối quan hệ ròng (mạng).
  • rte_debug: Gỡ lỗi tuyến (net) {flags}.
  • -rwroot_hack: Mount root đọc / ghi.

IOKit:

  • mseg: Phân khúc tối đa.
  • dart: Hủy bỏ trình ánh xạ.
  • io: Gỡ lỗi IO Kit.

Mach:

  • keepsyms: Không tải KLD / Bản dịch ký hiệu địa chỉ {1}.
  • debug: Gỡ lỗi kernel {flags} (vd debug=0x14e).

    Cho phép các tính năng gỡ lỗi kernel sẽ hiển thị cho bạn thêm thông tin. Ví dụ

    • 0x01 - Dừng tại thời điểm khởi động và đợi trình gỡ lỗi đính kèm
    • 0x02 - Gửi đầu ra gỡ lỗi kernel đến bàn điều khiển
    • 0x04 - Thả vào trình gỡ lỗi trên một ngắt không thể mã hóa
    • 0x08 - Gửi thông tin gỡ lỗi kernel đến một cổng nối tiếp
    • 0x10 - Biến ddb thành trình gỡ lỗi mặc định
    • 0x20 - Đầu ra thông tin chẩn đoán vào nhật ký hệ thống
    • 0x40 - Cho phép trình gỡ lỗi đến ARP và định tuyến
    • 0x80 - Hỗ trợ các phiên bản cũ của gdb trên các hệ thống mới hơn
    • 0x100 - Vô hiệu hóa màn hình hộp thoại hoảng loạn đồ họa
  • nvram_paniclog: cam kết paniclog với NVRAM {1}.

  • pmsafe_debug: Đặt CPU vào chế độ năng lượng "an toàn" {1}.
  • preempt: Đặt tỷ lệ ưu tiên mặc định.
  • unsafe: Lượng tử không an toàn tối đa.
  • poll: Lượng tử tối đa.
  • yield: Lịch trình thay đổi năng suất thăm dò ý kiến.
  • idlehalt: Dừng chủ đề nhàn rỗi để cho phép cpu vào chế độ năng lượng thấp {1}.
  • panic_io_port: Trong hoảng loạn đọc từ cổng I / O này {0x0 đến 0xffff}.
  • _fpu: Giới hạn các tính năng cpu thời gian khởi động {387 / mmx / sse}.
  • disable high mem/2: thích mem cao}.
  • immediate_NMI: Buộc gỡ lỗi NMI ngay lập tức {1}.
  • -legacy: Buộc chế độ 32 bit.
  • lcks: Khóa thống kê.
  • novmx: Không có mô phỏng altivec trong Rosetta {1}.
  • max_valid_dma_addr: Tối đa địa chỉ DMA hợp lệ.
  • maxbouncepool: Kích thước bể nảy tối đa.
  • maxloreserve: Dự trữ tối đa thấp.
  • npvhash: Băm ánh xạ vật lý đến ảo.
  • wpkernel: Viết bảo vệ kernel {1}.
  • -no_shared_cr3: Vô hiệu hóa không gian địa chỉ kernel được chia sẻ cho người dùng 64 bit.
  • -pmap_trace: Kích hoạt dấu vết kernel cho pmap.
  • _panicd_ip: IP của máy chủ hoảng loạn.
  • _router_ip: IP của bộ định tuyến.
  • panicd_port: Cổng của máy chủ hoảng loạn.
  • -zc: Kiểm tra phần tử vùng miễn phí.
  • mtxspin: Quay Mutex (ppc).
  • vmmforce: Lực VMM (ppc).
  • fn: Buộc ngủ trưa (ppc) (acpi) {0/1/2}.
  • pmsx: Chế độ bước quản lý năng lượng thử nghiệm (ppc) {1}.
  • ctrc: Đặt theo dõi cho cpu cụ thể (ppc).
  • tb: Kích thước bộ đệm theo dõi không mặc định (ppc).
  • wcte: Viết kết hợp hẹn giờ kích hoạt (ppc).
  • mcklog: Xóa cờ kiểm tra máy (ppc).
  • mcksoft: Máy kiểm tra phần mềm khôi phục (ppc).
  • ht_shift: Kích thước bảng băm không mặc định (ppc) {1}.
  • zsize: Kích thước vùng mục tiêu.
  • colors: Đặt màu VM.
  • fill: Điền vào các trang.
  • serialbaud: Đặt tốc độ truyền nối tiếp.

Tùy chọn khởi động từ xnu/osfmk/i386/i386_init.c:

  • diag: Đầu ra chẩn đoán.
  • serial: Bảng điều khiển chẩn đoán nối tiếp. Hỗ trợ cho một bàn phím nối tiếp và / hoặc bàn điều khiển.

  • maxmem

    Bộ nhớ tối đa để sử dụng. Nó giới hạn bộ nhớ có thể đánh địa chỉ ở mức được chỉ định (ví dụ maxmem=32).

  • cpus=1

    Giới hạn số lượng bộ xử lý hoạt động trong hệ thống ở mức đã đặt. Điều này có thể giúp bảo tồn năng lượng, không có khả năng hữu ích cho nhiều người khác trừ khi bạn đang thử nghiệm và lập trình.

  • himemory_mode

    Nó được sử dụng để gỡ lỗi các cấu hình bộ nhớ vật lý lớn cho các hệ thống trên 4GB. Chế độ: 0 - tất cả các trang có sẵn, 1 - vô hiệu hóa mem cao, 2 - thích mem cao.

  • immediate_NMI

    Hỗ trợ gỡ lỗi cho các hệ thống trên 4GB bằng cách buộc trình gỡ lỗi NMI ngay lập tức.

  • urgency_notification_abstime

Khác:

  • bluetoothHostControllerSwitchBehavior( never/ always)

    Nói cho trình điều khiển Bluetooth xem có nên chuyển sang khóa mà bạn đã cắm hay không. Để biến khóa ngoài thành mặc định ngay cả sau khi khởi động lại, hãy sử dụng always.

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

  • acpi: Gỡ lỗi AppleACPIPl platform {1-8}
  • acpi_level: Mức gỡ lỗi ACPI
  • acpi_layer: Lớp gỡ lỗi ACPI
  • acpi_sleep: ACPI Ngủ
  • nvdebug: Gỡ lỗi NVDAResman
  • nvrm: NVDAR
  • ndrv_debug_level: Mức gỡ lỗi NDRV (NVDAResman)
  • pstep: Gỡ lỗi bước điện (ACPI_SMC)
  • hpet: AppleHPET
  • busratio(ví dụ busratio=20): Nó đã sử dụng i7 cpu trong 10.5.6, sau 10.5.7, nó không cần x86osx .

Nguồn: xnu-1228 / Đối số khởi động


Sử dụng

Ví dụ: khi bạn ở Chế độ đơn ( CMD- Ssau âm thanh khi khởi động), để chạy ở chế độ an toàn và rõ ràng với đầu ra gỡ lỗi hạt nhân bổ sung cho bảng điều khiển, hãy thử:

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

Để thêm đối số vào hiện tại (không ghi đè), hãy thử:

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

Để xóa đối số khởi động, hãy chạy:

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

Các tham số không chính thức khác có thể được tìm thấy trong tự kernelnhị phân, ví dụ:

$ 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

Hoặc kiểm tra trong các tệp nguồn của Apple hoặc trên GitHub bằng cách tìm kiếm PE_parse_boot_argn(được sử dụng để phân tích các đối số khởi động kernel).


2
Đây là một trong những câu trả lời yêu thích mọi thời đại của tôi! Cảm ơn bạn!
Chris

10

Googling cho boot-args site:developer.apple.comcung cấp một số tài nguyên tốt. Ví dụ

  • cpus=1 buộc hệ thống chỉ sử dụng một lõi CPU.
  • srv=1 được đặt trên Xserves và các máy đã cài đặt Mac OS X Server và được cho là thay đổi một số tham số điều chỉnh kernel cho hoạt động thân thiện với máy chủ.
  • _panicd_ip=a.b.c.d Cho phép bạn chỉ định địa chỉ IP của máy chủ gỡ lỗi hoảng loạn để ghi các kết xuất lõi kernel vào.
  • debug=0xH (Trong đó H là số thập lục phân 1-4 chữ số) Cho phép bạn đặt cờ gỡ lỗi kernel từ danh sách này:

    DB_HALT 0x01 Dừng lại khi khởi động và đợi trình gỡ lỗi đính kèm (gdb).  
    DB_PRT 0x02 Gửi kernel gỡ lỗi đầu ra printf đến bàn điều khiển.  
    DB_NMI 0x04 Thả vào trình gỡ lỗi trên NMI (Lệnh Command Power, Command-Option-Control-Shift-Escape hoặc công tắc ngắt).  
    DB_KPRT 0x08 Gửi kernel gỡ lỗi đầu ra kprintf đến cổng nối tiếp.  
    DB_KDB 0x10 Biến ddb (kdb) thành trình gỡ lỗi mặc định (yêu cầu kernel tùy chỉnh).  
    DB_SLOG 0x20 Xuất thông tin chẩn đoán nhất định vào nhật ký hệ thống.  
    DB_ARP 0x40 Cho phép trình gỡ lỗi tới ARP và định tuyến (cho phép gỡ lỗi trên các bộ định tuyến và loại bỏ nhu cầu nhập ARP vĩnh viễn, nhưng là một lỗ hổng bảo mật tiềm năng) Có thể có trong tất cả các hạt nhân.  
    DB_KDP_BP_DIS 0x80 Hỗ trợ các phiên bản gdb cũ trên các hệ thống mới hơn.  
    DB_LOG_PI_SCRN 0x100 Tắt hộp thoại hoảng loạn đồ họa.  
    DB_KERN_DUMP_ON_PANIC 0x0400 Gây ra lỗi kết xuất lõi khi hệ thống hoảng loạn.  
    DB_KERN_DUMP_ON_NMI 0x0800 Gây ra lỗi kết xuất lõi khi người dùng kích hoạt NMI.  
    DB_DBG_POST_CORE 0x1000 Điều khiển hành vi của hạt nhân sau khi đổ lõi để đáp ứng với NMI (DB_KERN_DUMP_ON_NMI). Nếu người dùng kích hoạt NMI và cờ này rõ ràng, kernel sẽ kết xuất lõi và sau đó tiếp tục. Ngược lại, nếu cờ này được đặt, kernel sẽ kết xuất lõi và sau đó chờ kết nối trình gỡ lỗi.  
    DB_PANICLOG_DUMP 0x2000 Kiểm soát xem hạt nhân có bỏ lõi đầy đủ hay không (nếu cờ rõ ràng) hoặc đơn giản là nhật ký hoảng loạn (nếu cờ được đặt).  
    




8

Dưới đây là một số chi tiết :

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

Chỉ cần một liên kết đơn giản là không hữu ích. Vui lòng mở rộng câu trả lời của bạn để thực sự chứa danh sách một số tùy chọn, giống như các bài đăng khác ở đây đã thực hiện.
nhinkle

@nhinkle: Xong rồi. Ban đầu, tôi đã không làm như vậy vì sự thiếu hỗ trợ bảng của StackExchange khiến cho việc liệt kê chúng theo cách không quá xấu xí. Nhưng tôi cho rằng thông tin xấu hơn là không có thông tin. :-)
Bản vá lỗi

Cảm ơn đã cập nhật, @Patches. Điều đó hữu ích hơn nhiều bây giờ, +1!
nhinkle

3

Hạt nhân darwin được gọi là "xnu", điều tốt nhất tôi có thể làm là grep mã nguồn cho những gì đang được tìm kiếm.

Ví dụ: OS X 10.8.5

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

Thủ tục:

Tới đây (hoặc phiên bản OS X của bạn)

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

Tải xuống tarball XNU, giải nén, grep cho "parse_boot"

cd xnu; grep -iRn parse_boot .


Liên kết tuyệt vời - cảm ơn! Biết rằng hàm có liên quan là PE_parse_boot * rất hữu ích hơn nhiều so với việc lấy lại một danh sách các tùy chọn cũ và không thể tránh khỏi.
Ted Middleton ngày

1

Đừng quên vô cùng hữu ích (nếu bạn đã cập nhật lên Lion và muốn sử dụng máy Mac của mình ở chế độ 'đóng vỏ sò' khi mở nắp)

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

danh tiếng đến: chenga.8

Tuy nhiên, điều làm phiền tôi là tôi không tìm thấy lời giải thích nào cho việc đó. Tại sao 0x0? Tại sao không phải là 0x1? 'Iog' có nghĩa là gì?

Tôi nên chỉ ra rằng trên macbook của tôi nó không hoạt động.


0x0 là chu kỳ thập phân hex đầu tiên.
Trevor Rudolph

Nó hoạt động với tôi trên cả 10.7 và 10.8, nhưng bạn phải khởi động lại, sau đó đóng và mở nắp sau khi khởi động.
Lri

0

Apple dường như không cung cấp một danh sách toàn diện. Googling cho một vài lựa chọn đã biết và site:apple.comkhông mang lại bất kỳ kết quả nào. Giảm danh sách các tùy chọn tìm thấy các bài viết như thế nàymột số mã nguồn phân tích các đối số này, nhưng không có gì toàn diện.

Bạn cũng có thể tìm kiếm PE_parse_boot_arg, một chức năng phân tích các đối số khởi động.


Điều đó đang được nói, có một vài trang của bên thứ ba trên web nơi người dùng cung cấp thông tin toàn diện nhất mà tôi có thể tìm thấy, nhưng nó có thể đã lỗi thời:

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.