Функции ядра ОС:
Ядро Linux реализует модель вытесняющей многозадачности.
Ядра различных ОС можно классифицировать по структуре:
Параметры ядра (Полный список).
sysctl (в рантайме либо через конф.файл /etc/sysctl.conf).В процессорах с архитектурой x86 есть несколько механизмов которые используются ОС:
Механизм трансляции памяти в x86 работает со страницами по 4 килобайта. Каждая страница может быть помечена как:
Процессоры с архитектурой x86 используют механизм прерываний (interruption) чтобы выполнять специальный код для обработки событий:
Режимы работы кода:
С точки зрения безопасности, нужно чтобы в kernel space работало как можно меньше кода.
Модуль ядра — это часть ядра Linux, которую можно динамически загрузить и выгрузить.
Как правило, модули ядра являются драйверами для различных устройств и файловых систем.
Модули хранятся в каталоге /lib/modules/ (/usr/lib/modules/), в файлах с расширением *.ko.
DKMS (Dynamic Kernel Module Support) — система для автоматической перекомпиляции сторонних драйверов при обновлении ядра ОС Linux.
Виртуальная файловая система — файловая система, которая не хранится в постоянной внешней памяти (диске). Виртуальные файловые системы:
/proc/ — взаимодействие с процессами (раньше также использовалась для взаимодействия с ядром)/sys/ — взаимодействие с ядром ОС (echo 1 > /sys/class/leds/input3::capslock/brightness)/run/ — временные файлы, которые нужны только во время текущего сеанса работыFUSE — Filesystem in user space — файловая система, драйвер которой работает в user space.
Initial ramdisk (initrd) — образ начальной файловой системы, который содержит:
Система инициализации — первый запускающийся в Linux процесс, программа, которая управляет запуском системных служб:
Команды для получения информации о ядре:
uname -a — информация о ядреcat /proc/version — версия ядраcat /proc/cmdline — аргументы командной строкиsysctl -a — просмотр текущих параметров ядраsysctl <параметр> — чтение значения параметра ядраsysctl <параметр>=<значение> — изменение значения параметра ядраНапример: параметр sys
Команды для получения информации об оборудовании:
cat /proc/cpuinfo — данные о процессореlscpu — данные о процессореcat /proc/meminfo — подробные данные об использовании памяти (ОЗУ)free — данные о занятой/свободной памяти (ОЗУ)journalctl -k / dmesg — журнал работы с оборудованиемlspci — перечень оборудования подключаемого через шину PCIlsusb — перечень оборудования подключаемого через шину USBКоманды для работы с модулями ядра:
lsmod — список загруженных модулейmodinfo — информация о модулеinstmod — загрузить модуль без проверки на совместимость с АОmodprobe — загрузить модульrmmod — выгрузить модульВажные файлы и каталоги:
/boot/vmlinuz... — сжатый образ ядра ОС/boot/initrd... (либо initramfs...) — образ начальной ФС/etc/sysctl — файл с настройками параметров ядра/etc/sysctl.d/* — файлы с дополнительными настройками модулей ядра/etc/modprobe.d/* — файлы с настройками модулей ядраНапример, очень часто после установки проприетарного драйвера для видеокарт Nvidia (nvidia) бывает необходимо отключить загрузку open-source драйвера (nouveau). Для этого нужно добавить в любой файл в каталоге /etc/modprobe.d/ (например blacklist-nouveau.conf) строку:
blacklist nouveau
Создание образа начальной файловой системы может понадобиться если вы вручную устанавливаете драйвер стороннего разработчика или изменяете конфигурационные файлы, которые влияют на процедуру загрузки ОС Linux.
Создание образа начальной файловой системы в разных дистрибутивах происходит с помощью разных утилит (initrd, cpio, mkinitrd, mkinitramfs, yaird, mkinitcpio).
В Ubuntu: update-initramfs - скрипт для обновления initrd в дистрибутиве Ubuntu.
В Ubuntu на процедуру создания образа начальной файловой системы влияет файл /etc/initramfs-tools/initramfs.conf — конфигурационный файл утилиты mkinitramfs.