Zasadniczo nie jest to możliwe: jądro nie zachowuje oryginalnych wartości (przynajmniej pod Linuksem tak nie jest, i prawdopodobnie dotyczy to innych wariantów uniksowych). Wartość ustawienia jest przechowywana w zmiennej; po zmianie ustawienia pamięć zawierająca zmienną jest nieodwracalnie aktualizowana.
W przypadku większości ustawień początkowa wartość zmiennej jest stałą, która jest określana w czasie kompilacji i przechowywana w pliku binarnym jądra. Możesz więc w zasadzie sprawdzić plik binarny jądra, aby znaleźć wartość domyślną. Będziesz musiał zlokalizować symbol odpowiadający interesującemu ustawieniu i podążać za adresem tego symbolu w pliku binarnym jądra. Uruchomienie jądra na maszynie wirtualnej byłoby mniej pracy.
W przypadku większości ustawień możesz zajrzeć do źródła jądra - kernel/sysctl.c
i innych plików. Zobaczysz definicje takie jak
{
.procname = "rmem_max",
.data = &sysctl_rmem_max,
…
},
(in net/core/sysctl_net_core.c
), z którego można śledzić inicjalizację sysctl_rmem_max
zmiennej . Podczas gdy ten jest inicjalizowany ze stałej, jego rozwinięcie zajmuje sporo czasu.
Gilles „SO- przestań być zły”
źródło