前言
运行环境为Centos 6.5系统,默认内核为2.6.32-431.el6.x86_64,下面所有编译安装操作是以root
用户权限进行操作。
编译安装fastsocket内核
第一步需要下载代码,当然这是废话了,下载到/opt目录下:
git clone https:
编译安装
下载之后,需要进入其目录中:
cd fastsocket/kernel
因为是涉及到内核嘛,编译之前需要做一些参数选项配置,使用make config
会累死人的,好几千个选项参数需要你一一配置,大部分时间,默认配置就挺好的:
make defconfig
然后嘛,编译内核的节奏:
make
内核编译相当耗费时间,至少20分钟时间。之后紧接着是编译所需的内核模块,fastsocket模块:
make modules_install
编译完成之后,最后一条输出,会看到:
DEPMOD 2.6.32-431.17.1.el6.FASTSOCKET
fastsocket内核模块编译好之后,需要安装内核:
make install
上面命令其实执行shell脚本进行安装:
sh /opt/fastsocket/kernel/arch/x86/boot/install.sh 2.6.32-431.17.1.el6.FASTSOCKET arch/x86/boot/bzImage \ System.map "/boot"
基本上,fastsocket内核模块已经构建安装完毕了,但需要告知Linux系统在下次启动的时候切换到新编译的、包含有fastsocket模块的内核。
配置启动时需要切换的内核
这部分需要在/etc/grup.conf中配置,现在看一下其文件内容:
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-431.17.1.el6.FASTSOCKET)
root (hd0,0)
kernel /vmlinuz-2.6.32-431.17.1.el6.FASTSOCKET ro root=/dev/mapper/vg_centos6-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_centos6/lv_swap crashkernel=auto LANG=zh_CN.UTF-8 rd_LVM_LV=vg_centos6/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-431.17.1.el6.FASTSOCKET.img
title CentOS (2.6.32-431.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vg_centos6-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_centos6/lv_swap crashkernel=auto LANG=zh_CN.UTF-8 rd_LVM_LV=vg_centos6/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-431.el6.x86_64.img
defautl=1
,表示目前系统选择的以原先内核作作为启动项,原先位于第二个root (hd0,0)
后面,需要切换到新的内核下面,需要修改default=0
,保存后,reboot重启系统,使之生效。
检测生效
系统重启后,需要加载fastsocket模块到系统运行中去,下面以默认选项参数方式加载:
modprobe fastsocket
加载之后,列出当前系统所加载模块列表,检查是否成功
lsmod | grep fastsocket
若能看到类似输出信息,表示OK:
fastsocket 39766 0
开始构建libfastsocket.so链接库文件
上面内核模块安装好之后,可以构建fastsocket的动态链接库文件了:
cd /opt/fastsocket/library/
make
可能会收到一些警告信息,无碍:
gcc -g -shared -ldl -fPIC libsocket.c -o libfsocket.so -Wall
libsocket.c: 在函数‘fastsocket_init’中:
libsocket.c:59: 警告:隐式声明函数‘open’
libsocket.c: 在函数‘fastsocket_expand_fdset’中:
libsocket.c:109: 警告:隐式声明函数‘ioctl’
libsocket.c: 在函数‘accept’中:
libsocket.c:186: 警告:对指针赋值时目标与指针符号不一致
libsocket.c: 在函数‘accept4’中:
libsocket.c:214: 警告:对指针赋值时目标与指针符号不一致
最后,可以看到gcc编译之后生成的libfsocket.so
库文件,说明编译成功。
小结
OK,编译安装到此结束,后面就是如何使用fastsocket的示范程序进行测试了。