自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 资源 (20)
  • 收藏
  • 关注

原创 超详细的shell脚本教程

http://c.biancheng.net/shell/

2019-11-07 10:09:58 296

原创 Linux虚拟化技术KVM入门必看

1.《关于Linux虚拟化技术KVM的科普 科普一(先用起来!)2.KVM虚拟机代码揭秘 《KVM虚拟机代码揭秘——QEMU代码结构分析》、 《KVM虚拟机代码揭秘——中断虚拟化》、 《KVM虚拟机代码揭秘——设备IO虚拟化》、 《KVM虚拟机代码揭秘——QEMU的PCI总线与设备...

2019-08-25 14:42:53 451

原创 好文汇总(不断更新)

好文收集网络 路由:https://blog.csdn.net/lickylin/article/details/38326719内存 英文电子书:https://www.kernel.org/doc/gorman/html/understand/index.html 内存源码:https://www.cnblogs.com/tolimit/ 内存、中断、时钟、...

2019-08-19 18:54:27 254 1

原创 写在前面

一步一个脚印,先深入理解linux内核!

2018-08-09 19:32:41 126

原创 Linux 系统调用的实现(x86_64)

系统调用从用户态到内核全流程解析

2023-01-15 20:32:20 1715 1

原创 内核同步机制-自旋锁(spin_lock)

内核同步机制-自旋锁的实现

2022-11-27 22:00:56 1937

原创 kmem_cache的创建和释放-slub分配器

目录kmem_cache_createkmem_cache_create_usercopy __kmem_cache_aliasfind_mergeablecreate_cache__kmem_cache_createkmem_cache_openkmem_cache_destroyshutdown_cache 内核版本:kernel-4.19​​​​​​​kmem_cache是slub...

2022-05-13 23:42:13 2745 1

原创 Failed to load selinux policy, Freezing | CentOS | Redhat | RHEL

这个问题,很多博主直接建议grub里面关闭selinux,起来后,直接关闭selinux功能!坚持太气愤,还都如出一辙。。。。。那如果要用selinux功能怎么办呢??让我来sava your life!二步:1)yum remove selinux-policy2)yum install selinux-policy...

2020-10-17 14:16:01 255

原创 qemu-kvm内存虚拟化的原理及其流程

1.内存虚拟化技术实现原理 内存虚拟化其实就是关于如何做Guest虚机到host宿主机物理内存之间的各种地址转换,KVM经历了三代的内存虚拟化技术,大大加快了内存的访问速率。先看看虚拟化环境和非虚拟化环境,内存分配的差异:非虚拟化环境,内存分配时逻辑地址需要转换为线性地址,然后由线性地址转换为物理地址。 逻辑地址 ==> 线性地址 ==> 物理地址虚拟化环境下,由于qemu-kvm进程在宿主机上作为一个普通进程,那对于Guest而言,需要的转换过程就是这样: ...

2020-08-27 20:25:21 3734

原创 网络丢包排查思路

网络丢包排查思路1.防火墙确认:看防火墙是否配置了DROP特定端口范围的可能性方法:查看iptables filter表,确认是否有相应规则会导致此丢包行为,命令:sudoiptables-save-tfilter2.连接跟踪表溢出除了防火墙本身配置DROP规则外,与防火墙有关的还有连接跟踪表nf_conntrack,Linux为每个经过内核网络栈的数据包,生成一个新的连接记录项,...

2020-03-18 18:28:56 6846 1

原创 网络收包流程-网络层处理流程ip_rcv(五)

报文提交给内核协议栈处理后,最终会调用到__netif_receive_skb_core函数,如果报文没有被网桥处理函数rx_handler消费掉,最终会交给ptype_base中注册的协议处理,包括内核注册的协议,也包括raw socket等创建的协议处理。本文将分析普通ipv4 报文的处理过程,处理入口函数为ip_rcv函数。主要调用流程:ip_rcv-->ip_...

2020-03-18 18:25:54 2829 1

原创 网路收包流程-网桥的处理流程(br网桥)(四)

