Void Linux

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 16:37, 18 января 2019.
Void Linux
Void linux logo.png
Разработчик Хуан Ромеро Пардинес (xtraeme) и вкладчики
Линейка ОС Unix-подобные ОС
Состояние разработки Активно
Исходный код Open source
Дата первого релиза 2008
Последний релиз Rolling release (11 ноября 2018 года)
Cистема управления пакетами XBPS
Платформы i686, amd64, ARMv6, ARMv7, ARMv8
Ядро (тип) Монолитное (Linux)
Пользовательское
пространство
GNU
Лицензия Свободное программное обеспечение
Официальный веб-сайт voidlinux.eu

Void Linux - представляет собой свободный дистрибутив Linux, который использует пакетный менеджер XBPS (X Binary Package System). Базовая установка полностью состоит из бесплатного программного обеспечения, за исключением бинарных ядер blobs. Но пользователи имеют возможность получить доступ к официальному несвободному репозиторию для установки проприетарного программного обеспечения.[Источник 1]

Описание

Void является ярким исключением среди большей части дистрибутивов Linux, так как он использует runit как свою систему init вместо более популярной systemd. Systemd, в свою очередь, используется другими дистрибутивами, включая Arch Linux, CentOS, Debian, Fedora, Mageia и Ubuntu. Void является первым дистрибутивом, который по умолчанию включает LibreSSL в качестве системной криптографической библиотеки. Еще одной его особенностью является тот факт, что доступны отдельные установочные носители с использованием как glibc, так и musl.

Из-за своей гибкости в выпуске система Void поддерживается в работоспособном состоянии, а бинарные обновления всегда содержат последнюю версию. Исходные пакеты поддерживаются в GitHub и могут быть скомпилированы с использованием прилагаемого скрипта. Процесс сборки не привязан к текущей системе. Имеется возможность запустить сборку внешних архитектур.

Используя flavour, пользователи могут загружать предварительно настроенный установочный носитель, обеспечивающий типичные среды рабочего стола, такие как Cinnamon, Enlightenment, LXDE, MATE или Xfce. Корневая оболочка по умолчанию - Dash.

В 2008 году Хуан Ромеро Пардинес, бывший разработчик NetBSD, создал Void Linux, чтобы иметь возможность проверить качество работы менеджера пакетов XBPS. Существует множество различных сборок Void Linux, подходящих под разные платформы, например, для Desktop, Server или маленьких устройств (raspberry PI, Odroida U2/U3, cubie board).

Джесси Смит из DistroWatch отмечает быстрое время загрузки, которое он зачисляет на runit, но также отмечает, что документации и проверки ошибок не хватает. Официальный wiki является основным источником документации пользователя.[Источник 2]

Особенности

  • Это не ответвление или модификация существующего дистрибутива, он создан с нуля.
  • Rolling release.
  • Базовая установка предоставляет только инструменты для работы в консоли, адаптируйте её к своим потребностям!
  • Образы/модули Kernel никогда не удаляются, предоставляя всегда загружающуюся систему (только X86).
  • dracut регулирует initial ramdisk images.
  • dkms упрощает управление сторонних модулей kernel.
  • xbps — нативная система управления пакетами .
  • Собиратель пакетов (xbps-src) всегда работает под chroots, не требуя привилегий root.
  • Требуемые зависимости могут быть устранены через локальный/удалённый репозиторий.
  • Возможность собирать программное обеспечение из исходного кода, без сторонних программ.
  • Поддержка установки на BIOS и UEFI 64 bit (только X86).[Источник 3]

Технические характеристики

Управление пакетами

Void основан на модели плавающего релиза. Благодаря непрерывной системе сборки новое программное обеспечение сразу встраивается сборку пользователя, как только изменения добавляются в репазиторий исходного кода ОС на GitHub.

XBPS позволяет пользователям быстро устанавливать, обновлять и удалять программное обеспечение. В настоящее время существует более 8000 оптимизированных бинарных пакетов для архитектур x86, x86_64, ARMv6, ARMv7. Любой из пакетов в исходной коллекции XBPS также может быть построен из источника (изначально или с помощью скрещивания).

xbps-src - это построитель пакетов XBPS. Он создает программное обеспечение в контейнерах с использованием пространств имен Linux, обеспечивающих изоляцию процессов и монтирования. Не требуется root. Кроме того, xbps-src может создавать изначально или компилировать для целевой машины и поддерживает несколько библиотек C (glibc и musl).

