Установка Alpine Linux
Итак, что же мы знаем об Alpine Linux и зачем его устанавливать? Во-первых, он базируется на musl и BusyBox, во-вторых, это единственный независимый дистрибутив Linux предоставляющий безопасность в общих целях. Его разработка была предопределена концепцией обеспечения безопасности, а для защиты от вредоносного кода было решено использовать PaX и SSP.
Стоит отметить его необычно неприхотливые требования к ресурсам системы. Пакеты используются apk, но некоторые придется установить самостоятельно. Руководство, конечно же, присутствует на сайте дистрибутива, которому необходимо не более 8 МБ, а минимальная установка на диск требует не более 130 МБ свободного места. Для управления пакетами в Alpine используется apk. И некоторых пакетов, которые Вам будут нужны, по умолчанию не будет в Alpine.
Установка Alpine Linux
Шаг 1. Загрузка образа
Переходим по этой ссылке https://www.alpinelinux.org/downloads/ и качаем образ:
Нам нужен STANDARD.
Шаг 2. Запись образа
Все как обычно, — если у вас Linux, то качаем Unebootin; если у вас Windows, то качаем Rufus. Ссылки предоставил.
Шаг 3. Настройка BIOS
Перезагружаем компьютер и заходим в BIOS. Нам надо зайти во вкладку Boot и указать в пункте 1 st Boot Device вашу флешку. Затем сохраните настройки и перезагрузите компьютер.
Шаг 4. Начало установки
Заранее говорю, что все делается через командную строку.
Пишем для входа в командную оболочку:
Далее выполняем команду:
Таким образом мы запускаем процесс установки
Шаг 5. Раскладка клавиатуры
Выбираем раскладку из списка. В моем случае это:
Жмем далее и снова пишем:
Шаг 6. Имя компьютера
При указании имени компьютера обратите внимание на то, что следует использовать числа и символы нижнего регистра. Например, имя Noma я не смог указать, зато имя noma вполне проходит по параметрам.
Шаг 7. Настройка сети
Сразу же после указания имени хоста нам предложат настройки, связанные с интернетом. Если у вас проводной интернет по DHCP, их просто пропускаем нажатием Enter. Все это можно настроить уже потом непосредственно в установленной системе.
Шаг 8. Пароль пользователя
Указываем пароль для суперпользователя. Если он 6-значный, например, то вы получите предупреждение о том, что пароль слишком слабый, но это не мешает установке.
Шаг 9. Настройка прокси
Далее вы можете установить прокси или просто пропустить. В моем случае я просто нажал Enter и пропустил этот пункт, так как все это тоже можно будет потом настроить, при необходимости.
Шаг 10. Выбор зеркала репозиториев
Вам дадут список зеркал, если вы этого не сделаете, то система будет проверять каждое и самостоятельно выберет наиболее подходящее.
Примечание для жителей Украины. Если вы не укажите зеркало, то рискуете попасть на Yandex, а с ним установка не получится, так как компания под санкциями. В вашем случае просто выберете любое другое.
Шаг 11. Настройка SSH
Если вы хотите, то можете установить и ssh сервер. И снова, на данном этапе это не является необходимым, и вы всегда сможете его поднять позже.
Шаг 12. Выбор места установки
Система предложит выбрать любой из доступных дисков для установки ОС. Я указываю следующее:
Далее вам надо выбрать для чего будет использоваться этот диск. Так как это системный диск, то я выбираю:
Получаем предупреждение о том, что все данные с выбранного диска будут удалены. Впрочем, ничего удивительного. Пишем:
Шаг 13. Завершение установки
Когда установка Alpine Linux завершится, система попросит о перезагрузке. Для этого извлекаем носитель на котором система и перезагружаемся командой:
Шаг 14. Вход в систему
Далее пишем пароль, который ранее задавали.
Шаг 15. Установка редактора nano
Так как у нас нет редактора, то мы установим. Это будет редактор Nano. Сделаем это с помощью команды:
Шаг 16. Редактирование файла с репозиториями и обновление
Теперь нам надо отредактировать файл репозиториев. Это позволит нам обновить систему и продолжить установку. Пишем:
Чтобы получить доступ к репозиторию сообщества надо раскомментиовать третью строку:
Шаг 17. Установка графического интерфейса
Теперь выполняем команду:
apk add alpine-desktop
Шаг 18. Устанавливаем окружение xfce4
Шаг 19. Устанавливаем файловый менеджер
apk add thunar-volman
Достаточно тривиально, но проверено.
Шаг 20. Набор тем и иконок
apk add Faenza-icon-theme
Шаг 21. Устанавливаем менеджер входа
Так как система является легковесной, то будем работать в направлении её преимуществ. Это ответ на вопрос: А почему Slim?.
Шаг 22. Запуск сервиса D—Bus
Чтобы приложения могли между собой взаимодействовать, нам надо запустить сервис межпроцессорного взаимодействия (IPC). Выполняем команду:
rc-service dbus start
Работает, отлично. Теперь добавим его в автозагрузку?
Шаг 23. Завершение установки.
Это позволит нам перезагрузить устройство и войти в систему с графическим интерфейсом.
В поле username пишем root и указываем раннее заданный пароль. Ну а дальше рабочий стол.
Теперь вы знаете как установить Alpine Linux, а также как минимально настроить систему, так, чтобы с ней можно было работать.
Alpine Linux: подробный обзор дистрибутива
Alpine Linux — это дистрибутив, предназначенный для минимального и безопасного использования ресурсов.
О 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 на серверах и встраиваемых устройствах, где надежность важнее, чем удобство.
Зачем забивать гвозди микроскопом, если есть Alpine Linux?
Так я и познакомился с Alpine Linux.
Этот дистрибутив может вам понравиться по следующим причинам:
Под «мэйнстримом» я подразумеваю тройку CentOS — Debian — Ubuntu (конечно же, ими мир не заканчивается), да простят меня все верующие в эти замечательные дистрибутивы. При их использовании, периодически, на границе восприятия, возникает колкая мысль – «а может быть можно проще?».
Оно нам действительно надо?
$ holywar mode disable
Неужели для решения вашей небольшой задачи требуется все это:
Замечательная systemd. Система инициализации (уже не совсем), которая может произвести впечатление системы управления шаттлом?
Подсистема журналирования / аудита, построенная на связке вроде journald → rsyslogd + auditd?
Можно догадываться, почему это сделано именно так, но действительно ли для моей простой задачи требуется такая цепочка?
Дублирование функциональности периодического выполнения задач как в systemd, так и в crond?
Сосуществование нескольких подсистем управления сетью в разных сочетаниях: классический networking / networkd / NetworkManager?
Сервисы вида tuned и firewalld?
Локальный почтовый сервис. Вы точно будете его использовать?
Раз уж мы вспомнили про минимализм, можно очень грубо сравнить наши дистрибутивы-лидеры в их минимальном варианте установки:
holywar: cannot change mode to ‘disable’: Permission denied
Хочется странного
От части перечисленного выше можно (попробовать) избавиться вручную, но вдруг все уже придумано за нас? В идеале, от дистрибутива серверной операционной системы общего назначения хочется видеть:
И на этом почти все, остальное — дело менеджера пакетов. Меньше исполняемого кода и конфигурации – меньше багов, меньше багов – меньше багов. А система все также запущена и доступна по сети. Идея выглядит неплохо, теперь посмотрим, насколько близок к ней дистрибутив Alpine Linux.
Про Alpine
Чем может очаровать Alpine, особенно после CentOS? Отчаянным минимализмом!
Ну и, конечно, отсутствием необходимости сертификации «Linux Systemd Certified Voldemort».
Что сделали авторы:
Кроме того, авторы реализовали ряд мер, ориентированных на повышение уровня защищенности базовой системы:
В итоге мы получаем систему, снабженную рядом дополнительных механизмов защиты, позволяющую решить имеющуюся задачу и занимающую около 130 МБ. В запущенной системе установлен 41 пакет и выполняется 13 пользовательских процессов, можно стучаться по ssh.
И больше ничего. Осталось добавить то, что нужно вам (да и iptables с возможностью восстановления конфигурации при старте поставьте).
Приоткроем крышку
Обратите внимание – Alpine может пригодиться как учебная площадка при ознакомлении с ОС Linux! Увидеть логику работы компонентов субъективно проще, чем пытаться охватить сходу CentOS или Ubuntu:
Далее состояние системы зависит от конфигурации openrc, а именно:
Осталось прочитать скрипты запуска и обработать их с учетом уровней запуска и зависимостей.
Можем на примере syslog (/etc/init.d/syslog) посмотреть, как выглядит скрипт запуска openrc.
Как видите, это не всегда эти ваши нелюбимые «портянки»:
Переменные, используемые при выполнении скрипта, определяются в соответствующем файле /etc/conf.d/syslog. В нашем случае, в файле определена переменная SYSLOGD_OPTS=»-Z».
Обратите внимание — в скрипте декларативно определены зависимости данного сервиса.
Openrc честно перебирает в заданном порядке скрипты запуска, достигает уровня «default» — и вот она, рабочая система!
Демоны под крышкой
Что же именно скрывается под скриптами запуска openrc? Как ни странно — набор задач и демонов, перечисленных ниже.
Сначала, на уровне sysinit:
Следующим идет уровень boot:
И наконец, уровень default:
Ура, после выполнения этих шагов система готова к работе! Не забудем и про зависимости от перечисленных выше сервисов, которые были заданы в init.d файлах:
Открываем одну из локальных консолей, где нас поджидает getty, вводим логин, после чего передаем пароль процессу login и получаем доступ к запущенному командному интерпретатору ash (при запуске которого выполняется содержимое файлов /etc/profile, /etc/profile.d/* и
/.profile для подготовки пользовательского окружения).
Ура, никаких дополнительных сущностей (несомненно, полезных в ряде случаев, вроде PAM) — а мы в системе!
Осталось воспользоваться пакетным менеджером apk, и поискать нужные нам для нашей задачи пакеты. (Есть ли они там? Можно оценить это через веб-портал).
А еще
Дистрибутив Alpine не идеален, но его лаконичность меня действительно впечатлила, особенно в роли контейнера (всего 6 процессов — init, 4*getty, syslogd). Для меня он выглядит так, как должна выглядеть минимальная серверная операционная система (прости меня, CentOS!).
Кроме того, он вполне подходит на роль учебной площадки, позволяющей увидеть, из чего состоит современный дистрибутив, не погружаясь сразу в пучину whateverd-сервисов и многократного дублирования функциональности в великолепно-многоуровнево-конфигурируемых-средствах на все случаи жизни.
Alpine Linux
Дистрибутив Alpine Linux
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 предоставляет достаточно полную среду для любой небольшой или встраиваемой системы.
Библиотека 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).
Назначение, использование
Система управления пакетами apk-tools
Используется собственная система управления пакетами apk-tools.
Изначально apk-tools представляла собой набор shell-скриптов, но потом была полностью переписана на C.
Alpine Linux может быть установлен на диск, либо работать из оперативной памяти. Управление пакетами включает две фазы:
apk-tools включает две утилиты:
Операции утилиты apk
Утилита apk поддерживает следующие операции:
| Операция | Описание |
|---|---|
| add | добавление и обновление пакетов. |
| del | удаление пакетов. |
| fix | выполнить восстановление или обновление, установленных пакетов. |
| update | обновить индекс — получить актуальную информацию о пакетах, находящихся в репозиториях. |
| info | вывести информацию об установленных или доступных пакетах. |
| search | поиск по названию или описанию пакетов. |
| upgrade | обновление пакетов. |
| cache | управление кешем. |
| version | сравнение версий установленных и доступных в репозитории пакетов. |
| index | создать индекс на основе списка пакетов. |
| fetch | скачать, но не устанавливать пакеты. |
| audit | показать изменения в файловой системе после установки пакета. |
| verify | проверить подпись. |
| dot | создать граф (graphviz) для описания структуры пакета. |
| policy | показать репозиторий, из которого пакет был установлен, а также репозитории, в которых также содержится этот пакет. |
| stats | отобразить статистику, включая количество установленных и доступных пакетов, количество директорий, файлов и т.д. |
| manifest | отобразить контрольные суммы для файлов, содержащихся в пакете. |
Репозитории и пакеты
Утилита apk может устанавливать пакеты из различных репозиториев. Список репозиториев представлен в файле /etc/apk/repositories
Если система была загружена с USB-носителя или CD-ROM, то файл /etc/apk/repositories может иметь следующее содержимое:
В дополнение к локальным репозиториям, утилита apk может загружать пакеты с внешних репозиториев по HTTP, HTTPS или FTP протоколу. Для загрузки пакетов используется busybox wget. Пример файла /etc/apk/repositories с адресами удаленных (внешних) репозиториев.
Установка Alpine Linux
Система устанавливается в консольном режиме. Для установки используется скрипт setup-alpine
Существует три режима установки, которые влияют на то, как будет работать система:
Small. Simple. Secure.
Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.
About
Alpine Linux is an independent, non-commercial, general purpose Linux distribution designed for power users who appreciate security, simplicity and resource efficiency.
Small
Alpine Linux is built around musl libc and busybox. This makes it smaller and more resource efficient than traditional GNU/Linux distributions. A container requires no more than 8 MB and a minimal installation to disk requires around 130 MB of storage. Not only do you get a fully-fledged Linux environment but a large selection of packages from the repository.
Binary packages are thinned out and split, giving you even more control over what you install, which in turn keeps your environment as small and efficient as possible.
Simple
Alpine Linux is a very simple distribution that will try to stay out of your way. It uses its own package manager called apk, the OpenRC init system, script driven set-ups and that’s it! This provides you with a simple, crystal-clear Linux environment without all the noise. You can then add on top of that just the packages you need for your project, so whether it’s building a home PVR, or an iSCSI storage controller, a wafer-thin mail server container, or a rock-solid embedded switch, nothing else will get in the way.
Secure
Alpine Linux was designed with security in mind. All userland binaries are compiled as Position Independent Executables (PIE) with stack smashing protection. These proactive security features prevent exploitation of entire classes of zero-day and other vulnerabilities.
































