Ссылки:
1 2 3 4 5 6 |
https://alpinelinux.org/ https://docs.alpinelinux.org https://pkgs.alpinelinux.org/packages https://habr.com/ru/company/digdes/blog/415279/ https://pingvinus.ru/distribution/alpine-linux https://wiki.alpinelinux.org/wiki/Linux_Router_with_VPN_on_a_Raspberry_Pi |
Зачем нам это надо?:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Alpine Linux - минималистический дистрибутив Этот дистрибутив может вам понравиться по следующим причинам: Если вы любите минимализм и инструменты, ориентированные на выполнение поставленной задачи без лишних свистелок и украшений; Если вы заметили, что имеющиеся «мэйнстримные» дистрибутивы немного (?) раздуты и избыточны; Если вы захотели решить имеющуюся задачу простым способом. Под «мэйнстримом» подразумевают тройку CentOS — Debian — Ubuntu. Чего нету \ иди делается по другому: systemd - инициализация системы и не только systemd / journald = rsyslogd + auditd - логи systemd / crond - планировщик задач networking / networkd / NetworkManage / netplan - управление сетью tuned / firewalld / iptables - управление firewall python |
Сравнение дистрибутивов:
1 2 3 4 5 6 7 8 9 10 |
Лидером избыточности по дисковому пространству и числу пакетов оказывается Ubuntu 18.04 (2,8 ГБ дискового пространства, 342 пакета, 31 активный сервис systemd, 15 процессов при входе). Семейство systemd тут представлено в максимальном объеме — systemd, networkd, timesyncd, resolved, logind, есть dbus. CentOS 7.5.1804 проигрывает по диску и числу пакетов, но лидер по вероятно-избыточным сервисам (1.1 ГБ дискового пространства, 299 пакетов, 34 активных сервиса systemd, 19 процессов при входе, среди которых — NetworkManager, firewalld, tuned, postfix, polkitd, auditd, journald + rsyslogd, dbus). Debian 9.4.0 пытались сильно не надувать: 940 МБ, 334 пакета, 25 активных сервисов systemd, 14 процессов при входе. Само собой, тут тоже есть systemd (а также journald, timesyncd и сопутствующий dbus), но без особого фанатизма в части управления сетью. |
Что ожидают от мини дистрибутива:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
0. Загрузчик, который дотянет нас до ядра 1. Само ядро ОС (в рассматриваемом случае — linux) 2. Система инициализации, которую ядро запустит по готовности. Желательно, по простоте недалеко ушедшая от топора. Минимальный набор процессов, который запустит система инициализации. Окончательная инициализация устройств и определение дополнительных параметров ядра 3. Обеспечение журналирования (можно с текстовыми журналами? Ну пожалуйста) 4. Конфигурация сети (хорошо бы, с меньшим числом управляющих прослоек); 5. Синхронизация времени (ntpd / chronyd); 6. Несколько локальных консолей; 7. Опционально — периодическое выполнение задач (сrond); 8. Опционально — удаленный доступ к системе (sshd); 9. Хорошо бы еще сохранять и восстанавливать конфигурацию межсетевого экрана. 10. Менеджер пакетов |
Alpine:
1 2 3 4 5 6 7 8 |
0. Установка с использованием консольной утилиты setup-alpine 1. В качестве загрузчика взят extlinux из состава проекта syslinux 2. Небольшой инструмент сборки mkinitfs для создания временной файловой системы, используемой при загрузке 3. Система инициализации openrc с определением зависимостей между сервисами, уровнями запуска и с возможностью скриптования. 4. Замена стандартной библиотеки GNU libc на более легковесную musl libc 5. Вместо пакета GNU coreutils большинство стандартных системных утилит в несколько урезанном исполнении входят в состав пакета busybox, который может быть Вам знаком по встраиваемым решениям 6. По умолчанию используется командный интерпретатор ash в составе busybox. Само собой, никто не мешает при необходимости поставить bash, ну и systemd; 7. Собственный пакетный менеджер apk и собственная инфраструктура распространения пакетов. |
Apline init:
1 2 3 4 5 6 7 8 9 |
Init использует файл /etc/inittab Запустить систему инициализации openrc для поочередного достижения требуемых уровней инициализации openrc использует не классические уровни инициализации 0-6, а собственные уровни/группы sysinit — boot — default Переменных, заданных в файлах каталога /etc/conf.d Скриптов запуска, находящихся в каталоге /etc/init.d /etc/init.d/syslog - скрипт запуска openrc |
Apline демоны:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Сначала, на уровне sysinit: dmesg — выставляется уровень журналирования для сообщений от ядра devfs — монтируется и настраивается /dev mdev — запускается менеджер устройств hwdrivers — загружаются модули устройств на основе информации из /sys и /dev Следующим идет уровень boot: modules — загружаются модули ядра, перечень которых определен в /etc/modules hwclock — настраиваются аппаратные часы реального времени sysctl — задаются параметры ядра, определенные нами в /etc/sysctl.conf swap — подключается swap-раздел bootmisc — очищаются временные каталоги urandom — настраивается генератор случайных чисел keymaps — инициализируется раскладка клавиатуры hostname — задается имя машины, которое определено в /etc/hostname networking — поиск и инициализация интерфейсов с использованием информации из /etc/network/interfaces syslog — запускается демон журналирования из состава busybox И наконец, уровень default: chrony — запускается NTP-сервис crond — запускается сервис выполнения задач по расписанию acpid — запускается сервис отслеживания событий питания sshd — запускается сервис удаленного доступа Зависимости: sysfs — монтирование /sys fsck — проверка и исправление файловых систем root — монтирование корневой системы на запись/чтение localmount — монтирование всех файловых систем, перечисленных в /etc/fstab klogd — журналирование событий ядра Открываем одну из локальных консолей, где нас поджидает getty, вводим логин, после чего передаем пароль процессу login и получаем доступ к запущенному командному интерпретатору ash (при запуске которого выполняется содержимое файлов /etc/profile, /etc/profile.d/* и ~/.profile для подготовки пользовательского окружения). |
Доп:
1 2 3 4 5 6 7 8 |
Авторы дистрибутива сделали свою собственную надстройку над iptables под названием «Alpine Wall». И она не висит постоянно отдельным процессом в системе Для тех, кто любит управлять сервером через веб-интерфейс, подготовлен пакет «Alpine Configuration Framework». Без PHP или Perl, но с Lua Для тех, кто желает рабочего стола, есть возможность установки графической среды (хотя это может оказаться больно в начале) Для особых ценителей имеется «установка» Alpine в памяти с хранением конфигурации на внешнем хранилище (см. описание инструмента lbu) |
Система управления пакетами apk-tools:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
apk - утилита для установки, обновления и удаления пакетов в работающей системе. (Не путать с apk форматом для Android) lbu - утилита для сохранения данных, необходимых для последующего восстановления системы в ранее сконфигурированное состояние lbu происходит от названия "Alpine local backup" Пакеты для Alipne Linux представляют собой tar.gz архивы и имеют расширение .apk add - добавление и обновление пакетов del - удаление пакетов fix - выполнить восстановление или обновление, установленных пакетов update - обновить индекс — получить актуальную информацию о пакетах, находящихся в репозиториях info - вывести информацию об установленных или доступных пакетах search - поиск по названию или описанию пакетов upgrade - обновление пакетов cache - управление кешем version - сравнение версий установленных и доступных в репозитории пакетов index - создать индекс на основе списка пакетов fetch - скачать, но не устанавливать пакеты audit - показать изменения в файловой системе после установки пакета verify - проверить подпись dot - создать граф (graphviz) для описания структуры пакета policy - показать репозиторий, из которого пакет был установлен, а также репозитории, в которых также содержится этот пакет stats - отобразить статистику, включая количество установленных и доступных пакетов, количество директорий, файлов и т.д. manifest - отобразить контрольные суммы для файлов, содержащихся в пакете /etc/apk/repositories - список репозиториев представлен в файле --------------------------------------------------------------- /media/sda1/apks http://dl-3.alpinelinux.org/alpine/v2.6/main https://dl-3.alpinelinux.org/alpine/v2.6/main ftp://dl-3.alpinelinux.org/alpine/v2.6/main --------------------------------------------------------------- |
Apline setup / install
1 2 3 4 5 6 7 |
Система устанавливается в консольном режиме Для установки используется скрипт setup-alpine Существует три режима установки, которые влияют на то, как будет работать система: Diskless Mode — вся система и все приложения загружаются в RAM. Data Disk Mode — система запускается из RAM, но swap и /var монтируются с диска. Sys Disk Mode — традиционная установка системы на диск. По умолчанию создается три раздела: /boot, swap и /. |
GCC install
1 2 |
!!! https://www.gnu.org/distros/free-distros.html apk add build-base |