LINUX.ORG.RU

Debian не загружается, если компьютер оффлайн

 ,


0

3

Debian testing. При загрузке система «зависает» с сообщением «Starting a job for LSB: Raising Network Interfaces», если компьютер не подключен по eth0.

Как вариант, закомментированы строки про поднятие eth0 в /etc/network/interfaces - не помогает.


Ответ на: комментарий от girl

Таймаут есть, но он внутри инитскрипта.

Это баг в инитскрипте и/или в дебианоспецифичных средствах совместимости systemd с инитскриптами. Слишком сильные зависимости порядка расставлены. По идее, задержка в активации network.target не должна влиять на запуск всего остального.

systemctl list-dependencies --after network.target
systemctl list-dependencies --before network.target
intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Для примера, у меня в арче вот так:

(то, что стартует строго до network.target)

$ systemctl list-dependencies --after network.target
network.target
● ├─NetworkManager-wait-online.service
● ├─NetworkManager.service
● ├─systemd-networkd.service
● └─network-pre.target

(то, что стартует строго после network.target)

$ systemctl list-dependencies --before network.target
network.target
● ├─autofs.service
● ├─nmbd.service
● ├─smbd.service
● ├─sshd.service
● ├─systemd-resolved.service
● ├─winbindd.service
● └─network-online.target
●   ├─autofs.service
●   ├─pacman-update.service
●   └─pkgstats.service

Как можно видеть, задержка поднятия сети распространится только на те вещи, которые зависят от этой самой сети. Залогиниться в систему мне это не помешает.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx
user@debian:~$ cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support/"
BUG_REPORT_URL="https://bugs.debian.org/"
user@debian:~$ systemctl list-dependencies --after network.target
network.target
● ├─networking.service
● └─network-pre.target
user@debian:~$ systemctl list-dependencies --before network.target
network.target
● ├─openvpn.service
● ├─rc-local.service
● ├─ssh.service
● └─network-online.target
●   ├─exim4.service
●   └─rpcbind.service
user@debian:~$ 
anonymous
()

Была такая же проблема. Появилась после перехода на системд, надо бы на сисинит проверить сейчас, но раньше на нём такого не было.

grem ★★★★★
()
Ответ на: комментарий от intelfx

Извиняюсь, если туплю, но как

openvpn.service
ssh.service
exim4.service
могут стартовать как зависимости до (--before) network.target? Логику не допер что-то.

DeadEye ★★★★★
()
apt-get install sysvinit-core
anonymous
()

ЕМНИП, если у вас включен ntpd, то иксы не стартанут до того, как поднимется сеть. Потому что у display-manager.service по дефолту ждет запуска ntpd, а ntpd, в свою очередь, хочет сеть.

Khnazile ★★★★★
()
Ответ на: комментарий от DeadEye

Это просто параметр --before по-наркомански назван. Он перечисляет юниты, от которых указанный юнит имеет зависимость Before=.

intelfx ★★★★★
()
Ответ на: комментарий от mcgeek

По-моему, это багрепорт не про то.

Там человек синхронно рестартит файрволл из хуков поднятия интерфейса, чем создаёт необнаруживаемый цикл из зависимостей.

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

как и ожидалось — кто-то в дебиане упоролся при расстановке зависимостей

Никто не упоролся. (Интересно, арчеры все такие падкие на ничем не обоснованное хамство и неуважительное отношение к коллегам?) Просто в Debian этот init-скрипт стартует на уровне запуска S (что логично в его схеме загрузки), отчего systemd-sysv-generator даёт ему Before=sysinit.target, что и затормаживает загрузку на инфимум времени поднятия сети и таймаута. То есть Debian'овская схема загрузки плохо ложится на схему systemd при «тождественном» её отображении (а сильно по-другому не сделать, ибо необходимо поддерживать и sysvinit, и обратную совместимость; может, когда (если) его выкинут, всё это перепишут лучшим образом). Однако необходимо заметить, что ожидание будет лишь для интерфейсов, помеченных для загрузки словом auto. Если ожидать полного поднятия соответствующего интерфейса не нужно, для него стоит использовать allow-hotplug вместо auto.

Техническая информация:

user@debian:~$ head /etc/init.d/networking 
#!/bin/sh -e
### 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
user@debian:~$ systemctl cat networking.service 
# /run/systemd/generator.late/networking.service
# Automatically generated by systemd-sysv-generator

[Unit]
SourcePath=/etc/init.d/networking
Description=LSB: Raise network interfaces.
DefaultDependencies=no
Before=sysinit.target shutdown.target
After=mountkernfs.service local-fs.target urandom.service
Conflicts=shutdown.target

[Service]
Type=forking
Restart=no
TimeoutSec=0
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
SysVStartPriority=12
ExecStart=/etc/init.d/networking start
ExecStop=/etc/init.d/networking stop
ExecReload=/etc/init.d/networking reload

# /run/systemd/generator/networking.service.d/50-insserv.conf-$network.conf
# Automatically generated by systemd-insserv-generator

[Unit]
Wants=network.target
Before=network.target

# /lib/systemd/system/networking.service.d/network-pre.conf
[Unit]
After=network-pre.target
user@debian:~$ 

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

«Упоролся» было сказано про взаимное упорядочивание DM и ntpd. Тут, действительно, всё вполне адекватно. Спасибо за разъяснение.

intelfx ★★★★★
()
19 января 2016 г.
Ответ на: комментарий от mcgeek

Сегодня после обновления и перезагрузки видно, что они что-то исправили. Загружается мгновенно, поднятия интерфейса не ждет, но при входе Wi-Fi поднимается сразу.

girl
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.