Linux alpine что это

Обновлено: 04.07.2024

Alpine Linux — некоммерческий Linux дистрибутив общего назначения, предназначенный для использования опытными пользователями, ценящими безопасность, простоту и эффективность. Девиз проекта — "Small. Simple" Secure." Основан на musl и BusyBox, по умолчанию использует патчи ядра PaX и grsec, все пакеты компилируются с защитой от переполнения стека.

Содержание

История

Проект первоначально развивался как ответвление от LEAF Project [2] , чьей изначальной концепцией была разработка дистрибутива, который смог бы помещаться на одной 1.44MB дискете, тогда как разработчики пожелали включить более тяжеловесные пакеты (такие как Samba или Squid).

Особенности

Установка

Процесс установки подробно описан на официальной вики проекта.
Также есть видео-инструкция по установке дистрибутива в VirtualBox:

Настройка основного функционала

DHCP-сервер для локальной сети

Данный процесс настройки сетевого протокола для локальной сети представлен в виде нескольких шагов. DHCP предназначен для автоматического присвоения IP-адресов сетевым устройствам. Его настройка на Alpine Linux происходит следующим образом:

1) Определите радиус IP-адресов для использования. Вы должны использовать “Частный радиус IP-адресов”, иначе могут возникнуть проблемы с передачей данных через вашу сеть. Для простой LAN, используйте 192.168.0.100, с маской подсети 255.255.255.0 и количеством хостов 50. Таким образом вы сможете подключить к вашей сети до 50 устройств без каких-либо изменений.

2) Сделайте IP-адрес вашего компьютера 192.168.0.2, с маской подсети 255.255.255.0 (адрес диапазона вашей сети, не входящий в адреса раздачи DHCP сервера).

3) Скачайте tftpd32 с сайта

4) Разархивируйте файл на ваш компьютер и запустите tftpd32.exe.

5) Нажмите на Settings.

6) Выберите вкладку DHCP в окошке Settings.

7) Установите IP pool starting address. Это будет являться первым IP-адресом вашей сети, который раздаст DHCP сервер. (192.168.0.100, если не уверены!)

8) Установите Size of pool на значение, чуть большее чем нужное для планируемых сетевых устройств в вашей сети. (Если сомневаетесь, поставьте 50)

9) Оставьте поле Boot File пустым.

10) Если в вашей сети присутствует DNS сервер или сервер, доступный одной из машин в вашей сети, то укажите его IP-адрес в поле WINS/DNS Server. Если нет или вы не знаете, что это означает, то оставьте поле пустым.

11) Установите маску подсети в Mask. Если вы знаете что это такое, то следуйте схеме адресов данной статьи и поставьте 255.255.255.0.

12) Не изменяйте поля Domain Name и Additional Option.

13) Нажмите на Save.

14) Ваш DHCP сервер готов к работе!

DNS-сервер для локальной сети

Самая стабильная и ресурсо-сберегающая связка, это linux+bind. Установим DNS-сервер Bind9:

Главные настройки находятся в файле (named.conf.options), отредактируем его:

Закомментированная секция forwarders, отвечает за то, куда будет передаваться DNS-запрос на разрешение имени. Вместо 0.0.0.0, нужно указать альтернативный DNS-сервер. Например 213.180.204.3 — yandex, 8.8.8.8 — google. После редактирования должно быть примерно так:

Сохраняем изменения и выходим (:wq). Перезапускаем сервер (sudo reboot) и проверяем:

Добавим в него секцию:

Сохраняем изменения и выходим (:wq).
Зону мы обозначили, теперь настроим ее:

Редактируем до следующего вида:

Указать в нем адрес:


Сохраняем изменения и выходим (:wq).

Теперь разрешением имен в интернете будут заниматься DNS-сервера, указанные в секции forwarders.

1. Преобразование внутри сети:

2. Разрешение имен в интернете:

Установка Snort

После загрузки libpcap, разархивируйте его подобным образом. Войдите в каталог libpacp, и выполните следующие шаги:

Теперь, мы компилируем Snort. Войдите в каталог, в котором находится Snort, и выполните следующие команду:

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

Alpine Linux 3.13

Alpine Linux — легковесный, независимый дистрибутив Linux. Может использоваться во встраиваемых системах, Docker контейнерах и других системах виртуализации. Использует различные альтернативные более легковесные компоненты системы, чем те, которые используют более традиционные дистрибутивы.

Alpine Linux 3.13 со средой Xfce

Alpine Linux 3.13 со средой Xfce

Что нового

  • Представлены новые образы дистрибутива, предназначенные для использования в облачных платформах AWS EC2 (Amazon Web Services).
  • Для настройки параметров сети вместо busybox ifupdown теперь используется сетевой менеджер ifupdown-ng.
  • В скриптах настройки улучшена поддержка WiFi.
  • Node.js (LTS) теперь компилируется с ключом оптимизации -O2 вместо -Os, что в результате приводит к значительному увеличению производительности.
  • Добавлена начальная поддержка компонента cloud-Init, который используется в облачных системах для настройки системы на этапе начальной загрузки.

