Как я могу настроить Mythbuntu 11.10 для ожидания аренды DCHP перед завершением загрузки и запуском зависимых от сети приложений?
У меня есть чистая установка Mythbuntu 11.10, действующая только как внешний интерфейс. Это сеть с использованием eth0, и у меня есть маршрутизатор, действующий в качестве DHCP-сервера в той же подсети.
Интерфейс загружается и автоматически входит в систему и запускает интерфейс Myth.
Приблизительно каждые 3 из 4-х загрузок, коробка еще не получила IP-адрес через DHCP, прежде чем начнется миф. Это заставляет Миф войти в режим конфигурации. Если я отменяю, то Myth запускается нормально, так как ответ DHCP получен.
Как изменить загрузку, чтобы дождаться ответа DHCP перед входом в систему?
2 ответа
Спасибо Оли, я выбрал твой вариант 3, который я опишу здесь на случай, если кому-то еще будет интересно:
Удалите сетевой менеджер в xmbc (не уверен, что это важно, но мне это не нужно):
# apt-get remove network-manager
Сконфигурируйте /etc/network/interfaces, добавив:
auto eth0 iface eth0 inet dhcp
Скажите lightdm, что запускать следует только при появлении интерфейса, отличного от обратной петли, в дополнение к существующим условиям запуска, путем изменения запуска запуска в
/etc/init/lightdm.conf
start on ((filesystem and runlevel [!06] and started dbus and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1 or stopped udev-fallback-graphics) and net-device-up IFACE!=lo) or runlevel PREVLEVEL=S)
Я добавил условие net-device-up IFACE!=lo
,
Пока что, похоже, хорошо работает.
Три варианта для вас, начиная от ручного, но простого к ручному и нуждающемуся в докторантуре (в этой прогрессии).
1. Не используйте DHCP.
Выделите статический IP-адрес в маршрутизаторе (чтобы он не передавал этот IP-адрес другому устройству), а затем настройте Ubuntu для использования этого статического адреса. Вы можете сделать это либо с помощью Network Manager (если вы это используете), либо отредактировав /etc/network/interfaces
с чем-то вроде этого:
auto eth0
iface eth0 inet static
address 192.168.0.4
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
2. Сядьте и подождите, пока ваша сеть не подключится и не получит IP
Я говорю о написании сценария, который проверяет, работает ли ваша сетевая карта. Для простоты вы можете объединить все, что запускает XBMC, с проверкой вроде ( украденной с форумов):
#!/bin/bash
until wget -q -O - http://www.google.com | grep Lucky > /dev/null; do
sleep 10
done
xbmc
И вызвать этот сценарий вместо вызова xmbc
непосредственно.
3. Поиграйте с Upstart и сломайте его, чтобы выполнить свою волю.
Upstart - это то, что управляет всеми вещами системы и управляет, когда вещи запускаются на основе событий, которые испускает каждое задание. Это кажется вам наиболее приятным маршрутом, потому что вы можете сделать так, чтобы он излучал сигнал именно тогда, когда ему назначен адрес DHCP.
Проблема в том, что вам придется по-настоящему копаться в процессе загрузки, чтобы что-то изменить. Я не знаю достаточно об этом, чтобы разумно помочь.