Что делает systemctl включающим netctl.service

10

У меня есть небольшой сервер, который запускает Arch. Я хотел использовать только dhcpcdдля моего подключения к Ethernet, поэтому я отключил netctl.serviceи netctl-ifplugd.service. Оказывается, это не сработало, и у меня больше нет возможности подключиться к машине. У сервера есть корневой каталог на USB-ключе, который я могу смонтировать на своем рабочем столе, поэтому вопрос таков:

Как я могу systemctl enable netctl.serviceманипулировать файлами и / или символическими ссылками на этом USB?

Эквивалентный альтернативный вопрос: что делает systemctl enable netctl.service?

Azrael3000
источник
netctl - это командная строка, эквивалентная графическому NetworkManager. netctl запускает службу dhcpd, если dhcpd.service не включен. ifplugd контролирует потерю кабельного соединения. Единственный способ, который мне известен, поскольку сервисы взаимозависимы, - это использовать systemctl enable netctl && systemctl start netctlили systemctl enable dhcpd && systemctl start dhcpdс компьютера, к которому вы не можете подключиться.
eyoung100
Мой dhcpcd остается включенным. Однажды я изменил конфигурацию так, чтобы у меня был статический ip, но я отменил изменения в dhcpcd.conf. Тем не менее, сервер не отображается в моем списке клиентов маршрутизаторов. Невозможно взаимодействовать с сервером охраны, поскольку к нему не нужно подключать ни монитор, ни клавиатуру.
Azrael3000
Есть ли последовательный порт?
eyoung100
Нет там нет.
Azrael3000
Как вы установили его в первый раз ... Вам нужно повторно включить службу netctl, поскольку netctl говорит dhcpd использовать статический ip, который вам нужно каким-то образом получить в терминал
eyoung100

Ответы:

12

У меня есть небольшой сервер, который запускает Arch. Я хотел использовать только dhcpcd для подключения к Ethernet, поэтому я отключил netctl.service и netctl-ifplugd.service. Оказывается, это не сработало, и у меня больше нет возможности подключиться к машине.

Вы обязательно включили dhcpcd после отключения netctl?

Как я могу "systemctl включить netctl.service", манипулируя файлами и / или символическими ссылками на этом USB?

Эквивалентный альтернативный вопрос: что делает «systemctl enable netctl.service»?

Все, что systemctl enableнужно сделать, - это создать символические ссылки из /usr/lib/systemd/system/или /etc/systemd/system/в соответствующие целевые каталоги /etc/systemd/system/, а службы в последнем каталоге переопределяют в первом.

Из справочной страницы systemctl (1) :

enable NAME...
    Enable one or more unit files or unit file instances, as
    specified on the command line. This will create a number 
    of symlinks as encoded in the "[Install]" sections of the
    unit files.

Вместо использования systemctl enableвы можете вручную включить службу netctl с помощью следующей команды:

ln -s /usr/lib/systemd/system/netctl.service \
      /etc/systemd/system/multi-user.target.wants/netctl.service

И чтобы отключить его вручную, вы можете использовать следующую команду для удаления символической ссылки, созданной с помощью предыдущей lnкоманды:

rm /etc/systemd/system/multi-user.target.wants/netctl.service

Подходящий целевой каталог можно найти, посмотрев WantedByнастройку в [Install]разделе рассматриваемого служебного файла, хотя иногда Aliasвместо него есть старые служебные файлы, WantedByи вы можете WantedByвместо этого перейти на использование , но оба будут работать так же хорошо.

Вместо того, чтобы вернуться к использованию netctl, вы можете сначала проверить, что служба dhcpcd была включена правильно, и если это так, вы можете использовать journalctls --directoryили --rootflags, чтобы проверить журналы службы dhcpcd после монтирования файловой системы на другом компьютере и посмотреть, может ли это дать какие-либо подсказки относительно того, почему он не работал должным образом.

kyrias
источник
Жаль, что я должен был проверить перед переустановкой только сейчас. Спасибо за Ваш ответ. Хотя я не могу проверить это сейчас, я приму ваш ответ.
Azrael3000
1
Это лучший ответ! И этот anwser как-то очевиден, потому что каждый раз, когда вы выполняете, systemctl enable netctl.serviceвы получаете вывод CLI, показывающий ваш anwser =)
71GA