摘要: 介绍: block layer在内核中起着承上(文件系统层)启下(设备驱动层)的作用,struct bio是block层的基本数据结构,可以理解成将bio输入block层,由block layer对其加工处理,然后再由block层输出给底层。与bio相关的代码涉及bio内存管理、提交、合并拆分、完成 阅读全文
posted @ 2021-08-27 22:01 geshifei 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 一、编译内核 内核源码:linux-5.10.3 root@linux:/home/gsf/linux-5.10.3# export ARCH="x86_64" root@linux:/home/gsf/linux-5.10.3# make x86_64_defconfig root@linux:/ 阅读全文
posted @ 2021-08-23 21:17 geshifei 阅读(101) 评论(0) 推荐(0) 编辑
摘要: rootfs是linux的根文件系统,就是我们看到的 /目录及其中一些重要的子目录,比如/etc ,/lib,/sbin等等,在linux中,一切都是文件,一切都是从/目录开始的,没有rootfs,linux就没法运行。 可以通过buildroot制作rootfs(比较方便,建议用这种方式),也可以 阅读全文
posted @ 2021-08-23 15:36 geshifei 阅读(131) 评论(0) 推荐(0) 编辑
摘要: ubuntu官网下载ubuntu-20.04.1-desktop-amd64.iso,系统安装完成后,更新Software Update,然后按下面步骤配置环境。 由于Ubuntu官网的iso会升级,建议从网盘下载本文用的版本(https://pan.baidu.com/s/1v0804hVqQNT 阅读全文
posted @ 2021-01-01 10:48 geshifei 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 背景 本文介绍一种抓取网络数据包的方法,基本思想是通过netfilter/iptables在TCP /IP网络层过滤出网络报文,然后将数据压缩、加密后,上传至云端服务器分析。 过滤出的数据为上行的原始的TCP报文,包括MAC首部、PPP首部(如果是PPPOE连接), IP首部、TCP首部以及部分或全 阅读全文
posted @ 2020-12-11 21:01 geshifei 阅读(364) 评论(0) 推荐(0) 编辑
摘要: 一、引入trace point的背景 当需要获取内核的debug信息时,通常你会通过以下printk的方式打印信息: void trace_func() { …… printk输出信息 …… } 缺点: 内核中printk是统一控制的,各个模块的printk都会被打印,无法只打印需要关注的模块。如果 阅读全文
posted @ 2019-06-30 22:34 geshifei 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 问题: 1)加电后CPU从哪里执行代码? 2)boot loader如何加载到RAM? 3)内核镜像如何加载到RAM并运行的?注意分两次加载,需要解压。 4)protect mode何时开启?分页模式何时开启? 5)0号进程、1号进程何时创建的? 一、流程 CPU加电复位后处于real mode且C 阅读全文
posted @ 2019-02-14 10:56 geshifei 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 一、背景 1)通过命令ln a b创建硬链接b->a后(a是一个普通文件),stat a命令看到Links值是多少? gsf@ubuntu:~$ stat a File: 'a' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 阅读全文
posted @ 2019-02-11 23:58 geshifei 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 背景 本文描述内核找伙伴块的算法,根据给定order及page_idx(buddy块中第一个page的index),找到伙伴块的page_idx。如果需要查阅buddy的原理知识,请参考其他资料。 算法分析 内核找伙伴块的代码如下: mm/page_alloc.c /* * Locate the s 阅读全文
posted @ 2018-08-21 20:50 geshifei 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 前言 本文通过分析rename的代码,让读者对rename流程有清晰的认识。对于文中涉及的dentry、inode、ext3 disk layout、rcu锁、dcache等基础知识,请参考其他博文。 为避免用大篇篇幅介绍dentry lookup过程,我们假设路径名中各级分量的dentry存在dc 阅读全文
posted @ 2018-08-07 16:34 geshifei 阅读(90) 评论(0) 推荐(0) 编辑