kpatch制作內核熱補丁步驟總結

零、原理及參考

kpatch入門實踐教程-CSDN博客

Kpatch 使用過程及其原理-CSDN博客

一、準備工作

  1. 安裝對應版本的kpatch-build.rpm并解決依賴
  2. diff -Naur dir1 dir2 > hot.patch 拿到補丁文件
  3. 下載對應內核版本的src.rpm
  4. 安裝好對應的開發包kernel-debuginfo,kernel-debuginfo-common,并可在/lib/debug/lib/modules/xxx-xxx.el7.x86_64/下找到vmlinux內核映像文件
  5. mkdir -p /usr/share/kpatch/patch提前創建好目錄(不然也是~/.kpatch/build.log報錯后建)
  6. kpatch-build?-r kernel-bek-4.19.25-200.el7.bclinux.src.rpm -v /lib/debug/lib/modules/4.19.25-200.el7.x86_64/vmlinux ?Unexpected_TXQ_queue_failure.patch --skip-gcc-check

在當前目錄編譯出內核熱補丁ko后,嘗試打入補丁

1.查看已安裝的熱補丁

# kpatch list (或者?lsmod)

2.加載kpatch熱補丁模塊

# kpatch load xxx.ko (或者?insmod xxx)

# kpatch list 查看加載情況 (或者?lsmod | grep xxx)

3.卸載某個kpatch熱補丁模塊

# kpatch unload xxx.ko

rmmod報錯是因為該熱補丁正在use,不能直接卸載,可以試著用配置取消熱補丁:

# echo 0 > /sys/kernel/livepatch/livepatch_xxx/enabled

徹底移除該kpatch熱補丁模塊可以使用uninstall

# kpatch uninstall xxx.ko

# kpatch list 查看卸載情況

如果僅僅移除kpatch熱補丁模塊不會卸載運行內核已加載的熱補丁模塊,除非使用上面描述的kpatch upload命令。

二、制作熱補丁時遇到問題及解決方式

  1. kpatch-build比較占磁盤空間,所以最開始要df -h 確保至少有16G空間
  2. fatal error: openssl/opensslv.h: No such file or directory

????????A:缺少包,直接yum -y install openssl-devel即可(apt-get install libssl-dev)

???? 3.

A:有時發現報錯“No targets, No makefile”確實離譜,可能是版本不匹配,最后換了個kpatch-build.rpm版本的包就可以了。

三、其它參考筆記

本次熱補丁patch如下,本來不應該用熱補丁去調試一個功能,而是去修改一個功能。但本次是線上產品,無法本地復現所以就加打印探查一下:

如果是純學習的話,其實可以用下面這個源碼提供的補丁,直接cat /proc/meminfo就能看出區別了

