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内核。

初用Linux时可能有处处不方便的感觉, 可是等使用一段时间掌握了一些技巧后就会感到越来越顺手了. 以下就是我使用Linux以来积累的一些经验与技巧, 相信对初学者会有所帮助的.

1. 使用虚拟控制台

登录后按Alt+F2键这时又可以看到"login:"提示符, 这个就是第二个虚拟控制台. 一般新安装的Linux有四个虚拟控制台, 可以用Alt+F1~Alt+F4来访问. 虚拟控制台最有用的时候是当一个程序出错锁住输入时可以切换到其他虚拟控制台登录进入后杀掉这个出错的进程.

2. 拷贝与粘贴

字符界面: 不管是Slackware 还是RedHat 安装后每次启动时都会自动运行一个叫gpm的程序, 该程序运行后就可以用鼠标来拷贝与粘贴了. 具体做法是按住鼠标左键拖动使要拷贝的地方反白, 这时反白的区域已经被拷贝, 再按鼠标右键拷贝的内容就会被粘贴在光标所在位置了.

X-Window下: 拷贝的 *** 作与字符界面下一样, 三键鼠标的话按中键粘贴, 两键鼠标的话同时按左右键粘贴(须在配置XF86时在鼠标的设置里选择 Emulate 3 Button).

3. 快速进入某些目录

键入 cd ~ 可进入用户的home目录.

键入 cd - 可进入上一个进入的目录.

4. 软驱的使用

如果是Linux 的ext2文件系统用如下命令:

#mount -t ext2 /dev/fd0 /mnt

dos格式的软盘则用命令:

#mount -t msdos /dev/fd0 /mnt

然后就可以在/mnt里访问软盘的内容了, 注意在取出软盘之前要先卸掉软盘上的文件系统,#umount /mnt 否则会导致信息丢失.

在软盘上建立文件系统可用如下命令:

#mke2fs /dev/fd0 1440

5. RedHat下显示彩色目录列表

打开/etc/bashrc, 加入如下一行:

alias ls="ls --color"

下次启动bash时就可以像在Slackware里那样显示彩色的目录列表了, 其中颜色的含义如下:

蓝色-->目录

绿色-->可执行文件

红色-->压缩文件

浅蓝色-->链接文件

灰色-->其他文件

6. 显示文件的类型

用命令 file 可以使你知道某个文件究竟是ELF格式的可执行文件, 还是shell script文件或是其他的什么格式 例如:

#file startx

7 .命令文件的路径

当你键入一些命令如find, shutdown, mount, startx时是否想过要知道这些文件究竟放在哪个目录里? 用命令

whereis 可以实现,如

#whereis startx

8. 查找文件

find 命令要加一些参数才能查到文件, 如:

#find /usr -name XF86Setup -print

在/usr里查找文件XF86Setup.

9. 删除无用的core文件

程序运行出后有时候会产生一个名为core的文件, 这个文件一般很大而且没什么用, 可以删除掉以释放空间.

10. 一次解开.tar.gz文件

解开.tar.gz文件一般要先用gunzip解压再用tar解包, 在Linux下可以一次完成, 如:

#tar zxpvf sample.tar.gz

11. 显示win95分区里的长文件名

如果你发现win95分区里的长文件命不能显示, 可以重新用vfat方式来mount. 对于启动时就mount的分区可以修改文件/etc/fstab, 将里面的msdos字样改为vfat. 如果无法用vfat mount, 则要重新编译一下核心, 加入对vfat的支持.

12. Linux 里的Norton Commander

在提示符下键入命令mc后你就会看到一个与Norton Commander很相似的界面, 实际上功能也很相似甚至更强大, 比如可以直接对.tar.gz 压缩包里的文件进行 *** 作(有点像ZipMagic).

13. 启动后直接进入X

编辑/etc/inittab文件, 把id:3:initdefautl改为 id:4:initdefautl. 不过搜索路径可能会有些问题, 关机时你得直接进入/sbin 里去执行 shutdown.

14. 后台运行 X 程序

执行一个X程序时别忘了在后面加一个&号,如 #netscape &否则的话在你推出执行的程序之前再无法在那个终端窗口里输入命令了.

15. 强行退出 X

有时候在 X 里由于程序出错鼠标键盘都不起作用, 这时候不用着急, 因为在Linux下几乎不会像在Win95里那样恶性死机, 你只须键入Ctrl+Alt+BackSpace键就可以回到字符界面下了.


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

原文地址: http://outofmemory.cn/yw/11803939.html

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

发表评论

登录后才能评论

评论列表(0条)

保存