In Deel 13 van deze LFCS (Linux Foundation Certified Sysadmin) serie hebben we uitgelegd hoe je GRUB kunt gebruiken om het gedrag van het systeem aan te passen door opties naar de kernel door te geven voor het lopende opstartproces.
Vergelijkbaar, kun je de commandoregel gebruiken in een draaiend Linux-systeem om bepaalde runtime-kernelparameters te wijzigen als een eenmalige aanpassing, of permanent door een configuratiebestand te bewerken.
Zo ben je in staat om kernelparameters in een handomdraai in of uit te schakelen wanneer dat nodig is vanwege een vereiste wijziging in de manier waarop van het systeem wordt verwacht dat het functioneert.
Introductie van het /proc-bestandssysteem
De nieuwste specificatie van de Filesystem Hierarchy Standard geeft aan dat /proc
de standaardmethode vertegenwoordigt voor het verwerken van proces- en systeeminformatie, evenals andere kernel- en geheugeninformatie. Met name /proc/sys
is waar je alle informatie kunt vinden over apparaten, stuurprogramma’s en sommige kernelkenmerken.
De daadwerkelijke interne structuur van /proc/sys
is sterk afhankelijk van de gebruikte kernel, maar je zult waarschijnlijk de volgende mappen binnenin vinden. Op hun beurt zullen ze elk andere submappen bevatten waarin de waarden voor elke parametercategorie worden onderhouden:
dev
: parameters voor specifieke apparaten die zijn verbonden met de machine.fs
: bestandssysteemconfiguratie (quota’s en inodes, bijvoorbeeld).- kernel: kernel-specifieke configuratie.
net
: netwerkconfiguratie.vm
: gebruik van het virtuele geheugen van de kernel.
Om de runtimeparameters van de kernel te wijzigen, zullen we de sysctl
-opdracht gebruiken. Het exacte aantal parameters dat kan worden gewijzigd, kan worden bekeken met:
# sysctl -a | wc -l
Als u de volledige lijst met kernelparameters wilt bekijken, voert u gewoon uit:
# sysctl -a
Omdat de uitvoer van de bovenstaande opdracht VEEL regels zal bevatten, kunnen we een pijplijn gebruiken gevolgd door less om deze nauwkeuriger te inspecteren:
# sysctl -a | less
Laten we eens kijken naar de eerste paar regels. Let op dat de eerste tekens in elke regel overeenkomen met de namen van de mappen binnen /proc/sys
:

Bijvoorbeeld, de gemarkeerde regel:
dev.cdrom.info = drive name: sr0
geeft aan dat sr0
een alias is voor de optische drive. Met andere woorden, zo “ziet” de kernel die drive en gebruikt die naam om ernaar te verwijzen.
In het volgende gedeelte zullen we uitleggen hoe andere “belangrijkere” runtimeparameters van de kernel in Linux kunnen worden gewijzigd.
Hoe Linux Kernel-runtimeparameters wijzigen of aanpassen
Op basis van wat we tot nu toe hebben uitgelegd, is het gemakkelijk te zien dat de naam van een parameter overeenkomt met de mappenstructuur binnen /proc/sys
waarin deze kan worden gevonden.
Bijvoorbeeld:
dev.cdrom.autoclose → /proc/sys/dev/cdrom/autoclose net.ipv4.ip_forward → /proc/sys/net/ipv4/ip_forward
Controleer Linux Kernel Parameters
Dat gezegd hebbende, kunnen we de waarde van een bepaalde Linux-kernelparameter bekijken met behulp van sysctl
, gevolgd door de naam van de parameter of door het bijbehorende bestand te lezen:
# sysctl dev.cdrom.autoclose # cat /proc/sys/dev/cdrom/autoclose # sysctl net.ipv4.ip_forward # cat /proc/sys/net/ipv4/ip_forward

