我全新安装了 Mythbuntu 11.10,仅用作前端。它使用 eth0 联网,并且在同一子网上有一个路由器用作 DHCP 服务器。
前端启动并自动登录并运行Myth前端。
然而,大约每 4 次启动中有 3 次,在 myth 启动之前,盒子还没有通过 DHCP 获取 IP 地址。这导致 Myth 进入配置模式。如果我取消,则 Myth 正常启动,因为已收到 DHCP 响应。
如何更改启动方式以等待 DHCP 响应后再登录?
答案1
为您提供三种选择,从手动但简单到手动且需要博士学位(按此顺序)。
1.不要使用 DHCP。
在路由器中分配一个静态 IP(这样它就不会将该 IP 提供给其他设备),然后配置 Ubuntu 以使用该静态地址。您可以使用网络管理器(如果您正在使用它)或通过/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 地址时准确发出信号。
问题是你必须真正深入研究启动过程才能做出改变。我对此了解不够多,无法提供合理的帮助。
答案2
谢谢 Oli,我选择了你的选项 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
。
到目前为止,一切似乎运行良好。