91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入解析Linux內(nèi)核debug_kinfo驅(qū)動(dòng):為Bootloader打造的內(nèi)核信息備份方案

jf_44130326 ? 來(lái)源:Linux ? 作者:Linux ? 2026-03-12 08:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Android/GKI(Generic Kernel Image)等基于Linux內(nèi)核的系統(tǒng)中,bootloader往往需要獲取內(nèi)核的關(guān)鍵信息以完成調(diào)試、啟動(dòng)校驗(yàn)等操作。debug_kinfo驅(qū)動(dòng)正是為解決這一需求而生——它將內(nèi)核符號(hào)表、內(nèi)存布局、編譯配置等核心信息封裝并寫(xiě)入預(yù)留內(nèi)存區(qū)域,供bootloader直接讀取。本文將從功能定位、代碼流程、核心設(shè)計(jì)三個(gè)維度,深度剖析debug_kinfo的實(shí)現(xiàn)邏輯,并通過(guò)流程圖直觀呈現(xiàn)其核心執(zhí)行路徑。

一、debug_kinfo的核心功能

debug_kinfo驅(qū)動(dòng)的核心目標(biāo)是標(biāo)準(zhǔn)化內(nèi)核關(guān)鍵信息的存儲(chǔ)與傳遞,具體實(shí)現(xiàn)了以下核心能力:

1.收集內(nèi)核編譯配置(如KALLSYMS、CFI_CLANG等開(kāi)關(guān))、符號(hào)表元數(shù)據(jù)(符號(hào)數(shù)量、地址表物理地址等);

2.記錄內(nèi)核內(nèi)存布局(如_stext/_etext物理地址、模塊內(nèi)存區(qū)間等);

3.提供用戶態(tài)接口,支持動(dòng)態(tài)寫(xiě)入build信息(如版本號(hào)、編譯時(shí)間);

4.將所有信息寫(xiě)入設(shè)備樹(shù)指定的預(yù)留內(nèi)存區(qū)域,保證bootloader可訪問(wèn);

5.生成校驗(yàn)和,確保信息完整性。

該驅(qū)動(dòng)主要依賴Linux平臺(tái)總線(platform_driver)和預(yù)留內(nèi)存(reserved_mem)機(jī)制實(shí)現(xiàn),適配了設(shè)備樹(shù)(DTB)驅(qū)動(dòng)模型,具備良好的可移植性。

二、核心數(shù)據(jù)結(jié)構(gòu):信息封裝的載體

要理解debug_kinfo的工作邏輯,首先需掌握其定義的兩個(gè)核心結(jié)構(gòu)體(位于debug_kinfo.h):

1. kernel_info:內(nèi)核信息本體

