Existe-t-il une liste des arguments de démarrage disponibles pour Darwin / OS X

25

Sous OS X, vous pouvez définir les paramètres de démarrage avec

nvram boot-args=[options]

Où les options que je connais sur -v (verbeux) -x (mode sans échec) et arch = x86_64 (démarrage dans un noyau 64 bits sur des machines 64 bits).

Y en a-t-il d'autres? Il ne semble pas y avoir de documentation.

stib
la source

Réponses:

23

Il n'y a pas de liste officielle, les communes sont compilées dans le noyau lui-même, d'autres peuvent être analysées par les extensions du noyau. Voici la liste que j'ai trouvée jusqu'à présent.

Options générales de démarrage:

  • -v: Démarrez toujours le système en mode détaillé sans avoir besoin de le maintenir CMD- Vau démarrage.
  • -x: Démarrez toujours le système en mode sans échec sans avoir besoin de le maintenir Shiftau démarrage.
  • f: Ancien mode sans échec.
  • -s: Démarrez le système en mode mono-utilisateur sans avoir besoin de le maintenir CMD- Sau démarrage.
  • -F - Ignorer le fichier de démarrage.
  • iog(par exemple iog=0x0)

    Cela inverse le mode "Clamshell" pour les systèmes portables Apple, où lorsque vous fermez l'écran mais connectez le système à un moniteur externe et un clavier, le système restera éveillé. Après avoir exécuté cette commande, lors de la connexion d'un moniteur externe, l'affichage interne sera désactivé, ce qui peut être bénéfique dans certaines situations telles que celles où vous mettez en miroir votre bureau mais souhaitez exécuter l'affichage externe à une résolution plus élevée que celle de votre ordinateur portable. . CNET

  • arch

    Modifie la façon dont le système démarre, vers le noyau 32 bits ( i386) ou 64 bits ( x86_64). Notez que les extensions de noyau tierces peuvent être de 32 bits ou 64 bits uniquement.

  • Graphics Mode: Dimensions du mode graphique VESA.

  • Text Mode: Dimensions du mode texte VGA.
  • Boot Graphics: Mode graphique ou texte.
  • Quiet Boot: Mode de démarrage silencieux.
  • MKext Cache: Fichier cache Mkext.
  • Kernel Cache: Fichier de cache du noyau.
  • rd: Périphérique racine.
  • boot-uuid: UUID de démarrage.
  • platform: Platform Expert {ACPI}.
  • config: Charger une autre liste de configuration (par exemple config=foobar, chargera à la /Library/Preferences/SystemConfiguration/foobar.plistplace de com.apple.Boot.plist) x86osx .

  • serverperfmode=1

    Sous OS X El Capitan 10.11 et versions ultérieures, cela permet au mode performances de dédier des ressources système supplémentaires aux applications serveur.

DTrace:

  • dtrace_dof_mode: Définissez les modes DTrace DOF {0/1/2/3}.
  • DisableFBT: Désactiver FBT {1}.
  • IgnoreFBTBlacklist: Ignorer la liste noire de certains modules critiques {1}.

BSD:

  • -b: N'exécutez pas /etc/rc.boot.
  • -l: Journalisation des fuites de mémoire ( osfmk/kern/startup.c).
  • srv: Démarrer en tant que serveur {1}.
  • ncl: Nombre de clusters.
  • nbuf: Nombre de tampons pour BSD.
  • kmem: Accès à la mémoire du noyau {1}.
  • trace: Taille du tampon de trace du noyau.
  • msgbuf: Tampon de messages.
  • rp: Chemin racine.
  • mcache_flags: Drapeaux de cache mémoire.
  • mbuf_debug: Débogage MBuf {1}.
  • initmcl: Init clusters mbuf.
  • socket_debug: Débogage de socket (net).
  • net_affinity: Affinité nette (nette).
  • rte_debug: Route debug (net) {flags}.
  • -rwroot_hack: Montez la lecture / écriture root.

