Налаштування ядра linux, Losst

Ядро Linux - дуже гнучка річ, що дозволяє налаштувати багато параметрів. Такі параметри, як підтримувані пристрої та функції, налаштовуються при складанні ядра. Але сьогодні не розглядатиметься компіляція ядра Linux. Ми поговоримо про більш тонке налаштування параметрів ядра на льоту прямо під час його роботи.

Так, ми не можемо включати додавати непідтримувані модулі та драйвера пристроїв, але ми можемо налаштувати такі параметри ядра Linux, як особливості роботи процесора, пам'яті, віртуального простору пам'яті, планувальника ядра, мережевий стек та багато іншого. Всі ці налаштування доступні через файлову систему proc. Ми розглядали докладно її в попередній статті, тепер зупинимося тільки на директорії /proc/sys, за допомогою якої ми і налаштовуватимемо ядро.

Як налаштувати?

Тут усе дуже просто. У цьому каталозі та його підкаталогах лежать файли, і є параметри, а значення у файлах нам потрібно змінювати. Для цього можна використовувати найпростішу конструкцію з команди echo та оператора перенаправлення висновку:

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

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

* Applying /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

Тепер ви знаєте як працювати зі змінними, далі ми розглянемо значення деяких найважливіших змінних, за допомогою яких може бути виконано налаштування ядра linux.

Налаштування ядра Linux

abi.vsyscall32

Якщо встановлено 1, дозволяє виконання 32 бітних програм 64 бітної системі. За промовчанням увімкнено, можете вимкнути, а потім спробувати запустити, наприклад, skype.

debug.exception-trace

При виникненні помилки в ядрі виводити значення регістрів процесора та стек викликів процедур. За замовчуванням увімкнено.

dev.cdrom.autoclose

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

dev.cdrom.autoeject

CDROM будевідкритий після розмонтування диску, що міститься там, за допомогою команди umount.

dev.hpet.max-user-freq

Максимальна частота генерації переривань від системного таймера High Precision Event Timer (HPET), який замінив таймер реального часу RTC. Типово 64.

Кількість асинхронних операцій введення та виведення у вашій файловій системі.

Максимальна кількість дескрипторів файлів, які можуть створити та обробляти ядро. Якщо ви часто отримуєте повідомлення про помилку через неможливість створити дескриптор файлу, збільште цей ліміт. За замовчуванням встановлено значення 10% вашої оперативної пам'яті.

fs.inotify.max_queued_events

Підсистема ядра inotify дозволяє стежити за змінами у файловій системі. Цей параметр встановлює максимальну кількість подій, які можуть перебувати у черзі, перш ніж їх обробить програма.

fs.inotify.max_user_instances

Максимальна кількість inotify об'єктів, які може створити один користувач.

fs.inotify.max_user_watches

Максимальна кількість файлів і директорій, за якими може спостерігати один об'єкт інотіф.

PID процесу, який отримає сигнал, якщо буде натиснуто клавіші Ctrl+Alt+Del

kernel.ctrl-alt-del

Якщо значення параметра 0, система надсилає сигнал процесу Init або тому, що ви призначили в попередній змінній, щоб виконати правильне перезавантаження. Якщо значення більше нуля, буде виконано негайне перезавантаження.

kernel.domainname

Дозволяє встановити доменне ім'я NIS (Network Internet Services) та YP (Yellow Pages). Але не плутайте це доменне ім'я з DNS, це зовсім різні речі.

kernel.hostname

Ім'я комп'ютера. Це найпростіший спосібзмінити ім'я комп'ютера зараз, без перезавантаження.

kernel.modules_disabled

Дозволяє вимкнути завантаження модулів ядра.

kernel.panic

Вказує кількість секунд після помилки у ядрі (kernel panic) до перезавантаження.

kernel.pid_max

Максимальне значення процесу PID. Коли PID досягає цього значення, ядро ​​знову переходить до мінімального. Значення більше не виділяються.

kernel.random.boot_id

Цей файл доступний лише для читання та містить унікальний, випадковий ідентифікатор завантаження. Генерується для кожного завантаження.

kernel.random.uuid

Під час кожного запиту генерує випадковий UUID. Також доступний тільки для читання.

kernel.randomize_va_space

kernel.sysrq

Дозволяє увімкнути або вимкнути керування ядром за допомогою SysRQ. Доступні такі параметри:

  • 0 - вимкнути всі функції
  • 1 - дозволити всі функції
  • 2 - дозволити налаштування рівня логування
  • 4 - дозволити керування клавіатурою
  • 8 - дозволити отримання налагоджувальних повідомлень та дампів
  • 16 - дозволити команду sync
  • 32 - дозволити перемонтування файлових систем у read-only
  • 64 - дозволити завершення процесів
  • 128 - дозволити перезавантаження, вимкнення
  • 256 - дозволити управління планувальником

kernel.threads-max

Максимальна кількість запущених потоків для процесів.

net.ipv4.icmp_echo_ignore_all

Якщо увімкнено, ядро ​​ігноруватиме всі icmp запити. Рекомендується для захисту від атак DDOS.

net.ipv4.icmp_echo_ignore_broadcasts

Так само, як і в попередньому варіанті, тільки ігноруватиметься тількиширокомовні icmp запити.

net.ipv4.ip_default_ttl

Максимальна кількість вузлів, через які може пройти надісланий пакет перед тим, як досягне мети.

net.ipv4.ip_forward

Дозволити пакети, що проходять через цей комп'ютер. Зазвичай таке налаштування параметрів ядра Linux потрібне для роутерів.

net.ipv4.ip_local_port_range

Діапазон локальних портів, які можна використовувати вашими програмами.

net.ipv4.tcp_rfc1337

Встановіть 1, щоб захистити комп'ютер від атаки TCP TimeWait.

net.ipv4.tcp_fin_timeout

Таймаут очікує завершення з'єднання після надсилання пакета FIN. Рекомендовано 15.

net.ipv4.tcp_keepalive_time

Підтримувати з'єднання активним певний час, наприклад, 300 секунд. Після закінчення цього часу TCP з'єднання буде розірвано.

net.core.rmem_default

Вказує розмір за замовчуванням буфера для сокету отримання даних мережі.

net.core.rmem_max

Максимальний розмір буфера сокету для отримання даних через мережу.

net.core.wmem_default

Розмір стандартного сокету для надсилання даних через мережу.

net.core.wmem_max

Максимальний розмір буфера сокету для надсилання даних через мережу.

net.ipv4.tcp_rmem

Кількість пам'яті доступна для роботи TCP.

vm.dirty_background_ratio

Вказує відсоток загальної системної пам'яті, коли фоновий демон pdflush запису даних почне переписувати кешовані дані на диск. За замовчуванням встановлено 10, але в швидких системах таке часте скидання не потрібне, тому цей параметр можна збільшити.

vm.dirty_ratio

Схожий параметр. Тільки на цей раз він вказує скільки загальної оперативної пам'яті має бути зайнято, щоб процес, якийведе запис даних на диск ініціював запис кешованих даних безпосередньо на жорсткий диск.

vm.laptop_mode

Функція laptop mode дозволяє не відразу записувати дані на жорсткий диск після запиту, а зберігати вказаний час в оперативній пам'яті. Може бути корисно, якщо ви заощаджуєте заряд батареї і не хочете, щоб жорсткий диск завжди обертався.

vm.swappiness

Встановлює відсоток вільної пам'яті, після якого дані починають переноситися на swap розділ, для систем з великою кількістю пам'яті рекомендовано значення 10.