Nie ma oficjalnej listy, wspólna jest kompilowana w jądro, inne mogą być analizowane przez rozszerzenia jądra. Oto lista, którą znalazłem do tej pory.
Ogólne opcje uruchamiania:
-v
: Zawsze uruchamiaj system w trybie pełnym, bez konieczności wstrzymywania CMD- Vpodczas uruchamiania.
-x
: Zawsze uruchamiaj system w trybie awaryjnym bez konieczności trzymania go Shiftpodczas uruchamiania.
f
: Stary tryb awaryjny.
-s
: Uruchom system w trybie pojedynczego użytkownika bez konieczności wstrzymywania CMD- Spodczas uruchamiania.
-F
- Zignoruj plik rozruchowy.
iog
(np. iog=0x0
)
Powoduje to odwrócenie trybu „Clamshell” w komputerach przenośnych Apple, w którym po zamknięciu wyświetlacza, ale podłączeniu systemu do zewnętrznego monitora i klawiatury, system pozostanie bezczynny. Po uruchomieniu tego polecenia, po podłączeniu zewnętrznego monitora, wewnętrzny wyświetlacz zostanie wyłączony, co może być korzystne w niektórych sytuacjach, takich jak te, gdy dublujesz pulpit, ale chcesz uruchomić zewnętrzny wyświetlacz w wyższej rozdzielczości niż laptop może działać . CNET
arch
Zmienia sposób uruchamiania systemu, na jądro 32-bitowe ( i386
) lub 64-bitowe ( x86_64
). Pamiętaj, że rozszerzenia jądra innych firm mogą być 32-bitowe lub tylko 64-bitowe.
Graphics Mode
: Wymiary trybu graficznego VESA.
Text Mode
: Wymiary trybu tekstowego VGA.
Boot Graphics
: Tryb graficzny lub tekstowy.
Quiet Boot
: Quiet Bootmode.
MKext Cache
: Plik pamięci podręcznej Mkext.
Kernel Cache
: Plik pamięci podręcznej jądra.
rd
: Urządzenie root.
boot-uuid
: Uruchom identyfikator UUID.
platform
: Platform Expert {ACPI}.
config
: Obciążenia alternatywną plist konfiguracyjne (np config=foobar
ładuje /Library/Preferences/SystemConfiguration/foobar.plist
zamiast com.apple.Boot.plist
) x86osx .
serverperfmode=1
W systemie OS X El Capitan 10.11 i nowszych umożliwia to trybowi wydajności przeznaczenie dodatkowych zasobów systemowych dla aplikacji serwerowych.
DTrace:
dtrace_dof_mode
: Ustaw tryby DTrace DOF {0/1/2/3}.
DisableFBT
: Wyłącz FBT {1}.
IgnoreFBTBlacklist
: Zignoruj czarną listę niektórych krytycznych modułów {1}.
BSD:
-b
: Nie uruchamiaj /etc/rc.boot.
-l
: Rejestrowanie wycieków pamięci ( osfmk/kern/startup.c
).
srv
: Uruchom jako serwer {1}.
ncl
: Liczba klastrów.
nbuf
: Liczba buforów dla BSD.
kmem
: Dostęp do pamięci jądra {1}.
trace
: Rozmiar bufora śledzenia jądra.
msgbuf
: Bufor wiadomości.
rp
: Ścieżka główna.
mcache_flags
: Flagi pamięci podręcznej.
mbuf_debug
: MBuf Debug {1}.
initmcl
: Init klastrów mbuf.
socket_debug
: Debugowanie gniazda (netto).
net_affinity
: Powinowactwo netto (netto).
rte_debug
: Route debug (net) {flags}.
-rwroot_hack
: Zamontuj root do odczytu / zapisu.
IOKit:
mseg
: Maksymalny segment.
dart
: Usuń obecny program mapujący.
io
: Debugowanie zestawu IO.
Mach:
keepsyms
: Nie usuwaj tłumaczenia KLD / translacji symboli adresu {1}.
debug
: Debugowanie jądra {flagi} (np debug=0x14e
.).
Włącza funkcje debugowania jądra, które pokażą dodatkowe informacje. Na przykład
0x01
- Zatrzymaj się w czasie uruchamiania i poczekaj na dołączenie debugera
0x02
- Wyślij wyjście debugowania jądra do konsoli
0x04
- Wpadnij do debuggera w przypadku niemożliwego do wykonania przerwania
0x08
- Wyślij informacje debugowania jądra do portu szeregowego
0x10
- Ustaw ddb jako domyślny debugger
0x20
- Przesyłanie informacji diagnostycznych do dziennika systemu
0x40
- Pozwól debuggerowi na ARP i trasę
0x80
- Obsługa starych wersji gdb na nowszych systemach
0x100
- Wyłącz graficzny ekran dialogowy paniki
nvram_paniclog
: zatwierdzanie paniclogu do NVRAM {1}.
pmsafe_debug
: Przełącz procesory w „bezpieczny” tryb zasilania {1}.
preempt
: Ustaw domyślną stawkę pierwszeństwa.
unsafe
: Max niebezpieczne kwanty.
poll
: Max kwanty ankiet.
yield
: Zaplanuj przesunięcie wydajności sondowania.
idlehalt
: Zatrzymaj bezczynny wątek, aby umożliwić procesorowi przejście w tryb niskiej mocy {1}.
panic_io_port
: W panice odczytanej z tego portu we / wy {0x0 do 0xffff}.
_fpu
: Ogranicz funkcje procesora w czasie uruchamiania {387 / mmx / sse}.
disable high mem/2
: preferuj wysoką pamięć}.
immediate_NMI
: Wymusza natychmiastowy debugger NMI {1}.
-legacy
: Wymuś tryb 32-bitowy starszego typu.
lcks
: Zablokuj statystyki.
novmx
: Brak emulacji altivec w Rosetta {1}.
max_valid_dma_addr
: Maksymalny prawidłowy adres DMA.
maxbouncepool
: Maksymalny rozmiar puli odrzuceń.
maxloreserve
: Maksymalna niska rezerwa.
npvhash
: Skrót do mapowania fizycznego na wirtualny.
wpkernel
: Zapisz jądro ochrony {1}.
-no_shared_cr3
: Wyłącz współdzieloną przestrzeń adresową jądra dla 64-bitowych użytkowników.
-pmap_trace
: Włącz śledzenie jądra dla pmap.
_panicd_ip
: IP serwera paniki.
_router_ip
: IP routera.
panicd_port
: Port serwera paniki.
-zc
: Sprawdzanie elementu strefy wolnej.
mtxspin
: Mutex spin (ppc).
vmmforce
: Siła VMM (ppc).
fn
: Force nap (ppc) (acpi) {0/1/2}.
pmsx
: Eksperymentalny tryb krokowy zarządzania energią (ppc) {1}.
ctrc
: Ustaw śledzenie na konkretną jednostkę centralną (ppc).
tb
: Inny niż domyślny rozmiar bufora śledzenia (ppc).
wcte
: Napisz włączanie włącznika czasowego (ppc).
mcklog
: Wyczyść flagę kontroli maszyny (ppc).
mcksoft
: Odzyskiwanie oprogramowania do sprawdzania maszyn (ppc).
ht_shift
: Inny niż domyślny rozmiar tabeli skrótów (ppc) {1}.
zsize
: Rozmiar strefy docelowej.
colors
: Ustaw kolory VM.
fill
: Wypełnij strony.
serialbaud
: Ustaw szybkość transmisji szeregowej.
Opcje rozruchu z xnu/osfmk/i386/i386_init.c
:
diag
: Wyjście diagnostyczne.
serial
: Szeregowa konsola diagnostyczna. Obsługa klawiatury szeregowej i / lub konsoli.
maxmem
Maksymalna pamięć do użycia. Ogranicza pamięć adresowalną do określonej ilości (np maxmem=32
.).
cpus=1
Ogranicza liczbę aktywnych procesorów w systemie do ustawionego poziomu. Może to pomóc w oszczędzaniu energii, co prawdopodobnie nie będzie przydatne w wielu innych przypadkach, chyba że testujesz i programujesz.
himemory_mode
Służy do debugowania dużych konfiguracji pamięci fizycznej dla systemów ponad 4 GB. Tryby: 0 - wszystkie dostępne strony, 1 - wyłącz wysoką pamięć, 2 - preferuj wysoką pamięć.
immediate_NMI
Obsługa debugowania dla systemów ponad 4 GB poprzez wymuszenie natychmiastowego debuggera NMI.
urgency_notification_abstime
Inny:
bluetoothHostControllerSwitchBehavior
( never
/ always
)
Powiedz sterownikowi Bluetooth, czy przełączyć się na klucz, który podłączyłeś. Aby ustawić domyślny klucz zewnętrzny nawet po ponownym uruchomieniu, użyj always
.
smbios
: Verbose SMBIOS (AppleSMBIOS.kext) {1}
acpi
: Debuguj AppleACPIPlatform {1-8}
acpi_level
: Poziom debugowania ACPI
acpi_layer
: Warstwa debugowania ACPI
acpi_sleep
: ACPI Sleep
nvdebug
: Debugowanie NVDAResman
nvrm
: NVDAResman
ndrv_debug_level
: Poziom debugowania NDRV (NVDAResman)
pstep
: Debugowanie kroku zasilania (ACPI_SMC)
hpet
: AppleHPET
busratio
(np. busratio=20
): Używał procesora i7 w 10.5.6, po 10.5.7 nie potrzebuje x86osx .
Źródło: xnu-1228 / Boot Arguments
Stosowanie
Na przykład, gdy jesteś w trybie pojedynczym ( CMD- Spo dźwięku przy starcie), aby przejść do trybu awaryjnego i ustnie z dodatkowym wyjściem debugującym jądro do konsoli, spróbuj:
sudo nvram boot-args="-x -v debug=0x14e"
Aby dodać argument do istniejącego (bez przesłonięcia), spróbuj:
sudo nvram boot-args="-v $(nvram boot-args 2>/dev/null | cut -f 2-)"
Aby usunąć argumenty rozruchowe, uruchom:
sudo nvram boot-args=""
sudo nvram -d boot-args
Inne nieoficjalne parametry można znaleźć w kernel
binarnej wersji, np
$ 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
Lub sprawdź w plikach źródłowych Apple lub na GitHub, wyszukując PE_parse_boot_argn
(który służy do analizy argumentów rozruchowych jądra).
Googling dla
boot-args site:developer.apple.com
daje dobre zasoby. Na przykładcpus=1
zmusza system do używania tylko jednego rdzenia procesora.srv=1
jest ustawiony na Xserves i komputerach, na których zainstalowany jest Mac OS X Server, i podobno zmienia niektóre parametry strojenia jądra dla przyjaznej dla serwera pracy._panicd_ip=a.b.c.d
Pozwala określić adres IP panikowego serwera debugowania, na którym będą zapisywane zrzuty jądra jądra.debug=0xH
(Gdzie H jest 1-4 cyfrową liczbą szesnastkową) Umożliwia ustawienie flag debugowania jądra z tej listy:źródło
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/…Oto kilka innych :
źródło
Jądro darwina nazywa się „xnu”, najlepsze co mogłem zrobić, to grepować kod źródłowy tego, czego szukaliśmy.
Przykład: OS X 10.8.5
https://gist.github.com/reklis/fa26d4e8db62d6eea9ea
Procedura:
Idź tutaj (lub Twoja wersja OS X)
http://www.opensource.apple.com/release/mac-os-x-1085/
Pobierz tarball XNU, wypakuj, grep dla "parse_boot"
cd xnu; grep -iRn parse_boot .
źródło
Nie zapomnij o niezwykle przydatnym (jeśli zaktualizowałeś się do Lion i chcesz używać swojego Maca w „trybie zamkniętej klapki” z otwartą pokrywą)
hołd dla: chenga.8
Niepokoi mnie jednak to, że nie znajduję na to żadnego wyjaśnienia. Dlaczego 0x0? Dlaczego nie 0x1? Co w ogóle oznacza „iog”?
Powinienem zaznaczyć, że na moim Macbooku to nie działa.
źródło
Apple nie wydaje się oferować pełnej listy. Googling dla kilku znanych opcji i
site:apple.com
nie daje żadnych rezultatów. Zmniejszenie listy opcji powoduje, że artykuły takie jak ten i kod źródłowy analizują te argumenty, ale nic kompletnego.Możesz także wyszukać
PE_parse_boot_arg
funkcję, która analizuje argumenty rozruchowe.Biorąc to pod uwagę, w Internecie jest kilka stron osób trzecich, na których użytkownicy podają najbardziej wyczerpujące informacje, jakie mogłem znaleźć, ale mogą one być nieaktualne:
źródło