IOKit:

  • mseg: Segment max.
  • dart: Supprimer le mappeur présent.
  • io: Débogage du kit IO.

Mach:

  • keepsyms: Ne déchargez pas la traduction des symboles KLD / adresse {1}.
  • debug: Débogage du noyau {drapeaux} (par exemple debug=0x14e).

    Active les fonctionnalités de débogage du noyau qui vous montreront des informations supplémentaires. Par exemple

    • 0x01 - Arrêtez-vous au démarrage et attendez que le débogueur se connecte
    • 0x02 - Envoyer la sortie de débogage du noyau à la console
    • 0x04 - Passer dans le débogueur sur une interruption non masquable
    • 0x08 - Envoyer des informations de débogage du noyau à un port série
    • 0x10 - Faire de ddb le débogueur par défaut
    • 0x20 - Sortie des informations de diagnostic dans le journal système
    • 0x40 - Autoriser le débogueur à ARP et à router
    • 0x80 - Prise en charge des anciennes versions de gdb sur les nouveaux systèmes
    • 0x100 - Désactivez l'écran de dialogue de panique graphique
  • nvram_paniclog: validez paniclog sur NVRAM {1}.

  • pmsafe_debug: Mettez les processeurs en mode d'alimentation "sûr" {1}.
  • preempt: Définir le taux de préemption par défaut.
  • unsafe: Max quanta dangereux.
  • poll: Quanta de poll max.
  • yield: Programmez le changement de rendement du sondage.
  • idlehalt: Arrêtez le thread inactif pour permettre au processeur d'être en mode basse consommation {1}.
  • panic_io_port: En cas de panique, lire à partir de ce port d'E / S {0x0 à 0xffff}.
  • _fpu: Limiter les fonctionnalités du processeur au démarrage {387 / mmx / sse}.
  • disable high mem/2: préfère mem élevé}.
  • immediate_NMI: Force le débogueur NMI immédiat {1}.
  • -legacy: Forcer le mode 32 bits hérité.
  • lcks: Statistiques de verrouillage.
  • novmx: Aucune émulation altivec dans Rosetta {1}.
  • max_valid_dma_addr: Adresse DMA max valide.
  • maxbouncepool: Taille maximale du pool de rebonds.
  • maxloreserve: Réserve basse max.
  • npvhash: Hachage de mappage physique à virtuel.
  • wpkernel: Protéger le noyau en écriture {1}.
  • -no_shared_cr3: Désactivez l'espace d'adressage du noyau partagé pour les utilisateurs 64 bits.
  • -pmap_trace: Activer les traces du noyau pour pmap.
  • _panicd_ip: IP du serveur de panique.
  • _router_ip: IP du routeur.
  • panicd_port: Port du serveur de panique.
  • -zc: Vérification des éléments de zone libre.
  • mtxspin: Mutex spin (ppc).
  • vmmforce: Force VMM (ppc).
  • fn: Forcer la sieste (ppc) (acpi) {0/1/2}.
  • pmsx: Mode pas à pas de gestion expérimentale de la puissance (ppc) {1}.
  • ctrc: Définissez le traçage sur un processeur spécifique (ppc).
  • tb: Taille du tampon de trace non par défaut (ppc).
  • wcte: Écriture de la minuterie de combinaison activée (ppc).
  • mcklog: Effacer l'indicateur de vérification de la machine (ppc).
  • mcksoft: Récupération du logiciel de vérification de la machine (ppc).
  • ht_shift: Taille de table de hachage non définie par défaut (ppc) {1}.
  • zsize: Taille de la zone cible.
  • colors: Définir les couleurs VM.
  • fill: Remplissez les pages.
  • serialbaud: Définir le débit en bauds série.

