在我们学习Linux内核之前,我们首先需要掌握以下几点:
1、硬件原理 和 分页管理
2、内存的动态申请和释放
3、进程的内存消耗和泄漏
4、内存与I/O的交换
5、其他工程问题以及调优
6、一文了解,Linux内存管理,malloc、free 实现原理
7、尽情阅读,技术进阶,详解mmap原理
8、浅谈Linux内存管理机制
9、熟读精思,熟读玩味,Linux虚拟内存管理,MMU机制,原来如此也
1、Linux进程、线程、调度(一)
2、Linux进程、线程、调度(二)
3、Linux进程、线程、调度(三)
4、Linux进程、线程、调度(四)
5、一文带你,彻底了解,零拷贝Zero-Copy技术
6、进程间通信,管道,socket,XSI(System V)
1、Linux 操作系统原理-文件系统(一)
2、Linux 操作系统原理-文件系统(二)
3、Linux文件系统详解
4、磁盘IO那些事
1、Linux内核网络udp数据包发送(一)
2、Linux内核网络udp数据包发送(二)-UDP协议层分析
3、Linux内核网络UDP数据包发送(三)—IP协议层分析
4、Linux操作系统原理—内核网络协议栈
5、Linux网络栈解剖
6、深入分析Linux操作系统对于TCP IP栈的实现原理与具体过程
7、透过现象看本质,从linux源码角度看epoll
8、驾驭Linux内部网络实现——关键数据结构 sk_buff
1、Linux 总线、设备、驱动模型的探究
2、Linux 设备和驱动的相遇
1、什么是Linux?
2、Unix和Linux有什么区别?
3、什么是 Linux 内核?
4、Linux的基本组件是什么?
5、Linux 的体系结构
6、BASH和DOS之间的基本区别是什么?
7、Linux 开机启动过程?
8、Linux系统缺省的运行级别?
9、Linux 使用的进程间通信方式?
10、Linux 有哪些系统日志文件?
11、Linux系统安装多个桌面环境有帮助吗?
12、什么是交换空间?
13、什么是root帐户?
14、什么是LILO?
15、什么是BASH?
16、什么是CLI?
17、什么是GUI?
18、开源的优势是什么?
19、简单 Linux 文件系统?
20、Linux 的目录结构是怎样的?
21、什么是 inode ?
22、什么是硬链接和软链接?
23、RAID 是什么?
24、一台 Linux 系统初始化环境后需要做一些什么安全工作?
25、什么叫 CC 攻击?什么叫 DDOS 攻击?
26、什么是网站数据库注入?
27、Shell 脚本是什么?
28、可以在 Shell 脚本中使用哪些类型的变量?
29、Shell 脚本中 if
语法如何嵌套?
30、Shell 脚本中 case
语句的语法?
31、Shell 脚本中 for
循环语法?
32、Shell 脚本中 while
循环语法?
33、如何使脚本可执行?
34、在 Shell 脚本如何定义函数呢?
35、判断一文件是不是字符设备文件,如果是将其拷贝到 /dev
目录下?
36、添加一个新组为 class1 ,然后添加属于这个组的 30 个用户,用户名的形式为 stdxx ,其中 xx 从 01 到 30 ?
37、写一个 sed 命令,修改 /tmp/input.txt
文件的内容?
38、用户进程间通信主要哪几种方式?
39、通过伙伴系统申请内核内存的函数有哪些?
40、Linux 虚拟文件系统的关键数据结构有哪些?(至少写出四个)
41、对文件或设备的操作函数保存在那个数据结构中?
42、Linux 中的文件包括哪些?
43、创建进程的系统调用有那些?
44、调用 schedule()进行进程切换的方式有几种?
45、Linux 调度程序是根据进程的动态优先级还是静态优先级来调度进程的?
46、进程调度的核心数据结构是哪个?
47、如何加载、卸载一个模块?
48、模块和应用程序分别运行在什么空间?
49、Linux 中的浮点运算由应用程序实现还是内核实现?
50、模块程序能否使用可链接的库函数?
51、TLB 中缓存的是什么内容?
52、Linux 中有哪几种设备?
53、字符设备驱动程序的关键数据结构是哪个?
54、设备驱动程序包括哪些功能函数?
55、如何唯一标识一个设备?
56、Linux 通过什么方式实现系统调用?
57、Linux 软中断和工作队列的作用是什么?
58、Linux开机启动过程?
59、Linux系统缺省的运行级别
60、Linux系统是由那些部分组成?
61、硬链接和软链接有什么区别?
62、如何规划一台Linux主机,步骤是怎样?
63、查看系统当前进程连接数?
64、如何在/usr目录下找出大小超过10MB的文件?
65、添加一条到192.168.3.0/24的路由,网关为192.168.1.254?
66、如何在/var目录下找出90天之内未被访问过的文件?
67、如何在/home目录下找出120天之前被修改过的文件?
68、在整个目录树下查找文件“core”,如发现则无需提示直接删除它们。
69、有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?
70、每周一下午三点将/tmp/logs目录下面的后缀为*.log的所有文件rsync同步到备份服务器192.168.1.100中同样的目录下面,crontab配置项该如何写?
71、找到/tmp/目录下面的所有名称以"s1.jpg"结尾的普通文件,如果其修改日期在一天内,则将其打包到/tmp/back.tar.gz文件中
72、配置mysql服务器的时候,配置了auto_increment_increment=3,请问这里的3意味着什么?
73、详细说明keepalived的故障切换工作原理
1、Linux Kernel Network Drivers - Classification(Linux内核网络驱动程序)百度网盘:qdt5
2、Linux Kernel Development(Linux内核开发)百度网盘:vg1u
3、The mind behind Linux(Linux背后的思想)百度网盘:zgnu
4、Linux Systems Performance(Linux系统性能)百度网盘:9qom
5、Network Driver Interfaces(网络驱动程序接口)百度网盘:xpke
6、Selective module compilation in mainline kernel(在主线内核中编译可选模块):百度网盘:l56j
7、Linux System Programming 6 Hours Course(Linux系统编程6小时课程)百度网盘:hc2d
8、Threads and Thread Handing(线程和线程处理)百度网盘:erxm
9、Learning the Linux Kernel with tracing(通过跟踪学习Linux内核)百度网盘:066g
10、How to Apply a Patch to the Linux Kernel Stable Tree(如何将补丁应用到Linux内核稳定树)百度网盘:955e
11、Linux Kernel Programming(Linux内核编程- atomic_t数据类型-原子变量和api)百度网盘:njt0
12、Kernel Recipes 2017 - 性能优化大牛Brendan Gregg 百度网盘:lrex
《Linux命令行大全 - 绍茨 (william E.shotts)》
No. | Project | Introduction |
---|---|---|
1 | esp8089 | ESP8089 WiFi芯片的Linux内核模块驱动程序 |
2 | fibdrv | 计算斐波那契数列的Linux内核模块 |
3 | exfat-linux | 这个用于Linux内核的exFAT文件系统模块是三星最新的Linux主线的exFAT驱动程序的后端端口。这个项目可以用于日常Linux用户,只需简单地做make && make install。Ubuntu用户可以简单地添加一个PPA并开始使用它,甚至不需要下载代码。这也可以直接插入到现有的Linux内核源代码中,以内联地构建文件系统驱动程序,这对Android内核开发人员应该很有用。 |
4 | ipt-netflow | 适用于 Linux 的高性能 NetFlow v5、v9、IPFIX 流数据导出模块核心。创建用于高吞吐量网络中的 linux 路由器。 |
5 | buildKernelAndModules | 在NVIDIA Jetson Nano Developer Kit上构建Linux内核和模块 |
6 | kernel-modules-hook | 使Arch Linux在内核升级后完全功能 |
7 | rfm12b-linux | HopeRF公司生产的RFM12B和RFM69CW数字射频模块的Linux内核驱动程序。它的目标是提供SPI接口的嵌入式Linux板。 |
8 | khttpd | khttpd是一个实验性的HTTP服务器,实现为Linux内核模块。服务器默认端口为8081,但是可以使用命令行参数port=?当您准备加载内核模块时。 |
9 | Kernel_Rootkit | Kernel_Rootkit是一种特殊类型的恶意软件,它通过修改操作系统内核来向用户和系统管理员隐藏自己的存在。rootkit是一个内核模块——一个动态加载到内核中的库。 |
10 | ktls | Linux内核传输层安全模块 |
11 | frdev | 一个高效的ip黑/白名单防火墙(作为一个linux内核模块)。 |
12 | HomaModule | 一个实现了Homa传输协议的Linux内核模块。 |
13 | PCRE | Linux内核模块&PCRE文本搜索引擎 |
14 | acpi_call | 一个内核简单模块,允许您通过将方法名称后跟参数写入/proc/ ACPI /call来调用ACPI方法。 |
13 | Linux Modules | 这是一个管理Linux内核模块的工具。它是modprobe的一个替代方案,支持列出、添加和删除模块,以及显示模块上的信息。 |
14 | LiME | 一个可加载内核模块(LKM),它允许从Linux和基于Linux的设备(如Android)获取易失性内存。这使得LiME独一无二,因为它是Android设备上第一个允许全内存捕获的工具。它还在获取过程中最小化了用户和内核空间进程之间的交互,这使得它能够生成比其他为Linux内存获取而设计的工具更可靠的内存捕获。 |
15 | kplugs | KPlugs是一个Linux内核模块,它提供了在Linux内核中动态执行脚本的接口。 |
16 | rapiddisk | 一个高级Linux RAM驱动器和缓存内核模块。动态分配RAM作为块设备。使用它们作为独立的磁盘驱动器,甚至将它们映射为缓存节点到较慢的本地磁盘驱动器。 |
17 | forge_socket | Linux内核模块,用于从用户空间检查/修改TCP套接字状态 |
18 | CCKiller | Linux轻量级CC攻击防御工具脚本 |
19 | libNetGo | Linux网络分析工具 |
20 | wgcloud | linux运维监控工具,支持系统信息,内存,cpu,温度,磁盘空间及IO,硬盘smart,系统负载,网络流量,进程等监控,API接口,大屏展示,拓扑图,端口监控,docker监控,日志文件监控,数据可视化,webSSH工具,堡垒机(跳板机) |
21 | hookso | hookso是一个Linux动态链接库的注入修改查找工具,用来修改其他进程的动态链接库行为。 |
22 | LinuxPerformanceTools | Linux性能监控工具 |
23 | jon | jon 是一款Linux系统攻防工具箱,包含扫描,入侵,痕迹清理,木马,网站测试等各种黑客工具。 |
24 | perf-tools | 用于Linux ftrace和perf_events(也就是“perf”命令)的各种开发中且不受支持的性能分析工具。ftrace和perf都是核心的Linux跟踪工具,包含在内核源代码中。您的系统可能已经有了ftrace,而perf通常只是一个添加包(参见先决条件)。 |
25 | FlameGraph | 火焰图形可视化分析器 |
26 | bcc | BCC 是一个用于创建高效内核跟踪和操作程序的工具包,包括几个有用的工具和示例。它利用了扩展 BPF(伯克利数据包过滤器),正式名称为 eBPF,这是首次添加到 Linux 3.15 的新功能。BCC 使用的大部分内容都需要 Linux 4.1 及更高版本。 |
27 | fhe-toolkit-linux | IBM Linux的完全同态加密(FHE)工具包被打包为Docker容器,这使得开始和试验完全同态加密技术变得更容易。 |
28 | linux-smart-enumeration | 用于渗透测试的Linux枚举工具和具有冗长级别的ctf |
29 | gpu-monitoring-tools | Linux上监视NVIDIA gpu的工具 |
30 | linux-inject | 将共享对象注入Linux进程的工具 |
31 | ntttcp-for-linux | 一个Linux网络吞吐量多线程基准测试工具 |
32 | linux-pentest | Linux穿透测试工具 |
Linux内核主要由 进程管理、内存管理、设备驱动、文件系统、网络协议栈 外加一个 系统调用。
内存管理(文章直达 🚲)(论文直达 🚗)(视频直达 🚄)(面试题直达 🛩)(内核项目直达 🚀)
- 内存原理
- SMP/NUMA模型组织
- 页表/页表缓存
- CPU缓存
- 内存映射
- 虚拟内存
- 伙伴分配器
- 块分配器
- 巨型页
- 页回收
- 页错误异常处理与反碎片技术
- 连续内存分配器技术原理
- 不连续页分配器原理与实现
- 内存系统调用
- kmalloc/vmalloc
- 内存池原理与实现
- 内存优化与实现
文件系统(文章直达 🚲)(论文直达 🚗)(视频直达 🚄)(面试题直达 🛩)(内核项目直达 🚀)
- 虚拟文件系统VFS
- 通用文件模型
- 数据结构
- 文件系统调用
- 挂载文件系统
- 无存储文件系统
- 磁盘文件系统
- Ext2/Ext3/Ext4文件系统
- 日志JBD2
- 用户空间系统
- FUSE原理机制/接口与实现
进程管理(文章直达 🚲)(论文直达 🚗)(视频直达 🚄)(面试题直达 🛩)(内核项目直达 🚀)
- 进程基础
- 进程原理及状态
- 生命周期及系统调用
- task_struct数据结构
- 进程调度
- 调度策略
- 进程优先级
- 调度类分析
- SMP调度
网络协议栈(文章直达 🚲)(论文直达 🚗)(视频直达 🚄)(面试题直达 🛩)(内核项目直达 🚀)
- 网络基础架构
- SKB/net_device
- 网络层分析
- Linux邻近子系统
- netlink套接字
- iptables套接字
- netfilter框架
- 内核NIC接口分析
- mac80211无线子系统
- 网络协议栈
- internet控制消息协议(ICMP)
- 用户数据报协议(UDP)
- 传输控制协议(TCP)
- 流控制传输协议(SCTP)
- 数据报拥塞控制协议(DCCP)
- IPv4路由选择子系统*
- 组播/策略/多路径路由选择
- 接收/发送(IPv4/IPv6)数据报
- infiniBand栈的架构
- 系统API调用
- POSIX网络API调用
- epoll内核原理与实现
- 网络系统参数配置
设备驱动(文章直达 🚲)(论文直达 🚗)(视频直达 🚄)(面试题直达 🛩)(内核项目直达 🚀)
- 设备子系统
- I/O机制原理
- 设备模型
- 字符设备子系统
- 网络接口卡驱动
- Linux设备模型
- LDM
- 设备模型和sysfs
- 字符设备驱动
- 主设备与次设备
- 设备文件操作
- 分配与注册字符设备
- 写文件操作实现
- 网卡设备驱动
- 数据结构
- 设备方法
- 驱动程序
- 块设备驱动
- 资源管理
- I/O调度
- BIO结构原理
- PCI总线原理
- 蓝牙子系统
- HCI层/连接
- L2CAP
- BNEP
- 蓝牙数据包接收架构