Arch Linux dhcpd не запускается при загрузке -не удается найти объявление подсети

Мне пришлось сделать это сегодня после того, как моя SD-карта rpi3b+ умерла. В итоге я написал скрипт на python, делающий то же, что вы делали в своем скрипте bash выше, за исключением того, что он автоматически выдает пути к файлам. Посмотреть можно здесь:https://github.com/zkrx/rescue2path

В этом решении я также проверяю наличие -еще не -очищенных фрагментов данных ('/' ). Скрапинг здесь занял очень много времени, и я просто остановился, не успев завершить его.

Эта запись в Arch wiki оказалась особенно полезной:https://wiki.archlinux.org/index.php/Identify_damaged_files

1
16.08.2016, 02:47
2 ответа

Я нашел ответ на проблему! Проблема в том, что процесс загрузки пытается запустить службу DHCP при запуске сети / настраивается, поэтому DHCP не может найти рабочий интерфейс для привязки. Вот почему он всегда работал, когда я запускал службу start dhcpd вручную и не работал при загрузке.

Я нашел ответ на этот вопрос: dhcp на Arch Linux - rasp-pi . Пользователь использовал объявление перезапуска в файле модуля, что заставляло службу повторять попытку каждые 6 секунд, пока служба не была запущена. - Это временное решение у меня тоже сработало.

Я покопался на веб-сайте systemd на странице специальных целей и нашел эту ссылку на запускающие службы после того, как сеть заработала . Из рекомендаций этой страницы я внес следующие изменения:

  • В файле модуля dhcpd4 @ .service я удалил Before = ... , изменил After на After = network-online.target и изменил Wants на Wants = network-online.target
  • Я также включил systemd-networkd-wait-online.service для запуска при загрузке.

Теперь он работает при загрузке! Однако на странице рекомендаций действительно сказано, что включение systemd-networkd-wait-online.service действительно замедляет время загрузки и может замедлиться на 90 секунд (если я правильно прочитал). Хотя в моем случае я заметил только увеличение времени загрузки на 1-2 секунды.

0
28.01.2020, 01:12

Вы пытаетесь ограничить dhcpd только eth0? Если нет, вы можете просто использовать стандартный служебный файл systemd dhcpd4.service.

Если да, попробуйте изменить

After=network-pre.target
Before=network.target

на

After=network.target

Это также указано в стандартном файле dhcpd4.service. Похоже, что dhcpd нужен активный интерфейс - что не гарантируется, если он запущен до network.target.

0
28.01.2020, 01:12

Теги

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