LXR | KVM | PM | Time | Interrupt | Systems Performance | Bootup Optimization

2025年12月8日

Linux ptrace分析

摘要: 本文档面向希望理解 Linux 下 ptrace 的工程师与研究者,覆盖系统调用原理、追踪机制、信号处理、断点调试、硬件基础、源码映射及示例。 1. 概述与用途 ptrace 是 Linux 下提供的一种用户空间进程追踪和控制接口,它允许一个进程(追踪器/Tracer)观察并操控另一个进程(被追踪进 阅读全文

posted @ 2025-12-08 23:59 ArnoldLu 阅读(5) 评论(0) 推荐(0)

2025年11月29日

Perfetto:离线版本和Electron打包桌面应用

摘要: 目前 Perfetto 的官方 UI(ui.perfetto.dev)需要依赖网络环境,可能会受网络带宽和连接稳定性影响效率。如果你希望实现更高效的使用体验,可以考虑使用 离线版本 或通过 Electron 打包为 桌面应用,避免受限于网络环境。 1 Perfetto离线版本 虽然 Perfetto 阅读全文

posted @ 2025-11-29 23:59 ArnoldLu 阅读(17) 评论(0) 推荐(0)

2025年11月22日

VSCode:简单插件开发

摘要: 1. 概述 本文演示如何使用最简单的 JavaScript 编写并发布一个 VS Code 扩展。示例扩展 simple-hello-js 在激活时会打开一个小面板,面板中有一个只读文本框显示:"Hello, Plugin!"。 2. VS Code 扩展总体框架 2.1 什么是 VS Code 扩 阅读全文

posted @ 2025-11-22 23:59 ArnoldLu 阅读(46) 评论(0) 推荐(0)

2025年11月16日

ROCm Compute Profiler概述:Standalone GUI(Web UI)

摘要: Standalone GUI 的目标是: 从几 MB 到几百 MB 的 profiling trace / counter 数据中,构建可视化的 Timeline / Counter / Heatmap / 指标图表; 在浏览器中提供 可交互 的体验(缩放、过滤、选择 kernel/GPU/metr 阅读全文

posted @ 2025-11-16 23:59 ArnoldLu 阅读(22) 评论(0) 推荐(0)

2025年11月15日

ROCm Compute Profiler概述:源码、安装、CLI、TUI

摘要: 在 GPU 性能调优链路中,采集、分析与可视化三者组成了完整闭环。rocprofiler-compute(又称 ROCm Compute Profiler)提供了一个以 Python/Dash 为核心的轻量级 Profiling 方案:它负责从 HIP 应用采集低层硬件计数器与 trace,支持命令 阅读全文

posted @ 2025-11-15 23:59 ArnoldLu 阅读(39) 评论(0) 推荐(0)

2025年10月26日

Perfetto:抓取log与分析

摘要: 编译工具,然后使用工具抓取Trace并及进行分析。 1 编译工具 下载Perfetto源码: git clone https://android.googlesource.com/platform/system/perfetto.git cd perfetto 生成配置文件: tools/gn ge 阅读全文

posted @ 2025-10-26 23:59 ArnoldLu 阅读(9) 评论(0) 推荐(0)

2025年10月11日

Ubuntu 24.04下CUDA 13.0开发环境搭建和测试

摘要: 在Ubuntu 24.04下安装CUDA 13.0的开发环境,并使用cuda-samples进行测试。 1. 系统准备 在正式安装 CUDA 之前,先确保系统是最新的,并具备编译工具和基础依赖: sudo apt update sudo apt upgrade -y sudo apt install 阅读全文

posted @ 2025-10-11 23:59 ArnoldLu 阅读(1004) 评论(0) 推荐(0)

2025年9月13日

基于工具分析代码调用栈(静态/动态/插桩等等)

摘要: 当代码比较复杂,不易于分析的时候,通过执行一遍来分析调用关系,不失为一种有效的方法。同时还能对阅读结果进行正确性校验。 1 示例 C++ 调用路径分析代码 示例代码: #include <iostream> #include <vector> #include <memory> #include < 阅读全文

posted @ 2025-09-13 23:59 ArnoldLu 阅读(100) 评论(0) 推荐(0)

2025年9月7日

rocprofv3+Perfetto用于分析ROCm软件

摘要: 通过rocprofv3抓取pftrace格式的Trace数据,然后通过Perfetto进行离线分析ROCm软件的行为。 1 rocprofv3 核心功能总结 rocprofv3 是 AMD ROCm 平台上的第三代性能分析工具,用于收集和分析运行在 AMD GPU 上应用程序的跟踪数据和硬件性能计数 阅读全文

posted @ 2025-09-07 23:59 ArnoldLu 阅读(108) 评论(0) 推荐(0)

2025年9月6日

DKMS:基于源码自动升级内核模块以匹配内核升级

摘要: DKMS(Dynamic Kernel Module Support)是一个用于在系统内核升级时自动重新编译和安装第三方内核模块的功能。Linux 内核升级后,第三方内核模块(如 NVIDIA/AMD GPU 驱动、VirtualBox、无线网卡驱动等)需要重新编译才能与新内核兼容。DKMS自动跟踪 阅读全文

posted @ 2025-09-06 23:59 ArnoldLu 阅读(167) 评论(0) 推荐(0)

2025年8月30日

基于gem5的ROCm开发环境搭建和测试

摘要: 正如《我买不起AMD MI300X计算卡,也可以学习ROCm吗?》标题所说,不是谁都有AMD GPU算力卡进行ROCm开发。那么搭建一个虚拟开发环境,便捷经济。 如《Full System AMD GPU model》指出,gem5提供了全系统的GPU模拟,并且CPU部分的模拟通过KVM CPU实现 阅读全文

posted @ 2025-08-30 23:59 ArnoldLu 阅读(317) 评论(0) 推荐(0)

2025年8月10日

Ubuntu 24.04下使用TheRock编译ROCm

摘要: ROCm/TheRock: The HIP Environment and ROCm Kit是专为AMD ROCm生态设计的轻量级开源构建系统,旨在简化HIP(异构计算接口)和ROCm(AMD GPU计算平台)的开发、编译与集成流程。 1 AMD GPU架构 详细请参考: 《Compatibilit 阅读全文

posted @ 2025-08-10 23:59 ArnoldLu 阅读(120) 评论(0) 推荐(0)

2025年7月28日

Linux Crypto(9):tcrypt进行Crypto测试

摘要: 通过/proc/crypto获取当前内核支持的Crypto算法,然后通过tcrypt模块进行测试。 1 配置tcrypt Cryptographic API (CRYPTO [=y]) ->Crypto core or helper ->Testing module 不能打开CRYPTO_MANAG 阅读全文

posted @ 2025-07-28 23:59 ArnoldLu 阅读(136) 评论(0) 推荐(0)

2025年7月27日

Linux Crypto(8):hash以及sha256

摘要: Linux Crypto:hash 1 哈希算法基础 哈希算法(Hash Algorithm)将任意长度输入(消息)映射为固定长度输出(哈希值),具有以下特性:1. 确定性:相同输入产生相同输出2. 高效性:快速计算哈希值3. 抗碰撞性:难以找到不同输入产生相同输出4. 单向性:难以从哈希值反推原始 阅读全文

posted @ 2025-07-27 23:59 ArnoldLu 阅读(138) 评论(0) 推荐(0)

2025年7月26日

Linux Crypto(7):skcipher以及cbc(aes)组合算法

摘要: skcipher 是一种算法类型,为对称密钥加密。它使用相同的密钥(或一组关联的密钥)对数据进行加密和解密。skcipher API 设计用于处理任意长度的数据流(可能不是块大小的整数倍),通常通过链接模式(如 CBC, CTR, XTS, CFB, OFB)来实现。这与处理固定大小块的 ciphe 阅读全文

posted @ 2025-07-26 23:59 ArnoldLu 阅读(133) 评论(0) 推荐(0)

2025年7月25日

Linux Crypto(6):akcipher以及rsa、rsa,sha256算法注册

摘要: 1 akcipher 在内核 Crypto 框架中的位置 Crypto 框架层级:1. 用户层 (AF_ALG, /dev/crypto, 内核子系统)2. Crypto 核心引擎层 (算法管理, 请求调度)3. 算法实现层 (软件实现/硬件驱动) akcipher是 Linux 内核 Crypto 阅读全文

posted @ 2025-07-25 23:59 ArnoldLu 阅读(186) 评论(0) 推荐(0)

2025年7月24日

Linux Crypto(5):算法实现层

摘要: 算法实现层向框架核心层注册 struct crypto_alg 实例,提供同步或异步的算法运算回调(encrypt/decrypt/digest/sign 等)。 1 算法分类 算法实现层对不同类型算法进行类分类,如下: 类别内核目录示例注册类型关键回调典型算法 SKCIPHER crypto/sk 阅读全文

posted @ 2025-07-24 23:59 ArnoldLu 阅读(116) 评论(0) 推荐(0)

2025年7月23日

Linux Crypto(4):框架核心层

摘要: Linux Crypto 核心框架层统一管理加密算法实现(软件/硬件),为内核和用户空间提供异步/同步加密接口,通过算法注册、会话管理(tfm)和请求调度(async_request)实现安全高效的数据加解密服务。 1 核心作用 1. 算法管理:统一注册/注销加密算法(如 AES、SHA256)。 阅读全文

posted @ 2025-07-23 23:59 ArnoldLu 阅读(162) 评论(0) 推荐(0)

2025年7月22日

Linux Crypto(3):使用者层-内核消费者

摘要: 在Linux Crypto架构中,有部分使用者位于内核,直接调用Crypto API处理安全相关任务。 1 内核 Crypto 使用者表格 技术名称功能说明核心技术关键算法/模式 dm-crypt 块设备透明加密 (LUKS) 对称加密 + IV 生成器 AES-XTS, AES-CBC, Serp 阅读全文

posted @ 2025-07-22 23:59 ArnoldLu 阅读(152) 评论(0) 推荐(0)

2025年7月21日

Linux Key子系统

摘要: Linux Key Retention Service(密钥保留服务)是内核的核心安全组件,用于在内核空间安全地管理密钥、证书和认证凭据。它为内核模块和文件系统提供统一的密钥管理框架。 1 Key子系统基本概念 1.1 主要目标 1. 安全存储:在内核空间安全保存敏感数据(如加密密钥、SSL证书)2 阅读全文

posted @ 2025-07-21 23:59 ArnoldLu 阅读(193) 评论(0) 推荐(0)

2025年7月20日

Linux Crypto(2):使用者层-用户空间(AF_ALG、add_key()/request_key()/keyctl()等)

摘要: Linux Crypto 子系统为用户空间提供了丰富而强大的加密能力,主要通过以下接口实现: 接口类型主要作用用户空间工具内核对应模块典型使用场景 AF_ALG套接字 提供流式加密API OpenSSL (afalg引擎) crypto/af_alg.c 实时网络加密/文件流加密 Netlink接口 阅读全文

posted @ 2025-07-20 23:59 ArnoldLu 阅读(230) 评论(0) 推荐(0)

2025年7月19日

device-mapper(3):(veritysetup/keyctl/dmsetup/openssl)创建私钥、签名并进行dm-verity的签名验证

摘要: 接前《device-mapper(2):块设备数据完整性验证功能dm-verity》,对dm-verity增加验签功能: veritysetup生成镜像的hash数据,以及生成dm-verity设备所需的信息。 openssl生成RSA2048私钥;生成包含公钥的自签名证书;对veritysetup 阅读全文

posted @ 2025-07-19 23:59 ArnoldLu 阅读(139) 评论(0) 推荐(0)

2025年7月13日

Ubuntu 24下ROCm 7.0.1 开发环境搭建和测试

摘要: 下面给出一个 从安装 → 验证 → 代码测试 的完整流程(适用于 Ubuntu 24.04 环境下,参考官方 + 社区经验)。 一、安装 ROCm 开发环境 1. 系统准备 更新系统包与安装内核头部包与模块: sudo apt update sudo apt upgrade -y sudo apt 阅读全文

posted @ 2025-07-13 23:59 ArnoldLu 阅读(299) 评论(0) 推荐(0)

2025年7月12日

kfence作用、使用、示例

摘要: 1 KFENCE 是什么? - 定位:Linux 内核的轻量级内存错误检测工具,由 Google 于 2020 年提出并合并到内核主线(5.12+)。- 核心目标:在生产环境中长期运行,以极低开销实时检测内存错误。- 设计理念:基于 “抽样检测”(Sampling)而非全量检查,平衡性能与安全性。 阅读全文

posted @ 2025-07-12 23:59 ArnoldLu 阅读(122) 评论(0) 推荐(0)

2025年7月6日

slub/slab的内存泄漏、越界访问、UAF、效率分析等调试手段和工具(slabinfo/slub_debug/slabtop/kmemleak/kfence/kasan等)总结

摘要: 1 简单认识slab/slub 1.1 slab/slub是什么? slab/slub都是对象缓存分配器,目标是高效地分配和释放内核中频繁使用的小尺寸内存对象(如 task_struct, inode, dentry, sk_buff 等)。基本思想: 预分配: 在内核启动或模块加载时,预先从伙伴系 阅读全文

posted @ 2025-07-06 23:59 ArnoldLu 阅读(620) 评论(0) 推荐(0)

2025年7月5日

Linux Crypto(1):框架总览

摘要: 1 Linux Crypto分层概览 Linux Crypto 子系统分为三层: 层级描述包含组件 使用者层 调用加密服务的实体(内核模块或用户空间程序) 内核使用者:IPsec、dm-crypt、fscrypt用户空间:OpenSSL, cryptsetup, AF_ALG 核心框架层 提供统一A 阅读全文

posted @ 2025-07-05 23:59 ArnoldLu 阅读(136) 评论(0) 推荐(0)

2025年6月22日

OpenWRT(23): 使用sar进行系统级状态监控

摘要: 1 OpenWRT下sar配置 如果要在OpenWRT下使用sar,需要配置打开: Utilities ->sysstat 2 sar介绍 sar相关工具包括: 工具功能描述使用场景示例 sar 系统活动报告器,收集/显示系统性能数据 sar -r 1 3 查看内存使用率 sadc 系统活动数据收集 阅读全文

posted @ 2025-06-22 23:59 ArnoldLu 阅读(232) 评论(0) 推荐(0)

2025年6月21日

借助ftrace生成系统启动进程/线程树

摘要: 当一个稍微复杂系统启动时,需要研究这过程都创建了哪些进程/线程,用于分析优化启动速度、降低内存开销。 当系统启动后,通过pstree、top等只能获得进程的snapshot。了解ftrace的events之后,可以知道这里面提供了从系统开始创建进程/线程的事件。 下面在cmdline中打开task_ 阅读全文

posted @ 2025-06-21 23:59 ArnoldLu 阅读(202) 评论(0) 推荐(0)

2025年6月17日

OpenWRT(22):hotplug处理流程

摘要: procd同时负责hotplug处理,根据hotplug.json或hotplug-preinit.json中的规格进行处理。 1 procd中处理热插拔流程 procd对hotplug的出流程如下: 代码流程如下: main ->procd_state_next ->state_enter ->h 阅读全文

posted @ 2025-06-17 23:59 ArnoldLu 阅读(315) 评论(0) 推荐(0)

2025年6月15日

dwarf4和dwarf5差异,以及应用

摘要: 不使用DEBUG_INFO,和使用dwarf4、dwarf5对问题调试定位影响很大。 在嵌入式环境下,尽量使用dwarf5,对最终Image大小影响很小,调试定位收益较大。 1 DWARF4 与 DWARF5 核心差异对比 DWARF 是一种调试信息格式,专门用于描述可执行程序(如编译后的 C、C+ 阅读全文

posted @ 2025-06-15 23:59 ArnoldLu 阅读(209) 评论(0) 推荐(0)

2025年6月14日

RISCV Linux下Illegal Instruction解析定位

摘要: 一个非法指令的日志和产生日志的代码流程分析。 1 非法指令log 一个非法指令异常的log如下: [ 27.111085] Oops - illegal instruction [#1] [ 27.111108] Modules linked in: xxx(O)--tainted信息参考下面。 [ 阅读全文

posted @ 2025-06-14 23:59 ArnoldLu 阅读(256) 评论(0) 推荐(0)

2025年6月7日

Ubuntu(2):systemd启动流程

摘要: systemd是 Linux 系统中最主流的初始化系统(init)和服务管理器,旨在替代传统的 SysV init 系统。它不仅是系统启动的第一个进程(PID 1),还提供了一套完整的系统管理工具集,深度集成到现代 Linux 发行版(如 Ubuntu、Fedora、Debian、RHEL)中。 1 阅读全文

posted @ 2025-06-07 23:59 ArnoldLu 阅读(316) 评论(0) 推荐(0)

2025年6月6日

RISC-V扩展指令集说明

摘要: 1 RISC-V扩展指令集列表 RISC-V扩展指令集列表: 类别扩展名英文全称功能描述详细用途状态 基础整数扩展 I Base Integer RV32I/RV64I核心指令集 提供基础整数运算(加减/逻辑运算)和控制流(跳转/分支),所有RISC-V处理器的基础运行环境。 强制实现 E Embe 阅读全文

posted @ 2025-06-06 23:59 ArnoldLu 阅读(1123) 评论(0) 推荐(1)

2025年6月1日

Ubuntu(1):构建自己的Ubuntu发行版(ARM64)并使用QEMU测试

摘要: 针对 ARM64 (AArch64) 架构优化的嵌入式Ubuntu构建与测试指南,包含完整构建流程和QEMU测试方案。 1 交叉编译环境配置 安装ARM64工具链: sudo apt update sudo apt install gcc-aarch64-linux-gnu build-essent 阅读全文

posted @ 2025-06-01 23:59 ArnoldLu 阅读(1523) 评论(0) 推荐(0)

2025年5月24日

RISC-V Linux下Trap日志解析

摘要: 作为日常RISC-V Linux Trap问题定位参考。 1 Trap输出日志解析 [ 220.441130] dddd[2177]: unhandled signal 11 code 0x1 at 0x000000a8 in dddd[10000+37000] 表示进程 dddd(进程ID为217 阅读全文

posted @ 2025-05-24 23:59 ArnoldLu 阅读(238) 评论(0) 推荐(0)

device-mapper(2):块设备数据完整性验证功能dm-verity

摘要: dm-verity(Device-Mapper Verity)是 Linux 内核中的一个Device-Mapper Target,用于提供块设备数据的完整性验证 功能。它通过哈希树(Hash Tree)和密码学签名,确保设备内容在运行时未被篡改,广泛应用于嵌入式系统、移动设备(如 Android) 阅读全文

posted @ 2025-05-24 23:59 ArnoldLu 阅读(396) 评论(0) 推荐(0)

2025年5月10日

FIT(3):基于FIT对镜像进行加密和解密

摘要: mkimage根据its配置对镜像进行加密,uboot解析FIT对加密部分进行解密,完成镜像内容保护。 1 生成FIT加密镜像 通过openssl rand生成32字节二进制秘钥文件: openssl rand -out aes-key.bin 32 修改kernel.its文件,增加cipher节 阅读全文

posted @ 2025-05-10 23:59 ArnoldLu 阅读(214) 评论(0) 推荐(0)

2025年5月2日

device-mapper(1):概述

摘要: device-mapper是一种块设备虚拟化技术,下面分别介绍device-mapper的背景、在Linux块设备框架结构中位置、内核配置、相关文件、核心数据结构、相关module初始化、支持的Target。 1 dm说明 Device Mapper(设备映射器) 是 Linux 内核中的一个块设备 阅读全文

posted @ 2025-05-02 23:59 ArnoldLu 阅读(873) 评论(0) 推荐(0)

2025年5月1日

RK3588+Deepseek(2):RKNNP驱动

摘要: RNNNP的驱动将RKNPU作为一个DRM设备,同时支持IOMMU以及devfreq进行动态调频。 上层应用通过对RKNPU DRM设备进行控制,发起NNP命令执行和数据搬运。 1 RKNNP硬件框架 RKNN包括3个NPU,可以单核、双核、3核模式下工作,每个核2T算力,共6T。支持TensorF 阅读全文

posted @ 2025-05-01 23:59 ArnoldLu 阅读(453) 评论(0) 推荐(0)

2025年4月12日

OpenWRT(21):sysupgrade中签名和验签流程

摘要: sysupgrade支持在编译的时候生成签名和metadata,在设备进行upgrade进行验签和metadata检查。 1 签名和metadata生成流程 签名和metadata流程如下: 文件类型核心作用 key-build 私钥 签名固件和软件包。 key-build.pub 公钥 验证签名合 阅读全文

posted @ 2025-04-12 23:59 ArnoldLu 阅读(632) 评论(0) 推荐(0)

导航