
Хочу поделиться шпаргалкой по быстрой установке и настройке дистрибутива Void в качестве рабочего окружения.
Что такое Void Linux?
Void Linux - это независимый дистрибутив, использующий систему инициализации runit и пакетный менеджер xbps с мощной системой сборки пакетов xbps-src. Дистрибутив доступен в двух версиях: с библиотекой Си glibc, которая используется в большинстве других дистрибутивов, и с альтернативной библиотекой musl, спроектированной для большей компактности и простоты.
Void предлагает альтернативу популярным решениям в мире Linux. Он не использует компоненты, такие как systemd, rpm или dpkg. При этом дистрибутив остается достаточно дружелюбным и удобным для повседневного использования. Если у вас уже есть опыт работы с Linux, стоит ознакомиться с Void Linux.
Другой дистрибутив, который я могу порекомендовать, - это Alpine Linux. Однако, поскольку Alpine использует только musl, он может не поддерживать некоторые аппаратные компоненты, требующие проприетарные драйверы (например, nvidia, broadcom).
Void Linux, благодаря возможности выбора стандартной библиотеки Си, избегает этой проблемы.
Описание планируемой конфигурации
В качестве графического окружения я задействую Xfce, а в качестве звукового сервера - pipewire.
Устанавливать Void Linux будем через chroot, несмотря на наличие у Void псевдографического установщика.
Такое решение обусловлено следующими причинами:
- Void обладает мощным инструментарием xtools, который упрощает процесс установки (xchroot);
- пакетный менеджер xbps позволяет быстро создать корень рабочей системы;
- бОльшая гибкость в установке и настройке системы.
Создание загрузочного носителя
Я рекомендую скачать "живой" образ с Xfce, чтобы проводить установку и конфигурирование системы сразу из приятного графического интерфейса.
Скачиваем последний актуальный "живой" образ.
wget https://repo-default.voidlinux.org/live/current/void-live-x86_64-20250202-xfce.isoНаходим файл носителя, в который запишем скачанный образ.
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 1 30G 0 disk
├─sda1 8:1 1 1.3G 0 part
└─sda2 8:2 1 32M 0 part
nvme0n1 259:0 0 238.5G 0 disk
├─nvme0n1p1 259:1 0 127M 0 part
├─nvme0n1p2 259:2 0 70G 0 part
├─nvme0n1p3 259:3 0 124M 0 part /boot/efi
├─nvme0n1p4 259:4 0 70G 0 part /
├─nvme0n1p5 259:5 0 124M 0 part
└─nvme0n1p6 259:6 0 70G 0 part Записываем образ на носитель.
dd bs=4M if=void-live-x86_64-20250202-xfce.iso of=/dev/sdaИ убеждаемся, что все данные на него были записаны.
syncПодготовка файловой системы
Загружаемся в live-систему.
Вероятно, имеет смысл выбрать вариант RAM, чтобы live-система полностью загрузилась в ОЗУ компьютера.
Это увеличит быстродействие и отзывчивость live-системы.
Открываем эмулятор терминала и повышаем наши права до суперпользователя. Пароль voidlinux.
su -Для удобства работы с командной строкой будем работать в эмуляторе терминала bash.
bashУстанавливать Void я буду на разделы, которые сейчас использует другой дистрибутив, поэтому этап создания разметки диска будет пропущен.
Форматируем раздел /dev/nvmen1p3 для загрузчика и раздел /dev/nvmen1p4 для корня системы.
mkfs.vfat /dev/nvmen1p3
mkfs.ext4 /dev/nvmen1p4Монтируем будущие загрузочный и корневой разделы системы в каталог /mnt live-системы, чтобы продолжить над ними работу.
mount /dev/sda2 /mnt/
mkdir -p /mnt/boot/efi/
mount /dev/sda1 /mnt/boot/efi/Если вы, как и я, используете live-систему с графическим окружением, то, вероятно, вам потребуется удалить каталог с мусором, который почему-то окружение посчитало нужным создать.
rm -rf /mnt/lost+foundСоздание корня системы с помощью пакетного менеджера XBPS
Создаем переменные окружения: REPO, которая будет содержать адрес удаленного репозитория, и ARCH, которая будет содержать информацию об архитектуре компьютера.
Если вы желаете использовать Void с библиотекой musl, то укажите адрес:
https://repo-default.voidlinux.org/current/muslЯ же буду устанавливать версию с glibc:
REPO=https://repo-default.voidlinux.org/current
ARCH=x86_64Копируем с live-системы ключи для проверки подлинности пакетов.
mkdir -p /mnt/var/db/xbps/keys
cp /var/db/xbps/keys/* /mnt/var/db/xbps/keys/Устанавливается будущая система одной командой. Очень удобно!
XBPS_ARCH=$ARCH xbps-install -S -r /mnt -R "$REPO" base-systemНастройка базовой системы
Генерируем файл /etc/fstab, содержащий параметры автомонтирования разделов будущей системы с помощью утилиты из состава инструментария xtools.
# xgenfstab -U /mnt > /mnt/etc/fstabПодменяем корень live-системы на корень устанавливаемой системы с помощью утилиты из состава xtools.
xchroot /mnt /bin/bashЗадаем имя компьютера.
[xchroot /mnt] # vi /etc/hostname
voidgravНастраиваем параметры системы.
Я использую us раскладку клавиатуры, и en_US.UTF-8 локаль.
[xchroot /mnt] # vi /etc/rc.conf
HOSTNAME="voidgrav"
HARDWARECLOCK="UTC"
TIMEZONE="Europe/Moscow"
KEYMAP="us"
FONT="lat9w-16"
CGROUP_MODE=unified
SEEDING_SKIP_CREDIT=false
[xchroot /mnt] # vi /etc/default/libc-locales
en_US.UTF-8 UTF-8
[xchroot /mnt] vi /etc/locale.conf
LANG=en_US.UTF-8
LC_LOCALE=CПрименяем наши изменения.
[xchroot /mnt] # xbps-reconfigure -f glibc-localesЗадаем пароль суперпользователя.
[xchroot /mnt] # passwdТакже установим ряд пакетов, которые не являются обязательными, но, вероятно, нам все равно придется их установить и настроить в будущем.
Например, когда они окажутся в списке зависимостей устанавливаемых программ.
Установим системную шину dbus.
[xchroot /mnt] # xbps-install -S dbusПоставим сервис dbus в автозапуск.
[xchroot /mnt] # ln -s /etc/sv/dbus /etc/runit/runsvdir/defaultСледующий пакет - NetworkManager. Вполне возможно, что вы не захотите добавлять его в минималистичную систему. В качестве альтернативы я могу порекомендовать использовать для управления сетевыми подключениями wpa_supplicant, который предустановлен в Void.
[xchroot /mnt] # xbps-install -S NetworkManagerПоставим NetworkManager в автозапуск.
[xchroot /mnt] # ln -s /etc/sv/NetworkManager /etc/runit/runsvdir/defaultУстановка загрузчика ОС
Установим grub.
[xchroot /mnt] # xbps-install grub grub-x86_64-efiДля систем с UEFI.
[xchroot /mnt] # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="Void"Переконфигурием все пакеты, чтобы все изменения вступили в силу.
[xchroot /mnt] # xbps-reconfigure -faПосле этого выходим из chroot, извлекаем установочный носитель и перезагружаемся в свежеустановленную ОС.
[xchroot /mnt] # exit
# umount -R /mnt
# shutdown -r nowПостустановочная настройка ОС
Пока мы не сменили командную оболочку с sh на bash давайте сделаем это вручную.
bashУстановим X-сервер xorg, графический менеджер входа lightdm и менеджер сеансов elogind.
xbps-install xorg lightdm lightdm-gtk-greeter elogindНастроим автозапуск для установившихся пакетов.
ln -s /etc/sv/polkitd /etc/runit/runsvdir/default
ln -s /etc/sv/elogind /etc/runit/runsvdir/default
ln -s /etc/sv/lightdm /etc/runit/runsvdir/defaultСкачиваем мета-пакет с базовым окружением Xfce.
xbps-install xfce4Пришло время поменять sh на bash :)
vi /etc/passwd
root:x:0:0:root:/root:/bin/bashСоздадим непривилегированного пользователя.
Обязательно добавляем пользователя в группы audio, video (для PipeWire), network (для NetworkManager) и input (для libinput).
useradd -m -s /bin/bash -c 'Ulysses Apokin' \
-G floppy,disk,audio,video,adm,cdrom,optical,scanner,network,input,users ulyssesЗададим пароль для созданного пользователя.
passwd ulyssesПерезагружаемся в графический сеанс.
rebootУстановим пакеты ALSA.
xbps-install alsa-firmware alsa-utilsПоставим ALSA в автозапуск.
ln -s /etc/sv/alsa /etc/runit/runsvdir/defaultВ качестве мультимедийного сервера установим pipewire. В качестве графического интерфейса для управления звуковыми настройками системы задействуем pavucontrol.
xbps-install pipewire wireplumber pavucontrolСоздадим конфигурационные файлы для pipewire.
mkdir -p /etc/pipewire/pipewire.conf.d
ln -s /usr/share/examples/wireplumber/10-wireplumber.conf /etc/pipewire/pipewire.conf.d/
ln -s /usr/share/examples/pipewire/20-pipewire-pulse.conf /etc/pipewire/pipewire.conf.d/Перезагружаемся.
Также будет необходимо в настройках автозапуска Xfce прописать автозапуск pipewire.
Делается это следующим образом.
Settings -> Session and Startup -> Application Autostart -> Add :
Command: pipewire
Trigger: On LoginИли же создайте sh-скрипт и настройте его автозапуск с помощью системы инициализации runit. Однако обратите внимание, что pipewire должен запускаться после того, как сессия X11 или Wayland загрузилась, поскольку в Void в качестве менеджера сессий для PipeWire используется WirePlumber.
rebootВозможно, вы также захотите воспользоваться следующими плагинами из состава Xfce.
xbps-install orage xfce4-battery-plugin \
xfce4-clipman-plugin xfce4-pulseaudio-plugin \
xfce4-screenshooter xfce4-xkb-pluginРезультат и субъективное мнение о дистрибутиве
Установка и настройка Void Linux в качестве рабочего окружения завершены. Теперь можно насладиться этой ОС на десктопе, хотя многое стало понятно уже в процессе установки.
- Быстрый пакетный менеджер xbps.
- Наличие выбора стандартной библиотеки Си.
- Независимость от других дистрибутивов и наличие своей экосистемы ПО.
- Гибкость в настройке под свои нужды.


Но не обошлось, конечно, без ложки дегтя.
Меня всегда смущал принцип наименования пакетов (или его отсутствие) в Void. Например, у шрифтов:
ttf-ubuntu-font-family
liberation-fonts-ttf
font-liberation-narrow-ttf
freefont-ttfИли у NetworkManager:
NetworkManager
network-manager-appletИли у CAD-систем:
LibreCAD
openscadНа сколько мне нравится пакетный менеджер xbps, который делает сборку пакетов простой и легкой для обычных пользователей, на столько же мне не нравится система инициализации - runit. Отказ от концепции уровней запусков, как мне кажется, является фатальным недостатком. Создавать свои сервисы менее удобно, чем в systemd и openrc. А исправить косяки в поставляемых сервисах трудно. Например, я столкнулся с тем, что lightdm стартует позже графической среды при выходе из сна. И соответственно все виснет. То, что исправлялось бы в openrc простой сменой runlevel, в runit решается нетривиальными прыжками по скриптам.
Также меня смущает, что совместная разработка в Void ведется на github. Видимо, сказывается недостаток ресурсов у команды. Об этом также свидетельствует то, что много даже ключевых пакетов находятся в статусе orphaned и не имеют постоянных сопровождающих
Следующее нельзя отнести к минусам, так как это объясняется философией дистрибутива и его ориентированностью на самостоятельное построение идеальной системы под себя. Иногда при установке пакета не устанавливаются все его зависимости, и пакет работает не так, как ожидалось. Например, пакет pipewire не устанавливает с собой пакет alsa-firmware. По этой причине я долго не мог понять, почему у меня нет звука, хотя pipewire утверждал, что у него все в порядке.
Тем не менее Void Linux будет хорошим выбором для опытных пользователей Linux, которые ищут легковесный и настраиваемый дистрибутив с возможностью выбора стандартной библиотеки языка Си.
Комментарии
10:34
10:50
Alpine мне тоже нравится, но проблема с musl существует, я устанавливал glibc и все равно зависящие от него программы не работали. Другая проблема с которой я столкнулся..ошибка APK и apk fix и другие команды ее не убирали. Пришлось откатиться на бэкап. С пакетами тоже беда, на ветке edge только хоть что-то можно найти. Надеюсь, появятся какие-то форки для десктопа в будущем.
11:14
Интересно ,название дистра с этим как-то связано?
11:24
Это да, некрасивая история c Хуаном. А так ,у дистрибутива даже форума нормального нет...ПУСТОТА. Такое ощущение, что только Pingvinus его обсуждает.
11:27
:-D
Там же ,когда с лайва ставишь всего 10 строк после команды инсталл настроить-прописать . И через 3 минуты уже готово .
А так заморачиваться - лучше уж Винду котом установить ))
Вот быстрая установка:
https://ltdfoto.ru/image/xJPYqZ
11:33
11:36
И в этом тоже ручная . Главное быстро в гуй выйти , а там и настраивай хоть месяц ))
А так ...тянуть гланды через задний проход..какой-то вывих мозга
Что ж тогда не добавил и терминальное разбиение дисков ,если уж так закрутить ))
11:39
Так вроде тут все такое любят?)) Нет?
11:41
"Умный - гору обойдёт!" ;-)
Я даже читать до конца не стал . Как кино- с прокруткой ))