.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2010 Intel Corporation, Author: Andi Kleen .\" and Copyright 2014, Vivek Goyal .\" and Copyright (c) 2015, Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH KEXEC_LOAD 2 "6 mars 2019" Linux "Manuel du programmeur Linux" .SH NOM kexec_load, kexec_file_load \- Charger un nouveau noyau pour une exécution ultérieure .SH SYNOPSIS .nf \fB#include \fP .PP \fBlong kexec_load(unsigned long \fP\fIentry\fP\fB, unsigned long \fP\fInr_segments\fP\fB,\fP \fB struct kexec_segment *\fP\fIsegments\fP\fB, unsigned long \fP\fIflags\fP\fB);\fP .PP \fBlong kexec_file_load(int \fP\fIkernel_fd\fP\fB, int \fP\fIinitrd_fd\fP\fB,\fP \fB unsigned long \fP\fIcmdline_len\fP\fB, const char *\fP\fIcmdline\fP\fB,\fP \fB unsigned long \fP\fIflags\fP\fB);\fP .fi .PP \fIRemarque\fP\ : il n'existe pas de fonctions glibc autour de ces appels système\ ; consultez \fBNOTES\fP. .SH DESCRIPTION L'appel système \fBkexec_load\fP() charge un nouveau noyau qui peut être exécuté plus tard avec un \fBreboot\fP(2). .PP Le paramètre \fIflags\fP est un masque de bits qui contrôle l'opération de l'appel. Les valeurs suivantes peuvent être spécifiées dans \fIflags\fP\ : .TP \fBKEXEC_ON_CRASH\fP (depuis Linux\ 2.6.13) Lancer automatiquement le nouveau noyau lors d'un plantage du système. Ce «\ crash kernel\ » est chargé dans une zone de la mémoire réservée définie au moment de l'amorçage en utilisant le paramètre \fIcrashkernel\fP de la ligne de commande du noyau. L'emplacement de cette mémoire réservée est envoyé à l'espace utilisateur avec le fichier \fI/proc/iomem\fP, dans une entrée «\ Crash kernel\ ». Une application de l'espace utilisateur peut analyser ce fichier et préparer une liste de segments (voir ci\-dessous) indiquant cette mémoire réservée en tant que cible. Si ce paramètre est indiqué, le noyau vérifie que les segments cibles indiqués dans \fIsegments\fP tombent dans la région réservée. .TP \fBKEXEC_PRESERVE_CONTEXT\fP (depuis Linux 2.6.27) Préserver le matériel système et les états logiciels avant d'exécuter le nouveau noyau. Cela pourrait être utilisé pour la mise en veille prolongée du système. Cet attribut n'est disponible que si le noyau a été configuré avec \fBCONFIG_KEXEC_JUMP\fP, et n'est effectif que si \fInr_segments\fP est strictement positif. .PP Les bits de poids fort (correspondant au masque 0xffff0000) de \fIflags\fP contiennent l'architecture du noyau qui est en attente d'exécution. Indiquez la constante \fBKEXEC_ARCH_DEFAULT\fP pour utiliser l'architecture actuelle, ou une ou plusieurs (en utilisant l'opérateur OU) des constantes d'architecture suivantes\ : \fBKEXEC_ARCH_386\fP, \fBKEXEC_ARCH_68K\fP, \fBKEXEC_ARCH_X86_64\fP, \fBKEXEC_ARCH_PPC\fP, \fBKEXEC_ARCH_PPC64\fP, \fBKEXEC_ARCH_IA_64\fP, \fBKEXEC_ARCH_ARM\fP, \fBKEXEC_ARCH_S390\fP, \fBKEXEC_ARCH_SH\fP, \fBKEXEC_ARCH_MIPS\fP et \fBKEXEC_ARCH_MIPS_LE\fP. L'architecture doit pouvoir être exécutée sur le processeur du système. .PP Le paramètre \fIentry\fP est l'adresse du point d'entrée physique dans l'image noyau. Le paramètre \fInr_segments\fP est le nombre de segments vers lesquels pointe le pointeur \fIsegments\fP\ ; le noyau impose une limite (arbitraire) de 16 quant au nombre de segments. Le paramètre \fIsegments\fP est un tableau de \fIkexec_segment\fP structures qui définissent la disposition du noyau\ : .PP .in +4n .EX struct kexec_segment { void *buf; /* Tampon dans l'espace utilisateur */ size_t bufsz; /* Taille du tampon */ void *mem; /* Adresse physique du noyau */ size_t memsz; /* Taille de l'adresse physique */ }; .EE .in .PP L'image noyau définie par \fIsegments\fP est copiée du processus appelant dans le noyau, dans la mémoire normale ou réservée (si \fBKEXEC_ON_CRASH\fP est positionné). Le noyau effectue d'abord divers tests de validité des informations passées à \fIsegments\fP. Si ces tests réussissent, il copie les données du segment dans la mémoire du noyau. Chaque segment indiqué dans \fIsegments\fP est copié comme suit\ : .IP * 3 \fIbuf\fP et \fIbufsz\fP identifient une région de la mémoire dans l'espace d'adressage virtuel de l'appelant qui est la source de la copie. La valeur de \fIbufsz\fP ne peut pas excéder celle du champ \fImemsz\fP. .IP * \fImem\fP et \fImemsz\fP indiquent une plage d'adresses physiques cible de la copie. Les valeurs indiquées dans les deux champs doivent être des multiples de la taille de page du système. .IP * \fIbufsz\fP octets sont copiés du tampon source vers le tampon du noyau cible. Si \fIbufsz\fP est inférieur à \fImemsz\fP, les octets excédentaires dans le tampon du noyau sont remis à zéro. .PP En cas de kexec normal (c'est\-à\-dire si l'attribut \fBKEXEC_ON_CRASH\fP n'est pas positionné), les données du segment sont chargées dans n'importe quelle mémoire disponible et déplacées vers leur destination finale lors du redémarrage de kexec (par exemple quand la commande \fBkexec\fP(8) est exécutée avec l'option \fI\-e\fP). .PP En cas de kexec problématique (panic) (c'est\-à\-dire que l'attribut \fBKEXEC_ON_CRASH\fP est positionné), les données du segment sont chargées dans la mémoire réservée au moment de l'appel et, après un plantage, le mécanisme kexec donne simplement le contrôle à ce noyau. .PP L'appel système \fBkexec_load\fP() n'est disponible que si le noyau a été configuré avec \fBCONFIG_KEXEC\fP. .SS kexec_file_load() L'appel système \fBkexec_file_load\fP() est équivalent à \fBkexec_load\fP(), mais il prend un autre ensemble de paramètres. Il lit le noyau à charger à partir du fichier auquel renvoie le descripteur de fichier \fIkernel_fd\fP et l'initrd («\ initial RAM disk\ ») à charger à partir du fichier auquel renvoie le descripteur de fichier \fIinitrd_fd\fP. Le paramètre \fIcmdline\fP est un pointeur vers un tampon contenant la ligne de commande du nouveau noyau. Le paramètre \fIcmdline_len\fP indique la taille du tampon. Le dernier octet du tampon doit être un octet NULL (\(aq\e0\(aq). .PP Le paramètre \fIflags\fP est un masque de bits qui modifie le comportement de l'appel. Les valeurs suivantes peuvent être spécifiées dans \fIflags\fP\ : .TP \fBKEXEC_FILE_UNLOAD\fP Décharger le noyau actuellement chargé. .TP \fBKEXEC_FILE_ON_CRASH\fP Charger le nouveau noyau dans la région de mémoire réservée au plantage de noyau (comme pour \fBKEXEC_ON_CRASH\fP). Ce noyau est démarré si le noyau en cours d'exécution plante. .TP \fBKEXEC_FILE_NO_INITRAMFS\fP Le chargement de initrd/initramfs est facultatif. Indiquez cet attribut si aucun initramfs ne doit être chargé. Si cet attribut est positionné, la valeur passée à \fIinitrd_fd\fP est ignorée. .PP .\" See also http://lwn.net/Articles/603116/ L'appel système \fBkexec_file_load\fP() a été ajouté pour prendre en charge les systèmes où le chargement de «\ kexec\ » doit être restreint aux noyaux signés. Cet appel système n'est disponible que si le noyau a été configuré avec \fBCONFIG_KEXEC_FILE\fP. .SH "VALEUR RENVOYÉE" S'ils réussissent, ces appels système renvoient \fB0\fP. En cas d'erreur, ils renvoient \fB\-1\fP et remplissent \fIerrno\fP avec l'erreur. .SH ERREURS .TP \fBEADDRNOTAVAIL\fP .\" See kernel/kexec.::sanity_check_segment_list in the 3.19 kernel source L'attribut \fBKEXEC_ON_CRASH\fP était indiqué mais la région indiquée par les champs \fImem\fP et \fImemsz\fP d'une des entrées de \fIsegments\fP va au\-delà de la mémoire réservée au plantage de noyau. .TP \fBEADDRNOTAVAIL\fP La valeur du champ \fImem\fP ou \fImemsz\fP dans une des entrées de \fIsegments\fP n'est pas un multiple de la taille de page du système. .TP \fBEBADF\fP \fIkernel_fd\fP ou \fIinitrd_fd\fP n'est pas un descripteur de fichier valable. .TP \fBEBUSY\fP Un autre plantage du noyau est déjà chargé, ou un plantage du noyau est déjà utilisé. .TP \fBEINVAL\fP \fIflags\fP n'est pas correct. .TP \fBEINVAL\fP La valeur du champ \fIbufsz\fP dans une des entrées de \fIsegments\fP dépasse la valeur du champ \fImemsz\fP correspondant. .TP \fBEINVAL\fP \fInr_segments\fP dépasse \fBKEXEC_SEGMENT_MAX\fP (16). .TP \fBEINVAL\fP Deux ou plusieurs tampons cibles du noyau se chevauchent. .TP \fBEINVAL\fP La valeur de \fIcmdline[cmdline_len\-1]\fP n'est pas \(aq\e0\(aq. .TP \fBEINVAL\fP Le fichier auquel renvoie \fIkernel_fd\fP ou \fIinitrd_fd\fP est vide (de longueur zéro). .TP \fBENOEXEC\fP \fIkernel_fd\fP ne renvoie pas à un fichier ouvert ou le noyau ne peut pas charger ce fichier. Actuellement, le fichier doit être une bzImage et contenir un noyau x86 chargeable dans 4\ Gio de mémoire (voir le fichier \fIDocumentation/x86/boot.txt\fP des sources du noyau). .TP \fBENOMEM\fP La mémoire n’a pu être allouée. .TP \fBEPERM\fP L'appelant n'a pas la capacité \fBCAP_SYS_BOOT\fP. .SH VERSIONS L'appel système \fBkexec_load\fP() est apparu dans Linux\ 2.6.13. L'appel système \fBkexec_file_load\fP() est apparu dans Linux 3.17. .SH CONFORMITÉ Ces appels système sont spécifiques à Linux. .SH NOTES Actuellement, il n'y a pas de prise en charge de ces appels système dans la glibc. Il faut les appeler avec \fBsyscall\fP(2). .SH "VOIR AUSSI" \fBreboot\fP(2), \fBsyscall\fP(2), \fBkexec\fP(8) .PP Les fichiers \fIDocumentation/kdump/kdump.txt\fP et \fIDocumentation/admin\-guide/kernel\-parameters.txt\fP des sources du noyau. .SH COLOPHON Cette page fait partie de la publication\ 5.10 du projet \fIman\-pages\fP Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse \%https://www.kernel.org/doc/man\-pages/. .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot et Jean-Philippe MENGUAL . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .