Новая установка Void Linux минимальна по дизайну. Вы получаете загрузочную систему, оболочку и многое другое. Вот в чем дело. Но между простой установкой и полезной рабочей станцией или сервером есть пробел, который необходимо заполнить: журналирование, правила брандмауэра, правильный редактор, синхронизация времени и учетная запись пользователя, которая не является root.

В этом руководстве рассматриваются основные этапы после установки Void Linux (glibc, x86 64). Все здесь было протестировано на чистой установке с изображением базовой системы. Если вы из дистрибутива на системной основе, такого как Rocky Linux или Ubuntu, обратите пристальное внимание на разделы рунита и XBPS, потому что Void делает все по-другому, и различия имеют значение.

Предварительные условия

  • Сервер под управлением Void Linux.
  • Привилегии пользователя: пользователь root или не root с привилегиями sudo.

Конвенции

1
2
# - данные команды должны выполняться с правами root либо непосредственно от имени пользователя root, либо с помощью команды sudo.
$ - данные команды должны выполняться от имени обычного пользователя.

Обновите систему

Свежая установка Void Linux требует обновления пакетов до последних доступных версий.

1
sudo xbps-install -u xbps

После того, как xbps включен, запустите полное обновление системы.

1
sudo xbps-install -Syu

Система может нуждаться в перезагрузке после обновления.

1
sudo reboot -f

Настройка System Logging

Базовая установка Void не имеет демона регистрации. Это означает, что сообщения ядра, события аутентификации и сбои в обслуживании исчезают в пустоте (без каламбура). Рекомендуемым решением является socklog, который интегрируется с рунитом нативно.

1
sudo xbps-install socklog-void

Включите службы журналов пользовательского пространства и ядра:

1
2
sudo ln -s /etc/sv/socklog-unix /var/service/
sudo ln -s /etc/sv/nanoklogd /var/service/

В течение нескольких секунд Runit получает новые симлинки и автоматически запускает сервисы. Журналы хранятся в /var/log/socklog/ с подкаталогами для каждого объекта. Чтобы прочитать последние системные сообщения:

1
sudo svlogtail

Для конкретной категории журнала, такой как события аутентификации:

1
cat /var/log/socklog/secure/current

Добавьте своего обычного пользователя в группу socklog, чтобы вы могли читать журналы без sudo:

1
sudo usermod -aG socklog your_username

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

Установите основные инструменты

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

1
sudo xbps-install htop nano curl wget git bash-completion unzip tree

Подтвердите установленные версии:

1
2
3
htop --version
nano --version | head -1
git --version

Выход подтверждает пакетные версии, вытянутые из репо:

1
2
3
htop 3.5.0
nano v8.7.1
git version 2.53.0

Для рабочих нагрузок веб-сервера посмотрите, как установить Nginx на Void Linux или развернуть полный стек LAMP на Void Linux.

Настройка Firewall с помощью nftables

У Void нет правил брандмауэра из коробки. Каждый порт на машине широко открыт. nftables является современной заменой iptables и хорошо работает на Void с рунитом.

1
sudo xbps-install nftables

Создайте базовую конфигурацию брандмауэра, которая позволяет SSH, установленные соединения и ICMP (ping) при отказе от всего остального:

 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
sudo tee /etc/nftables.conf > /dev/null <<'EOF'
#!/usr/sbin/nft -f

flush ruleset

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;

        # Allow loopback
        iif lo accept

        # Allow established and related connections
        ct state established,related accept

        # Allow ICMP (ping)
        ip protocol icmp accept
        ip6 nexthdr icmpv6 accept

        # Allow SSH
        tcp dport 22 accept
    }

    chain forward {
        type filter hook forward priority 0; policy drop;
    }

    chain output {
        type filter hook output priority 0; policy accept;
    }
}
EOF

Включите и запустите сервис nftables:

1
sudo ln -s /etc/sv/nftables /var/service/

Убедитесь, что правила загружены:

1
sudo nft list ruleset

Выход должен отражать конфигурацию, которую вы написали:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
table inet filter {
	chain input {
		type filter hook input priority filter; policy drop;
		iif "lo" accept
		ct state established,related accept
		ip protocol icmp accept
		ip6 nexthdr 58 accept
		tcp dport 22 accept
	}

	chain forward {
		type filter hook forward priority filter; policy drop;
	}

	chain output {
		type filter hook output priority filter; policy accept;
	}
}

Чтобы позже открыть дополнительные порты (например, HTTP и HTTPS), добавьте правила перед закрытием скобки входной цепи и перезагрузите с помощью sudo sv restart nftables.

Создайте регулярного пользователя

Запуск всего как root — плохая привычка, которая в конечном итоге догоняет вас. Создайте обычную учетную запись пользователя с домашним каталогом:

1
2
sudo useradd -m -s /bin/bash -G wheel sysadmin
sudo passwd sysadmin

