显示标签为“NetworkManager”的博文。显示所有博文
显示标签为“NetworkManager”的博文。显示所有博文

2012年9月1日星期六

NetworkManager和Upstart

Ubuntu桌面下,网络是由NetworkManager管理的。NM很好用,但是有时要配置复杂网络,只能用interfaces等网络配置文件搞定。

我给eth0设置了静态IP,用于办公室环境(其实也是DHCP网络)。回家之后这个静态IP得不到,开机的时候会等待2分钟时间让网络起来,先显示:
Waiting for network configuration...
1分钟后是:
Waiting up to 60 more seconds for network configuration...
最后是:
Booting system without full network configuration...
这在Launchpad上有N个bug报告。之后进入Ubuntu,interfaces文件没有生效,而且NM都没自动启动呢。来分析一下这个问题。

现在的Ubuntu在/etc/init.d下,System V Init任务和Upstart任务都有。如果是Upstart任务,则都链接到/lib/init/upstart-job,如NM:
tux@macbook:/etc/init.d(0)$ ls -l network-manager
lrwxrwxrwx 1 root root 21 May 25 12:01 network-manager -> /lib/init/upstart-job
开始我看到NM在/etc/rc?.d下没有启动脚本,就用update-rc.d创建了链接,但还是不能自动启动。后来才明白Upstart任务的启动和停止控制不在/etc/rc?.d目录下,而是在/etc/init目录。NM的配置文件为/etc/init/network-manager.conf。里面有:
start on (local-filesystems
      and started dbus
      and static-network-up)
就是说NM要在local-filesystem, dbusstatic-network-up之后才会启动,而这个Upstart Event(事件)应该是要在interfaces中的网络接口启用之后才会发生(Emit)。所以如果interfaces文件失效,NW也起不来。

那么开机等待的两分钟在哪里配置的呢?看了这个文章后才知道,是在/etc/init/failsafe.conf里面配置的。具体看该文件可以知道个大概。

2010年11月24日星期三

SSH Tunnel不能自动启动

我在GNOME的Startup Application里面添加了一个启动SSH隧道的脚本,内容只有一行建立隧道的SSH命令。以前都可以自动启动,最近两台电脑上都不能自动启动了,进去桌面后没有隧道,要手动执行一遍才可以。

我在启动脚本里面添加了一行zenity --calendar,这样可以弹出一个日历对话框。注销后再进入桌面,日历能出来,说明脚本被执行了,但是隧道没有建立。试了试在SSH命令前面加一行sleep 5,让等5秒再执行脚本。注销再进入,脚本就可以自动启动了。

猜测原因是这样的。脚本立刻启动的话,NetworkMananger还没有把网络设置好,导致隧道无法成功建立。而等上几秒再建立隧道,此时网络已经连好(由路由器分配静态IP地址),隧道也可以建立了。NetworkManager确实是GNOME的启动脚本,也在Startup Application里面。如果注销了桌面,网络也就断了。

2010年6月29日星期二

Network Manager

Network Manager是Ubuntu的网络连接工具,可以让桌面用户方便地管理网络连接。但是Debian系的网络连接在/etc/network/interfaces里面。Network Manager不接管interfaces文件中配置的网络接口。