Система Init

Void Linux использует runit как свою систему инициализации и диспетчера служб - это простой, эффективный и надежный руководитель службы с минимальными накладными расходами.

Безопасность

Void был первым дистрибутивом, который переключился на LibreSSL по умолчанию, заменив OpenSSL. Из-за бага Heartbleed, авторы дистрибутива считают, что проект OpenBSD имеет право предоставить более безопасную альтернативу, поскольку он имеет активных разработчиков.[Источник 4]

XBPS

Код XBPS полностью совместим со стандартами POSIX / SUSv2 / C99 и выпущен с упрощенной лицензией BSD. Существует хорошо документированный API, предоставляемый библиотекой XBPS, который является основой для его интерфейсов для обработки двоичных пакетов и репозиториев. Некоторые основные моменты:

  • Поддержка нескольких локальных и удаленных репозиториев (HTTP / HTTPS / FTP).
  • RSA подписали удаленные репозитории
  • Хеши SHA256 для метаданных пакетов, файлов и двоичных пакетов
  • Поддерживает состояния пакетов (как в dpkg) для облегчения установленных пакетов / обновлений пакетов
  • Возможность возобновления частичной установки / обновления пакета
  • Возможность распаковывать только файлы, которые были изменены в обновлениях пакетов
  • Возможность использования виртуальных пакетов
  • Возможность проверки несовместимых разделяемых библиотек в обратных зависимостях
  • Возможность замены пакетов
  • Возможность укладывать пакеты в режим ожидания (чтобы их не обновлять)
  • Возможность сохранять / обновлять файлы конфигурации
  • Возможность принудительной переустановки любого установленного пакета
  • Возможность понизить установленный пакет
  • Возможность выполнения сценариев до / после установки / удаления / обновления
  • Возможность проверки целостности пакета: отсутствующие файлы, хэши, отсутствующие или нерешенные (обратные) зависимости, зависание или изменение символических ссылок и т. д.


Коллекция исходных пакетов XBPS

Данный репозиторий содержит коллекцию исходных пакетов XBPS для создания бинарных пакетов для дистрибутива Void Linux [Источник 5]

Прилагаемый xbps-src скрипт будет получать и компилировать исходный код, а также, установить его файлы в fake destdir, генерировать XBPS бинарные пакеты , которые могут быть установлены или запрошены через xbps-install(1) и xbps-query(1).

Требования

  • GNU Bash
  • XBPS> = 0,46

xbps-src требуется утилита для закрепления и привязки монтирования существующих каталогов в каталог masterdir, используемый в качестве основного chroot. xbps-src поддерживает несколько утилит для выполнения этой задачи:

  • xbps-uunshare(1) - Используемая утилита XBPS user_namespaces(7) (часть xbps, по умолчанию).
  • xbps-uchroot(1)- Утилита XBPS, которая использует namespacesи должна быть setgid(часть xbps).
  • proot(1)- утилита, которая реализует монтирование chroot / bind в пространстве пользователя.


xbps-uunshare (1) Эта утилита требует следующие параметры ядра Linux:

  • CONFIG_NAMESPACES
  • CONFIG_IPC_NS
  • CONFIG_UTS_NS
  • CONFIG_USER_NS

Это метод по умолчанию, и если ваша система не поддерживает какие-либо обязательные параметры ядра, она не будет работать EINVAL (Invalid argument).

x bps-uchroot (1) Эта утилита требует следующие параметры ядра Linux:

  • CONFIG_NAMESPACES
  • CONFIG_IPC_NS
  • CONFIG_PID_NS
  • CONFIG_UTS_NS

Ваш пользователь должен быть добавлен в специальную группу, чтобы иметь возможность использовать, xbps-uchroot(1) и исполняемый файл должен быть setgid:

  # chown root:<group> xbps-uchroot 
  # chmod 4750 xbps-uchroot
  # usermod -a -G <group> <user>

Чтобы включить это:

  $ cd void-packages
  $ echo XBPS_CHROOT_CMD=uchroot >> etc/conf