Instellen of wijzigen van Linux Kernelparameters
Om de waarde voor een kernelparameter in te stellen, kunnen we ook sysctl
gebruiken, maar met de -w
-optie en gevolgd door de naam van de parameter, het isgelijksymbool en de gewenste waarde.
Een andere methode bestaat uit het gebruik van echo
om het bestand dat met de parameter is geassocieerd, te overschrijven. Met andere woorden, de volgende methoden zijn equivalent om de functionaliteit voor het doorsturen van pakketten in ons systeem uit te schakelen (wat overigens de standaardwaarde zou moeten zijn wanneer een box niet bedoeld is om verkeer tussen netwerken door te geven):
# echo 0 > /proc/sys/net/ipv4/ip_forward # sysctl -w net.ipv4.ip_forward=0
Het is belangrijk op te merken dat kernelparameters die zijn ingesteld met sysctl
alleen tijdens de huidige sessie worden afgedwongen en verdwijnen wanneer het systeem opnieuw wordt opgestart.
Om deze waarden permanent in te stellen, bewerk /etc/sysctl.conf
met de gewenste waarden. Bijvoorbeeld, om pakketdoorsturing uit te schakelen in /etc/sysctl.conf, zorg ervoor dat deze regel in het bestand voorkomt:
net.ipv4.ip_forward=0
Voer vervolgens het volgende commando uit om de wijzigingen toe te passen op de lopende configuratie.
# sysctl -p
Andere voorbeelden van belangrijke kernelruntimeparameters zijn:
fs.file-max
specificeert het maximale aantal bestandshandles dat de kernel kan toewijzen voor het systeem. Afhankelijk van het beoogde gebruik van uw systeem (web / database / file server, om maar een paar voorbeelden te noemen), wilt u deze waarde mogelijk wijzigen om aan de behoeften van het systeem te voldoen.
Anders krijg je het foutmelding “Te veel open bestanden” op best, en kan het besturingssysteem bij worst geen opstarten meer voorkomen.
Als door een onschuldige fout je zich in deze laatste situatie bevind, start je op in enkele gebruiker modus (zoals uitgelegd in Hoofdstuk 13 – Configureer en probleem oplossen bij Linux Grub Boot Loader) en bewerkt je /etc/sysctl.conf zoals eerder gegeven werd aanwijzingen. Om dezelfde beperking op per-gebruiker basis in te stellen, ga naar Hoofdstuk 14 – Monitor en instellingen voor Linux Proces Limiet Gebruik van deze reeks.
kernel.sysrq
wordt gebruikt om de SysRq toets op uw toetsenbord in te schakelen (ook bekend als de print screen toets) zodat bepaalde toetsenbord knoppen combinaties worden aangeroepen bij dringende acties als het systeem niet reageert.
De standaard waarde (16) geeft aan dat het systeem de Alt+SysRq+toets
combinatie zal aanvaarden en de acties uit de sysrq.c documentatie uitvoeren die te vinden zijn op kernel.org (waar toets een letter is in de b-z reeks). Bijvoorbeeld, Alt+SysRq+b
zal het systeem opnieuw opstarten (gebruik dit als laatste optie als uw server niet reageert).
Waarschuwing! probeer dit toetsenbordcombinatie niet op een virtuele machine in te drukken, want het kan ertoe leiden dat uw hostsysteem opnieuw opstart!
Wanneer ingesteld op 1, zal net.ipv4.icmp_echo_ignore_all pingverzoeken negeren en ze op kernelniveau verwerpen. Dit is te zien in de onderstaande afbeelding – noteer hoe pingverzoeken verloren zijn nadat dit kernelparameter is ingesteld:

A better and easier way to set individual runtime parameters is using .conf files inside /etc/sysctl.d
, grouping them by categories.
Bijvoorbeeld, in plaats van net.ipv4.ip_forward=0 en net.ipv4.icmp_echo_ignore_all=1 te instellen in /etc/sysctl.conf, kunnen we een nieuw bestand aanmaken genaamd net.conf
binnen /etc/sysctl.d:
# echo "net.ipv4.ip_forward=0" > /etc/sysctl.d/net.conf # echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.d/net.conf
Als u kiest voor deze aanpak, vergeet niet dezelfde regels uit /etc/sysctl.conf
te verwijderen.
Samenvatting
In dit artikel hebben we uitgelegd hoe kernel runtime parameters aan te passen, zowel persistent als niet persistent, met behulp van sysctl, /etc/sysctl.conf, en bestanden binnen /etc/sysctl.d.
In de sysctl documenten vindt u meer informatie over de betekenis van meer variabelen. Die bestanden zijn de meest complete bronnen van documentatie over de parameters die via sysctl kunnen worden ingesteld.
Vond u dit artikel nuttig? We hopen het zeker wel. Twijfel niet om ons te laten weten als u vragen of suggesties om te verbeteren heeft.
Source:
https://www.tecmint.com/change-modify-linux-kernel-runtime-parameters/