Конфигурация на ядрото на Linux, Losst

Ядрото на Linux е много гъвкаво нещо, което ви позволява да конфигурирате много параметри. Параметри като поддържаните устройства и функции се конфигурират, когато ядрото е изградено. Но компилирането на ядрото на Linux няма да бъде обсъждано днес. Ще говорим за настройване на параметрите на ядрото в движение, точно докато работи.

Да, не можем да активираме добавянето на неподдържани модули и драйвери на устройства, но можем да променим параметрите на ядрото на Linux като CPU, памет, пространство на виртуална памет, планировщик на ядрото, мрежов стек и др. Всички тези настройки са достъпни чрез файловата система proc. Разгледахме го подробно в предишната статия, но сега ще се съсредоточим само върху директорията/proc/sys, с която ще конфигурираме ядрото.

Как се прави настройката?

Тук всичко е изключително просто. Тази директория и нейните поддиректории съдържат файлове, това са параметрите и трябва да променим стойностите във файловете. За да направите това, можете да използвате най-простата конструкция от командата echo и оператора за пренасочване на изхода:

ехо "1">/proc/sys/net/ipv4/ip_forward

Стойността 1 ще бъде записана в ipv4_forward. Но променените по този начин параметри не се записват след рестартиране. Преди да помислите как да запазите параметрите на ядрото на Linux от proc, помислете за друг начин да ги модифицирате.

Можете да зададете стойността на параметъра с тази команда:

Но и тази промяна няма да бъде запазена, за да запазите настройката след рестартиране, трябва да добавите опцията -w:

sysctl -w net.ipv4.ip_forward = 1

Можете също така да видите всички налични променливи с един поглед с опцията -a:

abi.vsyscall32 = 1
debug.exception-trace = 1
dev.cdrom.autoclose = 0
dev.cdrom.autoeject = 0
dev.cdrom.check_media = 0
dev.cdrom.debug = 0
.

vm.stat_interval = 1
vm.swappiness = 60
vm.user_reserve_kbytes = 131072
vm.vfs_cache_pressure = 100
vm.zone_reclaim_mode = 0

Всички тези променливи се записват в обикновени конфигурационни файлове за постоянство при рестартиране. Променливите, в зависимост от целта, се разпределят между тези файлове:

  • /run/sysctl.d/*.conf
  • /etc/sysctl.d/*.conf
  • /usr/local/lib/sysctl.d/*.conf
  • /usr/lib/sysctl.d/*.conf
  • /lib/sysctl.d/*.conf
  • /etc/sysctl.conf

Можете също така ръчно да добавяте променливи и техните стойности към тези файлове. Ако искате да върнете стойностите на променливите в състоянието, запазено във файлове и да премахнете промените, изпълнете:

* Прилагане /boot/sysctl.conf-4.1.21-14-default .
kernel.hung_task_timeout_secs = 0
kernel.msgmax = 65536
kernel.msgmnb = 65536
kernel.shmmax = 0xffffffffffffffff
kernel.shmall = 0x0fffffffffffff00
vm.dirty_ratio = 20

Сега знаете как да работите с променливи, по-нататък ще разгледаме значението на някои от най-важните променливи, с които може да бъде конфигурирано ядрото на Linux.

Конфигурация на ядрото на Linux

abi.vsyscall32

Ако е зададено на 1, позволява изпълнение на 32-битови програми на 64-битова система. По подразбиране можете да го изключите и след това да опитате да стартирате, например, скайп.

debug.exception-trace

Когато възникне грешка в ядрото, отпечатайте стойностите на регистрите на процесора и стека на повикванията на процедурата. Активирано по подразбиране.

dev.cdrom.autoclose

Вашият CDROM ще бъде автоматично затворен, когато се опитате да го монтирате, деактивиран по подразбиране.

dev.cdrom.autoeject

CDROM ще бъде отворен след демонтиране на съдържащия се там диск с помощта на командата umount.

dev.hpet.max-user-freq

Максималната честота на генериране на прекъсвания от системния таймер за високи прецизни събития (HPET), който замества RTC на таймера в реално време. По подразбиране 64.

Броят на асинхронните I/O операции на вашата файлова система.

Максималният брой файлови дескриптори, които ядрото може да създаде и обработи. Ако често получавате съобщения за грешка поради невъзможността да създадете дескриптор на файл, увеличете това ограничение. По подразбиране е зададена на 10% от вашата RAM.