自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 内存管理之页面分配

本文分析了Linux内核中的物理页分配机制,重点介绍了alloc_pages()函数的工作原理。分配过程首先通过prepare_alloc_pages()初始化分配上下文,确定首选zone和分配策略。核心函数get_page_from_freelist()会遍历zonelist,检查每个zone的watermark水位和空闲页情况,满足条件则调用rmqueue()从伙伴系统或per-CPU缓存分配页面。分配过程中会处理多种特殊情况,如cpuset限制、脏页控制、内存碎片避免等。若快速路径失败,会触发内存回收

2026-03-28 17:00:44 375

原创 缓存一致性问题与 dma_alloc_coherent

摘要:本文深入分析了Linux内核中DMA缓存一致性问题及dma_alloc_coherent解决方案。当CPU与DMA设备访问同一内存时,由于CPU缓存与设备直接访问物理内存的差异,会导致数据不一致。dma_alloc_coherent通过分配特殊内存区域规避此问题,该区域具有以下特点:1) CPU和设备视图自动同步;2) 无需手动flush/invalidate操作;3) 特别适合频繁共享的小数据(如描述符)。文章详细解析了dma_alloc_coherent的调用链,包括优先从设备私有coherent

2026-03-24 21:19:02 484

原创 在 Kata Containers 中编译支持 eBPF 的 Guest Kernel 并验证生效

本文记录了为Kata容器启用eBPF支持的完整流程。Kata容器使用独立的Guest Kernel,因此需要重新编译内核并启用BPF、BTF等配置。关键步骤包括:获取Kata源码、修改内核配置、编译安装内核,并将新内核同步到实际运行路径。验证结果表明,新Guest Kernel已具备eBPF基础能力,包括BPF系统调用、kprobe事件跟踪等功能。文章还总结了常见问题,强调必须确认实际运行路径并以容器内验证为准。

2026-03-15 15:50:42 470

原创 深入理解Linux网络(1):内核如何接受网络包

本文摘要:Linux内核网络收包流程主要包括以下步骤:1) 网卡通过DMA将数据写入RingBuffer并触发中断;2) 中断处理函数启动软中断,由ksoftirqd线程处理;3) 线程调用驱动poll函数从RingBuffer取包,封装为skb后送入协议栈;4) IP层进行路由判断后,数据包被分发到TCP/UDP等传输层协议;5) 最终数据存入对应socket接收队列,唤醒等待进程。关键点包括:使用dma_alloc_coherent分配RingBuffer内存确保设备与CPU访问一致性;tcpdump在

2026-03-10 22:48:58 452 1

原创 烧录支持BTF的Orin内核

摘要:本文详细介绍了在NVIDIA Orin设备上编译支持BTF功能的定制化内核的全过程。首先说明官方内核未开启BTF功能,影响BPF相关功能运行。操作步骤包括:1)环境准备(Ubuntu 20.04系统,100G存储空间);2)安装编译工具链;3)下载并解压内核源码;4)修改nvbuild.sh脚本保留自定义配置;5)配置并编译内核(开启BPF/DEBUG_INFO等关键选项);6)处理编译过程中的符号未定义错误;7)替换内核文件并安装模块;8)编译NVIDIA显示驱动模块;9)进入Recovery模式完

2026-03-09 20:55:11 446

原创 ebpf学习三、uprobe

uprobe是Linux内核3.x引入的机制,将kprobe思想扩展到用户态,通过在ELF文件指令地址插入断点回调(int3),使内核能在用户态函数执行前后获取控制权。它解决了传统工具(如日志、gdb)的侵入性和性能问题,弥补了perf采样的不足,支持获取每次调用的参数和返回值。工作原理基于ELF文件偏移地址,结合BPF可实现高效监控(如bash命令捕获)。示例展示了如何用BPF挂载uretprobe跟踪bash的readline返回值,并通过ring buffer传递数据到用户态分析。

2026-01-26 16:28:59 589

原创 VS Code 通过 SSH 连接 Ubuntu 卡在 Downloading VS Code Server 的解决方法

摘要:在VMware的Ubuntu系统中切换WiFi网络时,由于DHCP重新分配IP导致VSCode卡在"Downloading VSCode Server",原因是SSH缓存了旧IP密钥。解决方法是在终端执行ssh-keygen -R [新IP]清除缓存,如ssh-keygen -R 192.168.1.103,然后重新连接即可恢复正常。(99字)

2026-01-22 19:06:00 219

原创 ebpf学习二、tracepoint

ebpf tracepoint 浅谈

2026-01-20 10:00:00 1314

原创 eBPF学习 一、kprobes

简单学习了下,ebpf的kprobe

2026-01-19 19:13:06 591

原创 fork的系统调用分析

解析了下Linux5.4 fork系统调用的过程,用HTML能够打开。

2025-12-24 09:37:47 117

原创 Docker 拉取镜像 / 搜索失败问题完整解决方案

Docker 网络相关问题(如拉取镜像、搜索镜像时超时或报错)是使用过程中常见的困扰,尤其国内用户常受官方镜像源访问慢、DNS 解析异常等问题影响。本文将详细梳理问题根源,提供从镜像加速、DNS 配置到代理设置的完整解决流程,帮你彻底解决相关网络故障。

2025-11-13 16:24:49 3923

原创 Ubuntu20.04用qemu模拟搭建RISC v平台

摘要:本文介绍了在QEMU虚拟机中运行RISC-V架构Ubuntu 24.04系统的完整流程。首先下载Ubuntu镜像和相关工具,安装QEMU及RISCV工具链。重点说明需准备OpenSBI和U-Boot固件,提供编译方法和常见问题解决方案(如工具链缺失)。最后给出QEMU启动命令,成功运行RISCV架构的Ubuntu服务器系统。整个过程涉及镜像处理、固件编译、虚拟机配置等关键步骤。

2025-06-11 22:08:28 803

fork的系统调用分析

fork系统调用

2025-12-23

空空如也

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

TA关注的人

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