LINUX.ORG.RU

Debian Trixie без systemd

 , , , ,


3

3

Лет 10 назад Дебиан «перешёл на systemd», по каковому поводу в сообществе возникло много споров, которые не смолкают и поныне. Появившийся в те годы дистрибутив Devuan, который во всём похож на Дебиан, кроме того, что отвязан от systemd, продолжает обновляться следом за Дебианом.

Лет 5 назад Дебиан «перешёл на Wayland» — такая же история, с тем отличием, что поддержка X11 была сохранена и форка не возникло.

Никогда не видел смысла в использовании Wayland или systemd. X11 и sysvinit работали десятилетиями, претензии к ним сомнительны. Кажется, единственным заметным для пользователя преимуществом systemd является распараллеливание запуска служб, благодаря чему ускоряется загрузка, но это преимущество сходит на нет, когда загрузка происходит не чаще раза в неделю. В реализации X11 якобы накоплены какие-то костыли, но почему это должно заботить пользователя — решительно непонятно (с другой стороны, пользователя заботит отсутствие аналога ssh -X в Wayland, а также, по слухам, проблемы с трансляцией экрана и отваливание случайных функций случайных приложений.


На самом деле, из Дебиана никогда не удаляли и поддержку sysvinit. Более того, если в Buster/Bullseye/Bookworm systemd был необходим для udev и GNOME (хотя вместо udev был и остаётся доступен udevil, и вместо GNOME масса других DE), то в Trixie появился пакет systemd-standalone-sysusers, которым можно заменить systemd и в udev, и в GNOME, и продолжать использовать sysvinit. Причины существования Devuan 6.0 Excalibur (аналог Trixie с удалённым systemd) неясны.

Далее идёт перечисление штатных средств Debian, позволяющих комфортно жить без громоздких и переусложнённых systemd, Wayland и GNOME.

Системные вещи

  • /etc/network/interfaces прекрасно справляется с соединением с провайдером и раздачей адресов в локалке и беспроводной сети. Спасибо пользователям ЛОРа за советы, данные 4 года назад; файл с тех пор почти не изменился. Нужны пакеты bridge-utils, wireless-tools, iw. Уверен, что с systemd это было бы или невозможно, или ломалось бы с каждой новой версией systemd.
  • acpid и acpi-support-base для выключения кнопкой.
  • avahi-daemon и avahi-discover для обнаружения устройств (принтера и саунд-бара). Также вручную пришлось скачать файл /etc/init.d/avahi-daemon из Bullseye. В последующие дистрибутивы этот скрипт для sysvinit забыли положить.
  • cups и hplip для принтера.
  • chrony для синхронизации часов по NTP.

Логин

  • wdm вместо ненужного gdm. Ещё есть lightdm, но он в предыдущих версиях Дебиана зависел от systemd, но в Trixie перестал.
  • Вход без пароля возможен при условии добавления следующей строки в /etc/pam.d/wdm:

    auth sufficient pam_succeed_if.so user ingroup nopasswdlogin

    (И добавления пользователя в группу nopasswdlogin.)
  • Параллельная работа двух рабочих столов (мужа и жены) обеспечивается запуском двух параллельных сеансов Xorg, файл /etc/X11/wdm/Xservers:

    :0 local /usr/bin/X :0 vt7 -nolisten tcp
    :1 local /usr/bin/X :1 vt8 -nolisten tcp
    

    (Переключение по Ctrl+Alt+F7 / Ctrl+Alt+F8.)

Звук

  • Без pulseaudio, написанной автором systemd, не обойтись, остаётся смириться.
  • pavucontrol для регулирования громкости и переключения устройств ввода/вывода звука в приложениях.
  • pulseaudio-module-raop для доступа к саунд-бару по протоколу AirPlay (все остальные протоколы в той или иной степени ущербны). Также нужно добавить в /etc/pulse/default.pa строку:

    load-module module-raop-discover

Экраны

Два экрана, основной на DP, вспомогательный на HMDI, зафиксированы в конфиге в /etc/X11/xorg.conf.d (Section "Device" и вот это всё). С интерактивным включением/отключением/позиционированием второго экрана (это проектор) справляется arandr.

Рабочий стол

WindowMaker с ручной доработкой, в основном сводящейся к скачиванию иконок приложений из интернета. В правом-нижнем углу обычный WMDock, но с иконкой «свернуть все окна» и с настройкой, что клик по ней вызывает команду xdotool key super+d (а в настройках wmaker это сочетание клавиш сворачивает все окна). Над этой иконкой wmdrawer, ещё выше wmcalclock, остальное приложения.

Софт

Терминал urxvt. Не могу запомнить, когда нужно Shift+Ins, а когда Ctrl+Alt+v (и Ctrl+Ins / Ctrl+Alt+c), в остальном нормально.

Файловый менеджер spacefm. Привык к нему в прошлых версиях Дебиана, когда остальные файловые менеджеры, будучи зависимы от udev, зависели через него и от systemd. Сейчас это уже не так, но spacefm быстрый и настраиваемый, хотя и немного упоротый и часто вылетает. Непонятная ошибка с тем, что команда «открыть директорию» открывает поиск в этой директории, лечится добавлением следующей команды в /etc/X11/Xsession.d:

xdg-mime default spacefm-folder-handler.desktop inode/directory
Офисные программы libreoffice-writer и пр. Также нужны пакеты libreoffice-gtk3 и libreoffice-style-elementary, чтобы интерфейс приятно выглядел. Правда, за эту приятность почему-то приходится платить тем, что при активированном поиске (Ctrl+F) в либреофисе этот поиск не даёт сделать Alt+Tab, забирая на себя фокус.

Просмотрщик картинок geeqie, проигрываетель quodlibet.

Делатель скриншотов gnome-screenshot.

Игры: эмулятор rpcs3 для Soul Calibur 2, эмулятор wine для Caesar 3 для жены, нативная Kerbal Space Program для сына, все довольны. Для работы геймпадов в rpcs3 требуется xserver-xorg-input-evdev, добавление пользователя в группу input и настройка в /etc/X11/xorg.conf.d:
Section "InputClass"
        Identifier "joystick catchall"
        MatchIsJoystick "on"
        MatchDevicePath "/dev/input/event*"
        Driver "joystick"
        Option "StartKeysEnabled" "False"
        Option "StartMouseEnabled" "False"
EndSection
Не уверен, что всё это работало бы без X11.

Клавиатура

Настройки в /etc/default/keyboard, переключение на русскую раскладку одновременным нажатием левого и правого Shift, набор спецсимволов типа «—»→∞≠× с помощью правого Alt.
XKBMODEL="pc105"
XKBLAYOUT="us,ru"
XKBVARIANT=""
XKBOPTIONS="grp:shifts_toggle,nbsp:level3,lv3:ralt_switch,misc:typo"
В WindowMaker включена опция запоминания раскладки для текущего окна (вторая слева иконка в заголовке).

ШГ

Ш, вне всяких сомнений, Г, и это не исправить, потому что: (i) полноценный хинтинг в Pango/Harfbuzz сломан с 2020 г, примерно тогда же были выпилены пиксельные шрифты; (ii) шрифты со сглаживанием без хинтинга выглядят неприятно размытыми, если у вас не HiDPI; (iii) HiDPI не нужен примерно по той же причине, что и systemd/Wayland — решает проблемы, которых у пользователя не было, взамен создавая проблемы, которых у пользователя тоже не было.

Но есть и хорошие новости. После 2020 г. то ли всё же что-то допилили, то ли изначальная проблема была преувеличена и не особенно касалась PT Sans, каковая гарнитура является примерно единственным бесплатным гротеском с хорошей кириллицей и хорошим хинтингом. Находится в пакете fonts-paratype. Есть отдельные проблемы с кернингом, но не очень навязчивые.

Хинтинг включается следующей настройкой в /etc/X11/Xsession.d:
export FREETYPE_PROPERTIES="truetype:interpreter-version=35"
а также симлинками
sudo ln -s /usr/share/fontconfig/conf.avail/10-hinting-full.conf /etc/fonts/conf.d
sudo ln -s /usr/share/fontconfig/conf.avail/10-yes-antialias.conf /etc/fonts/conf.d
В файле /etc/gtk-3.0/gtk.css включается по умолчанию PT Sans для отображения системных меню:
menu, menubar, menuitem {
    font-family: "PT Sans";
    font-size: 11pt;
}
В заголовках окон, написанных белым по чёрному, сглаживание делает хуже. Поэтому оно отключено (только для процесса wmaker и только для прямого начертания PT Sans) следующим конфигом в /etc/fonts/conf.d:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "/etc/fonts/conf.d/fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test qual="all" name="prgname" compare="eq"><string>wmaker</string></test>
    <test qual="all" name="family" compare="eq"><string>PT Sans</string></test>
    <test qual="all" name="style" compare="eq"><string>Regular</string></test>
    <edit name="antialias" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>
В терминале и текстовых редакторах используется моноширинный Terminus (пакеты fonts-terminus, xfonts-terminus, xfonts-terminus-dos, xfonts-terminus-oblique). В настройках URxvt (/etc/X11/app-defaults/URxvt) шрифт задаётся следующим образом:
URxvt.font: xft:Terminus:regular:size=14
В Emacs, см. выше, пиксельные шрифты больше не поддерживаются, но хорошая новость в том, что Terminus существует и в TTF-варианте, и включается в .emacs следующей командой:
(set-frame-font "Terminus (TTF):pixelsize=16")

Чего не хватает

Не хватает «тильды» с универсальным инкрементальным поиском всего. Насколько я понимаю, технология для осуществления такого поиска называется TinySPARQL, и её завезли в Trixie, но графического интерфейса, отдельного от GNOME, эта штука не имеет, а жаль. Есть интерфейс командной строки под названием localsearch, но вряд ли он будет полезен на практике.



Проверено: hobbit ()
Последнее исправление: dataman (всего исправлений: 3)
4 сентября 2026 г.

Некропостинг.

Да, удалось настроить pipewire, с ним всё абсолютно прекрасно, ужасы pulseaudio забыты.

Особенность настройки в том, что есть два пользователя с параллельно выполняющимися сессиями X11 (см. пост). Следовательно, pipewire нужен как системная служба, работающая для всех пользователей одновременно. В современном pipewire это штатная опция, если использовать systemd, а с sysvinit нужно настраивать вручную.

Фрагментарные инструкции есть по ссылкам: 1 (github.com), 2 (archlinux.org).

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

sudo addgroup pipewire
sudo useradd -r -s /usr/sbin/nologin -g pipewire pipewire
sudo usermod -a -G audio,video pipewire

Добавить десктопных пользователей в группу:

sudo usermod -aG pipewire <имя пользователя>

Затем создать системный конфиг для временных файлов /usr/lib/tmpfiles.d/pipewire.conf:

d /run/pipewire 0750 root audio - -
d /run/pipewire/pulse 0750 root audio - -

… и для DBus (org.pipewire.system.conf):

<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
  <policy user="pipewire">
    <allow own="org.pulseaudio.Server"/>
    <allow own="org.pipewire.PipeWire.0"/>
    <allow own="org.pipewire.Telephony"/>
    <allow own_prefix="org.pipewire"/>
    <allow own_prefix="org.freedesktop.ReserveDevice1"/>
    <allow own_prefix="org.bluez"/>
    <allow own="org.hsphfpd"/>
    <allow own="org.ofono"/>
    <allow send_destination="org.bluez"/>
    <allow receive_sender="org.bluez"/>
  </policy>
  <policy context="default">
    <allow send_destination="org.pulseaudio.Server"/>
    <allow send_destination="org.pipewire.PipeWire.0"/>
    <allow send_destination="org.bluez"/>
  </policy>
</busconfig>

Пользовательские переменные окружения, указывающие на общесистемную директорию (/etc/X11/Xsession.d/90pipewire):

export PIPEWIRE_RUNTIME_DIR=/run/pipewire
export PULSE_SERVER=unix:/run/pipewire/pulse/native

Далее создать загрузочные скрипты.

/etc/init.d/pipewire:

#!/lib/init/init-d-script
### BEGIN INIT INFO
# Provides:          pipewire
# Required-Start:    $remote_fs $syslog dbus
# Required-Stop:     $remote_fs $syslog dbus
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Pipewire daemon
### END INIT INFO

NAME="pipewire"
PIDFILE=/var/run/pipewire.pid
DAEMON=/usr/bin/pipewire
START_ARGS="--chuid pipewire --make-pidfile --background -O /var/log/pipewire.log"
STOP_ARGS="--retry 1"

PIPEWIRE_RUNTIME_DIR=/run/pipewire
XDG_RUNTIME_DIR=/run/pipewire
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/dbus/system_bus_socket"

do_start_prepare()
{
    mkdir -p ${PIPEWIRE_RUNTIME_DIR}
    chmod -R g+ws ${PIPEWIRE_RUNTIME_DIR}
    chown -R pipewire:pipewire ${PIPEWIRE_RUNTIME_DIR}
    export PIPEWIRE_RUNTIME_DIR
    export XDG_RUNTIME_DIR
    export DBUS_SESSION_BUS_ADDRESS
}

do_start_cleanup()
{
    echo "Waiting for the pipewire socket to be ready..."
    sleep 2
    find ${PIPEWIRE_RUNTIME_DIR} -type s -exec chmod g+w '{}' ';'
}

/etc/init.d/pipewire-pulse:

#!/lib/init/init-d-script
### BEGIN INIT INFO
# Provides:          pipewire-pulse
# Required-Start:    $remote_fs $syslog dbus pipewire
# Required-Stop:     $remote_fs $syslog dbus
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Pipewire PulseAudio daemon
### END INIT INFO

NAME="pipewire-pulse"
PIDFILE=/var/run/pipewire-pulse.pid
DAEMON=/usr/bin/pipewire-pulse
START_ARGS="--chuid pipewire --make-pidfile --background -O /var/log/pipewire-pulse.log"
STOP_ARGS="--retry 1"

PIPEWIRE_RUNTIME_DIR=/run/pipewire
XDG_RUNTIME_DIR=/run/pipewire
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/dbus/system_bus_socket"

do_start_prepare()
{
    export PIPEWIRE_RUNTIME_DIR
    export XDG_RUNTIME_DIR
    export DBUS_SESSION_BUS_ADDRESS
}

do_start_cleanup()
{
    echo "Waiting for the pipewire pulse directory to appear..."
    sleep 1
    chmod g+rwx ${PIPEWIRE_RUNTIME_DIR}/pulse
}

/etc/init.d/wireplumber:

#!/lib/init/init-d-script
### BEGIN INIT INFO
# Provides:          wireplumber
# Required-Start:    $remote_fs $syslog dbus pipewire pipewire-pulse
# Required-Stop:     $remote_fs $syslog dbus
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Wireplumber
### END INIT INFO

NAME="wireplumber"
PIDFILE=/var/run/wireplumber.pid
DAEMON=/usr/bin/wireplumber
START_ARGS="--chuid pipewire --make-pidfile --background -O /var/log/wireplumber.log"
DAEMON_ARGS="-p main-systemwide"

PIPEWIRE_RUNTIME_DIR=/run/pipewire
XDG_RUNTIME_DIR=/run/pipewire
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/dbus/system_bus_socket"
XDG_STATE_HOME=/run/pipewire/state/wireplumber

do_start_prepare()
{
    mkdir -p ${XDG_STATE_HOME}
    chmod -R g+ws ${XDG_STATE_HOME}
    chown -R pipewire:pipewire /run/pipewire/state/
    export PIPEWIRE_RUNTIME_DIR
    export XDG_RUNTIME_DIR
    export DBUS_SESSION_BUS_ADDRESS
    export XDG_STATE_HOME
}

Зарегистрировать скрипты для автозагрузки:

sudo update-rc.d pipewire defaults
sudo update-rc.d pipewire-pulse defaults
sudo update-rc.d wirepiper defaults

Вроде всё. Ещё нужны какие-то телодвижения для настройки Bluetooth (можно посмотреть по первой ссылке выше), но поскольку я им не пользуюсь, то не делал.

ringill
() автор топика
Ответ на: комментарий от greenman

Ну, последовательно, но без разлогина.

ringill
() автор топика

Кажется, единственным заметным для пользователя преимуществом systemd является распараллеливание запуска служб, благодаря чему ускоряется загрузка…

Debian еще со времен 6-й версии (Squeeze) включил по умолчанию параллельный запуск init скриптов SysVinit при помощи startpar и insserv, а со следующей версии Debian’a – 7 (Wheezy) – это стало обязательным для систем с SysVinit.

Эти утилиты до сих пор имеются в репах Debian’a, и возможность их использования для параллельного запуска RC-скриптов описана в руководствах пользователя. В частности, в Debian FAQ (en (debian.org), ru (debian.org) в вопросе про System V init написано:

Debian uses dependency-based boot ordering through insserv, using the LSB headers in each script under /etc/init.d/, as well as parallel concurrent booting through the use of startpar to speed up the boot process.  

В The Debian Administrator’s Handbook (en (debian.org), ru (debian.org)] в разделе про System V init написано:

After this stage, init takes over and starts the programs enabled in the default runlevel (which is usually runlevel 2). It executes /etc/init.d/rc 2, a script that starts all services which are listed in /etc/rc2.d/ and whose names start with the “S” letter. The two-figures number that follows had historically been used to define the order in which services had to be started, but nowadays the default boot system uses insserv, which schedules everything automatically based on the scripts' dependencies. Each boot script thus declares the conditions that must be met to start or stop the service (for example, if it must start before or after another service); init then launches them in the order that meets these conditions. The static numbering of scripts is therefore no longer taken into consideration (but they must always have a name beginning with “S” followed by two digits and the actual name of the script used for the dependencies). Generally, base services (such as logging with rsyslog, or port assignment with portmap) are started first, followed by standard services and the graphical interface (gdm3).

This dependency-based boot system makes it possible to automate re-numbering, which could be rather tedious if it had to be done manually, and it limits the risks of human error, since scheduling is conducted according to the parameters that are indicated. Another benefit is that services can be started in parallel when they are independent from one another, which can accelerate the boot process. 

Я пользуюсь Devuan с SysVinit. В нём все init скрипты имеют LSB-заголовки. Из /etc/init.d/networking в качестве примера :

### BEGIN INIT INFO
# Provides:          networking ifupdown
# Required-Start:    mountkernfs $local_fs urandom
# Required-Stop:     $local_fs
# Default-Start:     S
# Default-Stop:      0 6
# Short-Description: Raise network interfaces.
# Description:       Prepare /run/network directory, ifstate file and raise network interfaces, or take them down.
### END INIT INFO

В /etc/init.d/ есть файлы .depend.boot .depend.start, .depend.stop. Вот содержание файла .depend.boot с одной из виртуалок Devuan:

TARGETS = mountkernfs.sh eudev udev mountdevsubfs.sh keyboard-setup.sh bootlogd hwclock.sh hostname.sh checkroot.sh cryptdisks cryptdisks-early mountnfs.sh mountnfs-bootclean.sh mountall.sh mountall-bootclean.sh networking rpcbind nfs-common wtmpdb-update-boot urandom brightness checkfs.sh alsa-utils checkroot-bootclean.sh procps x11-common lm-sensors kmod bootmisc.sh mount-configfs stop-bootlogd-single apparmor
INTERACTIVE = eudev keyboard-setup.sh checkroot.sh cryptdisks cryptdisks-early checkfs.sh
eudev: mountkernfs.sh
udev: mountkernfs.sh
mountdevsubfs.sh: eudev
keyboard-setup.sh: mountdevsubfs.sh
bootlogd: mountdevsubfs.sh
hwclock.sh: bootlogd
hostname.sh: bootlogd
checkroot.sh: hostname.sh keyboard-setup.sh
cryptdisks: checkroot.sh eudev cryptdisks-early
cryptdisks-early: checkroot.sh eudev
mountnfs.sh: mountall.sh mountall-bootclean.sh networking rpcbind nfs-common
mountnfs-bootclean.sh: mountall.sh mountall-bootclean.sh mountnfs.sh
mountall.sh: checkfs.sh checkroot-bootclean.sh
mountall-bootclean.sh: mountall.sh
networking: mountkernfs.sh mountall.sh mountall-bootclean.sh urandom procps
rpcbind: networking
nfs-common: hwclock.sh rpcbind
wtmpdb-update-boot: mountnfs.sh mountnfs-bootclean.sh
urandom: hwclock.sh mountall.sh mountall-bootclean.sh
brightness: mountall.sh mountall-bootclean.sh
checkfs.sh: checkroot.sh cryptdisks
alsa-utils: mountall.sh mountall-bootclean.sh mountnfs.sh mountnfs-bootclean.sh
checkroot-bootclean.sh: checkroot.sh
procps: bootlogd eudev mountall.sh mountall-bootclean.sh
x11-common: mountnfs.sh mountnfs-bootclean.sh
lm-sensors: mountnfs.sh mountnfs-bootclean.sh
kmod: checkroot.sh
bootmisc.sh: eudev mountnfs-bootclean.sh checkroot-bootclean.sh mountnfs.sh mountall.sh mountall-bootclean.sh
mount-configfs: mountkernfs.sh kmod
stop-bootlogd-single: mountall.sh mountall-bootclean.sh
apparmor: mountall.sh mountall-bootclean.sh

В каталогах rc*.d есть множество скриптов, которые имеют одинаковый порядковый номер (что было бы не так в случае их последовательного запуска). Скрипты с одинаковым номером запускаются параллельно. Содержимое каталога /etc/rcS.d/:

K16iscsid
K16open-iscsi
README
S01mountkernfs.sh
S02eudev
S03mountdevsubfs.sh
S03udev
S04keyboard-setup.sh
S05bootlogd
S06hostname.sh
S06hwclock.sh
S07checkroot.sh
S08cryptdisks-early
S09checkroot-bootclean.sh
S09kmod
S10cryptdisks
S11checkfs.sh
S12mount-configfs
S12mountall.sh
S13mountall-bootclean.sh
S14apparmor
S14brightness
S14procps
S14stop-bootlogd-single
S14urandom
S15networking
S16rpcbind
S17nfs-common
S18mountnfs.sh
S19mountnfs-bootclean.sh
S20alsa-utils
S20bootmisc.sh
S20lm-sensors
S20wtmpdb-update-boot
S20x11-common

Содержимое каталога /etc/rc2.d/:

K01speech-dispatcher
K01tor
README
S01console-setup.sh
S02bootlogs
S02nvidia-persistenced
S02opensnitch
S02privoxy
S02pulseaudio-enable-autospawn
S02rsyslog
S02sudo
S02vboxadd
S03anacron
S03clamav-daemon
S03cron
S03cups
S03dbus
S03rmnologin
S03vboxadd-service
S03vboxdrv
S03virtlogd
S04bluetooth
S04elogind
S04libvirtd
S04network-manager
S04postfix
S04saned
S04slim
S04vboxautostart-service
S04vboxballoonctrl-service
S04vboxweb-service
S05libvirt-guests
S06rc.local
S06stop-bootlogd

В /var/log/boot есть такая строчка:

Thu Sep  3 15:31:42 2026: Using makefile-style concurrent boot in runlevel 2.

*Параллельную загрузку по английски обычно называют concurrent boot.

**Что такое makefile-style concurrent boot описано в man’e к startpar:

The -M option switches startpar into a make(1) like behaviour. This option takes three different arguments: boot, start, and stop for reading .depend.boot or .depend.start or .depend.stop respectively in the directory /etc/init.d/. By scanning the boot and runlevel scripts in /etc/init.d/ it then executes the appropriate scripts in parallel.

То же по-русски:
С опцией -M поведение startpar становится подобным команде make(1). Эта опция принимает три разных аргумента: boot, start и stop -- для чтения соответственно .depend.boot, .depend.start или .depend.stop в каталоге /etc/init.d/. Затем, посредством сканирования boot и runlevel скриптов в /etc/init.d/, он запускает подходящие скрипты параллельно.

А как обстоит дело с параллельным запуском init скриптов у тебя?

Zaruba
()
Ответ на: комментарий от Zaruba

Никак : ) необходимости в этом у меня нет, т. к. система загружается редко. Но спасибо за информацию.

ringill
() автор топика

Не отношу себя к фанатам systemd, но формат unit’ов проще чем баш скрипт, кроме запуска служб есть и другие приятные вещи типа systemd-nspawn и прочее. К сожалению у systemd куча недлостатков и очень хорошо, что стабильный дебиан теперь меньше от него зависит.

einhander ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.