目录1.网桥收发报文模型2.网桥的初始化和相关数据结构关系 1)通过br_init函数注册和初始化网桥功能 2) 添加一个桥设备-br_add_bridge 3)给网桥添加端口-br_add_if 4)数据结构3.网桥收包处理流程-br_handle_frame函数1)br_handle_frame函数2)br_han...

2020-02-15 15:07:33 4915

原创 网路收报流程-网桥的处理流程(br网桥)(四)

1.网桥收发报文模型 linux内核是通过一个虚拟的网桥设备来实现桥接的。这个虚拟设备可以绑定若干个以太网接口设备,从而将它们桥接起来。其网桥收发包模型如下所示:网络收发报文的二种方式:1)网桥转发给具体端口处理:网桥设备br0绑定了eth0和eth1。对于网络协议栈的上层来说,只看得到br0,因为桥接是在数据链路层实现的,上层不需要关心桥接的细节。于是协议栈上层需要发送...

2020-02-15 14:57:22 2876

原创 网络收包流程-收包函数__netif_receive_skb的核心函数__netif_receive_skb_core(三)

调用关系:netif_receive_skb-->netif_receive_skb-->netif_receive_skb_internal(->__netif_receive_skb)-->__netif_receive_skb_core1.netif_receive_skb_internal的实现static int netif_receive_skb_int...

2020-02-15 14:39:57 5195 1

原创 对象释放函数kmem_cache_free核心函数slab_free的实现详解

1.kmem_cache_free函数void kmem_cache_free(struct kmem_cache *s, void *x)//X是要释放的对象{ s = cache_from_obj(s, x);//virt_to_head_page通过对象x找到该对象所在的slab的首个page,再通过page找到所属的slab缓存 if (!s) return; slab_...

2020-02-15 14:23:34 1131

原创 虚拟网桥

1.虚拟网桥与NAT网桥区别 1)bridged networking(桥接模式) 在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。在桥接模式下,需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,配置好网关和DNS的地址后,以实现通过局域网的网关或路由器访...

2019-11-13 16:01:48 4850

原创 docker的macvlan网络

1.macvlan基本介绍 macvlan 允许你在主机的一个网络接口上配置多个虚拟的网络接口,这些网络 interface 有自己独立的 mac 地址,也可以配置上 ip 地址进行通信。macvlan 下的虚拟机或者容器网络和主机在同一个网段中,共享同一个广播域。macvlan 和 bridge 比较相似,但因为它省去了 bridge 的存在,所以配置和调试起来比较简单,而且效率也...

2019-11-13 16:01:27 2849

原创 网络收包流程-软中断中process_backlog和poll方式处理流程(二)

在硬中断中触发了软中断后,最终会调用软中断处理函数 net_rx_action,注意:硬中断流程触发软中断后退出中断上下文,但是并不会立刻进入软中断,具体的实现需要了解软中断处理流程。1.软中断处理函数net_rx_action具体实现详解:static void net_rx_action(struct softirq_action *h){ struct ...

2019-09-10 18:51:24 2085

原创 sk_buff详解

sk_buff 整理笔记(一、数据结构)sk_buff整理笔记(二、操作函数)sk_buff整理笔记(三、内存申请和释放)sk_buff整理笔记(四、克隆与复制)sk_buff整理笔记(五、队列管理函数)from:https://blog.csdn.net/YuZhiHui_No1...

2019-09-08 10:38:45 7235 1

转载 Docker 网络模型之 macvlan 详解,图解,实验完整

上一篇文章我们详细介绍了 macvlan 这种技术,macvlan 详解,由于它高效易配置的特性,被用在了 Docker 的网络方案设计中,这篇文章就来说说这个。01 macvlan 用于 Docker 网络#在 Docker 中,macvlan 是众多 Docker 网络模型中的一种,并且是一种跨主机的网络模型,作为一种驱动(driver)启用(-d 参数指定),Docker macvlan...

2019-09-01 16:07:51 1203

转载 macvlan 详解

01 macvlan 简介前面的文章讲过了几种 Linux 虚拟网络设备:tap/tun、veth-pair、bridge,它们本质上是 Linux 系统 提供的网络虚拟化解决方案,今天要讲的 macvlan 也是其中的一种,准确说这是一种网卡虚拟化的解决方案。因为 macvlan 这种技术能将 一块物理网卡虚拟成多块虚拟网卡 ,相当于物理网卡施展了 多重影分身之术 ,由一个变多个。02 m...

2019-09-01 13:51:57 21833

原创 图解Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN

原 图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN ...

2019-09-01 13:05:44 1368

原创 玩转docker、Swarm、Kubernetes

Kubernetes 集群日志管理 - 每天5分钟玩转 Docker 容器技术(180)部署 Prometheus Operator - 每天5分钟玩转 Docker 容器技术(179)Prometheus Operator 架构 - 每天5分钟玩转 Docker 容器技术(178)Prometheus Operator - 每天5分钟玩转 Docker 容器技术(177)...

2019-08-31 11:34:27 245

原创 Linux--start_kernel()函数分析

Linux--start_kernel()函数分析

2019-08-29 11:19:21 469

原创 虚机串口的配置

虚机串口的二种配置方式:1.虚机xml文件配置:2种方法 1)配置pty串口,可以通过virsh console 虚机ID 访问<serial type='pty'> <source path='/dev/pts/1'/> <target port='0'/> <alias name='s...