Если по какой-либо причине происходит ошибка как ERROR clone (Operation not permitted), проверьте, что ваш пользователь является участником требуемого, groupи что xbps-uchroot(1) утилита имеет соответствующие разрешения и владельца / группу, как описано выше.

 proot (1)
 proot(1) Утилита реализует chroot и bind mounts поддерживает полностью в пространстве пользователя, и может быть использовано , если ядро Linux не поддерживают пространства имен. Чтобы включить это:
  $ cd void-packages
  $ echo XBPS_CHROOT_CMD=proot >> etc/conf

Быстрая настройка в Void

Клон void-packages репозиторий, установить пакеты начальной загрузки:

  $ git clone 
  $ cd void-packages
  $ ./xbps-src binary-bootstrap

Тип:

  $ ./xbps-src -h
 

чтобы увидеть все доступные цели / опции и начать сборку любого доступного пакета в srcpkgsкаталоге.

Установите пакеты начальной загрузки

В bootstrap пакетах представляют собой набор пакетов , необходимых для создания любого доступного источника пакета в контейнере. Есть два способа установки bootstrap:

  • bootstrap: все пакеты начальной загрузки будут созданы с нуля; для сборки base-chrootпакета требуются дополнительные утилиты в хост-системе : binutils, gcc, perl, texinfo и т. д.
  • binary-bootstrap: бинарные пакеты начальной загрузки загружаются через репозитории XBPS.

Если вы не хотите тратить свое время на создание всего с нуля, возможно, лучше использовать binary-bootstrap.

Конфигурация

etc/defaults.conf Файл содержит возможные параметры , которые могут быть переопределены с помощью etc/conf файла конфигурации xbps-src утилиты; если этот файл не существует, попытается прочитать параметры конфигурации из ~/.xbps-src.conf.

Если вы хотите настроить по умолчанию CFLAGS, CXXFLAGS и LDFLAGS, не отменяют тех , которые определены в etc/defaults.conf, установите их на etc/conf вместо т.е.

  $ echo 'XBPS_CFLAGS="your flags here"' >> etc/conf'''
  $ echo 'XBPS_LDFLAGS="your flags here"' >> etc/conf'''

Родные и скрещенные флаги компилятора / линкера устанавливаются на одну архитектуру в common/build-profiles и common/cross-profiles соответственно. В идеале эти настройки достаточно хороши по умолчанию, и нет необходимости устанавливать свои собственные, если вы не знаете, что делаете.

Виртуальные пакеты

etc/defaults.virtual Файл содержит замены по умолчанию для виртуальных пакетов, используемых в качестве зависимостей в дереве исходных пакетов.

Если вы хотите , чтобы настроить эти замены, копировать etc/defaults.virtualв etc/virtual и изменить его в соответствии с вашими потребностями.

Иерархия каталогов Следующая иерархия каталогов используется с файлом конфигурации по умолчанию:

    /void-packages
        |- common
        |- etc
        |- srcpkgs
        |  |- xbps
        |     |- template
        |
        |- hostdir
        |  |- binpkgs ...
        |  |- ccache-<arch> ...
        |  |- distcc-<arch> ...
        |  |- repocache ...
        |  |- sources ...
        |
        |- masterdir
        |  |- builddir -> ...
        |  |- destdir -> ...
        |  |- host -> bind mounted from <hostdir>
        |  |- void-packages -> bind mounted from <void-packages>

Описание этих каталогов следующее:

  • masterdir: главный каталог, который будет использоваться как rootfs для сборки / установки пакетов.
  • builddir: распаковать архивы с исходным кодом пакета и место, где он собран.
  • destdir: для установки пакетов, также известный как поддельный destdir .
  • hostdir/ccache: сохранить данные ccache, если XBPS_CCACHE опция включена.
  • hostdir/distcc-<arch>: сохранить данные distcc, если XBPS_DISTCCопция включена.
  • hostdir/repocache: для хранения бинарных пакетов из удаленных репозиториев.
  • hostdir/sources: хранить исходники пакетов.
  • hostdir/binpkgs: локальный репозиторий для хранения сгенерированных бинарных пакетов.

Сборка пакетов

Простейшая форма сборки пакета достигается путем запуска pkgцели в xbps-src:

  $ cd void-packages
  $ ./xbps-src pkg <pkgname>