diff -Nupr src.orig/fs/proc/meminfo.c src/fs/proc/meminfo.c
--- src.orig/fs/proc/meminfo.c	2017-09-22 15:27:21.699056179 -0400
+++ src/fs/proc/meminfo.c	2017-09-22 15:27:41.274137239 -0400
@@ -99,7 +99,7 @@ static int meminfo_proc_show(struct seq_"Committed_AS:   %8lu kB\n""VmallocTotal:   %8lu kB\n""VmallocUsed:    %8lu kB\n"
-		"VmallocChunk:   %8lu kB\n"
+		"VMALLOCCHUNK:   %8lu kB\n"#ifdef CONFIG_MEMORY_FAILURE"HardwareCorrupted: %5lu kB\n"#endif

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40955.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40955.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40955.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從GPT-1到GPT-3 預訓練語言模型的演進與突破

本文由 ChatMoney團隊出品 前言 Generative Pre-trained Transformer(GPT)系列是由OpenAI開發的預訓練語言模型,它們在多種NLP任務中取得了令人矚目的成績,包括文章生成、代碼生成、機器翻譯和問答等。GPT系列模型的核心思想是通…

數據庫開發:mysql基礎一

文章目錄 數據庫開發Day15:MySQL基礎(一)一、MySQL介紹與安裝【1】MySQL介紹(5)啟動MySQL服務(6)修改root登陸密碼 二、SQL簡介三、數據庫操作四、數據表操作4.1、數據庫數據類型4.2、創建數據表…

對標 GPT-4o 的開源實時語音多模態模型:Moshi

是由法國的 AI 實驗室 Kyutai 推出的實時語音多模態模型,支持聽、說、看,最關鍵的是你現在就可以在瀏覽器中使用,如果這個鏈接延遲高,可以試試這個, 無需輸入郵箱,點擊 Join queue 即可。 簡單體驗了下,比…

#### golang中【堆】的使用及底層 ####

聲明,本文部分內容摘自: Go: 深入理解堆實現及應用-騰訊云開發者社區-騰訊云 數組實現堆 | WXue 堆(Heap)是實現優先隊列的數據結構,Go提供了接口和方法來操作堆。 應用 package mainimport ("container/heap&q…

結構方程模型-驗證性因子分析模型

初級 第7講 驗證性因子分析模_嗶哩嗶哩_bilibili

使用 ESP32 接收來自 MAX4466 模擬麥克風模塊的數據,并通過 DAC 輸出模擬音頻信號,可以通過以下步驟實現:

硬件準備 ESP32 開發板MAX4466 模擬麥克風模塊揚聲器或耳機接線 MAX4466 模塊輸出(AO) -> ESP32 ADC 引腳(如 GPIO 34)ESP32 DAC 引腳(如 GPIO 25 或 GPIO 26) -> 揚聲器或耳機軟件準備 音頻采集DAC 轉碼并播放代碼實現 以下代碼展示了如何從 MAX4466 讀取模擬音頻…

【Go語言入門學習筆記】Part7.閉包和defer關鍵字

一、前言 閉包有點像對象,而defer適合于類似功能中利用資源時,提前寫幾句defer 釋放資源,防止后面釋放資源忘記寫釋放資源。 二、學習代碼 package mainimport ("fmt" )// getC的返回值是一個函數,需要的參數為空&…

GitHub Pull Request流程詳解

GitHub Pull Request流程詳解 在協作開發中,GitHub的Pull Request(PR)功能至關重要,它允許開發者在代碼庫中進行修改、審查和合并代碼。本文將詳細介紹GitHub Pull Request的完整流程,幫助你更好地理解和使用這一強大…

網絡安全的十字路口:向“架構化”轉移

市場條件正在快速變化 針對上述這些問題,在這段時間里,安全技術供應商推出了許多技術解決方案,比如SIEM、SOAR、XDR、UEBA等,但新產品的推出并未使得安全態勢有所好轉,許多問題依然存在,這導致了市場動態的…

【DevOps】Java內存分配與JVM參數詳解

目錄 引言 JVM內存結構 JVM參數概述 堆內存分配 年輕代與老年代 調整堆內存大小 調整年輕代與老年代比例 元空間分配 調整元空間大小 垃圾回收 調整GC參數 調整GC日志 線程棧分配 調整線程棧大小 性能調優 結論 在Java開發中,理解Java虛擬機&#x…

claude3.5寫作——《基于灰色預測的中國人口數量預測》

文章目錄 站點和提問引言一、灰色預測模型介紹二、中國歷年人口數據三、灰色預測模型的建立1.建立原始序列2.生成1-AGO序列3.計算背景值4.構造數據矩陣并計算參數5.模型檢驗6.模型預測 四、預測結果分析五、政策建議結語參考文獻 站點和提問 站點:中國官方克勞德3.…

如何更改 Python pip 源為國內源

在使用 Python 安裝包工具 pip 時,經常會遇到下載速度慢的問題。這通常是因為默認使用的官方源 https://pypi.org/simple 在國內訪問速度較慢。為了提高下載速度,我們可以將 pip 源更改為國內的鏡像源。本文將介紹如何臨時和永久地更改 pip 源為國內源。…

光伏電站數據采集方案(基于工業路由器部署)

? 一、方案概述 本方案采用星創易聯SR500工業路由器作為核心網關設備,實現對光伏電站現場數據的實時采集、安全傳輸和遠程監控。SR500具備多接口、多功能、高可靠性等特點,能夠滿足光伏電站數據采集的各種需求。(key-iot.com/iotlist/sr500…

RK3568平臺(opencv篇)ubuntu18.04上安裝opencv環境

一.什么是 OpenCV-Python OpenCV-Python 是一個 Python 綁定庫,旨在解決計算機視覺問題。 ? Python 是一種由 Guido van Rossum 開發的通用編程語言,它很快就變得非常流行,主要是 因為它的簡單性和代碼可讀性。它使程序員能夠用更少的代碼行…

C++ 運算符的優先級和關聯性表

C 運算符的優先級和關聯性表 1. Precedence and associativity (優先級和結合性)2. Alternative spellings (替代拼寫)3. C operator precedence and associativity table (C 運算符的優先級和關聯性表)References C documentation (C 文檔) https://learn.microsoft.com/en-us…

網絡IO模型之多路復用器.md

多路復用是什么?怎么理解? 本文主要涉及為 程序中處理網絡IO時的模型,對于系統內核而言網絡IO模型。這里只做普及使用 前置知識,什么是IO?怎么理解IO IO其實就是In和Out。中文翻譯是輸入和輸出,只要涉及到輸…

clone()方法

在Java中,clone() 方法是一個非常有趣且強大的工具,用于創建對象的一個副本。這個方法位于 Object 類中,因此可以被所有類使用。讓我們討論一下它的幾個要點: 什么是克隆? 克隆就是創建一個對象的新副本,這…

2005-2022全國及各省家庭承包耕地流轉總面積及經營耕地面積數據(無缺失)

2005-2022全國及各省家庭承包耕地流轉總面積及經營耕地面積數據(無缺失) 1、時間:2005-2022年 2、范圍:全國及30省 3、指標:家庭承包耕地流轉總面積、家庭承包經營耕地面積、土地流轉率、 4、來源:農村…

《web應用技術》第十一次課后作業

驗證過濾器進行權限驗證的原理。 創建Filter: package com.example.filter;import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException;WebFilter(urlPatterns "/*") public class DemoFilter implements Filter …

【3維BFS】個人練習-Leetcode-LCP 79. 提取咒文

題目鏈接:https://leetcode.cn/problems/kjpLFZ/ 題目大意:給一個矩陣matrix[][],元素為小寫英文字母。給一個字符串mantra,求從矩陣的(0,0)位置開始,可以移動(上下左右)或者提取字母&#xff…