Как начать работу в сети на проводном интерфейсе перед входом в Ubuntu Desktop Edition

17

проблема

Ubuntu 9.10 Desktop Edition (и, возможно, также и предыдущие версии, я их не проверял) не имеет сетевых подключений после загрузки до тех пор, пока в систему не войдет хотя бы 1 пользователь. Это означает, что любые службы, для которых требуется сеть (например, openssh-сервер), не будут доступны до кто-то входит в систему локально через gdm, kdm или TTY.

Фон

Ubuntu 9.10 Desktop Edition использует сервис NetworkManager для получения команд из апплета nm в Gnome (или его эквивалента в KDE). Насколько я понимаю, пока NetworkManager работает при загрузке, он не выдает никаких команд для подключения, пока вы не войдете в систему в первый раз, потому что nm-applet не будет работать, пока вы не войдете в систему и не начнете сеанс Gnome (или аналогичный для KDE). Я не уверен, что побуждает NetworkManager подключаться к сети при входе через TTY.

Есть несколько соответствующих переменных, участвующих в запуске сетевых подключений, включая:

  • Проводная и беспроводная связь (и полученные драйверы, SSID, пароли и приоритеты)
  • Статический против DHCP
  • Несколько интерфейсов

Ограничения

  • Поддержка Ubuntu 9.10 Karmic Koala (бонусные баллы за дополнительные поддерживаемые версии)
  • Поддержка проводного интерфейса eth0
  • Получить IP-адрес через DHCP
  • Получать информацию DNS через DHCP (очевидно, DHCP-сервер должен предоставить эту информацию)
  • Включите сеть в нужное время (например, через некоторое время после загрузки файловых систем, но до запуска сетевых служб, таких как ssh)
  • Переключение дистрибутивов или версий (например, в Server Edition) не является приемлемым решением
  • Переключение на статическую IP-конфигурацию не является приемлемым решением.

Вопрос

  • Как начать работу в сети на проводном интерфейсе перед входом в Ubuntu Desktop Edition?

Смотрите также

Ссылки

дородный
источник

Ответы:

9

Чтобы ваш сетевой интерфейс автоматически настраивался через DHCP при загрузке, добавьте следующие строки в /etc/network/interfaces:

auto eth0
iface eth0 inet dhcp

Это должно привести ваш интерфейс в действие, даже если NetworkManager не запущен. Вы даже можете удалить пакет network-manager, если хотите.

goedson
источник
Ах, это была просто опечатка, когда я задал вопрос, но это то, что я пытался. Тем не менее, выполнение /etc/init.d/networking restart дает: «* Переконфигурирование сетевых интерфейсов ...», но интерфейс не задействован, тем более получить IP. Перезагрузка не вызывает интерфейс с этими настройками.
Бурли
Я полагаю, что: auth eth0 вместо: auto eth0 в вашем посте есть опечатка, которую вы сделали только в посте, верно?
Goedson
Я только что сделал свежую установку Ubuntu 9.10, отредактировал / etc / network / interfaces, как отмечено выше, и выпуск sudo /etc/init.d/networking restartдействительно запустил eth0 и настроил его через DHCP.
Goedson
Боже мой, Мега-провал! : facepalm: У меня не было оригинальной опечатки, о которой вы упоминали, но у меня действительно есть 'auth' вместо 'auto' в первой строке. Я считаю, что вы должны изменить свой ответ, чтобы я мог изменить свой голос, потому что он был слишком длинным (wth?). Я удалил раздел «Что я пытался» из вопроса, чтобы избежать путаницы, так как я усердно опечатывал. Возможно, добавьте что-то вроде: «Добавьте следующее, /etc/network/interfacesчтобы NetworkManager не мог управлять интерфейсом и вызывать его через dhcp». Я должен проверить и посмотреть, будет ли это исправление запускаться при загрузке с установленным NM…
Burly
Я изменил ответ, чтобы было ясно, каково решение.
Goedson
1

Debian / Ubuntu имеет собственную программу для управления серверами во время загрузки.

Пытаться update-rc.d STARTUP-SCRIPT defaults

Найдите конкретный скрипт для eth0 и включите его с этим.

Вы всегда можете сделать свой собственный скрипт, поместить его в init.d, и выполнение предыдущей команды загрузит его во время загрузки.

или просто поместите эти команды (ifconfig up, dhcpcd) в /etc/rc.local (этот файл get читается каждый раз при загрузке)

Солнечный свет Райдер
источник
Я использовал update-rc.d и раньше, но проблема в том, чтобы найти STARTUP-SCRIPT, специфичный для eth0. По крайней мере, в Ubuntu 9.10 DE его нет. Существует только сценарий /etc/init.d/networking, который на самом деле просто вызывает выскочившее задание (запуск сети / lib / init / update-job - это то, что он вызывает конкретно). Как отмечалось выше, вызов /etc/init.d/networking start, запуск / lib / init / update-job и / или запуск / перезапуск службы сети не приводят к появлению интерфейса, а тем более получают IP. Я мог написать свой собственный сценарий, но я надеялся на более элегантное решение.
Бурли
Помещение dhclient eth0 в rc.local может быть моей единственной возможностью. Мне нужно попробовать это, чтобы увидеть, работает ли оно вообще. Проблема с его размещением здесь заключается в том, что другие службы запуска не могут зависеть от него (например, ssh), потому что rc.local не выполняется до тех пор, пока не будут запущены все системные службы.
Бурли
1
ВОЗМОЖНОЕ РЕШЕНИЕ: Добавление dhclient eth0в /etc/rc.local правильно запускает интерфейс eth0 при запуске и получает IP через DHCP. По крайней мере, для меня SSH также доступен до того, как кто-нибудь войдет в систему локально, так как openssh-server настроен на запуск с уровнями запуска 234. Я не знаю, будут ли все службы с поддержкой сети работать успешно, если интерфейс был запущен в rc.local ( например, ntpdate), потому что rc.local запускается после системных служб.
Burly