Linux 5.10 Pstore 功能测试

目录

    • 简介
    • 环境配置
    • 内核配置
    • 参考
    • 备注


简介

Pstore(Persistent store support)是用于系统发生oops或panic时,自动保存内核log buffer中的日志。随着功能不断完善,Duo S使用Linux 5.10已经支持保存console日志、ftrace消息和用户空间日志的收集,也支持将这些消息保存在不同的存储设备中,如内存、块设备或mtd设备。 为了提高灵活性和可扩展性,pstore将以上功能分别抽象为前端和后端,区别如下:

  • pstore的前端,是指转存的日志类型,目前支持以下几个前端:

    • dmesg:主要是转存Panic/Oopslog_buf里面的内核日志
    • pmsg:提供给用户空间存储日志的入口,在Android里有看到被用于存储系统的日志。
    • console:终端日志
    • ftrace:function trace的信息
  • pstore的后端,是指转存到什么类型的设备,目前支持以下几种后端:

    • pstore/ram:Persistent Ram,重启不会丢数据的内存

    • pstore/blk:(v5.8以后的版本)所有可写的块设备,例如磁盘、U盘、emmc、NFTL nand等

    • mtd device:(v5.8以后的版本)mtd设备,例如 mtd nand。(mtd设备的支持依赖于 pstore/blk 后端,准确来说不是一种独立后端)

在这里插入图片描述

环境配置

source build/milkvsetup.sh# Duo S
source device/milkv-duos-sd/boardconfig.sh 
defconfig cv1813h_milkv_duos_sd

内核配置

修改配置文件:build/boards/cv181x/cv1813h_milkv_duos_sd/linux/cvitek_cv1813h_milkv_duos_sd_defconfig

diff --git a/build/boards/cv181x/cv1813h_milkv_duos_sd/linux/cvitek_cv1813h_milkv_duos_sd_defconfig b/build/boards/cv181x/cv1813h_milkv_duos_sd/linux/cvitek_cv1813h_milkv_duos_sd_defconfig
index d07358d26..c1475d639 100644
--- a/build/boards/cv181x/cv1813h_milkv_duos_sd/linux/cvitek_cv1813h_milkv_duos_sd_defconfig
+++ b/build/boards/cv181x/cv1813h_milkv_duos_sd/linux/cvitek_cv1813h_milkv_duos_sd_defconfig
@@ -530,3 +530,7 @@ CONFIG_BT_HCIUART_H4=y# CONFIG_BT_HCIVHCI is not set# CONFIG_BT_MRVL is not set# CONFIG_BT_MTKSDIO is not set
+
+CONFIG_PSTORE=y				# PStore 功能开启
+CONFIG_PSTORE_CONSOLE=y		# 前端:console
+CONFIG_PSTORE_RAM=y			# 后端:ram

说明:

  • CONFIG_PSTORE=y,PStore 功能开启;
  • CONFIG_PSTORE_CONSOLE=y,PStore 前端:console;
  • CONFIG_PSTORE_RAM=y,PStore 后端:ram;

修改后使用如下命令使修改生效并重新生成新uImage

# 配置
menuconfig_kernel# 编译
build_kernel

待解决编译错误。---- 230408

参考

  • 参考1. Linux pstore 实现自动“抓捕”内核崩溃日志
  • 参考2. linux内核调试(三)内核崩溃日志抓取pstore

备注

  • Makefile保存精简后的defconfig为默认配置文件

    diff --git a/build/Makefile b/build/Makefile
    index 9746743d1..28faaa083 100644
    --- a/build/Makefile
    +++ b/build/Makefile
    @@ -300,6 +300,8 @@ kernel-menuconfig: ${KERNEL_OUTPUT_CONFIG_PATH}$(call print_target)${Q}$(MAKE) -j${NPROC} -C ${KERNEL_PATH} O=${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER} menuconfig${Q}$(MAKE) -j${NPROC} -C ${KERNEL_PATH} O=${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER} savedefconfig
    +       ${Q}cmp -s ${KERNEL_DEFAULT_CONFIG_PATH} ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}/defconfig || \
    +               ${Q}cp -vb ${KERNEL_PATH}/${KERNEL_OUTPUT_FOLDER}/defconfig ${KERNEL_DEFAULT_CONFIG_PATH}
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/800998.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Transformer架构顶层应用的基础知识

Transformer架构自从2017年被提出以来,已经在自然语言处理(NLP)和其他领域成为了一种革命性的模型结构。它不仅在各种NLP任务中取得了突破性的表现,也被扩展应用于图像处理、音频处理等领域。理解Transformer架构及其顶层应用的基…

Java基于SpringBoot+Vue的专家医院预约挂号系统,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

Android Framework学习笔记(2)----系统启动

Android系统的启动流程 启动过程中,用户可控部分是framework的init流程。init是系统中的第一个进程,其它进程都是它的子进程。 启动逻辑源码参照:system/core/init/main.cpp 关键调用顺序:main->FirstStageMain->SetupSel…

