สิ่งนี้เป็นไปไม่ได้โดยทั่วไป: เคอร์เนลไม่ได้เก็บค่าดั้งเดิมไว้ (อย่างน้อยก็ภายใต้ลีนุกซ์ซึ่งจะไม่เป็นเช่นนั้นและนี่อาจเป็นจริงสำหรับตัวแปร unix อื่น ๆ ) ค่าของการตั้งค่าถูกเก็บไว้ในตัวแปร เมื่อคุณเปลี่ยนการตั้งค่าหน่วยความจำที่มีตัวแปรจะได้รับการอัพเดตอย่างไม่สามารถย้อนกลับได้
สำหรับการตั้งค่าส่วนใหญ่ค่าเริ่มต้นของตัวแปรคือค่าคงที่ที่กำหนดในเวลารวบรวมและเก็บไว้ในเคอร์เนลไบนารี โดยหลักการแล้วคุณสามารถตรวจสอบเคอร์เนลไบนารีของคุณเพื่อค้นหาค่าเริ่มต้น คุณจะต้องค้นหาสัญลักษณ์ที่สอดคล้องกับการตั้งค่าที่คุณสนใจและติดตามที่อยู่ของสัญลักษณ์นั้นในเคอร์เนลไบนารี การบูตเคอร์เนลของคุณในเครื่องเสมือนจะทำงานได้น้อยลง
สำหรับการตั้งค่าส่วนใหญ่คุณสามารถดูในแหล่งเคอร์เนล - kernel/sysctl.c
และไฟล์อื่น ๆ คุณจะเห็นคำจำกัดความเช่น
{
.procname = "rmem_max",
.data = &sysctl_rmem_max,
…
},
(ในnet/core/sysctl_net_core.c
) จากการที่คุณสามารถติดตามการเริ่มต้นของตัวแปรsysctl_rmem_max
ในขณะที่สิ่งนี้ถูกเริ่มต้นจากค่าคงที่มันใช้เวลาค่อนข้างน้อยในการอ่านรหัส C เพื่อขยาย