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, необходимо выполнить:
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 может иметь следующее содержимое:
/media/sda1/apks/
В дополнение к локальным репозиториям, утилита apk может загружать пакеты с внешних репозиториев по HTTP, HTTPS или FTP протоколу. Для загрузки пакетов используется busybox wget. Пример файла /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
Установка Alpine Linux
Система устанавливается в консольном режиме. Для установки используется скрипт setup-alpine
Существует три режима установки, которые влияют на то, как будет работать система:
- Diskless Mode — вся система и все приложения загружаются в RAM.
- Data Disk Mode — система запускается из RAM, но swap и /var монтируются с диска.
- Sys Disk Mode — традиционная установка системы на диск. По умолчанию создается три раздела: /boot, swap и /.
Релизы дистрибутива Alpine Linux
Версия | Дата релиза | Окончание поддержки | |
---|---|---|---|
2.1 | 01 ноября 2010 | 01 ноября 2012 | |
2.2 | 06 мая 2011 | ||
2.3 | 01 ноября 2011 | ||
2.4 | 02 мая 2012 | ||
2.5 | 07 ноября 2012 | ||
2.6 | 17 мая 2013 | ||
2.7 | 08 ноября 2013 | ||
3.0 | 04 июня 2014 | ||
3.1 | 10 декабря 2014 | ||
3.2 | 26 мая 2015 | ||
3.3 | 18 декабря 2015 | ||
3.4 | 31 мая 2016 | ||
3.5 | 22 декабря 2016 | ||
3.6 | 24 мая 2017 | ||
3.7 | 30 ноября 2017 | ||
3.8 | 26 июня 2018 | ||
3.9 | 29 января 2019 | ||
3.10 | 19 июня 2019 | ||
3.11 | 29 декабря 2019 | 01 ноября 2021 | |
3.12 | 29 мая 2020 | 01 мая 2022 | |
3.13 | 14 января 2021 | 01 ноября 2022 | пресс-релиз |
3.14 | 15.06.2021 | ||
3.15 | 24.11.2021 | ||
3.16 | 23.05.2022 | ||
3.17 | 22 ноября 2022 | пресс-релиз |
Комментарии
14:05
14:13
15:06
16:34
Один файл размером 1Мбайт заменяет вот этот список команд - https://ru.wikipedia.org/wiki/BusyBox#%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B
20:49
затык случился на следующем вопросе куда кэш apt сохранять, и несколько вариантов, а я не знаю, что выбрать, потыкал и так, и эдак, причём там даже на флешку предлагалось сохранять, но не получилось, это первый вопрос
второй: могу, конечно, новый раздел создать, но почти уверен, что она мне мой grub uefi затрёт, у меня первой системой xubuntu стоит
10:02
Никуда, или например в ОЗУ.
> grub uefi
Кажется, восстановить не сложно.
08:40
21:40