Це взагалі неможливо: ядро не зберігає початкові значення (принаймні, в Linux це не відбувається, і це, мабуть, стосується інших варіантів Unix). Значення параметра зберігається у змінній; коли ви змінюєте налаштування, пам'ять, що містить змінну, необоротно оновлюється.
Для більшості налаштувань початкове значення змінної - це константа, яка визначається під час компіляції та зберігається у двійковому ядрі. Таким чином, ви можете, в принципі, перевірити ваш двійковий код ядра, щоб знайти значення за замовчуванням. Вам потрібно буде знайти символ, відповідний налаштуванню, яке вас цікавить, і дотримуватися його адреси в двійковому ядрі. Завантаження ядра у віртуальній машині буде менше роботи.
Для більшості налаштувань ви можете шукати джерело ядра kernel/sysctl.c
та інші файли. Ви побачите такі визначення, як
{
.procname = "rmem_max",
.data = &sysctl_rmem_max,
…
},
(в net/core/sysctl_net_core.c
), з якого можна простежити ініціалізацію sysctl_rmem_max
змінної . Хоча цей ініціалізується з постійної, для розширення коду С потрібно досить небагато.