Options de démarrage à partir de xnu/osfmk/i386/i386_init.c:

  • diag: Sortie de diagnostic.
  • serial: Console de diagnostic série. Prise en charge d'un clavier et / ou d'une console série.

  • maxmem

    Mémoire maximale à utiliser. Il limite la mémoire adressable à la quantité spécifiée (par exemple maxmem=32).

  • cpus=1

    Limite le nombre de processeurs actifs dans le système au niveau défini. Cela pourrait aider à préserver l'énergie, ce qui n'est probablement pas utile pour beaucoup d'autre chose, sauf si vous testez et programmez.

  • himemory_mode

    Il est utilisé pour déboguer les grandes configurations de mémoire physique pour les systèmes de plus de 4 Go. Modes: 0 - toutes les pages disponibles, 1 - désactiver la mémoire haute, 2 - préférer la mémoire haute.

  • immediate_NMI

    Prise en charge du débogage pour les systèmes de plus de 4 Go en forçant le débogueur NMI immédiat.

  • urgency_notification_abstime

Autre:

  • bluetoothHostControllerSwitchBehavior( never/ always)

    Indiquez au pilote Bluetooth s'il doit passer au dongle que vous avez branché. Pour définir le dongle externe par défaut même après le redémarrage, utilisez always.

  • smbios: SMBIOS détaillé (AppleSMBIOS.kext) {1}

  • acpi: Débogage AppleACPIPlatform {1-8}
  • acpi_level: Niveau de débogage ACPI
  • acpi_layer: Couche de débogage ACPI
  • acpi_sleep: ACPI Sleep
  • nvdebug: Débogage NVDAResman
  • nvrm: NVDAResman
  • ndrv_debug_level: Niveau de débogage NDRV (NVDAResman)
  • pstep: Debug Power Step (ACPI_SMC)
  • hpet: AppleHPET
  • busratio(par exemple busratio=20): Il a utilisé i7 cpu en 10.5.6, après 10.5.7 il n'a pas besoin de x86osx .

Source: xnu-1228 / Arguments de démarrage


Usage

Par exemple, lorsque vous êtes en mode unique ( CMD- Saprès le son au démarrage), pour exécuter en mode sans échec et verbeusement avec une sortie de débogage du noyau supplémentaire sur la console, essayez:

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

Pour ajouter l'argument dans existant (sans redéfinir), essayez:

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

Pour supprimer les arguments de démarrage, exécutez:

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

D'autres paramètres non officiels peuvent être trouvés dans le kernelbinaire lui-même, par exemple

$ 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

Ou vérifiez dans les fichiers source Apple ou sur GitHub en recherchant PE_parse_boot_argn(qui est utilisé pour analyser les arguments de démarrage du noyau).

kenorb
la source
2
C'est l'une de mes réponses préférées de tous les temps! Merci!
Chris
10

