Это не возможно в целом: ядро не сохраняет исходные значения (по крайней мере, в соответствии с Linux, который оно не делает, и это, вероятно, верно для других вариантов Unix). Значение установки хранится в переменной; когда Вы изменяете настройки, память, содержащая переменную, безвозвратно обновляется.
Для большинства настроек начальное значение переменной является константой, которая определяется во время компиляции и хранится в двоичном файле ядра. Таким образом, Вы могли, в принципе, осмотреть свой двоичный файл ядра для нахождения значения по умолчанию. Необходимо было бы определить местоположение символа, соответствующего установке, Вы интересуетесь и следуете за адресом того символа в двоичном файле ядра. Начальная загрузка Вашего ядра в виртуальной машине была бы меньшим количеством работы.
Для большинства настроек можно посмотреть в источнике ядра — kernel/sysctl.c
и другие файлы. Вы будете видеть определения как
{
.procname = "rmem_max",
.data = &sysctl_rmem_max,
…
},
(в net/core/sysctl_net_core.c
), от которого можно проследить инициализацию sysctl_rmem_max
переменная. В то время как этот инициализируется от константы, снимает довольно мало показаний C код для расширения.
На моей машине OpenBSD/etc/sysctl.conf перечисляет набор значения по умолчанию sysctl значения, но этот список не является исчерпывающим.
Вероятно, лучший способ состоит в том, чтобы прочитать sysctl код или спросить друга, который выполняет ту же ОС для его значений :)