Флаг -G wheel добавляет пользователя в группу колес, которая является стандартной группой для доступа sudo в большинстве дистрибутивов Linux. Теперь установите и настройте sudo:

1
sudo xbps-install sudo

Отредактируйте файл sudoers, чтобы позволить группе колес:

1
sudo visudo

Раскомментируйте эту строку:

1
%wheel ALL=(ALL) ALL

Пользователь sysadmin теперь может запускать привилегированные команды с помощью sudo. Если вы предпочитаете более легкую альтернативу, Void также упаковывает opendoas, который проще настроить и популярен в мире BSD. Установите его с помощью sudo xbps-install opendoas и создайте /etc/doas.conf, содержащий разрешение на сохранение permit persist :wheel.

Скачать Default Shell

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

1
sudo xbps-install fish-shell

Проверьте установленную версию:

1
fish --version

Это подтверждает наличие рыбы 4.6.0:

1
fish, version 4.6.0

Измените оболочку по умолчанию:

1
chsh -s /usr/bin/fish

Выходите и возвращайтесь, чтобы изменения вступили в силу. Если вы предпочитаете zsh, установите его с помощью sudo xbps-install zsh и запустите chsh -s /usr/bin/zsh. Оба варианта являются отличным выбором, хотя fish требует меньше начальной конфигурации.

Синхронизация сетевого времени

Точные системные часы имеют большее значение, чем думает большинство людей. Валидация сертификата TLS, корреляция журналов, сроки работы cron и системы сборки зависят от этого. Void не поддерживает NTP по умолчанию. Chrony легкий, хорошо справляется с прерывистым подключением и является рекомендуемым NTP-клиентом для большинства случаев использования.

1
sudo xbps-install chrony

Конфигурация по умолчанию в /etc/chrony.conf использует общедоступные пулы NTP и работает без изменений для большинства настроек. Включите сервис:

1
sudo ln -s /etc/sv/chronyd /var/service/

Через несколько секунд проверьте состояние синхронизации:

1
chronyc tracking

На выходе показано смещение системных часов от источника NTP:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
Reference ID    : 3E800113 (ntp2.noris.net)
Stratum         : 3
Ref time (UTC)  : Mon Apr 13 09:39:32 2026
System time     : 0.000023418 seconds fast of NTP time
Last offset     : +0.000012354 seconds
RMS offset      : 0.000045678 seconds
Frequency       : 2.341 ppm slow
Residual freq   : +0.001 ppm
Skew            : 0.032 ppm
Root delay      : 0.024512 seconds
Root dispersion : 0.001234 seconds
Update interval : 64.0 seconds
Leap status     : Normal

Смещение «время системы» менее чем на 1 секунду означает, что все работает правильно.

Понимание управления сервисом Runit

Если вы пришли из системы, runit сначала почувствует себя чужим. Основная концепция проста: определения сервисов живут в /etc/sv/, и сервис становится активным, когда вы связываете его с /var/service/. Рунит наблюдает /var/service/ и запускает все, что находит там. Удаление symlink отключает сервис.

Одна вещь, которая застает большинство людей врасплох: рунет автоматически перезагружает сервисы, если они падают. Не существует двух шагов «enable и start». В тот момент, когда вы создаете symlink в /var/service/, рунит запускает сервис и будет продолжать перезапускать его, если он выйдет. Чтобы временно остановить услугу, не отключая ее, используйте sv down SERVICE. Он остается остановленным до тех пор, пока вы не запустите sv up SERVICE или перезагрузитесь.

Чтобы увидеть все доступные услуги (установленные, но не обязательно включенные):

1
ls /etc/sv/

Сравните это с тем, что на самом деле работает:

1
ls /var/service/

Разница между этими двумя списками говорит вам, какие службы установлены, но отключены.

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

XBPS быстрый и простой, когда вы изучаете команды. Соглашения об именах отличаются от apt или dnf, но операции отображаются непосредственно. Вот краткая информация:

  • Установить пакет: xbps-install pkg
  • Удалить пакет: xbps-remove pkg
  • Удалить сироты: xbps-remove -Ro pkg
  • Поиск пакета: xbps-query -Rs keyword
  • Показать пакет информации: xbps-query -R pkg
  • Список установленных пакетов: xbps-query -l
  • Список файлов в пакете: xbps-query -f pkg
  • Синхронизация: xbps-install -S
  • Полное обновление: системы: xbps-install -Syu

Один полезный трюк: xbps-query -Rs ищет удаленные репозитории, в то время как xbps-query -s (без капитала R) ищет только локально установленные пакеты. Различие имеет значение, когда вы пытаетесь выяснить, что-то уже установлено или просто доступно.

Чтобы очистить кэшированные пакеты и восстановить дисковое пространство:

1
sudo xbps-remove -Oo

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

Завершение

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