Socket_Kernel_Module 03

Ubuntu 16.04 安装 Docker 17.03 实战指南:内核模块、存储驱动与镜像加速 Docker 是基于 Linux 内核特性(如 cgroups、namespaces 和 union filesystem)构建的容器运行时,其稳定运行依赖内核版本、文件系统模块支持及 cgroup 挂载完整性。Ubuntu 16.04 虽满足最低内核要求(≥3.10),但默认未启用 aufs 模块且 cgroup v1 子系统挂载不全,导致 docker daemon 启动失败;同时官方源中 docker.io 版本陈旧(1.12.6),缺乏对 healthcheck、--mount 等现代功能的支持。本 阅读详情

2.2 修改IPHeader包

IP层的最后一个发送函数是ip_output.c中的ip_finish_output(8.11) , 可以在此添加hook函数,

这里是修改TOS字段,Type of Services,是表示优先级的,由于现在大部分路由器忽略此字段,因此修改TOS不会对现有网络造成影响

 

2.2.1修改 ip_output.c

int (*myHook_IPTOS)(strcut sk_buff*) = 0;

__inline__ int ip_finish_output(struct sk_buff* skb)

{

     //...

     if( myHook_IPTOS)

     {

         myHook_IPTOS(skb);

     }

     //...

}

代码最后 

EXPORT_SYMBOL(myHook_IPTOS);

 

2.2.2编写myHook_IPTOS.c

#define __KERNEL__

#define MODULE

#include <linux/config.h>

#include <linux/module.h>

#include <linux/skbuff.h>

#include <linux/tcp.h>

#include <linux/ip.h>

#include <net/ip.h>

 

extern int (*myHook_IPTOS)(struct sk_buff*);

 

//这的struct sk_buff仍然是2.4的,在2.6中struct sk_buff结构被修改了,基本原理未变

//此部分代码以后再修改为2.6的,

int myHook_IPTOS_impl(struct sk_buff* skb)

{

     struct iphdr* iph;

     struct tcphdr* th;

     iph = skb->nh.iph;

     if( iph->protocol == IPPROTO_TCP)

     {

         skb->h.raw = (unsigned char*)(skb->nh.raw + iph->ihl * 4);

         th = skb->h.th;

         if(( tcp_flag_word(th) & TCP_FLAG_ACK))

         {

             skb->nh.iph->tos = 0xB8;

             ip_send_check(skb->nh.iph);

         }

     }

     return 0;

}

 

static int init_hook( void )
{
    myHook_IPTOS = myHook_IPTOS_impl;  //后门函数指向了真正的实现函数

    printk("myHook_IPTOS installed");        //表示加载成功
    return 0;
}

 

static int exit_hook(void)

{

    myHook_IPTOS= 0;                    //后门函数清0
    printk("myHook_IPTOS removed/n"); //表示卸载成功

    return 0;
}

 

MODULE_LICENSE("GPL"); //表示采用的开放协议

module_init(init_hook);     //为当加载Module时,自动调用init_hook
module_exit(exit_hook);   //当卸载Module时,自动调用exit_hook;

 

2.2.3 编写Makefile 

obj-m := myHook_IPTOS.o

 

all:

     make -C /lib/modules/2.6.24.3/build /

     M=$(PWD) modules

clean:

     make -C /lib/modules/2.6.24.3/build /

     M-$(PWD) modules 

保存后,输入

#make 编译

 

2.2.4 加载卸载

#insmod myHook_IPTOS.ko

#cat /var/log/message

就能看到 "myHook_IPTOS installed",表示加载成功

然后打开Firefox,上上网,

....

#tcpdump

看发送的包

 

#rmmod myHook_IPTOS

#cat /var/log/message

就能看到 "myHook_IPTOS removed",表示卸载成功

 

WSL2+Docker运行vLLM报CUDA kernel错误的根因与解决方案 CUDA kernel错误(如cudaErrorNoKernelImageForDevice)本质是GPU计算能力(Compute Capability)与预编译二进制(PTX/SASS)不匹配的技术现象。其底层原理涉及CUDA运行时、驱动、容器工具链及PyTorch编译目标架构(SM)之间的ABI协同机制;技术价值在于保障大模型推理在异构环境中的确定性执行;典型应用场景包括Windows开发者在WSL2中通过Docker Desktop本地部署vLLM等AI服务;本文聚焦WSL2这一特殊Linux兼容层下 阅读详情

相关推荐

网络数据传输 (从应用层--硬件驱动)

socket_sendto数据发送(用户态-->内核协议栈->网络驱动)