2019-08-28 19:37:25 629

原创 网络收包流程-报文从网卡驱动到网络层(或者网桥)的流程(非NAPI、NAPI)(一)

1.上图(网上的没我这个详细,哈哈):2.具体说明NAPI和非NAPI的区别:(1) 支持NAPI的网卡驱动必须提供轮询方法poll()。(2) 非NAPI的内核接口为netif_rx(),NAPI的内核接口为napi_schedule()。(3) 非NAPI使用共享的CPU队列softnet_data->input_pkt_queue,NAPI使用设备内存(或者设备驱动程序的...

2019-08-26 20:23:05 1449

原创 linux内核开发常用站点

转载:https://github.com/hduffddybz/Linux_websites在这里整理下 Linux 开发中常用的站点1、国外站点kernel.orgLinux 内核的官方网站,在这个站点可以下载到不同版本的内核,也可以找到 kernel.org 下的各种项目 Embedded Linux wiki这个站点有嵌入式 Linux 的各种资料 lwn.net这个...

2019-08-25 16:04:56 226

原创 netfilter源码学习

【推荐】Netfilter连接跟踪状态解析 【推荐】Linux内核连接跟踪锁的优化分析(2) 【推荐】Linux内核连接跟踪锁的优化分析(1) netfilter源码学习(5)——connection track处理(1) 【推荐】netfilter源码学习(4)——NAT处理(1) netfilter源码学习(3)——框架hook处理(3) 【推荐】netfil...

2019-08-25 16:02:20 551

原创 TCP/IP源码分析

struct s_mbuf与struct sk_buffstruct sk_buff与socket内核中的UDP socket流程(1)内核中的UDP socket流程(2)——API “sys_socket”内核中的UDP socket流程(3)——sock_create内核中的UDP socket流程(4)——sock_create内核中的UDP socket流程(...

2019-08-25 15:42:14 1916

原创 vmcore经典案例(hardlockup、softlockup、读写锁、hung、oom)

一次spinlock死锁故障的定位中断上下文使用spin_lock使导致死锁案例分析用crash工具分析Linux内核死锁的一次实战linux 3.10 一次softlock排查linux 2.6.32.220的一个crash记录linux 一个读写锁的使用异常导致的故障linux 3.10 的又一次hung一个rcu回调导致的简单死锁一个未完成的2.6.32-2...

2019-08-25 15:24:32 760

原创 ipv4反向路由配置

反向路由rp_filter - INTEGER0 - 表示不进行源地址反向路由验证1 - 表示对收到的包进行反向路由验证,如果路由得到的接口不是,报文收到的接口,将把包丢掉,这是种比较严格的检查。参考RFC37042 - 表示一种宽松的检查模式,如果收上来的包的源IP地址进行反向路由后,找不到出口,这是源地址路由才失败,将包丢掉。系统推荐使用使用严格模式检查,这种检查方式可以防止DD...

2019-08-24 17:17:20 1510

原创 softlockup/hardlockup原理详细介绍

主体涉及到了3个机制:kernel watchodog线程,高精度定时器(时钟中断),基于PMU硬件perf event的NMI(不可屏蔽中断)。基本思想: 1.)(soft lockup):抢占被长时间关闭而导致其余进程无法调度 2.)(hard lockup):中断被长时间关闭而导致softlockup基本原理: 1)SoftLockup 检测首先需...

