Ce n'est pas possible en général: le noyau ne conserve pas les valeurs d'origine (du moins sous Linux, ce n'est pas le cas, et c'est probablement le cas pour d'autres variantes d'Unix). La valeur du paramètre est stockée dans une variable; lorsque vous modifiez le paramètre, la mémoire contenant la variable est mise à jour de manière irréversible.
Pour la plupart des paramètres, la valeur initiale de la variable est une constante qui est déterminée au moment de la compilation et stockée dans le binaire du noyau. Vous pouvez donc, en principe, inspecter votre binaire du noyau pour trouver la valeur par défaut. Vous devez localiser le symbole correspondant au paramètre qui vous intéresse et suivre l'adresse de ce symbole dans le binaire du noyau. Le démarrage de votre noyau dans une machine virtuelle serait moins de travail.
Pour la plupart des paramètres, vous pouvez consulter la source du noyau - kernel/sysctl.c
et d'autres fichiers. Vous verrez des définitions comme
{
.procname = "rmem_max",
.data = &sysctl_rmem_max,
…
},
(en net/core/sysctl_net_core.c
), à partir duquel vous pouvez suivre l'initialisation de la sysctl_rmem_max
variable . Bien que celui-ci soit initialisé à partir d'une constante, il faut pas mal de lecture de code C pour se développer.
Gilles 'SO- arrête d'être méchant'
la source