darwin / OS X에 사용 가능한 부팅 장치 목록이 있습니까?


25

OS X에서는 다음과 같이 부팅 매개 변수를 설정할 수 있습니다

nvram boot-args=[options]

내가 -v (verbose) -x (안전 모드) 및 arch = 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: 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: NVDAResman
  • ndrv_debug_level: NDRV 디버그 수준 (NVDAResman)
  • pstep: 전력 단계 디버그 (ACPI_SMC)
  • hpet: AppleHPET
  • busratio(예 :)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(커널 부팅 인수를 구문 분석하는 데 사용)을 검색하여 확인하십시오 .


2
이것은 내가 가장 좋아하는 대답 중 하나입니다! 고맙습니다!
Chris

10

인터넷 검색 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 커널이 전체 코어를 덤프하는지 (플래그가 명확한 경우) 또는 단순히 패닉 로그 (플래그가 설정된 경우)를 제어합니다.  
    




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 : 완료 원래 StackExchange의 테이블 지원 부족으로 고통스럽지 않은 방식으로 목록을 표시하기가 어려워졌습니다. 그러나 추악한 정보가 정보가없는 것보다 낫다고 생각합니다. :-)
패치

@Patches 업데이트에 감사드립니다. 훨씬 도움이되었습니다, +1!
닌클

3

다윈 커널은 "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 .


훌륭한 링크-감사합니다! 관련 함수가 PE_parse_boot *라는 것을 아는 것은 정적이며 불가피하게 오래된 옵션 목록을 역류시키는 것보다 훨씬 유용합니다.
테드 미들턴

1

엄청나게 유용한 것을 잊지 마십시오 (Lion으로 업데이트하고 뚜껑을 연 상태에서 '닫힌 조개 껍질 모드'에서 Mac을 사용하려는 경우)

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

kudos to : chenga.8

그러나 나를 귀찮게하는 것은 그것에 대해 설명이 없다는 것입니다. 왜 0x0입니까? 왜 0x1이 아닌가? 어쨌든 'iog'는 무엇을 의미합니까?

내 맥북에서는 작동하지 않는다는 것을 지적해야합니다.


0x0은 첫 번째 16 진수 10 진수입니다.
Trevor Rudolph 2016 년

그것은 10.7과 10.8에서 모두 효과가 있었지만 다시 시작한 다음 시작 후 뚜껑을 닫고 열어야합니다.
Lri

0

애플은 포괄적 인 목록을 제공하지 않는 것 같습니다. 알려진 몇 가지 옵션에 대한 인터넷 검색으로 site:apple.com결과가 나오지 않습니다. 옵션 목록을 줄이면 같은 기사를 발견 이것약간의 소스 코드를 이러한 인수를 구문 분석,하지만 포괄적 아무것도.

PE_parse_boot_arg부팅 인수를 구문 분석하는 함수 인을 검색 할 수도 있습니다 .


즉, 웹에는 사용자가 찾을 수있는 가장 포괄적 인 정보를 제공하는 타사 페이지가 몇 개 있지만 구식이 아닐 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.