Wéi änneren de Kernel Runtime Parameteren op eng persistent an net persistent Manéier


Am Deel 13 vun dësem wéi Dir GRUB benotzt fir d'Behuele vum System z'änneren andeems Dir Optiounen un de Kernel passt fir de lafende Bootprozess.

Ähnlech kënnt Dir d'Kommandozeil an engem lafende Linux-System benotze fir bestëmmte Runtime-Kernelparameter als eng eemoleg Ännerung ze änneren, oder permanent andeems Dir eng Konfiguratiounsdatei ännert.

Also, Dir sidd erlaabt Kernelparameter on-the-fly z'aktivéieren oder auszeschalten ouni vill Schwieregkeeten wann et néideg ass wéinst enger erfuerderter Ännerung an der Aart a Weis wéi de System erwaart gëtt ze bedreiwen.

Aféierung vum /proc Dateisystem

Déi lescht Spezifizéierung vum Filesystem Hierarchy Standard weist datt /proc d'Standardmethod duerstellt fir Prozess- a Systeminformatioune wéi och aner Kernel- a Gedächtnisinformatioun ze behandelen. Besonnesch, /proc/sys ass wou Dir all Informatioun iwwer Apparater, Chauffeuren an e puer Kernelfeatures fannt.

Déi aktuell intern Struktur vun /proc/sys hänkt staark vum Kernel of, deen benotzt gëtt, awer Dir fannt wahrscheinlech déi folgend Verzeichnisser dobannen. Am Tour wäert jidderee vun hinnen aner Ënnerverzeechnungen enthalen, wou d'Wäerter fir all Parameterkategorie erhale bleiwen:

  1. dev: Parameter fir spezifesch Apparater déi mat der Maschinn verbonne sinn.
  2. fs: Dateisystemkonfiguratioun (zum Beispill Quoten an Inoden).
  3. Kernel: Kernelspezifesch Konfiguratioun.
  4. net: Netzwierkkonfiguratioun.
  5. vm: Notzung vun der virtueller Erënnerung vum Kernel.

Fir d'Kernel Runtime Parameteren z'änneren benotze mir de Kommando sysctl. Déi genau Unzuel vun de Parameteren, déi geännert kënne ginn, kënne gekuckt ginn mat:

# sysctl -a | wc -l

Wann Dir déi komplett Lëscht vu Kernel Parameteren kucke wëllt, maacht just:

# sysctl -a 

Well d'Output vum uewe genannte Kommando aus VILL Zeilen besteet, kënne mir eng Pipeline benotzen gefollegt vu manner fir et méi suergfälteg z'inspektéieren:

# sysctl -a | less

Loosst eis déi éischt puer Zeilen kucken. Notéiert w.e.g. datt déi éischt Zeechen an all Zeil mat den Nimm vun den Verzeichnungen an /proc/sys passen:

Zum Beispill, déi markéiert Linn:

dev.cdrom.info = drive name:        	sr0

weist datt sr0 en Alias fir den opteschen Drive ass. An anere Wierder, dat ass wéi de Kernel dee Fuert \gesinn a benotzt dësen Numm fir dorop ze referenzéieren.

An der folgender Sektioun wäerte mir erkläre wéi aner \méi wichteg\ Kernel Runtime Parameteren am Linux änneren.

Wéi änneren oder änneren Linux Kernel Runtime Parameteren

Baséierend op deem wat mir bis elo erkläert hunn, ass et einfach ze gesinn datt den Numm vun engem Parameter entsprécht der Verzeechnesstruktur bannent /proc/sys wou et ka fonnt ginn.

Zum Beispill:

dev.cdrom.autoclose → /proc/sys/dev/cdrom/autoclose
net.ipv4.ip_forward → /proc/sys/net/ipv4/ip_forward

Dat gesot, mir kënnen de Wäert vun engem bestëmmte Linux Kernel Parameter kucken andeems Dir entweder sysctl gefollegt vum Numm vum Parameter oder déi assoziéiert Datei liest:

# sysctl dev.cdrom.autoclose
# cat /proc/sys/dev/cdrom/autoclose
# sysctl net.ipv4.ip_forward
# cat /proc/sys/net/ipv4/ip_forward

Fir de Wäert fir e Kernelparameter ze setzen, kënne mir och sysctl benotzen, awer mat der -w Optioun a gefollegt vum Numm vum Parameter, dem Gläichzeechen an de gewënschten Wäert.

