답변:
일반적으로 불가능합니다 : 커널은 원래 값을 유지하지 않습니다 (적어도 Linux에서는 그렇지 않으며 다른 유닉스 변형의 경우도 마찬가지 임). 설정 값은 변수에 저장됩니다. 설정을 변경하면 변수를 포함하는 메모리가 되돌릴 수 없게 업데이트됩니다.
대부분의 설정에서 변수의 초기 값은 컴파일 타임에 결정되어 커널 바이너리에 저장되는 상수입니다. 따라서 원칙적으로 커널 바이너리를 검사하여 기본값을 찾을 수 있습니다. 원하는 설정에 해당하는 기호를 찾아서 커널 바이너리에서 해당 기호의 주소를 따라야합니다. 가상 머신에서 커널을 부팅하면 작업이 줄어 듭니다.
대부분의 설정은 커널 소스 kernel/sysctl.c
및 기타 파일을 확인할 수 있습니다. 당신은 같은 정의를 볼 수 있습니다
{
.procname = "rmem_max",
.data = &sysctl_rmem_max,
…
},
(에서 net/core/sysctl_net_core.c
), 당신은 초기화 추적 할 수있는 sysctl_rmem_max
변수를 . 이것은 상수에서 초기화되지만 확장하려면 C 코드를 읽는 데 약간의 시간이 걸립니다.