Когда пакет и его необходимые зависимости построены, двоичные пакеты будут созданы и зарегистрированы в локальном репозитории по умолчанию по адресу hostdir/binpkgs; путь к этому локальному репозиторию можно добавить в любой файл конфигурации xbps (см. xbps.d (5)) или явно добавив их через cmdline, то есть:

  $ xbps-install --repository=hostdir/binpkgs ...
  $ xbps-query --repository=hostdir/binpkgs ...

По умолчанию xbps-src пытается разрешить зависимости пакетов в следующем порядке:

  • Если в локальном репозитории существует зависимость, используйте ее ( hostdir/binpkgs).
  • Если в удаленном репозитории существует зависимость, используйте ее.
  • Если в исходном пакете существует зависимость, используйте ее.

Можно полностью избежать использования удаленных репозиториев, используя -Nфлаг.

Локальное хранилище по умолчанию может содержать несколько суб-репозиториев : debug, multilib и т.д.

Варианты сборки пакета

Поддерживаемые параметры сборки для исходного пакета могут быть показаны с помощью xbps-src show-options:

  $ ./xbps-src show-options foo

Опции сборки могут быть включены с -oфлагом xbps-src:

  $ ./xbps-src -o option,option1 pkg foo

Параметры сборки можно отключить, добавив к ним префикс ~:

  $ ./xbps-src -o ~option,~option1 pkg foo

Оба способа могут использоваться вместе для включения и / или отключения нескольких параметров одновременно с помощью xbps-src:

  $ ./xbps-src -o option,~option1,~option2 pkg foo

Параметры сборки также могут быть показаны для бинарных пакетов через xbps-query(1):

  $ xbps-query -R --property=build-options foo
ПРИМЕЧАНИЕ: если вы создаете пакет с пользовательской опцией, и этот пакет доступен в официальном репозитории void, обновление игнорирует эти опции. Переведите этот пакет в hold режим через xbps-pkgdb(1), т.е. xbps-pkgdb -m hold foo чтобы игнорировать обновления с помощью xbps-install -u.  После того как пакет на hold, единственный способ обновить это, объявив ее в явном виде: xbps-install -u foo.

Постоянные глобальные параметры сборки пакета могут быть установлены через XBPS_PKG_OPTIONS переменную в etc/conf файле конфигурации. Для каждого пакета могут быть установлены опции сборки XBPS_PKG_OPTIONS_<pkgname>.

ПРИМЕЧАНИЕ: если они pkgnameесть dashes, они должны быть заменены на underscores ie XBPS_PKG_OPTIONS_xorg_server=opt.

Список поддерживаемых параметров сборки пакета и его описание определяется в common/options.description файле или в templateфайле.

Совместное использование и подписание ваших локальных репозиториев

Для удаленного совместного использования локального репозитория необходимо подписать его и сохранить бинарные пакеты. Это достигается с помощью xbps-rindex(1) утилиты.

Сначала необходимо создать ключ RSA с помощью openssl(1) или ssh-keygen(1):

  $ openssl genrsa -des3 -out privkey.pem 4096

или же

  $ ssh-keygen -t rsa -b 4096 -m PEM -f privkey.pem

В настоящее время xbps принимает только ключи RSA в формате PEM.

Когда закрытый ключ RSA готов, вы можете использовать его для инициализации метаданных репозитория:

  $ xbps-rindex --sign --signedby "I'm Groot" --privkey privkey.pem $PWD/hostdir/binpkgs

