Linux内核程序入口地址

Linux内核程序入口地址,第1张

在Linux内核中,使用 vmlinux.lds.S 文件(路径: arch/arm64/kernel/ )布局内核映像中相关段(例: .text、.data )的位置。

在Linux内核编译时, vmlinux.lds.S 文件最终会被构建成链接脚本 vmlinux.lds 文件(路径: arch/arm64/kernel/ )。

本文主要介绍Linux内核程序运行的起始位置 _text ,在 vmlinux.lds.S 文件中定义如下:

从上面可以看出: _text = KIMAGE_VADDR + TEXT_OFFSET 。

1、KIMAGE_VADDR定义

文件: arch/arm64/include/asm/memory.h ,定义如下:

文件: include/linux/sizes.h ,定义如下:

宏 KIMAGE_VADDR 展开如下:

上面是按照无符号计算, KIMAGE_VADDR 为: 0xFFFFFF8008000000 。

2、TEXT_OFFSET定义

文件: arch/arm64/Makefile ,定义如下:

通过计算, _text 值为: 0xFFFFFF8008080000 。

在Linux内核启动时,从 log 信息中也可以找到对应的地址:

_text 对应的是虚拟地址 在内核中可以直接通过访问该地址获取其保存的值 ,其对应 Image 映像中的第一个字 0x14424000 。

Image 映像查看方法如下:

本文基于 RockPI 4A 单板Linux 4.4内核。

1、是在/boot目录下2、/usr/src目录一般是系统内核代码目录3、你看/boot/grub/grub.conf文件,kernel那行是vmlinuz...,就是代表内核的名字4、Linux是一个一体化内核(monolithic kernel)系统。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的 *** 作系统。一套基于Linux内核的完整 *** 作系统叫作Linux *** 作系统,或是GNU/Linux。设备驱动程序可以完全访问硬件。Linux内的设备驱动程序可以方便地以模块化(modularize)的形式设置,并在系统运行期间可直接装载或卸载。

您好,希望以下回答能帮助您

官方网站http://www.kernel.org/pub/linux/kernel/,下载。

国内可在http://download.chinaunix.net/download/0007000/6156.shtml有各种版本2.4.x,2.6.x版本下载。

最新Linux Kernel (Linux 内核) 2.6.30,大约60M

如您还有疑问可继续追问。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7606813.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-07
下一篇2023-04-07

发表评论

登录后才能评论

评论列表(0条)

    保存