Налаштування ядра linux
Відео: Конфігурація, збірка і установка ядра Linux
Ядро Linux - дуже гнучка річ, що дозволяє налаштувати дуже багато параметрів. Такі параметри, як підтримувані пристрої та функції настроюються при складанні ядра. Але сьогодні не розглядатиметься компіляція ядра Linux. Ми поговоримо про більш тонкої настройки параметрів ядра на льоту, прямо під час його роботи.
Так, ми не можемо включати додавати не підтримуються модулі і драйвера пристроїв, але ми можемо налаштувати такі параметри ядра Linux, як особливості роботи процесора, пам`яті, віртуального простору пам`яті, планувальника ядра, мережевий стек і багато іншого. Всі ці настройки доступні через файлову систему proc. Ми розглядали детально її в попередній статті, тепер же зупинимося тільки на директорії / proc / sys, за допомогою якої ми і будемо налаштовувати ядро.
Як виконується настройка?
Тут все гранично просто. У цьому каталозі і його підкаталогах лежать файли, це і є параметри, а значення в файлах нам і потрібно змінювати. Для цього можна використовувати найпростішу конструкцію з команди echo і оператора перенаправлення виведення:
net.ipv4.ip_forwardВи можете встановити значення параметра такою командою:
$ Sysctl -w net.ipv4.ip_forward = 1Ви можете також відразу подивитися всі доступні змінні за допомогою опції -a:
abi.vsyscall32 = 1debug.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
vm.dirty_ratio = 20
Тепер ви знаєте як працювати зі змінними, далі ми розглянемо значення деяких, найбільш важливих змінних, за допомогою яких може бути виконана настройка ядра 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.
fs.aio-nr
Кількість асинхронних операцій введення і виведення в вашої файлової системи.
fs.file-max
Максимальна кількість дескрипторів файлів, які може створити і обробляти ядро. Якщо ви часто отримуєте повідомлення про помилку через неможливість створити дескриптор файлу збільште цей ліміт. За умовчанням встановлено значення 10% від вашої оперативної пам`яті.
fs.inotify.max_queued_events
Підсистема ядра inotify дозволяє стежити за змінами в файлової системі. Цей параметр встановлює максимальну кількість подій, які можуть перебувати в черзі, перед тим як їх обробить програма.
fs.inotify.max_user_instances
Максимальна кількість об`єктів inotify, які може створити один користувач.
fs.inotify.max_user_watches
Максимальна кількість файлів і директорій, за якими може спостерігати один об`єкт inotify.
cad_pid
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
Максимальна кількість запущених потоків для процесів.
Відео: Ядра операційної системи Linux. Як правильно вибрати, встановити і налаштувати завантаження на Ubuntu
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
Максимальний розмір буфера сокета для відправки даних по мережі.
Відео: RS # 36: МОДЕЛЬ РОЗРОБКИ ЯДРА LINUX - Кирило Шутем
net.ipv4.tcp_rmem
Кількість пам`яті, доступної для роботи TCP.
vm.dirty_background_ratio
Вказує відсоток від загальної системної пам`яті, коли фоновий демон pdflush записи даних почне переписувати кешовані дані на диск. За умовчанням встановлено 10, але в швидких системах таке часте скидання не потрібно, тому цей параметр можна збільшити.
vm.dirty_ratio
Схожий параметр. Тільки на цей раз він вказує скільки загальної оперативної пам`яті повинно бути зайнято, щоб процес, який веде запис даних на диск ініціював запис кешованих даних безпосередньо на жорсткий диск.
vm.laptop_mode
Функція laptop mode дозволяє не відразу записувати дані на жорсткий диск після запиту, а зберігати їх зазначений час в оперативній пам`яті. Може бути корисно якщо ви економите заряд батареї і не хочете, щоб жорсткий диск завжди обертався.
vm.swappiness
Встановлює відсоток вільної пам`яті, після досягнення якого дані починають переноситися на swap розділ, для систем з великою кількістю пам`яті рекомендовано значення 10.
висновки
Ми розглянули далеко не всі параметри ядра linux, тут описані лише найцікавіші з них. Більш детальну інформацію та ще більше змінних ви можете знайти в офіційній документації по ядру Linux. І будьте обережні, конфігурація ядра Linux - справа серйозна. Якщо я упустив якийсь важливий параметр, напишіть в коментарях!
- Завантаження процесора linux
- Що таке ядро linux
- Що нового в linux kernel 4.9
- Як оновити ядро до 4.1 в ubuntu
- Чотири ядра в ноутбуці? Запросто!
- Manjaro linux 15.12 отримає ядро 4.4 lts
- Налаштування zram в linux
- Віртуальна флешка в linux
- Оновлення драйверів ubuntu
- Реліз linux kernel 4.8 rc3
- Файлова система proc в linux
- Лінус торвальдс повідомив про перший релізі linux 4.6 rc1
- Модулі ядра linux
- Налаштування завантажувача grub
- Реліз ядра linux 4.8
- Оновлення ядра centos 7
- Практикум: модулі ядра linux
- Встановлюємо параметри ядра в grub
- Оновлення ядра linux до нової версії
- Збираємо ядро linux
- Продуктивність ядра linux 4.8 vs 4.4