前言
運(yùn)行環(huán)境為Centos 6.5系統(tǒng),默認(rèn)內(nèi)核為2.6.32-431.el6.x86_64,下面所有編譯安裝操作是以root
用戶權(quán)限進(jìn)行操作。
編譯安裝fastsocket內(nèi)核
第一步需要下載代碼,當(dāng)然這是廢話了,下載到/opt目錄下:
git clone https:
編譯安裝
下載之后,需要進(jìn)入其目錄中:
cd fastsocket/kernel
因?yàn)槭巧婕暗絻?nèi)核嘛,編譯之前需要做一些參數(shù)選項(xiàng)配置,使用make config
會(huì)累死人的,好幾千個(gè)選項(xiàng)參數(shù)需要你一一配置,大部分時(shí)間,默認(rèn)配置就挺好的:
make defconfig
然后嘛,編譯內(nèi)核的節(jié)奏:
make
內(nèi)核編譯相當(dāng)耗費(fèi)時(shí)間,至少20分鐘時(shí)間。之后緊接著是編譯所需的內(nèi)核模塊,fastsocket模塊:
make modules_install
編譯完成之后,最后一條輸出,會(huì)看到:
DEPMOD 2.6.32-431.17.1.el6.FASTSOCKET
fastsocket內(nèi)核模塊編譯好之后,需要安裝內(nèi)核:
make install
上面命令其實(shí)執(zhí)行shell腳本進(jìn)行安裝:
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內(nèi)核模塊已經(jīng)構(gòu)建安裝完畢了,但需要告知Linux系統(tǒng)在下次啟動(dòng)的時(shí)候切換到新編譯的、包含有fastsocket模塊的內(nèi)核。
配置啟動(dòng)時(shí)需要切換的內(nèi)核
這部分需要在/etc/grup.conf中配置,現(xiàn)在看一下其文件內(nèi)容:
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
,表示目前系統(tǒng)選擇的以原先內(nèi)核作作為啟動(dòng)項(xiàng),原先位于第二個(gè)root (hd0,0)
后面,需要切換到新的內(nèi)核下面,需要修改default=0
,保存后,reboot重啟系統(tǒng),使之生效。
檢測(cè)生效
系統(tǒng)重啟后,需要加載fastsocket模塊到系統(tǒng)運(yùn)行中去,下面以默認(rèn)選項(xiàng)參數(shù)方式加載:
modprobe fastsocket
加載之后,列出當(dāng)前系統(tǒng)所加載模塊列表,檢查是否成功
lsmod | grep fastsocket
若能看到類似輸出信息,表示OK:
fastsocket 39766 0
開(kāi)始構(gòu)建libfastsocket.so鏈接庫(kù)文件
上面內(nèi)核模塊安裝好之后,可以構(gòu)建fastsocket的動(dòng)態(tài)鏈接庫(kù)文件了:
cd /opt/fastsocket/library/
make
可能會(huì)收到一些警告信息,無(wú)礙:
gcc -g -shared -ldl -fPIC libsocket.c -o libfsocket.so -Wall
libsocket.c: 在函數(shù)‘fastsocket_init’中:
libsocket.c:59: 警告:隱式聲明函數(shù)‘open’
libsocket.c: 在函數(shù)‘fastsocket_expand_fdset’中:
libsocket.c:109: 警告:隱式聲明函數(shù)‘ioctl’
libsocket.c: 在函數(shù)‘accept’中:
libsocket.c:186: 警告:對(duì)指針賦值時(shí)目標(biāo)與指針?lè)?hào)不一致
libsocket.c: 在函數(shù)‘accept4’中:
libsocket.c:214: 警告:對(duì)指針賦值時(shí)目標(biāo)與指針?lè)?hào)不一致
最后,可以看到gcc編譯之后生成的libfsocket.so
庫(kù)文件,說(shuō)明編譯成功。
小結(jié)
OK,編譯安裝到此結(jié)束,后面就是如何使用fastsocket的示范程序進(jìn)行測(cè)試了。