题目:宏#define命令练习(3)

题目:宏#define命令练习(3)    There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated should…

顺序表(1)——顺序表详解

什么是数据结构? 简单来说数据结构就是计算机储存,组织数据的方式,而数组就是最基础的数据结构。 那为什么会有数据结构的存在呢? 这需要将数据结构分成数据和结构两部分进行分析。 数据:我们在计算机屏幕上所看见的文…

【LeetCode: 572. 另一棵树的子树 + 二叉树 + dfs】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

spring事务那些事

实际工作中还会面临千奇百怪的问题,看下面返个例子(注意MySql数据库测试): //1.hello1Service 调用 hello2Service Transactional(propagation Propagation.REQUIRED,rollbackFor Exception.class) public void doUpdate() {//…

深入解析:链游、DApp、公链、NFT与交易所开发的全景图

随着数字货币和区块链技术的迅速发展,链游开发、DApp开发、公链开发、NFT开发以及交易所开发等领域吸引了越来越多的关注。本文将以3000字的篇幅,对这些领域进行详细解析,探讨它们的意义、应用场景以及未来发展趋势。 链游开发(Bl…

LwIP TCP/IP

LWIP 架构 LwIP 符合 TCP/IP 模型架构,规定了数据的格式、传输、路由和接收,以实现端到端的通信。 此模型包括四个抽象层,用于根据涉及的网络范围,对所有相关协议排序(参见图 2)。这几层从低到高依次为&am…

linux内核网络--skb_shared_info结构和skb_shinfo函数“每日读书”

如图2-5所示,数据缓冲区尾端有个名为skb_shared_info的数据结构,用以保持此数据区块的附加信息,此数据结构紧接在标记数据尾端的end指针之后,此数据结构的定义如下, struct skb_shared_info { atomic_t dataref; unsig…

ctfshow web入门 php特性 web123--web139

web123 必须传CTF_SHOW,CTF_SHOW.COM 不能有fl0g 在php中变量名字是由数字字母和下划线组成的,所以不论用post还是get传入变量名的时候都将空格、、点、[转换为下划线,但是用一个特性是可以绕过的,就是当[提前出现后,…

机器学习模型——GBDT和Xgboost

GBDT基本概念: GBDT(Gradient Boosting Decision Tree,简称GBDT)梯度提升决策树,是Gradient Boost 框架下使用较多的一种模型,且在GBDT中,其基学习器是分类回归树也就是CART,且使用…

【第二十六篇】Burpsuite实现请求方式修改+请求体文件选取

有时我们想将请求包的请求方法或请求体进行修改,这些操作可以由burpsuite完成,以节省时间。 文章目录 修改请求方法请求体文件选取修改请求方法 例如,某请求包的请求方法为GET: 如果我们想将其修改为POST且传递POST参数、上传文件,可以按以下步骤: 1、修改请求方法 2…

vue2中的局部组件和全局组件

注:vue2中使用组件远没有vue3中简单,具体可以看阿耿老师的lingshi小程序 如图所示:

二分练习题——奶牛晒衣服

奶牛晒衣服 题目分析 这里出现了“弄干所有衣服的最小时间”,那么可以考虑用二分去做。 第一阶段二段性分析 假设当前需要耗费的时间为mid分钟,如果mid分钟内可以烘干这些衣服,那么我们可以确定右边界大于mid的区间一定也可以。但是此时我…

2024.3.23力扣每日一题——统计桌面上的不同数字

2024.3.23 题目来源我的题解方法一 数学 题目来源 力扣每日一题;题序:2549 我的题解 方法一 数学 根据数学规律可知,当n1或n2时,桌上满足条件的永远只有一个数字(1或2);当n>2时&#xff0…

【拓扑的基】示例及详解

集合X的某拓扑的一个基是X的子集的一个族(其成员称为基元素),满足条件: 1. 2. 由基生成拓扑 由生成的拓扑(满足以上两个条件) 等价描述: 由所有可表示为的某些成员的井的那些集合组成 例1: 证明:由生成的族确实是拓扑…

springboot-admin使用及原理剖析

服务端 依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>de.codecentric</groupId><art…

提高网站安全性,漏洞扫描能带来什么帮助

随着互联网的蓬勃发展&#xff0c;网站已经成为人们获取信息、交流思想、开展业务的重要平台。然而&#xff0c;与之伴随的是日益严重的网络安全问题&#xff0c;包括恶意攻击、数据泄露、隐私侵犯等。 为了保障网站的安全性&#xff0c;提前做好网站的安全检测非常有必要&…

贪婪算法python实现

贪婪算法&#xff08;Greedy Algorithm&#xff09;是一种解决问题的策略&#xff0c;它基于一种贪心的思想&#xff1a;在每一步选择中都采取当前状态下最好或最优的选择&#xff0c;从而希望最终能够得到全局最优解。 其核心思想可以简单概括为“当前局部最优选择”&#xff…