Eng aner Method besteet aus der Benotzung vun Echo fir d'Datei, déi mam Parameter assoziéiert ass, ze iwwerschreiwe. An anere Wierder, déi folgend Methoden sinn gläichwäerteg fir d'Packet Forwarding Funktionalitéit an eisem System auszeschalten (wat iwwregens de Standardwäert sollt sinn wann eng Këscht net de Traffic tëscht Netzwierker passéiere soll):

# echo 0 > /proc/sys/net/ipv4/ip_forward
# sysctl -w net.ipv4.ip_forward=0

Et ass wichteg ze notéieren datt d'Kernelparameter déi mat sysctl gesat ginn, nëmme während der aktueller Sessioun duerchgesat ginn a verschwannen wann de System nei gestart gëtt.

Fir dës Wäerter permanent ze setzen, editéiert /etc/sysctl.conf mat de gewënschten Wäerter. Zum Beispill, fir Packet Forwarding an /etc/sysctl.conf auszeschalten, gitt sécher datt dës Linn an der Datei erschéngt:

net.ipv4.ip_forward=0

Fuert dann de folgende Kommando fir d'Ännerungen op déi lafend Konfiguratioun z'applizéieren.

# sysctl -p

Aner Beispiller vu wichtege Kernel Runtime Parameteren sinn:

fs.file-max spezifizéiert d'maximal Unzuel u Dateihandtaken, déi de Kernel fir de System zoudeele kann. Ofhängeg vun der virgesinner Notzung vun Ärem System (Web/Datebank/Dateiserver, fir e puer Beispiller ze nennen), wëllt Dir vläicht dëse Wäert änneren fir de Bedierfnesser vum System z'erreechen.

Soss kritt Dir am beschten eng Ze vill oppene Dateien Fehlermeldung, a kënnt verhënnere datt de Betribssystem am schlëmmste booten.

Wann Dir opgrond vun engem onschëllegen Feeler Iech an dëser leschter Situatioun fannt, boott am Single User Modus (wéi erkläert am Deel 14 - Monitor a Set Linux Prozess Limit Benotzung vun dëser Serie.

kernel.sysrq gëtt benotzt fir de SysRq-Schlëssel op Ärer Tastatur z'aktivéieren (och bekannt als Printscreen-Schlëssel) fir datt bestëmmte Tastekombinatiounen Noutaktiounen opruffen wann de System net reagéiert.

De Standardwäert (16) weist datt de System d'Kombinatioun Alt+SysRq+Schlëssel honoréiert an d'Aktiounen ausféiert, déi an der sysrq.c Dokumentatioun fonnt ginn, déi an kernel.org fonnt gëtt (wou de Schlëssel ee Buschtaf ass an der b-z Beräich). Zum Beispill, Alt+SysRq+b wäert de System kräfteg nei starten (benotzt dëst als leschten Auswee wann Äre Server net reagéiert).

Opgepasst! Probéiert net dës Tastekombinatioun op enger virtueller Maschinn ze drécken, well et kann Äre Hostsystem forcéieren fir nei ze starten!

Wann op 1 gesat gëtt, wäert net.ipv4.icmp_echo_ignore_all Ping-Ufroen ignoréieren an se um Kernelniveau erofsetzen. Dëst gëtt am Bild hei ënnen gewisen - notéiert wéi Ping Ufroe verluer sinn nodeems Dir dëse Kernelparameter gesat huet:

E besseren a méi einfache Wee fir individuell Runtime-Parameteren ze setzen ass d'Benotzung vun .conf-Dateien bannent /etc/sysctl.d, a gruppéiere se no Kategorien.

Zum Beispill, amplaz net.ipv4.ip_forward=0 an net.ipv4.icmp_echo_ignore_all=1 an /etc/sysctl.conf ze setzen, kënne mir eng nei Datei mam Numm net.conf an /etc/ erstellen 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

Wann Dir gewielt hutt dës Approche ze benotzen, vergiesst net déiselwecht Zeilen aus /etc/sysctl.conf ze läschen.

Resumé

An dësem Artikel hu mir erkläert wéi d'Kernel Runtime Parameteren änneren, souwuel persistent an net persistent, mat sysctl, /etc/sysctl.conf, a Dateien bannent /etc/sysctl.d.

An de sysctl docs kënnt Dir méi Informatioun iwwer d'Bedeitung vu méi Variablen fannen. Dës Dateie representéieren déi komplettst Quell vun der Dokumentatioun iwwer d'Parameteren déi iwwer sysctl gesat kënne ginn.

Hutt Dir dësen Artikel nëtzlech fonnt? Mir hoffen sécher Dir hutt. Zéckt net eis ze soen wann Dir Froen hutt oder Suggestioune fir ze verbesseren.