Devuan… Уменьшите время ожидания, пока интернет-интерфейсы настраиваются во время загрузки

Решение, которое я успешно использовал в debian, ubuntu и rhel7, заключается в создании короткого скрипта python, который запускается автоматически при входе в сессию gnome. Обратите внимание, что в rhel7 комбинация клавиш для блокировки - super + l.

Создайте /etc/xdg/autostart/gscreenlock.py вот так:

#!/usr/bin/python

import dbus
import dbus.service
import dbus.glib
import gobject
import os

class ScreenDbusObj(dbus.service.Object):
    def __init__(self):
        session_bus = dbus.SessionBus()
        bus_name=dbus.service.BusName("org.gnome.ScreenSaver",bus=session_bus)
        dbus.service.Object.__init__(self,bus_name, '/org/gnome/ScreenSaver')

    @dbus.service.method("org.gnome.ScreenSaver")
    def Lock(self):
        os.system( "xscreensaver-command -lock" )


if __name__ == '__main__':
    object=ScreenDbusObj()
    gobject.MainLoop().run()

Затем сделайте его исполняемым:

chmod a+rx /etc/xdg/autostart/gscreenlock.py

И отредактируйте /etc/xdg/autostart/gscreenlock. desktop вот так:

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=gscreenlock
TryExec=/etc/xdg/autostart/gscreenlock.py
Exec=/etc/xdg/autostart/gscreenlock.py
NoDisplay=true
NotShowIn=XFCE;KDE;
Comment=Allows screen locking in gnome
4
09.03.2019, 16:50
1 ответ

Возможно, эквивалент udev(eudevилиmdevсогласно Devuan)не ведет себя на 100 % одинаково в отношении событий горячего подключения. Также возможно, если вы используете коммутатор, который имеет очень большую задержку переадресации, прежде чем фактически разрешить трафику работать в обоих направлениях (, в этом случае второе решение ниже не будет работать ).

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

  1. исключить интерфейс из конфигурации

    1.1. просто измените настройки сети по умолчанию в/etc/default/networking:

    либо

    CONFIGURE_INTERFACES=no
    

    это несколько экстремально, так как даже loне будет запущено, что, возможно, не позволит даже некоторым несетевым -приложениям работать должным образом (gdm... ).

    1.2. или

    EXCLUDE_INTERFACES=eth0
    

    , чтобы исключить только проблемный интерфейс.

    Позже вы можете использовать ifup eth0, чтобы вызвать его.

  2. Или вместо этого вы можете добавить условие в конфигурацию, чтобы проверить, доступна ли ссылка,и "сбой" интерфейса, если нет. Поскольку я не уверен, запускается ли хук dhcpдо или после того, как пользователь -предоставил команды up, я обманываю и помещаю его в pre-up, что требует предварительного запуска интерфейса вручную. Вы можете проверить, достаточно ли хороша команда up, не вызывая ее сначала.

    Отредактируйте соответствующую часть /etc/network/interfaces, чтобы она выглядела так:

    allow-hotplug eth0
    iface eth0 inet dhcp
        pre-up ip link set eth0 up && sleep 1
        pre-up [ $(cat /sys/class/net/eth0/carrier) -eq 1 ]
    iface eth0 inet6 auto
        pre-up ip link set eth0 up && sleep 1
        pre-up [ $(cat /sys/class/net/eth0/carrier) -eq 1 ]
    

    (скорее всего не нужен для настроек ipv6, это наверное экономит 1с. Вы можете даже удалить весь раздел inet6, если не заинтересованы)

    Возвращаемый результат теста заставит ifupсчитать конфигурацию неудачной и оставит логическую(ifupdownточку зрения )состояния карты отключенной.

Затем вы можете ввести ifup eth0или service networking restartпозже, после подключения кабеля.

4
27.01.2020, 20:54

Теги

Похожие вопросы