2019-08-24 17:01:15 2409

原创 Hard lockup occurs due to an infinite loop encountered in distribute_cfs_runtime()

Hard lockup occurs due to an infinite loop encountered in distribute_cfs_runtime()SOLUTION 已验证 - 已更新 2018年一月29日08:14 - English环境Red Hat Enterprise Linux 7.3 (kernel-3.10.0-514.el7.x86_64)问题Hard...

2019-08-24 12:19:18 424

原创 systemtap打印accept的进程pid和对应的socket套接字(嵌入c的使用)

#probe kernel.function("unix_accept")%{#include <net/sock.h>#include <net/af_unix.h>%}function _unix_path:long(sock:long)%{ struct socket *sock = (struct socket *)(long) ST...

2019-08-23 17:46:33 652

原创 systemtap监控所有进程的收发包情况(数组的使用)

global recv, xmit probe begin { printf("Starting network capture...Press ^C to terminate\n") } probe netdev.receive { recv[dev_name, pid(), execnam...

2019-08-23 17:44:41 487

原创 systemtap打点方法

CentOS/RedHat发行版使用yum安装下列rpm包即可:systemtap:SystemTap包gcc:c语言编译器elfutils:提供库函数来分析调试信息kernel-devel:编译内核模块所需的内核头文件及模块配置信息kernel-debuginfo:提供所需的内核调试信息来定位内核函数和变量的位置使用一些例子SystemTap的简单例...

2019-08-23 17:43:19 688

原创 VSZ、RSS、Pss的区别和含义

ps aux命令的VSZ和RSS项:VSZ:指的是进程内存空间的大小,并不代表进程真正用到的内存,因为有些空间会仅在页表中挂个名,也就是说只是虚拟存在着,只有真正用到的时候内核才会把虚拟页面和真正的物理页面映射起来。比如,(malloc或mmap的调用),由于程序中并没有用到这些内存,没有物理内存被分配,也就不应算到进程的帐上。RSS:(resident set size)表示常驻内存的大小,但是...

2019-08-23 17:39:23 12783

原创 统计系统所有进程总共占用多少内存

常见误解: ps aux 命令显示的 RSS 列来统计全部进程总共占用的物理内存大小,这是不合理的。RSS(resident set size)表示常驻内存的大小,但是由于不同的进程之间会共享内存,所以把所有进程RSS进行累加的方法会重复计算共享内存,得到的结果是偏大的。正确的方法: 累加 /proc/[1-9]*/smaps 中的 Pss 。/proc/&l...

2019-08-23 17:38:08 1450

原创 配置vmcore通过ssh转储到其他主机的方法

1.配置/etc/kdump.conf修改以下二项: 1)ssh [email protected] (vmcore会被scp到目的端的/var/crash目录) 2)core_collector 增加 -F 选项,否则,kdump无法启动(具体为:core_collector makedumpfile -l -F --message-level 1 -d 31)2.执行kdum...

2019-08-22 14:06:54 313

原创 主机串口配置

grub 加上,console=ttyS0,115200 console=tty0(或者修改/etc/grub2.cfg)好像需要重启生效;调试机器上用minicom或者串口工具;

2019-08-19 19:32:56 449

qemu-3.1.1.tar.xz

原链接下载太慢,转移到此处供大家下载 链接:https://www.qemu.org/download/

2019-09-08

SI4完整安装及破解文件.zip

4.0安装破解版本,大家可以试试,里面有说明,首先读readme。

2019-09-08

linux-4.0.tar.gz

github下载源码实在太慢 源地址:https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/refs/tags

2019-09-08

linux-3.10.tar.gz

github下载源码实在太慢 源地址:https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/refs/tags