А затем сделайте подпись для пакета:

  $ xbps-rindex --sign-pkg --privkey privkey.pem $PWD/hostdir/binpkgs/*.xbps

Если --privkey не установлен, по умолчанию используется ~/.ssh/id_rsa.

Если ключ RSA был защищен парольной фразой, вам придется набрать его или установить его с помощью XBPS_PASSPHRASE переменной среды.

Как только бинарные пакеты были подписаны, проверьте, что хранилище содержит соответствующие hex fingerprint:

  $ xbps-query --repository=hostdir/binpkgs -vL

... Каждый раз, когда создается двоичный пакет, подпись пакета должна быть создана с помощью --sign-pkg.

Невозможно подписать хранилище несколькими ключами RSA.

Перестройка и перезапись существующих локальных пакетов

Если по какой-либо причине пакет был скомпонован и доступен в вашем локальном репозитории, и вам нужно перестроить его, не затрагивая его versionили revisionполя, можно легко выполнить эту задачу с помощью xbps-src:

  $ ./xbps-src -f pkg xbps

Переустановка этого пакета в вашу цель также rootdirможет быть легко сделана:

  $ xbps-install --repository=/path/to/local/repo -yff xbps-0.25_1

Обратите внимание, что package expression необходимо правильно определить, чтобы явно выбрать пакет из нужного репозитория.

Включение distcc для распределенной компиляции Настройте подчиненные (машины, которые будут компилировать код):

  # xbps-install -Sy distcc

Измените конфигурацию, чтобы разрешить вашим локальным сетевым компьютерам использовать distcc (например 192.168.2.0/24):

  # echo "192.168.2.0/24" >> /etc/distcc/clients.allow

Включите и запустите distccd службу:

  # ln -s /etc/sv/distccd /var/service

Установите distcc на хост (машина, которая выполняет xbps-src), а также. Если вы не хотите использовать хост в качестве ведомого на других машинах, нет необходимости изменять конфигурацию.

На хосте теперь вы можете включить distcc в void-packages/etc/confфайле:

  XBPS_DISTCC=yes
  XBPS_DISTCC_HOSTS="localhost/2 --localslots_cpp=24 192.168.2.101/9 192.168.2.102/2"
  XBPS_MAKEJOBS=16

Значения в примере педполагают наличие локального центрального процессора с 4 ядрами, из которых самое большее 2 используются для заданий компилятора. Количество слотов для заданий препроцессора установлено равным 24, чтобы иметь достаточно предварительно обработанных данных для компиляции другими процессорами. Ведомый 192.168.2.101 имеет ЦП с 8 ядрами, и / 9 для количества заданий является насыщающим выбором. Ведомый 192.168.2.102 настроен на выполнение максимум 2 заданий компиляции для поддержания низкой нагрузки, даже если его ЦП имеет 4 ядра. Параметр XBPS_MAKEJOBS увеличен до 16, чтобы учесть возможный параллелизм (2 + 9 + 2 + некоторый провал).

Зеркала дистрибутивов

В etc / conf вы можете опционально определить зеркало или список зеркал для поиска дистрибутивных файлов.

  $ echo 'XBPS_DISTFILES_MIRROR="ftp://192.168.100.5/gentoo/distfiles"' >> etc/conf 

Если нужно искать более одного зеркала, вы можете указать несколько URL-адресов, разделенных пробелами, или добавить в переменную, как это

  $ echo 'XBPS_DISTFILES_MIRROR+=" http://repo.voidlinux.de/distfiles" ' >> etc/conf 

Обязательно ставьте пробел после первой двойной кавычки в этом случае.

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

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

Если вы используете prootили uchrootдля своего XBPS_CHROOT_CMD, вы также можете указать локальный путь с использованием file:// префикса или просто абсолютный путь на хосте сборки (например, / mnt / distfiles). Зеркальные расположения, указанные таким образом, монтируются с привязкой внутри среды chroot в $ XBPS_MASTERDIR и ищут дистрибутивные файлы точно так же, как удаленные расположения.

Кросс-компиляция пакетов для целевой архитектуры

В настоящее время xbps-sr cможет создавать кросс-пакеты для некоторых целевых архитектур с помощью кросс-компилятора. Поддерживаемая цель показана с ./xbps-src -h.

Если исходный пакет был адаптирован для кросс- xbps-src сборки, он автоматически соберет двоичные пакеты с помощью простой команды:

  $ ./xbps-src -a <target> pkg <pkgname>

Если сборка по какой-либо причине не удалась, это может быть новой проблемой сборки или просто потому, что она не была адаптирована для кросс-компиляции .

Использование xbps-src в зарубежном дистрибутиве Linux

xbps-src можно использовать в любом недавнем дистрибутиве Linux, соответствующем архитектуре процессора.

Чтобы использовать xbps-src в вашем дистрибутиве Linux, используйте следующие инструкции. Давайте начнем скачивать статические двоичные файлы xbps:

  $ wget http://alpha.de.repo.voidlinux.org/static/xbps-static-latest.<arch>-musl.tar.xz'''
  $ mkdir ~/XBPS
  $ tar xvf xbps-static-latest.<arch>.tar.xz -C ~/XBPS
  $ export PATH=~/XBPS/usr/bin:$PATH

Если ваша система не поддерживает user namespaces, привилегированная группа должна иметь возможность использовать xbps-uchroot(1)с xbps-src, по умолчанию она установлена ​​на xbuilde rгруппу, измените ее на желаемую группу:

  # chown root:<group> ~/XBPS/usr/bin/xbps-uchroot.static
  # chmod 4750 ~/XBPS/usr/bin/xbps-uchroot.static

Клонировать void-packagesрепозиторий git:

  $ git clone git://github.com/void-linux/void-packages

и xbps-src должен быть полностью функциональным; просто запустите bootstrap процесс, то есть:

  $ ./xbps-src binary-bootstrap

MASTERDIR по умолчанию создается в текущем рабочем каталоге, то есть void-packages/masterdir.

Переделывать masterdir

Если по какой-то причине вам необходимо обновить xbps-src, а bootstrap-update цели недостаточно, можно восстановить masterdir с помощью двух простых команд (обратите внимание, что zap оставляет каталоги нетронутыми ccache/distcc/host):

  $ ./xbps-src zap
  $ ./xbps-src binary-bootstrap

Поддержание вашего masterdir в актуальном состоянии

Иногда пакеты начальной загрузки должны быть обновлены до последней доступной версии в репозиториях, это достигается с помощью bootstrap-updateцели:

  $ ./xbps-src bootstrap-update

Сборка 32-битных пакетов на x86_64 Для сборки 32-битных пакетов на x86_64 доступны два способа:

  • режим кросс-компиляции
  • родной режим с 32-битным masterdir

Первый режим (кросс-компиляция) так же прост, как:

  $ ./xbps-src -a i686 pkg ...

Для второго режима (родного) нужен новый x86 masterdir:

  $ ./xbps-src -m masterdir-x86 binary-bootstrap i686
  $ ./xbps-src -m masterdir-x86 ...

Сборка пакетов изначально для библиотеки musl C

Собственная среда сборки необходима для возможности кросс-компиляции пакетов начальной загрузки для библиотеки musl C; это достигается путем установки их через binary-bootstrap:

  $ ./xbps-src binary-bootstrap

Теперь кросс-компиляция base-chroot-musl для вашей родной архитектуры:

  $ ./xbps-src -a x86_64-musl pkg base-chroot-musl

Подождите, пока все пакеты не будут собраны, и когда будете готовы, подготовьте новый masterdir с пакетами musl:

  $ ./xbps-src -m masterdir-x86_64-musl binary-bootstrap x86_64-musl

Теперь ваш новый masterdir готов к сборке пакетов для библиотеки musl C. Пытаться:

  $ ./xbps-src -m masterdir-x86_64-musl chroot
  $ ldd

Чтобы увидеть, работает ли динамический компоновщик musl C должным образом.

Создание пустотной базовой системы с нуля Чтобы перестроить все пакеты base-system для вашей родной архитектуры:

  $ ./xbps-src -N pkg base-system

Также возможно скомпилировать все с нуля:

  $ ./xbps-src -a <target> -N pkg base-system

После завершения сборки вы можете указать путь к локальному репозиторию void-mklive, т.е.

  # cd void-mklive
  # make
  # ./mklive.sh ... -r /path/to/hostdir/binpkgs

Пример установки

Сообщества

Дружеское сообщество Void Linux встречается на форуме Discourse и IRC-канале freenode.net. Все инструменты и сценарии упаковки разрабатываются и обсуждаются на GitHub.


Источники

  1. Void_Linux // Википедия. [2001—2018]. Дата обновления: 14.11.2018. URL: https://ru.wikipedia.org/wiki/Void_Linux (дата обращения: 25.11.2018).
  2. The XBPS source packages collection // github [2012—2017] Дата обновления: 05.06.2017. URL: https://github.com/voidlinux/void-packages (дата обращения: 05.06.2017).
  3. Void Linux: дистрибутив, собранный с нуля. // Linux [2018]. Дата изменения: 01.04.2014. URL: https://www.linux.org.ru/news/linux-general/10333012 (дата обращения: 09.10.2018).
  4. Void Linux // Void Linux Wiki [2018]. Дата изменения: 11.09.2018. URL: https://wiki.voidlinux.eu/Void_Linux (дата обращения: 09.10.2018).
  5. The Void (Linux) distribution // voidlinux [2012—2017] Дата обновления: 05.06.2017. URL: https://github.com/alekseyt/void-packages/ (дата обращения: 17.01.2019).