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

2025年7月23日

Linux Crypto(4):框架核心层

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

posted @ 2025-07-23 23:59 ArnoldLu 阅读(14) 评论(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 阅读(16) 评论(0) 推荐(0)

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-22 23:59 ArnoldLu 阅读(6) 评论(0) 推荐(0)

Linux Crypto(8):hash以及sha256

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

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

2025年7月21日

Linux Crypto(5):算法实现层

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

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

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-21 23:59 ArnoldLu 阅读(19) 评论(0) 推荐(0)

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

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

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

Linux Key子系统

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

posted @ 2025-07-21 23:59 ArnoldLu 阅读(15) 评论(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 阅读(19) 评论(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 阅读(15) 评论(0) 推荐(0)

2025年7月12日

kfence作用、使用、示例

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

posted @ 2025-07-12 23:59 ArnoldLu 阅读(21) 评论(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 阅读(95) 评论(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 阅读(5) 评论(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 阅读(52) 评论(0) 推荐(0)

2025年6月21日

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

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

posted @ 2025-06-21 23:59 ArnoldLu 阅读(39) 评论(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 阅读(62) 评论(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 阅读(57) 评论(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 阅读(85) 评论(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 阅读(122) 评论(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 阅读(380) 评论(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 阅读(527) 评论(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 阅读(82) 评论(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 阅读(188) 评论(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 阅读(124) 评论(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 阅读(387) 评论(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 阅读(164) 评论(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 阅读(250) 评论(0) 推荐(0)

2025年4月5日

RK3588+Deepseek(1):开发环境搭建、模型转换、推理程序编译以及模型运行测试

摘要: 1 开发环境搭建 1.1 下载安装miniconda 进入miniconda下载页面下载x86版本:Miniconda3-latest-Linux-x86_64.sh。 执行./Miniconda3-latest-Linux-x86_64.sh安装Miniconda3: 1.2 安装rkllm_to 阅读全文

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

2025年3月22日

sysctl:vm参数设置

摘要: 1 vm.admin_reserve_kbytes = 8192 参数作用: - 功能:为系统管理员(root)进程保留 8MB 内存,防止内存耗尽时关键管理进程(如 SSH、systemd)崩溃。 - 默认值:通常为 256(0.25MB)或 8192(8MB,因系统而异)。 影响分析: 场景 影 阅读全文

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

2025年2月1日

OpenWRT(20):NAND上squashfs+ubifs的overlay实现rootfs

摘要: OpenWrt 使用 squashfs + ubifs 组合作为根文件系统(rootfs)的设计,是针对嵌入式设备(尤其是基于 NAND Flash 的硬件)的一种优化方案。这种设计结合了两种文件系统的优势,解决了嵌入式场景下的关键需求。 1 背景说明 嵌入式设备的硬件限制 NAND Flash 特 阅读全文

posted @ 2025-02-01 23:59 ArnoldLu 阅读(573) 评论(0) 推荐(1)

2025年1月12日

ROS2(2):ROS2 Humble源码下载、编译、软件包说明及其架构

摘要: ROS 2(Robot Operating System 2)是一个开源的机器人开发框架,旨在提供模块化、可扩展的机器人软件开发工具。ROS 2 的源码基于现代 C++ 和 Python,支持多种操作系统(如 Linux、Windows 和 macOS)和硬件平台。 1 环境准备 ROS 2 Hum 阅读全文

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

2025年1月4日

ROS2(1):基于ROS2+Gazebo+RViz2的TurbleBot3仿真开发环境搭建

摘要: 关键词: ROS2:一个用于开发机器人系统的开源框架,提供从通信到硬件抽象等一系列功能,使开发者能够快速构建复杂的机器人应用。 通信机制 (Data Distribution Service, DDS):基于DDS的发布/订阅模型,支持多对多通信,自动发现机制,QoS设置。 节点 (Nodes):代 阅读全文

posted @ 2025-01-04 23:59 ArnoldLu 阅读(4663) 评论(1) 推荐(4)

2024年12月21日

Buildroot:Debugging, profiling and benchmark(4)

摘要: 21 ramspeed/smp ramsmp是ramspeed的SMP版本,同样都用于缓存和内存性能基准测试的工具,特别适用于 UNIX 类操作系统的单处理器和多处理器机器。 ramspeed 的几个主要测试项包括:1. INTmark/FLOATmark:测量缓存和内存的最大理论带宽性能。2. I 阅读全文

posted @ 2024-12-21 23:59 ArnoldLu 阅读(265) 评论(0) 推荐(0)

2024年12月20日

Buildroot:Debugging, profiling and benchmark(3)

摘要: 11 latencytop 使用latencytop需要打开内核CONFIG_LATENCYTOP: Kernel hacking ->Latency measuring infrastructure latencytop运行结果: LatencyTOP version 0.5 (C) 2008 I 阅读全文

posted @ 2024-12-20 23:59 ArnoldLu 阅读(108) 评论(0) 推荐(0)

2024年12月7日

QEMU和主机之间网络通信:使用用户网络模式+端口转发建立主机和虚拟机之间通信

摘要: QEMU使用主机网络主要有以下几种方式,每种方式依赖的技术以及它们是否可以互相访问如下: 1.桥接网络(BridgedNetworking):-依赖技术:桥接网络依赖于在宿主机上创建一个网络桥接接口,将物理网络接口(如eth0)和虚拟机网络接口连接到这个桥接接口上。这样,虚拟机就可以直接与宿主机所在 阅读全文

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

2024年12月6日

Buildroot:Debugging, profiling and benchmark(2)

摘要: 6 dhrystone Dhrystone是一个基准测试程序,它通过模拟一系列简单的算术运算和内存访问操作来测量CPU的整数运算和逻辑运算性能,其测试结果以DMIPS/MHz为单位,表示在Dhrystone标准测试方法下的MIPS值。 参考《dhrystone计算和测试 - ArnoldLu - 博 阅读全文

posted @ 2024-12-06 23:59 ArnoldLu 阅读(98) 评论(0) 推荐(0)

2024年11月29日

Buildroot:Debugging, profiling and benchmark(1)

摘要: 1 blktrace blktrace 是一个 Linux 内核工具,用于跟踪和分析块设备(如硬盘、固态硬盘、USB 存储设备等)的 I/O 请求。它可以帮助用户理解操作系统如何与块设备交互,以及 I/O 请求在系统中的流动情况。这对于性能分析、故障排除和存储系统优化非常有用。 参考《Linux I 阅读全文

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

2024年11月23日

时间同步:基于PPS、NMEA协议,使用GPS模块、gpsd、chronyd构建时间同步方案

摘要: 基于GPS(提供NMEA和PPS)获取精确时间,gpsd将时间提供给chronyd,进而完成精确时间同步。 1 时间同步框架 整个时钟同步框架实现包括: GPS模块:通过UART传输NMEA协议信息;通过GPIO中断,传递PPS信号。 gpsd从PPS(/dev/pps0)和NMEA(/dev/tt 阅读全文

posted @ 2024-11-23 23:59 ArnoldLu 阅读(3318) 评论(0) 推荐(1)

Linux TEE子系统:TEE子系统、OPTEE驱动、tee-supplicant

摘要: Linux TEE(以RISC-V为例)解决方案大致如下: TEE中运行TOS,比如OPTEE OS,及运行于其上的TA(Trusted Application)。 SecureMonitor,比如OpenSBI,负责安全和非安全切换,以及安全任务分发。 Linux kernel中TEE子系统,负责 阅读全文

posted @ 2024-11-23 14:54 ArnoldLu 阅读(1060) 评论(0) 推荐(1)

2024年11月22日

Linux PPS子系统:PPS子系统框架、PPS-GPIO驱动、pps-tools等介绍

摘要: PPS(Pulse Per Second)指的是“每秒脉冲”,它是一种高精度的时间信号,每秒钟提供一个脉冲,通常用于时间同步和时钟校准。PPS源可以是各种设备,比如GPS接收器、网络时间协议(NTP)服务器或其他能够提供精确时间信号的设备。 PPS信号的发送时机通常是在每秒的开始,即在UTC时间的整 阅读全文

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

导航

点击右上角即可分享
微信分享提示