====== Управление ядром и модулями в Linux ======
* [[https://ru.wikipedia.org/wiki/Ядро_Linux|Ядро Linux]]
===== Что за ядро =====
# uname -a
===== Модули ядра =====
# find /lib/modules/`uname -r`/kernel/
$ lsmod
# modinfo e1000
# modprobe ip_gre
# modprobe -r ip_gre
# iptables -L
# lsmod | grep ip
# cat /etc/modules
===== Сообщения ядра =====
$ dmesg -T
===== Переменные ядра =====
* [[https://coderoad.ru/8290046/ICMP-%D1%81%D0%BE%D0%BA%D0%B5%D1%82%D1%8B-linux|ICMP-сокеты (linux)]]
# sysctl -a
# sysctl net.ipv4.ip_default_ttl=2
# ###sysctl -w net.ipv4.ping_group_range="1 65535"
# cat /etc/sysctl.conf
# sysctl -f
===== Сборка модулей ядра =====
* [[http://www.altlinux.org/Сборка_модулей_ядра|Сборка модулей ядра]]
===== Сборка ядра =====
* [[https://youtu.be/QFoGnnB3WPg|Видео урок: Сборка ядра в linux]]
* [[http://citkit.ru/articles/1066/|Пересборка ядра: ядерный распад или термоядерный синтез?]]
* [[http://www.linuxcenter.ru/lib/articles/system/kernel26_install.phtml|Ставим ядро 2.6, или Ядерная физика для домохозяйки. Версия 1.1.]]
==== Сборка ядра в Gentoo ====
* [[https://wiki.gentoo.org/wiki/Kernel/Configuration/ru|Ядро/Конфигурация]]
* [[https://www.gentoo.org/news/2017/08/19/hardened-sources-removal.html|Hardened Linux kernel sources removal]]
# emerge --ask hardened-sources
# echo "=sys-kernel/hardened-sources-4.8.17-r2" >> /etc/portage/package.unmask
# emerge --ask hardened-sources
# time emerge -av sys-kernel/gentoo-sources
real 8m44.821s
user 5m37.132s
sys 1m56.026s
/usr/src/linux # make defconfig
/usr/src/linux # make menuconfig
/usr/src/linux # time make -j3
real 20m6.287s
user 34m28.865s
sys 4m4.605s
/usr/src/linux # make modules_install
/usr/src/linux # make install
# grub-mkconfig -o /boot/grub/grub.cfg
==== Сборка ядра в Debian/Ubuntu ====
* Не рекомендуется в этом дистрибутиве
* [[http://ubuntism.ru/2010/02/building-kernel-ubuntu/|Оптимизация Ubuntu. Сборка ядра: предпосылки, рекомендации, практика.]]
* [[https://help.ubuntu.com/community/Kernel/Compile|Ubuntu/Kernel/Compile]]
=== Установка инструментария ===
* [[Управление ПО в Linux#Работа с исходными текстами]]
# apt-get install libncurses5-dev kernel-package
# cd /usr/src/
=== Получение исходных текстов из репозитория ===
# apt-get install linux-source
# tar -xvf linux-source-X.X.XX.tar.bz2
=== Получение исходных текстов из kernel.org ===
# wget http://www.kernel.org/pub/linux/kernel/vX.X/linux-X.X.X.tar.bz2
# tar -xvf linux-X.X.X.tar.bz2
=== Копирование конфигурации текущего ядра ===
# cd linux-*
# yes "" | make oldconfig
=== Модификация исходных текстов ядра ===
* [[Linux Hardened#Hardened Debian/Ubuntu]]
=== Конфигурирование, компилирование и установка ядра ===
# cd /usr/src
# cd linux-*
# make menuconfig
* General setup->Local version - append to kernel release->mykernel
# less .config
# time make-kpkg --initrd kernel-image kernel-headers
# cd /usr/src
# dpkg -i linux-image-X.X.XX.XX+drmXX.XXmykernel_X.X.XX.XX+drmXX.XXmykernel-10.00.Custom_i386.deb
# dpkg -i linux-headers-X.X.XX.XX+drmXX.XXmykernel_X.X.XX.XX+drmXX.XXmykernel-10.00.Custom_i386.deb
# cd /boot
# mkinitramfs -k -o initrd.img-X.X.XX.XX+drmXX.12mykernel X.X.XX.XX+drmXX.XXmykernel
# update-grub2