296000的博客 815

CentOS 8 LEMP部署指南:模块化系统下的Nginx+PHP-FPM+MariaDB协同配置

LEMP栈是Linux Web服务的基础技术组合,其核心在于Nginx作为反向代理、PHP-FPM作为FastCGI进程管理器、MariaDB作为兼容MySQL的数据库服务三者间的精确协同。在CentOS 8及Stream 8中,模块化(Modular)软件仓库机制彻底改变了传统安装逻辑——PHP、Nginx、MySQL不再以固定版本打包,而是通过dnf module流(如php:7.4、nginx:1.14、mysql:10.3)实现版本语义化锁定,避免扩展与内核ABI错配。这种设计提升了环境一致性与可复

weixin_30879833的博客 414

Linux通用系统高危漏洞修复案例

2024年3月28日,监 Linux kernel权限提升漏洞(CVE-2024-1086)的PoC/EXP在互联网上公开,该漏洞的CVSS评分为7.8,目前漏洞细节已经公开披露,美国网络安全与基础设施安全局(CISA)6月1日也更新了其已知漏洞(KEV)目录,要求联邦机构在 2024 年 6 月 20 日之前打上补丁,修复追踪编号为 CVE-2024-1086 的 Linux 内核权限提升漏洞。由于该漏洞的公开性,攻击者可能会利用这个漏洞进行恶意攻击,因此建议尽快采取修复措施。

企业实战系列集 ●●● https://ximenjianxue.blog.youkuaiyun.com 4933

Socket_Kernel_Module 06

3 利用proc实现内核和应用层交互Linux中Proc被称为虚拟文件系统,位于/proc中,其实就是内存的内容。可以利用Proc实现内核和应用程序的数据交互。对内核,要使用特殊的函数创建、删除proc文件, 参考下面代码:  3.1内核myProc_test.c代码 #include #include #include #include #include #include

cpusoft 638

Ubuntu 20.04 深度适配 Docker 安装与运行实践

Docker 是容器化技术的核心基础设施,其运行依赖 Linux 内核机制(如 cgroup、namespace)、系统服务(systemd)、安全模块(AppArmor)及存储驱动(overlay2)。在 Ubuntu 20.04 这一长期支持发行版中,cgroup v2 成为默认控制组版本,而 systemd 服务拓扑、snap 沙箱限制、内核模块完整性与 docker.sock 权限策略共同构成独特约束。理解这些底层原理,才能规避 daemon 启动失败、非 root 用户权限拒绝、镜像拉取证书错误等

germmy-神一样的开发 476

Ubuntu 20.04 生产级 Jupyter Notebook 部署指南

Jupyter Notebook 是基于 Web 的交互式计算环境,其核心依赖 Python 运行时与操作系统底层服务协同工作。在 Ubuntu 20.04 这一广泛使用的 LTS 版本中,由于系统默认 Python 3.8、snap 包管理器深度集成、systemd 服务模型及 GTK3 输入法兼容性等特性,导致常见问题如‘jupyter notebook无法运行’‘jupyter notebook跳转不到浏览器’频发。这些问题本质是环境隔离缺失与版本耦合失配所致,而非单纯安装错误。通过 conda 构建

weixin_34195142的博客 506

tcp的输入段的处理

tcp是全双工的协议,因此每一端都会有流控。一个tcp段有可能是一个数据段,也有可能只是一个ack,异或者即包含数据,也包含ack。如果是数据段,那么有可能是in-sequence的段,也有可能是out-of-order的段。如果是in-sequence的段,则马上加入到socket的receive队列中,如果是out-of-order的段,则会加入到socket的ofo队列。一旦当我们接收到数据...

但行好事 莫问前程 247

linux | 使用proc节点实现内核↔用户态双向完整通信

本文介绍了在Linux系统中利用proc文件系统实现内核与用户态双向通信的方法,通过创建自定义/proc节点并注册读写回调函数完成数据交互。文章详细阐述了两种通信架构(单缓冲区和双缓冲区),推荐使用双缓冲区方案以避免数据冲突。提供了完整的内核驱动代码实现,包括数据收发API和proc节点管理。同时给出用户态的两种交互方式:C语言程序(稳定商用)和Shell脚本(简易调试),并演示了磁盘切换场景下的完整通信流程。这种机制适用于需要内核与用户态频繁数据交换的场景,如设备控制、参数读写等。

I_feige的博客 266

TCP协议之《套接口快速接收路径》

TCP协议之《套接口快速接收路径》

C/C++编程指南 332

