Dies ist im Allgemeinen nicht möglich: Der Kernel behält die ursprünglichen Werte nicht bei (zumindest unter Linux nicht, und dies gilt wahrscheinlich auch für andere Unix-Varianten). Der Wert der Einstellung wird in einer Variablen gespeichert. Wenn Sie die Einstellung ändern, wird der Speicher mit der Variablen irreversibel aktualisiert.
Bei den meisten Einstellungen ist der Anfangswert der Variablen eine Konstante, die zur Kompilierungszeit ermittelt und in der Kernel-Binärdatei gespeichert wird. Sie können also im Prinzip Ihre Kernel-Binärdatei überprüfen, um den Standardwert zu ermitteln. Sie müssten das Symbol finden, das der Einstellung entspricht, an der Sie interessiert sind, und der Adresse dieses Symbols in der Kernel-Binärdatei folgen. Das Booten Ihres Kernels in einer virtuellen Maschine wäre weniger Arbeit.
Für die meisten Einstellungen können Sie in der Kernelquelle kernel/sysctl.c
und in anderen Dateien nachsehen . Sie sehen Definitionen wie
{
.procname = "rmem_max",
.data = &sysctl_rmem_max,
…
},
(in net/core/sysctl_net_core.c
), von dem aus Sie die Initialisierung der sysctl_rmem_max
Variablen verfolgen können . Während dieser von einer Konstanten initialisiert wird, erfordert das Lesen von C-Code ziemlich viel Lesen, um ihn zu erweitern.
Gilles 'SO - hör auf böse zu sein'
quelle