2019-09-08

kvm实战与原理解析(任永杰)

《KVM虚拟化技术:实战与原理解析》是2013年机械工业出版社出版的图书,作者是任永杰、单海涛。本书不仅系统介绍了KVM虚拟机的功能、特性和使用方法,而且还深入地剖析了KVM虚拟机的核心技术和工作原理,对KVM做了全面而透彻的讲解。

2019-04-16

linux内核源码剖析-TCPIP实现上下册合集-樊东东著(高清版)

本书完整而详细的论述了Linux内核2.6.20版本中TCP/IP协议是如何实现的。书中给出了大量的源代码,通过对源代码的详细的论述,帮助你掌握TCP/IP的实现。本书根据协议栈层次,从驱动层逐步论述到传输层,包括驱动的实现、接口层的输入输出、IP层的输入输出以及IP选项的处理、邻居子系统、路由、套接口及传输层等内容,全书基本涵盖了网络体系架构全部的知识点。特别是TCP,包括TCP连接的建立和终止、输入与输出、以及拥塞控制的实现。 本书的适用于那些熟悉Linux的基本使用方法,对Linux内核工作原理以及网络知识有一定的了解,而又极想更深入地理解各个机制在Linux中是怎样来实现的人们,包括应用程序员和嵌入式程序员等。也适合那些做相关研究和开发的科研人员在通篇阅读本书之外,当工作中遇到问题时查阅本书来帮助理解相关内核部分是怎样实现的。此外对于计算机相关专业的本科高年级学生和研究生,在学习相关课程(如操作系统、计算机网络等)时,作为辅助教程,与理论相结合以便于更好得理解相应的知识点。对于初学者,可能会在阅读中遇到诸多的障碍,本书中会尽量对一些基本知识点加以简单的描述,但限于篇幅,不可能在这上面作过多的逗留,读者可以查阅相关的资料。

2018-10-16

isic依赖库libnet

libnet是一个小型的接口函数库,主要用C语言写成,提供了低层网络数据包的构造、处理和发送功能。libnet的开发目的是:建立一个简单统一的网络编程接口以屏蔽不同操作系统底层网络编程的差别,使得程序员将精力集中在解决关键问题上。

2018-09-30

协议栈稳定性测试工具

软件安装后有tcpsic、esic、icmpsic、udpsic和isic5种操作命令。所以各种命令操作主要是发送该类型的报文为主,比如isic,主要是各种ip报文,可以选择各种ip报文字段中的内容的比例,例如IP协议版本、选项字段等。注意所有发送报文的速率跟网卡有关,我们不能控制发送报文的速率,但是可以控制每秒发送报文的个数来控制发送的流量

2018-09-30

Go编程基础

Go编程基础-课堂讲义 后面还有讲义的源代码资源哦,记得一起下载

2017-10-13

go编程基础 讲义涉及源代码

go编程基础讲义中涉及源代码,带你更好的掌握go语言的学习

2017-10-13

go编程基础 讲义

go编程基础 讲义,入门go语言的良心书籍,由浅入深的好学习资料

2017-10-13

dpdk17.08源码

dpdk 源码 代码,代码版本17.08,强大的dpdk工具用户态代码

2017-10-13

和廖老师学python

和廖老师学python ,讲解通俗易懂,轻松学python的不二之选

2017-10-13

Gvim带配置文件

vim gvim 带配置文件 有颜色 带有破解安装文件和说明。

2017-10-13

Docker 源码分析

Docker 源码分析,本书的内容主要集中于 3 个部分: Docker 的架构, Docker 的模块, Docker 的三驾马 车 Swarm 、 Machine 以及 Compose

2017-10-13

go开发环境liteIDE

go开发环境liteIDE

2017-10-13

存储技术原理分析:基于Linux 2.6内核源代码

存储技术原理分析:基于Linux 2.6内核源代码

2017-10-13

linux内核源代码情景分析(上下册合集版)

linux内核源代码情景分析(上下册合集版)

2017-08-26

TCP/IP详解 1/2/3卷

tcp/ip详解 1/2/3卷 中文版

2017-08-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除