2008年10月9日星期四

升级 Ubuntu 8.10 后无法使用网络的问题

今天将系统从 Ubuntu 8.04 升级到 8.10 beta,基本上一切正常。只是本来在公司用得好好的网络链接,回到宿舍后却突然无法使用了。

使用 ifconfig 发现 eth0 没有从路由器上获得 IP 地址。在 /var/log/syslog 中看到系统不断地重复输出(3秒一次)

Oct 7 22:34:54 ubuntu NetworkManager: disconnected by the system bus.
Oct 7 22:34:57 ubuntu NetworkManager: nm_dbus_manager_start_service(): Could not acquire the NetworkManager service as it is already taken.

通过浏览日志发现,系统在启动的时候其实已经通过 DHCP 获得了 IP 地址,而且 Activation (eth0) Stage 的五个步骤也全部成功完成。但是随后输出一下日志

Oct 7 22:20:22 ubuntu NetworkManager: (eth0): carrier now OFF (device state 8 )
Oct 7 22:20:22 ubuntu NetworkManager: (eth0): device state change: 8 -> 2
Oct 7 22:20:22 ubuntu NetworkManager: (eth0): deactivating device.
Oct 7 22:20:22 ubuntu NetworkManager: eth0: canceled DHCP transaction, dhcp client pid 6853

不知道为什么会突然 carrier OFF。考虑到网上很多用户反映 Ubuntu 8.10 的 NetworkManager 不好用,不能排除新版本的 NetworkManager 依旧存在某些 bug。

如果需要快速恢复系统的网络链接,一个快捷的方法是编辑 /etc/network/interfaces 文件。我打开文件后发现其中内容只有 lo 的配置:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface

于是为 eth0(有线链接)和 eth1(无线链接)加上配置,如下:

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp

保存之后执行
sudo /etc/init.d/networking restart
即可恢复。但是这时 NetworkManager 不再管理网络链接,点击其图标会提示 device is unmanaged。

如果希望保留 NetworkManager 的特性,还可以编辑 /etc/NetworkManager/nm-system-settings.conf,将其中的

[ifupdown]
managed=false

修改成为

[ifupdown]
managed=true

即可。

http://www.dreamcode.org/blog/posts/32.html原贴地址