问题
Ubuntu 9.10 桌面版(也可能是以前的版本,我还没有测试过它们)在启动后没有网络连接,直到至少 1 个用户登录。这意味着任何需要网络的服务(例如 openssh-server)都不可用,直到有人通过 gdm、kdm 或 TTY 本地登录。
背景
Ubuntu 9.10 桌面版使用 NetworkManager 服务从 Gnome 中的 nm-applet(或 KDE 中的等效程序)获取命令。据我了解,虽然 NetworkManager 在启动时运行,但直到您首次登录时才会发出任何连接命令,因为 nm-applet 直到您登录并启动 Gnome 会话时才会运行(或 KDE 类似)。我不确定是什么促使 NetworkManager 在您通过 TTY 登录时连接到网络。
启动网络连接涉及几个相关变量,包括:
- 有线与无线(以及由此产生的驱动程序、SSID、密码和优先级)
- 静态与 DHCP
- 多种接口
约束
- 支持 Ubuntu 9.10 Karmic Koala(支持其他版本可获加分)
- 支持有线eth0接口
- 通过 DHCP 接收 IP 地址
- 通过 DHCP 接收 DNS 信息(显然 DHCP 服务器必须提供该信息)
- 在适当的时间启用网络(例如,在文件系统加载之后但在 ssh 等网络服务启动之前的某个时间)
- 切换发行版或版本(例如切换至服务器版)不是一个可接受的解决方案
- 切换到静态 IP 配置不是一个可接受的解决方案
问题
- 如何在 Ubuntu 桌面版登录前通过有线接口启动网络连接?
也可以看看
参考
答案1
为了让您的网络接口在启动时通过 DHCP 自动配置,请将以下行添加到 /etc/network/interfaces
:
auto eth0
iface eth0 inet dhcp
即使 NetworkManager 没有运行,这也应该会启动您的接口。如果您愿意,甚至可以删除 network-manager 包。
答案2
Debian/Ubuntu 有自己的程序来在启动时管理服务器。
尝试update-rc.d STARTUP-SCRIPT defaults
搜索 eth0 的特定脚本,并使用此脚本启用它。
您可以随时制作自己的脚本,将其放在 init.d 中,然后运行前面的命令将使其在启动时加载。
或者只是把这些命令(ifconfig up、dhcpcd)放在 /etc/rc.local 中(此文件每次启动时都会读取)