Alpine Linux 3.13

Alpine Linux 3.13 с окружением Xfce

Компоненты системы обновлены до более новых версий:

  • Linux 5.10.7
  • musl 1.2
  • Busybox 1.32.1
  • GCC 10.2.1
  • Git 2.30.0
  • Knot DNS 3.0.3
  • PHP 8.0
  • MariaDB 10.5.8
  • Node.js 14.15.4
  • Nextcloud 20.0.4
  • PostgreSQL 13.1
  • QEMU 5.2.0
  • Xen 4.14.1
  • Zabbix 5.2.3
  • ZFS 2.0.1

Версия ядра Linux, musl и BusyBox в Alpine Linux 3.13

Версия ядра Linux, musl и BusyBox в Alpine Linux 3.13

Alpine Linux — независимый, маленький, быстрый дистрибутив Linux. Используется в Docker контейнерах.

Видео-обзор

Видео-обзор дистрибутива Alpine Linux.

Система инициализации OpenRC

В качестве системы инициализации используется OpenRC.

OpenRC отличается модульной структурой, загрузкой на основе зависимостей, поддержкой ограничения ресурсов, параллельной загрузкой сервисов и т.д.

Изначально OpenRC использовалась в Gentoo (c 2011 года) и была основана на SysVInit.

Использует BusyBox

Alpine Linux использует набор UNIX-утилит BusyBox. BusyBox это реализация классических утилит UNIX, выполненная в виде одного небольшого исполняемого файла.

BusyBox реализует все основные утилиты (GNU fileutils, shellutils и т.д.), которые обычно реализованы как отдельные файлы. Утилиты BusyBox, как правило, более компактные и могут иметь меньше опций, чем GNU аналоги. Не смотря на это, BusyBox предоставляет достаточно полную среду для любой небольшой или встраиваемой системы.

Вызов утилит в BusyBox выполняется путем исполнения файла busybox и указания требуемой команды и аргументов. Например, для вызова команды ls аргументом -l, необходимо выполнить:

Библиотека musl

В качестве реализации стандартной библиотеки языка C (libc) в Alpine Linux используется библиотека musl.

Самой популярной библиотекой языка C является GNU Libc (glibc). glibc обеспечивает реализацию системных вызовов и основные функции, например open, malloc и так далее. Библиотека musl представляет собой более легковесную альтернативу glibc.

musl была разработана с нуля Ричем Фелкером. Ставились цели разработать более чистую и эффективную реализацию, которая будет соответствовать стандартам.

Скомпилированная версия библиотеки представляет собой один динамический объектный файл. При использовании версии musl для статического связывания, можно создавать портативные программы в виде одного исполняемого бинарного файла.

Первый релиз musl появился 11 февраля 2011.

Помимо Alpine Linux библиотека musl также используется в дистрибутивах Gentoo, OpenWrt, Sabotage, Void Linux и других.

История

Изначально Alpine Linux являлся форком LEAF Project (Linux Embedded Appliance Framework Project).

Назначение, использование

  • Из-за своего маленького размера Alpine Linux часто применяется в контейнерах.
  • Может использоваться во встраиваемых системах. Например, в основе операционной системы для смартфонов postmarketOS лежит Alpine Linux.
  • Может быть установлен в качестве «десктоп-системы».

Система управления пакетами apk-tools

Используется собственная система управления пакетами apk-tools.

Изначально apk-tools представляла собой набор shell-скриптов, но потом была полностью переписана на C.

Alpine Linux может быть установлен на диск, либо работать из оперативной памяти. Управление пакетами включает две фазы:

  • Установка / Обновление / Удаление пакетов на работающей системе.
  • Восстановление системы в ранее сконфигурированное состояние (например, после перезагрузки), включая все ранее установленные пакеты и локально измененные конфигурационные файлы. Данная фаза актуальна только для системы, работающей из RAM (diskless mode).

apk-tools включает две утилиты:

  • apk — утилита для установки, обновления и удаления пакетов в работающей системе. (Не путать с apk форматом для Android)
  • lbu — утилита для сохранения данных, необходимых для последующего восстановления системы в ранее сконфигурированное состояние. lbu происходит от названия «Alpine local backup»

Операции утилиты apk

Утилита apk поддерживает следующие операции:

