• 首页
  • 狐文
  • 狐图
  • About
狐窝
OvO
  1. 首页
  2. Linux
  3. 正文

编译 Linode 内核模块小白教程,以 tcp_hybla 为例

2017年08月04日 73点热度 0人点赞 0条评论

from---https://www.v2ex.com/t/114788

国情原因,中美线路有时掉包率会很高,导致网站访问速度慢,Linux 机器缺省的TCP协议发包算法是cubic,如果改为hybla,在掉包率高时可以大幅提高访问速度;如果cubic只能流畅观看480p的视频,改为hybla则可以流畅观看720p的视频,效果提升是明显的,但很多朋友不会编译内核模块,写个小白教程供大家参考,照以下几步操作一遍,你会发现编译内核模块原来相当简单。

以下教程每行#后面的为需要输入的命令,操作时需要root权限,需要你会使用vi,我的系统是Ubuntu 12.04.2 LTS,其他Linux系统命令不会差别很大,请按自己的情况修改内核名称。
1. 查看你的机器内核版本:
#uname -r
3.11.6-x86_64-linode35

2. 去 https://www.kernel.org/pub/linux/kernel/v3.0/ 下载相同版本的源码到任意目录,解压
#mkdir /root/mykernel
#cd /root/mykernel
#wget https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.11.6.tar.gz
#tar xzvf linux-3.11.6.tar.gz

3. 安装内核编译工具
#apt-get update && apt-get install -y build-essential libncurses5-dev

4. 复制Linode原来的内核编译配置文件到源码根目录,在CONFIG_TCP_CONG_CUBIC=y下面增加一行 CONFIG_TCP_CONG_HYBLA=y,再生成编译模块需要的内核
#cd linux-3.11.6
#zcat /proc/config.gz > .config
#vi .config
查找CONFIG_TCP_CONG_CUBIC=y,在下面增加一行 CONFIG_TCP_CONG_HYBLA=y,保存
#make

5. 耐心等待编译内核完成,单核编译大约需15分钟,完成后,进入模块所在的目录,编写Makefile
#cd net/ipv4/
#mv Makefile Makefile.old
#vi Makefile
以下是Makefle的内容,注意要把KDIR修改为你自己的源码路径,其他则照抄就可以了

# Makefile for tcp_hybla.ko
obj-m := tcp_hybla.o
KDIR := /root/mykernel/linux-3.11.6
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

6.进入源码根目录,编译模块
#cd /root/mykernel/linux-3.11.6/
#make modules

7.进入到模块所在目录,复制生成的 tcp_hybla.ko 到加载目录,测试加载模块
#cd /root/mykernel/linux-3.11.6/net/ipv4
#cp tcp_hybla.ko /root/mykernel/
#cd /root/mykernel/
加载前
#sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = cubic reno
#insmod tcp_hybla.ko
加载后
#sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = cubic reno hybla
设置hybal为优先
#sysctl net.ipv4.tcp_congestion_control=hybla

8.设置开机自动加载模块,把tcp_hybla.ko 复制到 /lib/modules/3.11.6-x86_64-linode35/kernel/net/ipv4
#cd /lib/modules/3.11.6-x86_64-linode35
#mkdir -p kernel/net/ipv4
#cd kernel/net/ipv4
#cp /root/mykernel/tcp_hybla.ko ./
#cd /lib/modules/3.11.6-x86_64-linode35
#depmod -a

9.修改/etc/sysctl.conf 开机自动设置hybal为优先
#vi /etc/sysctl.conf
net.ipv4.tcp_congestion_control = hybla

用这9步就可以了,只是动态加载模块,不用更换内核,不用停机重启,不影响网站正常运营,相当方便,值得尝试,参考这个方法可以为 Linode 动态加载任何需要的内核模块,如fastopen,htcp,highspeed 等,有任何问题请到推上找我交流 @interwebdev ,转载请注明出处( http://www.fslk.net/?p=822 ) ...

标签: 暂无
最后更新:2017年08月04日

OvO

狐狸

点赞
< 上一篇
下一篇 >
最新 热点 随机
最新 热点 随机
钛备份或小米系统备份功能备份出来的APK无法正常还原 BBR安装启用 安装docker mitmproxy 调试方法 Android SDK 版本选择 Perdition Mail代理服务器配置 HAProxy SSL代理 Openssl 中间人SSL代理 Stunnel SSL to SSL代理 NGINX反代IMAP配置 各种设备User Agent Torrent下载工具推荐 用 rar2john+hashcat 破解 RAR 文件密码 2020最好的Linux发行版 关闭新版chrome工具栏上拼图图标 Office 下载、安装、激活,有它就够了! Android 非官方的发行版 openwrt添加autoconf-archive
NGINX反代IMAP配置Stunnel SSL to SSL代理Openssl 中间人SSL代理HAProxy SSL代理Perdition Mail代理服务器配置Android SDK 版本选择mitmproxy 调试方法安装dockerBBR安装启用钛备份或小米系统备份功能备份出来的APK无法正常还原
2019年的人们如何生成HTTPS证书 linux指定nologin用户执行命令 openwrt添加autoconf-archive git worktree 使用笔记 Gmail邮件客户端跳板解决方案 Manjaro 安装记 tmux:适用于重度命令行 Linux 用户的终端复用器 比较好用的PHP防注入漏洞过滤函数代码 Oracle中清除BIN$开头的垃圾表的解决办法 Centos7.4源码编译安装GCC7.2.0 15个最受欢迎的Python开源框架 LinuxMint18安装中文输入法 30个国外黑色网站设计欣赏 ascii 将图片转换成ascii字符图像,基于canvas ORACLE 数据备份、恢复以及导入时表空间不存在的解决方案 firefox 62 双击关闭标签页 Python 定义编码 关于ubuntu循环依赖软件的删除
标签聚合
blog ssl git 下载 e docker chromium 密码 镜像 网卡 https chrome yum 路由 linux 安装

COPYRIGHT © 2020 狐窝. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS