|
发表于 2009-12-29 05:00:21
|
显示全部楼层
回 doom 兄,
快三年前的事情了,很多细节要回去看代码了。不过移植大致分三部分。
1. 编译 upstart
交叉编译,没什么多说的。打了几个补丁,记得当时系统没有 inotify,给 upstart 打了补丁去掉了 inotify 的使用;为了减小系统尺寸,没用 busybox 的 reboot 命令,用了 upstart 提供的,打了补丁使 reboot 能发 event ;其他的补丁不记得了。
2. 用 upstart 做为 system event 管理器
upstart 提供函数接口,可以发送和接受 event。更改了 voip 系统的 system event 接口,采用 upstart 提供的接口。这样就将嵌入系统和 upstart 接合到了一起。
3. upstart scripts
写脚本,这是工作量最大的部分。通过大量的脚本将网络接口和 voip 系统功能联系起来。
比如,当网线插入后,ifmon (net interface daemon,自己写的)就会监测到这个变化,发出 link-up event;
dhcpc 脚本 收到 link-up event,就会启动 dhcp client;当得到 ip 后,dhcpc 脚本就会发出 ip-up event along with the ip address;
voip 系统收到 ip-up event 就会对系统做一些设置,启动 voip stack;
一些网络之外的功能,比如更改系统用设置,firmware 升级,都何以用 upstart script 完成。
两年前的时候,upstart 还不是很成熟,我想现在 upstart 应该更好用了吧。 |
|