La recherche sur Google boot-args site:developer.apple.comdonne de bonnes ressources. Par exemple

  • cpus=1 force le système à n'utiliser qu'un seul cœur de processeur.
  • srv=1 est défini sur Xserves et les machines sur lesquelles Mac OS X Server est installé, et modifie soi-disant certains paramètres de réglage du noyau pour un fonctionnement convivial du serveur.
  • _panicd_ip=a.b.c.d Vous permet de spécifier l'adresse IP d'un serveur de débogage de panique dans lequel écrire les vidages mémoire du noyau.
  • debug=0xH (Où H est un nombre hexadécimal de 1 à 4 chiffres) Vous permet de définir des indicateurs de débogage du noyau à partir de cette liste:

    DB_HALT 0x01 Arrêtez au démarrage et attendez l'attachement du débogueur (gdb).  
    DB_PRT 0x02 Envoyer la sortie printf de débogage du noyau à la console.  
    DB_NMI 0x04 Drop dans le débogueur sur NMI (Commande – Alimentation, Commande-Option-Contrôle-Maj-Échap ou interrupteur d'interruption).  
    DB_KPRT 0x08 Envoi de la sortie kprintf de débogage du noyau au port série.  
    DB_KDB 0x10 Faites de ddb (kdb) le débogueur par défaut (nécessite un noyau personnalisé).  
    DB_SLOG 0x20 Sortie de certaines informations de diagnostic dans le journal système.  
    DB_ARP 0x40 Autoriser le débogueur vers ARP et router (permet le débogage sur les routeurs et supprime le besoin d'une entrée ARP permanente, mais constitue une faille de sécurité potentielle) - non disponible dans tous les noyaux.  
    DB_KDP_BP_DIS 0x80 Prend en charge les anciennes versions de gdb sur les systèmes plus récents.  
    DB_LOG_PI_SCRN 0x100 Désactiver la boîte de dialogue de panique graphique.  
    DB_KERN_DUMP_ON_PANIC 0x0400 Provoque le noyau de vidage de mémoire lorsque le système panique.  
    DB_KERN_DUMP_ON_NMI 0x0800 Provoque le noyau de vidage de mémoire lorsque l'utilisateur déclenche une NMI.  
    DB_DBG_POST_CORE 0x1000 Contrôle le comportement du noyau après avoir vidé le noyau en réponse à un NMI (DB_KERN_DUMP_ON_NMI). Si l'utilisateur déclenche une NMI et que cet indicateur est clair, le noyau videra le noyau puis continuera. Inversement, si cet indicateur est défini, le noyau videra le noyau puis attendra une connexion du débogueur.  
    DB_PANICLOG_DUMP 0x2000 Contrôle si le noyau vide un noyau complet (si l'indicateur est clair) ou simplement un journal de panique (si l'indicateur est défini).  
    
Spiff
la source
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

En voici encore plus :

-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)
Patchs
la source
Un simple lien n'est pas très utile. Veuillez développer votre réponse pour contenir une liste de certaines des options, comme l'ont fait d'autres articles ici.
nhinkle
@nhinkle: Terminé. À l'origine, je ne l'ai pas fait car le manque de prise en charge des tables par StackExchange rend difficile de les répertorier d'une manière qui n'est pas douloureusement laide. Mais je suppose qu'une information laide vaut mieux que pas d'information. :-)
Patchs du
Merci pour la mise à jour, @Patches. C'est beaucoup plus utile maintenant, +1!
nhinkle
3

Le noyau darwin est appelé "xnu", le mieux que j'ai pu faire était de récupérer le code source pour ce qui était recherché.

Exemple: OS X 10.8.5

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

Procédure:

Allez ici (ou votre version OS X)

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

Télécharger l'archive tar XNU, extraire, grep pour "parse_boot"

cd xnu; grep -iRn parse_boot .

slf
la source
Grands liens - merci! Savoir que la fonction pertinente est PE_parse_boot * est bien plus utile que de régurgiter une liste d'options statique et inévitablement obsolète.
Ted Middleton
1

Sans oublier l'énorme utilité (si vous avez mis à jour vers Lion et que vous souhaitez utiliser votre mac en «mode clapet fermé» avec le couvercle ouvert)

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

bravo à: chenga.8

Ce qui me dérange cependant, c'est que je ne trouve aucune explication à cela. Pourquoi 0x0? Pourquoi pas 0x1? Que signifie «iog» de toute façon?

Je dois souligner que sur mon macbook cela ne fonctionne pas.

lorenzog
la source
0x0 est la première période décimale hexadécimale.
Trevor Rudolph
Cela a fonctionné pour moi sur 10.7 et 10.8, mais vous devez redémarrer, puis fermer et ouvrir le couvercle après le démarrage.
Lri
0

Apple ne semble pas fournir une liste complète. Googler pour quelques options connues et site:apple.comne donne aucun résultat. Réduire la liste des options trouve des articles comme celui-ci et du code source analysant ces arguments, mais rien de complet.

Vous pouvez également rechercher PE_parse_boot_argune fonction qui, bien, analyse les arguments de démarrage.


Cela étant dit, il y a quelques pages tierces sur le Web où les utilisateurs fournissent les informations les plus complètes que j'ai pu trouver, mais elles peuvent être obsolètes:

Daniel Beck
la source