2009年8月1日星期六

ippbx我长见识了

wiki了一下,ippbx貌似支持的是xml-rpc的数据传输形式。而我感觉那个ethereal似乎只是测试用的,知道有反应了。

因此ippbx配置里面的
config_url = reg.php就表示ippbx向这个页面发送了数据。

php中正好有xml-rpc的扩展http://phpxmlrpc.sourceforge.net/
xml数据是以gobal request的形式传输过来的,因此只要获取gobal request就可以了,基本用法如下:

// this is the function exposed as "get_time()"
function return_time($method, $args) {
return date('Ymd\THis');
}

$server = xmlrpc_server_create() or die("Can't create server");
xmlrpc_server_register_method($server, 'return_time', 'get_time')
or die("Can't register method.");

$request = $GLOBALS['HTTP_RAW_POST_DATA'];
$options = array('output_type' => 'xml', 'version' => 'xmlrpc');

print xmlrpc_server_call_method($server, $request, NULL, $options)
or die("Can't call method");

xmlrpc_server_destroy($server);

就生成了xml这样,就可以进一步用php解析这一个请求了,貌似是这样的。你先试试看。

kernel安装

历时两个月,我亲爱的内核终于出炉了,这个可是原版的太阳炉。。。

Linux内核kernel和所有的操作系统一样提供了对计算机硬件的统一视图,是硬件一个更高的抽象层。为用户和用户空间程序提供如下特性:
1.进程
2.信号和旗语
3.虚拟内存(swapping,paging,mapping)
4.文件系统
5.基本输入输出
6.进程通信(管道和互联网)
kernel在系统启动是被载入到内存,启动里面我写了。

kernel.org 开发的kernel被称为vanilla内核。而各个版本的Linux都会有自己的kernel一般就是在vanilla kernel上面打一些补丁。一般vanilla kernel都不能很好的在其他发行版Linux上运行。不过听说debian是个例外。
安装:
1.先确定系统是否安装了必需的软件 rpmdevtools yum-utils,
su -c "yum install yum-utils rpmdevtools"
2.准备内核的编译环境
rpmdev-setuptree
3.用yum软件管理程序的可以输入命令
yumdownloader --source kernel
就可以在镜像源里面下到kernel-.src.rpm文件。
4.确定编译内核说需要的软件是否全部安装。
su -c "yum-builddep kernel-.src.rpm"
5.安装rpm包
rpm -Uvh kernel-.src.rpm
6.可以重新将rpm编译打包,但也可以直接安装二进制文件。我在rpmbuild出错了看不懂原因,就只好直接安装二进制文件了。
7.进入~/rpmbuild/BUILD/kernel-/linux-/
8.先配置make oldconfig || make defconfig || make menuconfig
8.使用root权限一口气 make && make modules && make modules_install install
9.Over,重启

P.S. 我第一遍安装成功的kernel不能用是因为配置时开启了PAE选项,所谓PAE就是Physical Address Extension,原来32位电脑只能装4 Giga的内存这个特性是扩充内存用的。intel Pentium Pro及以后的电脑除了我这个品牌Pentium M都支持PAE,这句话比较寒。。。
另外,其实如果只是开发Linux驱动,只要装个kernel-headers 和 kernel-devel包就可以了。