답변:
공식적인 목록은 없으며, 일반적인 목록은 커널 자체로 컴파일되고 다른 하나는 커널 확장으로 구문 분석 될 수 있습니다. 여기까지 내가 찾은 목록이 있습니다.
일반 부팅 옵션 :
-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
(예를 들어, 대체 구성을 plist를로드 config=foobar
로드 /Library/Preferences/SystemConfiguration/foobar.plist
대신 com.apple.Boot.plist
) x86osx .
serverperfmode=1
OS 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
: MBuf 디버그 {1}.initmcl
: 초기화 mbuf 클러스터.socket_debug
: 소켓 디버그 (net).net_affinity
: 순 선호도 (net).rte_debug
: 라우트 디버그 (순) {flags}.-rwroot_hack
: 루트 읽기 / 쓰기를 마운트하십시오.IOKit :
mseg
: 최대 세그먼트.dart
: 존재하는 매퍼를 제거합니다.io
: IO 키트 디버그.마하 :
keepsyms
: KLD / 주소-기호 변환 {1}을 (를) 언로드하지 마십시오.debug
: 커널 디버그 {flags} (예 :) debug=0x14e
.
추가 정보를 표시하는 커널 디버깅 기능을 활성화합니다. 예 :
0x01
-부팅시 중지하고 디버거가 연결될 때까지 기다립니다.0x02
-커널 디버깅 출력을 콘솔로 전송0x04
-마스크 불가능한 인터럽트에서 디버거에 드롭0x08
-커널 디버깅 정보를 시리얼 포트로 전송0x10
ddb를 기본 디버거로 설정0x20
-진단 정보를 시스템 로그에 출력0x40
-디버거가 ARP 및 라우팅하도록 허용0x80
-최신 시스템에서 이전 버전의 gdb 지원0x100
-그래픽 패닉 대화 상자 비활성화nvram_paniclog
: paniclog를 NVRAM {1}에 커밋합니다.
pmsafe_debug
: CPU를 "안전"전원 모드 {1}에 두십시오.preempt
: 기본 선점 률을 설정합니다.unsafe
: 최대 안전하지 않은 퀀텀.poll
: 최대 폴 퀀텀.yield
: 투표 수율 전환 일정.idlehalt
: CPU가 저전력 모드 {1}에 들어가도록 유휴 스레드를 중단합니다.panic_io_port
:이 I / O 포트 {0x0 ~ 0xffff}에서 패닉 읽기_fpu
: 부팅시 CPU 기능 {387 / mmx / sse}를 제한합니다.disable high mem/2
: 높은 mem을 선호}.immediate_NMI
: 즉시 NMI 디버거 {1}을 (를) 강제 실행하십시오.-legacy
: 레거시 32 비트 모드를 강제합니다.lcks
: 통계 잠금.novmx
: Rosetta {1}에서 altivec 에뮬레이션이 없습니다.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
: 뮤텍스 스핀 (ppc).vmmforce
: VMM 힘 (ppc).fn
: 강제 낮잠 (ppc) (acpi) {0/1/2}.pmsx
: 실험적 전력 관리 스테퍼 모드 (ppc) {1}.ctrc
: 추적을 특정 CPU (ppc)로 설정합니다.tb
: 기본이 아닌 추적 버퍼 크기 (ppc).wcte
: 쓰기 결합 타이머 활성화 (ppc).mcklog
: 기계 점검 플래그 (ppc)를 지 웁니다.mcksoft
: 기계 점검 소프트웨어 복구 (ppc).ht_shift
: 기본이 아닌 해시 테이블 크기 (ppc) {1}.zsize
: 대상 영역 크기.colors
: VM 색상을 설정합니다.fill
: 페이지를 채 웁니다.serialbaud
: 시리얼 전송 속도를 설정합니다.부팅 옵션 xnu/osfmk/i386/i386_init.c
:
diag
: 진단 출력.serial
: 직렬 진단 콘솔. 직렬 키보드 및 / 또는 콘솔 지원
maxmem
사용할 최대 메모리. 주소 지정 가능한 메모리를 지정된 양 (예 :)으로 제한합니다 maxmem=32
.
cpus=1
시스템의 활성 프로세서 수를 설정 수준으로 제한합니다. 이것은 전력을 보존하는 데 도움이 될 수 있습니다. 테스트하고 프로그래밍하지 않는 한 다른 많은 경우에는 유용하지 않을 수 있습니다.
himemory_mode
4GB가 넘는 시스템의 대규모 실제 메모리 구성을 디버깅하는 데 사용됩니다. 모드 : 0-사용 가능한 모든 페이지, 1-high mem 비활성화, 2-high mem 선호
immediate_NMI
즉각적인 NMI 디버거를 강제 실행하여 4GB 이상의 시스템에 대한 디버그 지원
urgency_notification_abstime
다른:
bluetoothHostControllerSwitchBehavior
( never
/ always
)
Bluetooth 드라이버에 연결 한 동글로 전환할지 여부를 알려주십시오. 재부팅 후에도 외부 동글을 기본값으로 설정하려면을 사용하십시오 always
.
smbios
: 상세 SMBIOS (AppleSMBIOS.kext) {1}
acpi
: AppleACPIPlatform {1-8} 디버그acpi_level
: ACPI 디버그 레벨acpi_layer
: ACPI 디버그 계층acpi_sleep
: ACPI 절전nvdebug
: NVDAResman 디버그nvrm
: NVDAResmanndrv_debug_level
: NDRV 디버그 수준 (NVDAResman)pstep
: 전력 단계 디버그 (ACPI_SMC)hpet
: AppleHPETbusratio
(예 :)busratio=20
10.5.7 이후 10.5.6에서 i7 CPU를 사용 했으며 x86osx 가 필요하지 않습니다 .출처 : xnu-1228 / Boot Arguments
예를 들어 단일 모드에있을 때 ( 시작시 사운드 후 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
(커널 부팅 인수를 구문 분석하는 데 사용)을 검색하여 확인하십시오 .
인터넷 검색 boot-args site:developer.apple.com
은 좋은 리소스 를 제공합니다. 예 :
cpus=1
시스템이 단일 CPU 코어 만 사용하도록합니다. srv=1
는 Mac OS X Server가 설치된 Xserve 및 시스템에 설정되며 서버 친화적 인 작동을 위해 일부 커널 조정 매개 변수를 변경합니다. _panicd_ip=a.b.c.d
커널 코어 덤프를 쓸 패닉 디버그 서버의 IP 주소를 지정할 수 있습니다. debug=0xH
(H가 1-4 자리 16 진수 인 경우)이 목록에서 커널 디버깅 플래그를 설정할 수 있습니다.
DB_HALT 0x01 부팅시 정지하고 디버거 연결 (gdb)을 기다립니다. DB_PRT 0x02 커널 디버깅 printf 출력을 콘솔로 보냅니다. DB_NMI 0x04 NMI (명령 – 전원, 명령-옵션-제어 -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 커널이 전체 코어를 덤프하는지 (플래그가 명확한 경우) 또는 단순히 패닉 로그 (플래그가 설정된 경우)를 제어합니다.
static void parse_bsd_args(void)
opensource.apple.com/source/xnu/xnu-2782.1.97/bsd/kern/…
void i386_init(void)
opensource.apple.com/source/xnu/xnu-2782.1.97/osfmk/i386/…
void gzalloc_configure(void)
opensource.apple.com/source/xnu/xnu-2782.1.97/osfmk/kern/…
-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)
다윈 커널은 "xnu"라고 불리며, 내가 할 수있는 최선은 찾고 있던 것에 대한 소스 코드를 grep하는 것입니다.
예 : OS X 10.8.5
https://gist.github.com/reklis/fa26d4e8db62d6eea9ea
순서:
여기로 이동하십시오 (또는 OS X 버전)
http://www.opensource.apple.com/release/mac-os-x-1085/
XNU tarball 다운로드, "parse_boot"에 대한 grep 추출
cd xnu; grep -iRn parse_boot .
엄청나게 유용한 것을 잊지 마십시오 (Lion으로 업데이트하고 뚜껑을 연 상태에서 '닫힌 조개 껍질 모드'에서 Mac을 사용하려는 경우)
sudo nvram boot-args="iog=0x0"
kudos to : chenga.8
그러나 나를 귀찮게하는 것은 그것에 대해 설명이 없다는 것입니다. 왜 0x0입니까? 왜 0x1이 아닌가? 어쨌든 'iog'는 무엇을 의미합니까?
내 맥북에서는 작동하지 않는다는 것을 지적해야합니다.
애플은 포괄적 인 목록을 제공하지 않는 것 같습니다. 알려진 몇 가지 옵션에 대한 인터넷 검색으로 site:apple.com
결과가 나오지 않습니다. 옵션 목록을 줄이면 같은 기사를 발견 이것 과 약간의 소스 코드를 이러한 인수를 구문 분석,하지만 포괄적 아무것도.
PE_parse_boot_arg
부팅 인수를 구문 분석하는 함수 인을 검색 할 수도 있습니다 .
즉, 웹에는 사용자가 찾을 수있는 가장 포괄적 인 정보를 제공하는 타사 페이지가 몇 개 있지만 구식이 아닐 수도 있습니다.