【16】linux命令/工具,systemd,文件操作,动静态库,信号,socket

apt install python3-pip --fix-missing(断开vpn,cp /etc/apt/sources.list /etc/apt/sources.list.bak,python3 -m pip install --upgrade pip,apt-get update,pip install 包名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com)设置时间,联网,apt-get install vim。

持续更新ing... 6788

UE5 C++教程(一、基本结构)

虚幻API由三块组成,分别是Runtime,Developer utilitiew,functionality for the Editor,大多数游戏性编程只使用运行时模块,最常见的三个是Corn、CornUObject和Engine。

skycol的博客 1万+

内核SYNPROXY实现

SYNPROXY配置如下,首先标记需要处理的报文,这里需要两个配置,一是关闭nf_conntrack_tcp_loose,这样无端的TCP报文(非SYN报文)将会被conntrack标记为INVALID状态。二是设置notrack标志,对TCP的SYN报文不继续连接跟踪,其状态为UNTRACKED。 echo 0 > /proc/sys/net/netfilter/nf_conntr...

redwingz的博客 1538

of_graph_get_remote_port

isp { compatible = "isp"; core@0 { id = <0>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; ...

wmzjzwlzs的专栏 1165

ubuntu 使用虚拟can 与 socketCAN使用

ubuntu 使用虚拟can 与 socketCAN使用

yuchunhai321的博客 8522

极路由 极1s J1S hc5661 刷padavan固件

极路由1S刷机指南 准备工作: 下载Breed不死固件 通过WinSCP上传或直接wget获取 执行mtd命令写入Breed 关键步骤: 进入Breed控制台(按住Reset键开机) 备份原厂固件和密钥 下载Padavan固件(RT-N14U-GPIO-12-xiaodu-ji1S-128M.trx) 刷机过程: 在Breed控制台更新固件 等待自动重启完成 初始设置: 管理地址:192.168.123.1 默认账号:admin/admin 无线名称:PCDN 无线密码:1234567890 注意事项:切勿

SimonLiu的博客 1302

【用unity实现100个游戏之1】制作类元气骑士、挺进地牢——俯视角射击游戏多种射击效果(二)(附源码)

这篇文章我们将继续实现曲线射击与两种不需要实体子弹的射击方式 源码在文章末尾。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 5060

Ubuntu 18.04 + kubeadm 部署 Kubernetes 的硬核实践指南

Kubernetes 是容器编排的事实标准,其部署依赖于底层操作系统、容器运行时与集群引导工具的深度协同。kubeadm 作为官方推荐的轻量级集群初始化工具,需严格匹配内核特性(如 cgroup v1)、网络栈行为(如 iptables 规则管理)及证书生命周期策略。在长期支持的 Ubuntu 18.04 环境中,这些约束尤为显著:内核 4.15 对 cgroup v2 支持薄弱,Docker 19.03.15 与 kubelet 的 cgroup 驱动必须一致,而 Flannel host-gw 模式则成

congbao6525的博客 451

5.1 直流无刷电机(BLDC):基本控制概念

本文系统介绍了直流无刷电机(BLDC)控制系统的核心概念与技术。主要内容包括:控制系统的分层结构设计,开环与闭环控制的原理及特点,PWM调速技术及其调制方式,PID控制算法及其数字化实现方法,以及控制系统的性能评估指标。同时探讨了现代BLDC控制器硬件实现方案,并介绍了磁场定向控制(FOC)、直接转矩控制(DTC)等先进控制策略。文章全面阐述了BLDC电机控制从基本原理到前沿技术的知识体系,为相关应用提供了理论指导和技术参考。

技术工作者 490

GPT-4架构深度解析:MoE、128K上下文与多模态对齐的工程真相

大语言模型(LLM)的核心能力并非源于参数规模,而是由底层架构设计决定。Mixture of Experts(MoE)通过稀疏激活实现高效计算,显著降低推理延迟与显存占用;长上下文支持(如128K tokens)依赖KV缓存重构与位置编码优化,而非简单内存扩容;多模态对齐则需联合表征学习,而非图像文本拼接。这些关键技术共同构成现代大模型的工程基石,在金融、法律、医疗等专业场景中支撑结构化输出、跨文档推理与高保真生成。本文聚焦GPT-4真实部署中的MoE稀疏激活机制与上下文窗口扩展实践,揭示其在生产环境中的性

weixin_33736832的博客 360

SSH 远程登录报错:kex_exchange_identification: Connection closed.....

不知道为啥会出现这样的情形,最近这段时间登录都是正常的,不知道哪里抽风了,就提示这个。错误信息 kex_exchange_identification: Connection closed by remote host 出现在尝试使用 SSH 连接到远程服务器过程中,表明在密钥交换阶段的一开始,远程主机就关闭了连接。服务器的sshd_config文件中配置错误,可能是不允许的加密算法、修订文件中的语法错误,或者未正确指定用于SSH的HostKey。如果当前已有太多活动连接,新的连接尝试可能会被拒绝。

飞越蓝天的专栏 8297

立体仓库WCS控制系统-AGV通信代码

string str = "任务下发,WCS->NT8000(q-Message),ikey:" + p.ikey.ToString() + "fromStation:" + p.fromStation.ToString() + "toStation:" + p.toStation.ToString();if (nt8000.Connect(_ServerAddr, _ServerPort)) QueueSpeech.AddQueue(string.Format("与NT8000重连成功"));

xdpcxq的专栏 2203

AI大模型训练网络优化:从集合通信到拓扑感知调度(深度解析:硬件实现与底层调优)

本文面向DPU/RDMA/NVMe SSD方向的芯片设计与验证工程师,从硬件实现层面深入剖析AI大模型训练网络的全栈优化路径。覆盖RoCEv2报文处理流水线中BTH/RETH/ATH各字段的硬件分发逻辑、DCQCN拥塞控制中Token Bucket Rate Limiter的RTL级实现、NCCL GIN架构中GPU kernel构造WQE并直接敲击NIC Doorbell寄存器的完整通路、Rail-Optimized拓扑下PCIe Switch粒度对AllReduce分片策略的影响,以及P2P DMA路

专注分享DPU、RDMA智能网卡/SSD(固态硬盘)产品测试与优化 601

【3天快速入门WPF】从小白到新手入门教程

嘿,小伙伴们!如果你已经有一定的C#开发基础,但想快速掌握WPF开发,达到企业级水准,那接下来的这个三天快速入门计划绝对适合你!虽然听起来有点挑战,但别担心,只要跟着这个高强度、结构化的学习计划,你一定能搞定它。首先,我们得搞清楚,WPF的核心知识点到底有哪些。要想达到企业级开发水准,XAML、数据绑定、MVVM、控件使用、命令系统、样式模板这些统统都得拿下。听起来是不是有点多?别急,我们把任务分解到三天里,每天安排合理的内容,保证理论和实践相结合,让你学得扎实又高效。

Zy100Papa的博客 1422

制作RootFS

本文介绍了Linux系统中RootFS(根文件系统)的概念及其制作方法。RootFS是内核默认创建的顶层挂载实例,通过initramfs加载最小工具和驱动后,再切换到真正的业务根文件系统。文章详细演示了使用debootstrap工具在Ubuntu/Debian系统中制作ARM架构嵌入式设备的RootFS步骤,包括环境准备、QEMU模拟支持、chroot配置、基础软件安装和打包过程。同时解释了内核启动所需的三个核心文件(内核镜像、initrd和业务RootFS)的作用,并探讨了initrd与initramfs

fanged的专栏 1820

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Debian 10 手动部署 LEMP:内核级稳定与等保合规实践

LEMP(Linux + Nginx + MariaDB + PHP)是面向生产环境的Web运行时基础架构,其本质是Linux内核、网络协议栈、存储引擎与应用服务间的深度协同。在政企、教育及科研等强合规场景中,Debian 10凭借长期支持(LTS)、ABI稳定性与内核级可调性,成为国产化适配(如鲲鹏/飞腾平台)、Btrfs快照备份及等保三级测评的关键底座。相比Docker封装或一键脚本,手动部署能精准控制MariaDB审计日志、Nginx worker权限隔离、PHP-FPM进程池分治及systemd服务

dieyuqi2955的博客 300

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Ubuntu 18.04下Nginx安装与生产级配置实战

Nginx 是广泛使用的高性能 Web 服务器和反向代理,其核心能力依赖于事件驱动架构、模块化设计与底层系统协同。在 Ubuntu 18.04 这一长期支持(LTS)发行版中,Nginx 的部署远不止执行 apt install 命令——它涉及 APT 包管理机制、systemd 服务生命周期控制、Linux socket 双栈绑定(IPv4/IPv6)、内核参数(如 epoll 和 net.ipv6.conf.all.disable_ipv6)适配,以及 AppArmor 安全策略约束。理解这些原理,才能

weixin_34280237的博客 349
上一篇: Socket_Kernel_Module 02
下一篇: Socket_Kernel_Module 04
cpusoft
博客等级 码龄22年 8粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值