Kernel之vermagic

Kernel之vermagic | DD'NotesKernel之vermagic内核的vermagic内核的vermagic类似于:5.4.96-xx SMP preempt mod_unload aarch64 内核的vermagic即为VERMAGIC_STRING``(include/linux/vermagic.h) static const char vermagic[] = VERMAGIC_STRING; /* Simply sahttps://notes.z-dd.online/2022/03/27/Kernel%E4%B9%8Bvermagic/

内核的vermagic

内核的vermagic类似于:5.4.96-xx SMP preempt mod_unload aarch64

内核的vermagic即为VERMAGIC_STRING``(include/linux/vermagic.h)

static const char vermagic[] = VERMAGIC_STRING;
/* Simply sanity version stamp for modules. */
#ifdef CONFIG_SMP
#define MODULE_VERMAGIC_SMP "SMP "
#else
#define MODULE_VERMAGIC_SMP ""
#endif
#ifdef CONFIG_PREEMPT
#define MODULE_VERMAGIC_PREEMPT "preempt "
#elif defined(CONFIG_PREEMPT_RT)
#define MODULE_VERMAGIC_PREEMPT "preempt_rt "
#else
#define MODULE_VERMAGIC_PREEMPT ""
#endif
#ifdef CONFIG_MODULE_UNLOAD
#define MODULE_VERMAGIC_MODULE_UNLOAD "mod_unload "
#else
#define MODULE_VERMAGIC_MODULE_UNLOAD ""
#endif
#ifdef CONFIG_MODVERSIONS
#define MODULE_VERMAGIC_MODVERSIONS "modversions "
#else
#define MODULE_VERMAGIC_MODVERSIONS ""
#endif
#ifndef MODULE_ARCH_VERMAGIC
#define MODULE_ARCH_VERMAGIC ""
#endif
#ifdef RANDSTRUCT_PLUGIN
#include <generated/randomize_layout_hash.h>
#define MODULE_RANDSTRUCT_PLUGIN "RANDSTRUCT_PLUGIN_" RANDSTRUCT_HASHED_SEED
#else
#define MODULE_RANDSTRUCT_PLUGIN
#endif

#define VERMAGIC_STRING 						\
	UTS_RELEASE " "							\
	MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT 			\
	MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS	\
	MODULE_ARCH_VERMAGIC						\
	MODULE_RANDSTRUCT_PLUGIN

其中UTS_RELEASE是在最顶层的Makefile中定义的,即为KERNELRELEASE:

CODE
 

uts_len := 64
define filechk_utsrelease.h
    if [ `echo -n "$(KERNELRELEASE)" | wc -c ` -gt $(uts_len) ]; then \
      echo '"$(KERNELRELEASE)" exceeds $(uts_len) characters' >&2;    \
      exit 1;                                                         \
    fi;                                                               \
    (echo \#define UTS_RELEASE \"$(KERNELRELEASE)\";        \
    echo \#define SOURCE_VERSION \"$(SOURCEVERSION)\";)
endef

所以从上面代码可以看出:
vermagic= VERMAGIC_STRING= UTS_RELEASE+ 其他 = KERNELRELEASE+ 其他
注:其他基本上都是由配置所决定,所以这里不做过多讨论,下面来看看KERNELRELEASE

....
作者: Shell
链接: https://notes.z-dd.online/2022/03/27/Kernel%E4%B9%8Bvermagic/
来源: DD'Notes
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值