Одно ядро — устройства разного масштаба

Термостату и корпоративному серверу нужны разные программы, но обоим может служить одна и та же основа — ядро Linux. Ядро управляет тем, что происходит между приложениями и аппаратурой: распределяет процессорное время, выделяет память, передаёт данные по сети и общается с устройствами. Оно не задаёт термостату расписание отопления и не определяет, какие сервисы запускает сервер; за это отвечают программы поверх ядра.

Как одна система подходит разным устройствам

Linux не представляет собой неизменный комплект, который целиком устанавливают и на сервер, и на термостат. При сборке выбирают нужные части ядра и настройки: компактному устройству не требуется поддержка оборудования, которого в нём нет, а серверу нужны средства для работы с его процессорами, дисками и сетевыми картами. К ядру добавляются отдельная система запуска, драйверы и приложения — поэтому готовые продукты могут сильно различаться, сохраняя общий фундамент.

Такой подход позволяет разработчикам использовать на разных классах устройств знакомый набор механизмов и инструментов. Но он не делает термостат и сервер взаимозаменяемыми: доступные функции и ограничения определяются их аппаратурой, конфигурацией и программами.

Почему изменения проверяют

Ошибка в ядре способна затронуть не одно приложение, а работу всей системы: например, нарушить доступ к памяти или связь с устройством. Поэтому изменения рассматривают и испытывают прежде, чем включать в основной код. При этом из-за огромного числа возможных сочетаний оборудования и настроек проверка не может означать, что каждый вариант испытан отдельно.

Практическое следствие общего фундамента заметно в масштабе: работа над ядром нужна не только мощным машинам в дата-центрах. Изменение в его поддержке оборудования или управлении ресурсами может быть важно и для маленького устройства, которое просто регулирует отопление.