ОперацияОписание
addдобавление и обновление пакетов.
delудаление пакетов.
fixвыполнить восстановление или обновление, установленных пакетов.
updateобновить индекс — получить актуальную информацию о пакетах, находящихся в репозиториях.
infoвывести информацию об установленных или доступных пакетах.
searchпоиск по названию или описанию пакетов.
upgradeобновление пакетов.
cacheуправление кешем.
versionсравнение версий установленных и доступных в репозитории пакетов.
indexсоздать индекс на основе списка пакетов.
fetchскачать, но не устанавливать пакеты.
auditпоказать изменения в файловой системе после установки пакета.
verifyпроверить подпись.
dotсоздать граф (graphviz) для описания структуры пакета.
policyпоказать репозиторий, из которого пакет был установлен, а также репозитории, в которых также содержится этот пакет.
statsотобразить статистику, включая количество установленных и доступных пакетов, количество директорий, файлов и т.д.
manifestотобразить контрольные суммы для файлов, содержащихся в пакете.

Репозитории и пакеты

Пакеты для Alipne Linux представляют собой tar.gz архивы и имеют расширение .apk. В архиве пакета содержатся программы, конфигурационные файлы и метаданные о зависимостях.

Репозиторий представляет собой обычную директорию, в которой находятся .apk файлы. Также в директории размещается специальный индексный файл APKINDEX.tar.gz

Утилита apk может устанавливать пакеты из различных репозиториев. Список репозиториев представлен в файле /etc/apk/repositories

Если система была загружена с USB-носителя или CD-ROM, то файл /etc/apk/repositories может иметь следующее содержимое:

Установка Alpine Linux

Система устанавливается в консольном режиме. Для установки используется скрипт setup-alpine

Существует три режима установки, которые влияют на то, как будет работать система:

О Alpine Linux

Распределение предназначено для использования в средах, где производительность и безопасность являются главными приоритетами:

Дистрибутив предлагает необычный набор функций. Во-первых, использование библиотеки musl C вместо более популярной библиотеки GNU C. Во-вторых, приложение Busybox для инструментов командной строки вместо инструментов GNU. В-третьих, управление службами через OpenRC вместо systemd или SysV init.

Распределение также обеспечивает некоторую дополнительную безопасность через независимые от позиции исполняемые файлы (PIE). Всем известно, как они затрудняют некоторые общие способы атаки на память.

Существует несколько сборок и выпусков Alpine.

Существует несколько сборок и выпусков

Во-первых, специальные загрузки для запуска дистрибутива на физическом оборудовании и в виртуальных средах. Во-вторых, различные сборки в зависимости от того, хотим ли мы полностью работающую серверную операционную систему или более минимальную базу. В-третьих, существует несколько вариантов архитектуры для процессоров x86 (32-разрядных и 64-разрядных), ARM, PPC64 и s390x.

Расширенная версия предлагает большинство инструментов из коробки и загружает себя в оперативную память, чтобы предложить лучшую производительность. Размер файла составляет 398 МБ.

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

Live media загружается практически сразу и представляет нам текстовую консоль. Мы можем войти в корневой аккаунт без пароля.

Консоль отображает несколько полезных советов, таких как, где найти документацию Alpine онлайн и что мы можем запустить установщик системы, запустив setup-alpine команда. На живых носителях не так много инструментов.

Впечатления

Локально установленная копия Alpine загружается в текстовую консоль, где мы можем войти в систему как пользователь root. Инструменты пользователя предоставлены Busybox, а программное обеспечение связано с облегченной библиотекой musl C.

Дистрибутив использует OpenRC в качестве менеджера сервисов и работает на версии 4.19 ядра Linux. Здесь нет графического отображения, страниц справочника и компилятора.

Начало работы с текстовой консолью Alpine

Alpine быстро загружается и выключается, время его запуска, вероятно, составляет менее четверти большинства распространенных дистрибутивов. Дистрибутив использует около 33 МБ ОЗУ с установкой по умолчанию расширенной версии и занимает всего 675 МБ дискового пространства. Еще 2 ГБ дискового пространства занимают пространство подкачки дистрибутива.

Подробная инструкция по установке Alpine Linux в данной статье.

Особенности

Alpine Linux отличается в некоторых важных отношениях по сравнению с большинством других дистрибутивов.

Вот основные из них:

Alpine необычайно мал и требует мало ресурсов. Даже для расширенной расширенной версии, требуется менее 100 МБ ОЗУ и менее гигабайта дискового пространства. Следует уточнить, это после того, как все мои службы были включены. Кроме того, дистрибутив поставляется с некоторыми функциями безопасности, такими как PIE. К тому же, отсутствуют службы, которые не нужны дистрибутиву для запуска.

Завершение

Для новых пользователей операционная система может показаться минимальной, но она удивительно надежна и предсказуема.

Это может сделать Alpine менее привлекательным для новичков или пользователей настольных компьютеров. Зато, это сильный аргумент в пользу использования Alpine Linux на серверах и встраиваемых устройствах, где надежность важнее, чем удобство.

Читайте также: