前言
運行環境為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的示范程序進行測試了。