structkernel_info {// Kallsyms相關(guān)編譯配置__u8 enabled_all;        // 是否開(kāi)啟CONFIG_KALLSYMS_ALL__u8 enabled_base_relative;   // 是否開(kāi)啟CONFIG_KALLSYMS_BASE_RELATIVE__u8 enabled_absolute_percpu;  // 是否開(kāi)啟CONFIG_KALLSYMS_ABSOLUTE_PERCPU__u8 enabled_cfi_clang;     // 是否開(kāi)啟CONFIG_CFI_CLANG// 符號(hào)表元數(shù)據(jù)__u32 num_syms;         // 符號(hào)總數(shù)(kallsyms_num_syms)__u16 name_len;         // 符號(hào)名最大長(zhǎng)度(KSYM_NAME_LEN)__u16 bit_per_long;       // 內(nèi)核long類型位數(shù)(BITS_PER_LONG)// 物理地址信息(供bootloader尋址)__u64 _addresses_pa;      // kallsyms_addresses物理地址__u64 _relative_pa;       // kallsyms_relative_base物理地址__u64 _stext_pa;        // 內(nèi)核文本段起始物理地址__u64 _etext_pa;        // 內(nèi)核文本段結(jié)束物理地址// 其他關(guān)鍵信息:線程棧大小、swapper頁(yè)表物理地址、build信息、模塊布局等__u32 thread_size;       // 線程棧大小(THREAD_SIZE)__u8 build_info[BUILD_INFO_LEN];// 構(gòu)建信息(256字節(jié))__u64 module_start_va;     // 模塊虛擬地址起始__u64 module_end_va;      // 模塊虛擬地址結(jié)束} __packed;

關(guān)鍵設(shè)計(jì):使用__packed屬性強(qiáng)制按字節(jié)對(duì)齊,避免不同架構(gòu)下的內(nèi)存對(duì)齊差異導(dǎo)致bootloader解析出錯(cuò)。

2. kernel_all_info:帶校驗(yàn)的完整信息包

structkernel_all_info {__u32 magic_number;       // 魔數(shù)(0xCCEEDDFF),用于合法性校驗(yàn)__u32 combined_checksum;    // 校驗(yàn)和(異或校驗(yàn))structkernel_info info;    // 內(nèi)核核心信息} __packed;

魔數(shù)用于bootloader識(shí)別有效信息區(qū)域,校驗(yàn)和則通過(guò)異或運(yùn)算生成,確保信息未被篡改。

三、代碼執(zhí)行流程:從驅(qū)動(dòng)加載到信息寫(xiě)入

debug_kinfo的核心邏輯集中在debug_kinfo.c,整體流程可分為驅(qū)動(dòng)初始化(probe)、信息填充、用戶態(tài)接口三個(gè)階段。為了更直觀理解,先呈現(xiàn)整體執(zhí)行流程圖:

wKgZPGmyBYeAVCqDAANgVRY9JCA047.png

階段1:驅(qū)動(dòng)probe——綁定設(shè)備并初始化內(nèi)存

作為platform_driver,debug_kinfo的入口是debug_kinfo_probe函數(shù),負(fù)責(zé)完成設(shè)備綁定、預(yù)留內(nèi)存校驗(yàn)、信息初始化:

步驟1:解析設(shè)備樹(shù),獲取預(yù)留內(nèi)存區(qū)域

mem_region= of_parse_phandle(pdev->dev.of_node,"memory-region",0);rmem= of_reserved_mem_lookup(mem_region);

驅(qū)動(dòng)從設(shè)備樹(shù)節(jié)點(diǎn)中讀取memory-region屬性,找到預(yù)留給bootloader的內(nèi)存區(qū)域(reserved_mem)。該內(nèi)存區(qū)域由內(nèi)核提前分配且不參與普通內(nèi)存管理,確保bootloader可直接訪問(wèn)。

步驟2:校驗(yàn)預(yù)留內(nèi)存合法性

if(!rmem->base|| !rmem->size)return-EINVAL;if(rmem->size 

檢查預(yù)留內(nèi)存的基地址、大小是否有效,且需至少容納kernel_all_info結(jié)構(gòu)體(避免信息截?cái)啵?/p>

步驟3:映射預(yù)留內(nèi)存并初始化

all_info_addr = rmem->priv; // 獲取預(yù)留內(nèi)存的虛擬地址memset(all_info_addr,0,sizeof(structkernel_all_info));// 清空內(nèi)存

rmem->priv是預(yù)留內(nèi)存的虛擬地址(內(nèi)核已完成映射),驅(qū)動(dòng)先清空該區(qū)域,為后續(xù)填充信息做準(zhǔn)備。

階段2:填充內(nèi)核核心信息

probe函數(shù)的核心邏輯是將內(nèi)核關(guān)鍵信息寫(xiě)入kernel_info結(jié)構(gòu)體,對(duì)應(yīng)流程圖中I-L步驟,主要分為以下幾類:

1.編譯配置信息(宏定義展開(kāi))

info->enabled_all = IS_ENABLED(CONFIG_KALLSYMS_ALL);info->enabled_cfi_clang = IS_ENABLED(CONFIG_CFI_CLANG);

通過(guò)IS_ENABLED宏讀取內(nèi)核編譯時(shí)的配置(如是否開(kāi)啟符號(hào)表、CFI校驗(yàn)等),將布爾值轉(zhuǎn)為u8類型存儲(chǔ)。

2.符號(hào)表元數(shù)據(jù)(kallsyms相關(guān))

info->num_syms = kallsyms_num_syms; // 符號(hào)總數(shù)if (!info->enabled_base_relative) {info->_addresses_pa = (u64)__pa_symbol(kallsyms_addresses); // 物理地址} else {info->_relative_pa = (u64)__pa_symbol(kallsyms_relative_base);info->_offsets_pa = (u64)__pa_symbol(kallsyms_offsets);}

?kallsyms_addresses:內(nèi)核符號(hào)地址表,__pa_symbol將虛擬地址轉(zhuǎn)為物理地址(供bootloader訪問(wèn));

?若開(kāi)啟CONFIG_KALLSYMS_BASE_RELATIVE,則存儲(chǔ)相對(duì)基地址和偏移量表,而非絕對(duì)地址表。

3.內(nèi)核內(nèi)存布局信息

info->_stext_pa = (u64)__pa_symbol(_stext); // 文本段起始物理地址info->_etext_pa = (u64)__pa_symbol(_etext); // 文本段結(jié)束物理地址info->_end_pa = (u64)__pa_symbol(_end);   // 內(nèi)核鏡像結(jié)束物理地址info->swapper_pg_dir_pa = (u64)__pa_symbol(swapper_pg_dir);// 頁(yè)表物理地址

記錄內(nèi)核核心段的物理地址,bootloader可通過(guò)這些地址定位內(nèi)核鏡像位置。

4.模塊相關(guān)信息

#ifdefined(CONFIG_RANDOMIZE_BASE) && defined(MODULES_VSIZE)info->module_start_va = module_alloc_base;info->module_end_va = info->module_start_va + MODULES_VSIZE;#elifdefined(CONFIG_MODULES) && defined(MODULES_VADDR)info->module_start_va = MODULES_VADDR;info->module_end_va = MODULES_END;#elseinfo->module_start_va = VMALLOC_START;info->module_end_va = VMALLOC_END;#endif

根據(jù)內(nèi)核配置,動(dòng)態(tài)設(shè)置模塊的虛擬地址區(qū)間,適配不同的模塊加載策略(如地址隨機(jī)化、固定地址)。

5.生成校驗(yàn)和

update_kernel_all_info(all_info);

調(diào)用update_kernel_all_info函數(shù),通過(guò)異或運(yùn)算計(jì)算kernel_info所有u32字段的校驗(yàn)和,存入combined_checksum,同時(shí)設(shè)置魔數(shù)DEBUG_KINFO_MAGIC。

階段3:用戶態(tài)接口——?jiǎng)討B(tài)寫(xiě)入build信息

驅(qū)動(dòng)提供了一個(gè)模塊參數(shù)build_info,支持用戶態(tài)動(dòng)態(tài)寫(xiě)入構(gòu)建信息(如版本號(hào)、編譯時(shí)間),對(duì)應(yīng)流程圖中O-S步驟:

1.定義參數(shù)操作接口

staticconststructkernel_param_opsbuild_info_op = {.set = build_info_set, // 設(shè)置函數(shù)};module_param_cb(build_info, &build_info_op,NULL,0200);

module_param_cb注冊(cè)一個(gè)回調(diào)型模塊參數(shù),權(quán)限0200表示只有root可寫(xiě);用戶通過(guò)echo "build-info" > /sys/module/debug_kinfo/parameters/build_info即可寫(xiě)入。

2.實(shí)現(xiàn)參數(shù)設(shè)置邏輯

staticintbuild_info_set(constchar*str,conststructkernel_param *kp){all_info = (structkernel_all_info *)all_info_addr;// 拷貝build信息(截?cái)噙^(guò)長(zhǎng)內(nèi)容)memcpy(&all_info->info.build_info, str,min(build_info_size -1,strlen(str)));update_kernel_all_info(all_info);// 重新計(jì)算校驗(yàn)和// 過(guò)長(zhǎng)時(shí)打印警告并返回錯(cuò)誤if(strlen(str) > build_info_size) {pr_warn("Build info buffer can't hold entire stringn");return-ENOMEM;}return0;}

寫(xiě)入build信息后,驅(qū)動(dòng)會(huì)重新計(jì)算校驗(yàn)和,確保bootloader讀取的信息完整性。

四、設(shè)計(jì)亮點(diǎn)與工程價(jià)值

1.跨階段通信的標(biāo)準(zhǔn)化

通過(guò)預(yù)留內(nèi)存+固定結(jié)構(gòu)體的方式,解決了內(nèi)核與bootloader之間的信息傳遞問(wèn)題——無(wú)需修改bootloader核心邏輯,只需按結(jié)構(gòu)體解析即可獲取內(nèi)核信息。

2.兼容性與可移植性

?基于platform_driver和設(shè)備樹(shù),適配不同硬件平臺(tái);

?使用__packed對(duì)齊、__pa_symbol地址轉(zhuǎn)換等內(nèi)核通用接口,兼容不同架構(gòu)(ARM/ARM64/x86);

?條件編譯適配不同內(nèi)核配置(如模塊地址隨機(jī)化、KALLSYMS_BASE_RELATIVE)。

3.安全性與完整性

?魔數(shù)校驗(yàn):bootloader可通過(guò)magic_number快速識(shí)別有效信息區(qū)域;

?異或校驗(yàn)和:防止內(nèi)存數(shù)據(jù)被篡改,保證信息可信度。

4.可擴(kuò)展性

?build_info字段支持動(dòng)態(tài)寫(xiě)入,適配不同場(chǎng)景的自定義信息需求;

?kernel_info結(jié)構(gòu)體預(yù)留了擴(kuò)展字段(如模塊布局偏移、percpu配置),可按需添加新信息。

五、總結(jié)

關(guān)鍵點(diǎn)回顧

1.debug_kinfo驅(qū)動(dòng)核心是通過(guò)預(yù)留內(nèi)存+標(biāo)準(zhǔn)化結(jié)構(gòu)體,實(shí)現(xiàn)內(nèi)核向bootloader傳遞關(guān)鍵信息,核心流程為“解析設(shè)備樹(shù)→校驗(yàn)內(nèi)存→填充信息→生成校驗(yàn)→提供用戶態(tài)接口”;

2.核心設(shè)計(jì)亮點(diǎn)包括__packed對(duì)齊保證跨架構(gòu)兼容、魔數(shù)+校驗(yàn)和保證信息完整性、模塊參數(shù)支持動(dòng)態(tài)寫(xiě)入build信息;

3.該驅(qū)動(dòng)是內(nèi)核與bootloader跨階段通信的典型實(shí)現(xiàn),為嵌入式系統(tǒng)調(diào)試、啟動(dòng)校驗(yàn)提供了標(biāo)準(zhǔn)化方案。

debug_kinfo驅(qū)動(dòng)是Linux內(nèi)核與bootloader之間的“信息橋梁”,其核心設(shè)計(jì)思路是將內(nèi)核運(yùn)行時(shí)的關(guān)鍵元數(shù)據(jù)標(biāo)準(zhǔn)化、物理化存儲(chǔ),解決了跨執(zhí)行階段的信息傳遞難題。從代碼實(shí)現(xiàn)來(lái)看,它充分利用了Linux內(nèi)核的platform_driver、reserved_mem、模塊參數(shù)等機(jī)制,兼顧了兼容性、安全性和可擴(kuò)展性。

對(duì)于嵌入式系統(tǒng)開(kāi)發(fā)者而言,理解debug_kinfo的實(shí)現(xiàn)邏輯,不僅能掌握內(nèi)核信息封裝的技巧,還能為定制化調(diào)試工具、bootloader適配提供參考——比如基于該驅(qū)動(dòng)擴(kuò)展更多內(nèi)核狀態(tài)信息,或優(yōu)化bootloader的內(nèi)核信息解析邏輯,提升系統(tǒng)調(diào)試和啟動(dòng)的可靠性。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11772

    瀏覽量

    219116
  • bootloader
    +關(guān)注

    關(guān)注

    2

    文章

    245

    瀏覽量

    48091
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux內(nèi)核驅(qū)動(dòng)開(kāi)發(fā)的技術(shù)核心精要

    嵌入式Linux驅(qū)動(dòng)開(kāi)發(fā)是連接硬件與操作系統(tǒng)的關(guān)鍵環(huán)節(jié)。隨著內(nèi)核演進(jìn)(如Linux 6.13)和硬件復(fù)雜度提升,開(kāi)發(fā)者需掌握并發(fā)控制、中斷分層、內(nèi)存管理、設(shè)備樹(shù)、調(diào)試工具等核心知識(shí)。本
    發(fā)表于 03-10 13:56

    Linux內(nèi)核的“心跳”:jiffies如何為系統(tǒng)計(jì)時(shí)?

    Linux 內(nèi)核的世界里,有一個(gè)默默工作的 "計(jì)時(shí)器"——jiffies。它不像我們手機(jī)上的時(shí)鐘那樣顯示年月日,卻掌控著內(nèi)核中絕大多數(shù)時(shí)間相關(guān)的操作:從進(jìn)程調(diào)度到設(shè)備驅(qū)動(dòng)的定時(shí)檢查
    的頭像 發(fā)表于 02-04 16:27 ?843次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>的“心跳”:jiffies如何為系統(tǒng)計(jì)時(shí)?

    深入RK3588內(nèi)核:rockchip_linux_defconfig的作用與調(diào)試價(jià)值

    在 RK3588 芯片的 Linux 開(kāi)發(fā)中,有一個(gè)文件始終是開(kāi)發(fā)者繞不開(kāi)的核心 ——kernel/arch/arm64/configs/rockchip_linux_defconfig。無(wú)論是首次
    的頭像 發(fā)表于 02-03 15:56 ?1184次閱讀
    <b class='flag-5'>深入</b>RK3588<b class='flag-5'>內(nèi)核</b>:rockchip_<b class='flag-5'>linux</b>_defconfig的作用與調(diào)試價(jià)值

    深入解析rk平臺(tái)Android Bootloader核心代碼:從啟動(dòng)流程到AVB驗(yàn)證

    作為Android設(shè)備啟動(dòng)的第一道“閘門(mén)”,Bootloader(以U-Boot為主)承擔(dān)著初始化硬件、加載內(nèi)核、驗(yàn)證鏡像完整性的核心職責(zé)。今天我們拆解Rockchip平臺(tái)
    的頭像 發(fā)表于 01-22 07:06 ?295次閱讀
    <b class='flag-5'>深入</b><b class='flag-5'>解析</b>rk平臺(tái)Android <b class='flag-5'>Bootloader</b>核心代碼:從啟動(dòng)流程到AVB驗(yàn)證

    【「Linux 設(shè)備驅(qū)動(dòng)開(kāi)發(fā)(第 2 版)」閱讀體驗(yàn)】+讀深入理解Linux內(nèi)核內(nèi)存分配

    每個(gè)內(nèi)存地址是虛擬的,不是直接指向RAM中的任何地址。當(dāng)用戶訪問(wèn)內(nèi)存中的存儲(chǔ)單元時(shí),都會(huì)進(jìn)行地址轉(zhuǎn)換以匹配相應(yīng)的物理內(nèi)存。書(shū)籍的第10章討論了五個(gè)主題,對(duì)Linux內(nèi)核內(nèi)存分配進(jìn)行詳細(xì)講解。 接著
    發(fā)表于 01-16 20:05

    【「Linux 設(shè)備驅(qū)動(dòng)開(kāi)發(fā)(第 2 版)」閱讀體驗(yàn)】Linux內(nèi)核開(kāi)發(fā)基礎(chǔ)

    感謝電子發(fā)燒友論壇提供的《Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)(第2版)》閱讀機(jī)會(huì),測(cè)評(píng)將從Linux內(nèi)核開(kāi)發(fā)基礎(chǔ)、Linux
    發(fā)表于 01-12 22:45

    【「Linux 設(shè)備驅(qū)動(dòng)開(kāi)發(fā)(第 2 版)」閱讀體驗(yàn)】+讀內(nèi)核處理的核心輔助函數(shù)

    上周收到《Linux 設(shè)備驅(qū)動(dòng)開(kāi)發(fā)(第 2 版)》書(shū)籍,這是一本介紹Linux內(nèi)核開(kāi)發(fā)的指導(dǎo)性書(shū)籍。全面了解Linux
    發(fā)表于 01-10 22:08

    深入解析RK平臺(tái)Android/Linux Bootloader核心文件:android_bootloader.c

    Bootloader是Android設(shè)備啟動(dòng)的第一道“關(guān)卡”,負(fù)責(zé)初始化硬件、加載系統(tǒng)鏡像并完成內(nèi)核啟動(dòng)的前置準(zhǔn)備。在基于U-Boot的Android設(shè)備中,android_bootloader
    的頭像 發(fā)表于 01-09 10:58 ?1235次閱讀
    <b class='flag-5'>深入</b><b class='flag-5'>解析</b>RK平臺(tái)Android/<b class='flag-5'>Linux</b> <b class='flag-5'>Bootloader</b>核心文件:android_<b class='flag-5'>bootloader</b>.c

    深入Linux內(nèi)核:進(jìn)程調(diào)度的核心邏輯與實(shí)現(xiàn)細(xì)節(jié)

    ,背后都離不開(kāi)內(nèi)核調(diào)度算法的精準(zhǔn)操控。今天,我們就從優(yōu)先級(jí)、調(diào)度算法、時(shí)間片分配到底層實(shí)現(xiàn),全方位拆解Linux內(nèi)核進(jìn)程調(diào)度的核心邏輯。 一、進(jìn)程調(diào)度的“身份標(biāo)識(shí)”:優(yōu)先級(jí)與分類 要理解調(diào)度邏輯,首先得搞懂:進(jìn)程憑什么“插隊(duì)”?
    的頭像 發(fā)表于 12-24 07:05 ?4337次閱讀
    <b class='flag-5'>深入</b><b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>:進(jìn)程調(diào)度的核心邏輯與實(shí)現(xiàn)細(xì)節(jié)

    Linux內(nèi)核日志玩明白了嗎?printk調(diào)試神器全解析

    前言:做Linux驅(qū)動(dòng)開(kāi)發(fā)或內(nèi)核調(diào)試的朋友,一定對(duì)printk不陌生,但你真的會(huì)用它嗎?為什么同樣是調(diào)試RK3588內(nèi)核,別人能精準(zhǔn)捕捉關(guān)鍵錯(cuò)誤,你卻被海量日志淹沒(méi)?今天就帶大家吃透p
    的頭像 發(fā)表于 12-19 08:32 ?885次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>日志玩明白了嗎?printk調(diào)試神器全<b class='flag-5'>解析</b>

    Linux內(nèi)核模塊的加載機(jī)制

    ,比如當(dāng)插入一個(gè)新設(shè)備時(shí),udev會(huì)根據(jù)設(shè)備信息自動(dòng)加載對(duì)應(yīng)的驅(qū)動(dòng)模塊。這是通過(guò)uevent事件和用戶空間的工具配合實(shí)現(xiàn)的,提高了設(shè)備的即插即用能力。 3、解析加載.ko文件 .ko文件
    發(fā)表于 11-25 06:59

    【迅工業(yè)RK3568穩(wěn)定可靠】itop-3568開(kāi)發(fā)板Linux驅(qū)動(dòng)開(kāi)發(fā)實(shí)戰(zhàn):RK3568內(nèi)核模塊符號(hào)導(dǎo)出詳解

    【迅工業(yè)RK3568穩(wěn)定可靠】itop-3568開(kāi)發(fā)板Linux驅(qū)動(dòng)開(kāi)發(fā)實(shí)戰(zhàn):RK3568內(nèi)核模塊符號(hào)導(dǎo)出詳解
    的頭像 發(fā)表于 11-21 13:25 ?1253次閱讀
    【迅<b class='flag-5'>為</b>工業(yè)RK3568穩(wěn)定可靠】itop-3568開(kāi)發(fā)板<b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動(dòng)</b>開(kāi)發(fā)實(shí)戰(zhàn):RK3568<b class='flag-5'>內(nèi)核</b>模塊符號(hào)導(dǎo)出詳解

    Linux內(nèi)核printk日志級(jí)別全解析:從參數(shù)解讀到實(shí)操配置

    ,避免被無(wú)效信息淹沒(méi)。 二、先搞懂:什么是?printk?輸出等級(jí)? printk?是?Linux?內(nèi)核
    的頭像 發(fā)表于 11-20 15:54 ?1732次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>內(nèi)核</b>printk日志級(jí)別全<b class='flag-5'>解析</b>:從參數(shù)解讀到實(shí)操配置

    Linux內(nèi)核參數(shù)調(diào)優(yōu)方案

    在高并發(fā)微服務(wù)環(huán)境中,網(wǎng)絡(luò)性能往往成為K8s集群的瓶頸。本文將深入探討如何通過(guò)精細(xì)化的Linux內(nèi)核參數(shù)調(diào)優(yōu),讓你的K8s節(jié)點(diǎn)網(wǎng)絡(luò)性能提升30%以上。
    的頭像 發(fā)表于 08-06 17:50 ?976次閱讀

    RK3568開(kāi)發(fā)板內(nèi)核模塊實(shí)現(xiàn)-查看模塊信息

    驅(qū)動(dòng)模塊加載之后,使用“modinfo helloworld.ko”命令可以獲得模塊的信息,包括模塊作者,模塊說(shuō)明,模塊支持的參數(shù)等等。 lsmod 命令可以列出已經(jīng)載入 Linux 內(nèi)核
    發(fā)表于 05-16 11:18