Alpine Linux — дистрибутив Linux, ориентированный на безопасность, легковесность и нетребовательность к ресурсам. В основном используется во встраиваемых системах, стал основой PostmarketOS, также хорошо подходит для создания Docker-контейнеров. Основан на musl и BusyBox, использует PaX и grsec по умолчанию в ядре и компилирует все пакеты с защитой стека от переполнения.
Для обеспечения безопасности в дистрибутиве применяются:
- свежие (актуальные) версии ядра Linux и других пакетов, например iptables, openssl;
- применение патчей, увеличивающих безопасность, на все компоненты системы, помимо ядра;
- довольно частый релизный цикл, поддерживающий актуальность дистрибутива на высоком уровне.
Размер базовой системы Alpine Linux составляет всего лишь 4-5 Мбайт (исключая ядро). Контейнер требует не более 8 МБ, а для минимальной установки на диск требуется около 130 МБ.
С целью повышения безопасности все программы пространства пользователя компилируются как position-independent executable с защитой от повреждения стека.
История
Первоначально был ответвлением проекта LEAF: большинство разработчиков проекта LEAF хотело продолжать разрабатывать дистрибутив Linux, который мог поместиться на одной дискете, тогда как разработчики Alpine Linux желали включить ещё несколько тяжёлых пакетов, таких как Squid и Samba, а также дополнительные функции безопасности и новое ядро. Одна из первоначальных целей заключалась в создании основы для большой системы, сейчас это не является главной целью проекта.
До выпуска 3.7 дистрибутив поставлялся с hardened-ядром (патчи PaX и grsec) с целью уменьшения возможного вреда от уязвимостей.
Особенности
В дистрибутиве реализована собственная система управления пакетами apk-tools, которая изначально была набором скриптов командной оболочки (shell scripts), но позже была переписана разработчиками на Си. Alpine на данный момент включает в себя такие пакеты, как KDE, GNOME, Xfce, Firefox и другие.
По умолчанию Alpine Linux во время запуска полностью загружается в оперативную память.
Первоначально в дистрибутиве в качестве стандартной библиотеки языка Си использовалась uClibc вместо традиционной библиотеки glibc, несмотря на лёгкий вес, у неё есть существенный недостаток — она бинарно несовместима с glibc, таким образом, всё программное обеспечение было скомпилировано с использованием uClibc для корректной работы. Однако с 9 апреля 2014 года Alpine Linux стала использовать библиотеку musl, которая является частично бинарно совместимой с glibc.
В качестве системы инициализации, в отличие от других дистрибутивов, таких как Debian, Ubuntu, Arch Linux и CentOS, вместо systemd используется OpenRC.
