U盘PE| w764位旗舰版下载 | U盘装win7系统 | U盘启动 |win7pe | win10下载 |加入收藏土豆PE官网U盘PE,U盘装win7系统,win7pe,U盘启动,U盘装系统,w764位旗舰版下载站!
当前位置:主页 > 帮助中心 > bios设置U盘启动 >

Linux启动第4部分讲解

来源:http://www.tudoupe.com时间:2022-04-28

作者:LLX
代码路径: linux-4.6linux-4.6archx86内核head_32.S.
1、startup_32
1.1、赋值堆栈
在这里插入图片描述
主要的职责是提供匹配的堆叠价值, 给埃斯波提供一个新的指针, 如果布斯特旗的标记保留部分来检查它是否进入32 来重新通知储户。

一.2,删除 bss 和 复制 bout_ 参数
在这里插入图片描述

本代码的首要目标是将 bss 的内容修改为零, bss_ start 表示 bs_ stop 表示 bs 的本部分的位置 。
在这里插入图片描述
连接脚本指定了此地址。 因为所编译的地址是一个虚拟地址, 为什么它在 bs_ start off pa 地址中?
在这里插入图片描述
在必要的内核文件建立和翻译后,您可以观察到bss_start 的地址是一个虚拟地址。是页面载荷后出现的地址因此,它不再开放。它是正确的物理内存地址。他们的链接是一个虚拟地址 -- 0xc00是实际地址。因此,父亲成为代码中的实际地址。
Boot_ params 变量的第二段被分配到第141行之后,表示匹配的 Boot 参数被分配到 boot_ param 变量中 。
第152行显示,在设置期间向原始 esi 提供的布尔特-参数值为 靴_ 参数值 。
这两个代号是不同的, 表明变量是不同的。
155-161行主要包括新布尔的原始比喻的复制件。
在 Boot_ params 中, cmd-line-ptr 方向的地址是 162。
将 163 - 168 行 靴子参数中的 Cmd_line_ptr 位置的数据放入 靴子_ 命令_ 线变量 。它在Pa宏观里有写明的因为它终于开始保护了您目前无法打开页面。

1.3,4,5,5,5,5,5,5,5,5,5,5,5,5,3,3,4,4,5,5,2,5,2,2,2,3,5,5,2,3,3,3,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,4,4,4,4,5,5,5,5,5,5,5,5,5,2,2,2,2,2,2,2,2,5,5,5,5,2,2,2,2,2,2,2,2,2,5,5,5,2,5,5,5,2,2,2,2,2,5,2,2,2,2,2,2,5,5,5,2,2,2,2,2,5,5,2,2,2,2,5,5,2,2,5,5,5,2,2,2,2,2,2,2,5,5,2,2,2,2,5,2,2,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,2,2,2,2,2,2,5,2,2,2,2,2,2,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,2,2,2,5,5,5,5,5,5,5,5,2,2,2,2,2,2,2,2,5,5,2,2,2,2,2,2
在这里插入图片描述
此 pde 是第 246 行的页面列表, 解释了为什么因页面列表的格式( 参考 12) 出现 20 位差 :
在这里插入图片描述
因为目录的地址是22 -31, pde应该是22。
所以这就是为什么他把20个位置移到右边的原因:
__PAGE_OFFSET>>12>>10计算出在pgd中的页目录项index
(__PAGE_OFFSET>>12>>10)<<2计算出偏移地址(因为每个页目录项4byte)
一个是街道地址。他的记忆地址由页面_pde_offsection 标明。
在第248行,请将brk_base的物理地址输入edi;请注意,保护模式此时已启动,但该页面尚未启用,因此所有物理地址都已使用。
第249行, 内线_ page_ tabt 的地址, 以 edx 表示,
将 pte_ ident_ attr 放在 eax 后面的 250 行之后。 此 pte_ ident_ attr 代表预设, 可以读写。 今晚可以看到页面目录的格式 。
#define PTE_IDENT_ATTR 0x003 /* PRESENT+RW */
在 ecx 中, bar edi 加上 PTE_ IDENT_ ATTR 的值。 这是 lial 或 ecx 地址 。
255 条线,然后将 ecx 值放在 edx 需要的地址, 所以它是在 _brk_base+attr 点的地址。
在这里插入图片描述
brk_ base 和 antr 的内容可见于 国家_ page_ table 中 。

256行ecx 值+ edx 值
此时此刻, ecx 值为 brk_ base+attr 。
PAGE_OFFSET是我们建造的内核地址。 如果您想要找到合适的地址, 您该怎么办?
我们应该确定一个页面列表, 在 PAGE_ OFFSET 中列出事项, 然后检查页面的下一个级别 。
PAGE_FOFFSET 列表的地址是 page_pde_offet 。
__PAGE_OFFSET>>22位等于768,表示页目录表的第多少项,

在这里插入图片描述
使用此配置,元素 768 和 1 与 _brk 的物理页面地址有关。
在这里插入图片描述
我不知道你们在说什么 但我不确定你们在说什么
第257-258行, edx + 4, edx+ 4, barex 值设定为 1024, edx 值初始_ page_ table, 加上 4, 以填补初始_ page_ table, ecx 延迟分析的第二个项目
检查此页页表格式( 参考文献 13) 。
在这里插入图片描述
页面对齐前方可见地址,背面可见所附标志。
STOS指令在内存中使用AL(字节-STOSB)、AX(字节-STOSW)或EAX(双面-STOSD)数据复制目标字符串,通过ES:DI(参考14)指向。
Eax 插入 PTE_IDENT_ATTR, 或 addr=0, 然后是 PTE_IDENT_ATTR 。
在 _brk_ base 内容中键入 Edi 。
Stosl 是 _brk_ base 中的 PTE_IDENT_ATTR 值。
在这里插入图片描述
Antr 是当前 brk_ base 的初始部分 。
263-265 行, eax + 0x100, 然后循环命令
这是因为 brk_ base 代表一个内存页面, 加上 0x100, 然后 brk_ base 属于一页, 产生 1 024 个实例 。
在这里插入图片描述
第275行包含内核终端地址,还有Mapping_BEYOND_END和Ebp中的蚂蚁信息。
让我们来看看做个调戏者意味着什么
在这里插入图片描述
全部取自(15号引文)
LOWMEM是核酸状态直接绘制的物理内存区,而不是高MEM,高MEM通常为896MB。
以GB作为估计估计数的示例。
与LOWMEM区域相对应的内存页数由LOWMEM_PAGES表示,LOWMEM_PAGES是1GB/4KB=256K,也就是说,为了代表内核空间,需要256K页的表元素。
LOWMEM_PAGES = (((2<<31) - __PAGE_OFFSET) >> PAGE_SHIFT)
在LOWMEM区域存储匹配的内存表元素需要多少内存页,使用256页表格,每张表格都包含一页内存,256页内存,即存储256页,乘以256乘以4KB,即1MB。
显示最后有1兆字节的内存
将前一米的记忆作为工作表来表示
280线火箭向前10线发射,并开始打基础。
在281行的地图上加上brk_base之后的位址。
它储存在一个变数中 叫做"Brk_end"
2834283-284, 酒吧的地址 Max_ pfn_map 上面显示的是最大的页面( 参考 15, 16) 。
在这里插入图片描述
287-288号线,初始化交叉图
行 232 是执行器默认的默认输入 。
在这里插入图片描述
第368行没有开页。
377-378设立了废墟登记册。
在这里插入图片描述
386行 - 1个新_ cpu_ data+CPUINFO_ cpuid_ level 值
引文387-407(引文17、18)。
直接来看使能分页
!](https://img-blog.csdnimg.cn/41d65c1650744538a4967f321673975c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGlhbmxpYW5kYWltYQ==,size_16,color_FFFFFF,t_70,g_se,x_16)
在这里插入图片描述
440行开启分页
第445-446行,将其插入轴中,然后插入CR3登记册。
只有一个f的地址是 0xxl的地址 ljmp 447 -450。
共有44个。 页面_ offsec + Esp 的地址
在461-463号线上,设置的地址存储在eax中,以查看是否包含任何内容。
如果有内容, 则执行设置操作 。
在这里插入图片描述
此设置为设置函数的地址。
在这里插入图片描述
548 -550,在电子登记簿里, idt_table.
然后应该将早期的_idt_handler_raray 放置在eax 中 。
ecx NUM_Exioption_Vecurats ecx NUM_Exiopation_Vectors ecx NUM_Exiopation_Vectors ecx ecx NUM_Exiopation_Vectors ecx NUM_Exition_Vectors

edi 指的地址设定552条线条 eax 的值。
这是16个低位 在idt_table。
553行将它移到idt_table的顶端。
第554-55行,配有匹配的终端选择和识别符号,
对于段落选择, _KERNEL_CS 指定命令将在当时在内核级别运行。
0x8e表示基数为100110, dpl为零。
在这里插入图片描述
在这里插入图片描述
557行 eax + Early_IDT_HandLer_SIZE 表示,早期 _idt_ handler_array 是数组。
这是列表中的第二个项目 。
填入 idt_ table 的第二张, 其中一张是 8 字节, 在第 558 行 上 。
561 NUM_Exioption_Vectors已填充。
561行是异常后休息的次数。
edx 中的 忽略(_int) 函数位于 564 bar 。
从内核到eax的565行代码
向轴, 566 bar 忽略状态值 。
5 6 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 5 8 8 8 8 8 8 8 8 8 8 6 8 8 8 8 8 8 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
栏忽略在569-572行以idt形式填充。
在588-589线上重新设置和返回。
在这里插入图片描述
cpuid 命令用于识别 CPU 。
在这里插入图片描述
第498-502行将有关标记划入CR0登记册,CR0登记册不作任何分析。
在新 gdt 注册簿中存储了504行的条形前列段落描述符的地址。
这是对为什么重新注射的研究, 80,00前方的地址被更改了, 内容是否准确, 所以重新输入, 我不确定这是不是原因, 但有一个问题需要探讨。
在这里插入图片描述
这是 gdt_ page 栏中包含的内容。 它位于 gdt 中 。
在这里插入图片描述

505行负载失败, 导致 idt table 内容被损坏 。
是506点C登记册里的内核

在这里插入图片描述
这是栏的替代描述。 将其插入到登记册中 。
然后,为了执行,跳到初始代码的位置。

在这里插入图片描述
这是 i386_ start_ 核心函数 。

总结:
在这里插入图片描述

参考资料:
1、https://www.huaweicloud.com/articles/b2674aaf8a7951a593190c21c8f3d3d3.html
2、https://blog.csdn.net/qwq1503/article/details/102984575
3、http://blog.sina.com.cn/s/blog_54f82cc2010142zh.html
4、https://www.lampchina.net/ask/MTQwMzQzOQ.html
5、https://www.cnblogs.com/long123king/p/3484923.html
6、https://blog.csdn.net/ZVAyIVqt0UFji/article/details/104666105
7、
https://www.codeleading.com/article/98281319364/
8、https://www.cntofu.com/book/104/Booting/linux-bootstrap-5.md
9、

Linux 内核中的 10, 32 位页面映射图
https://www.jianshu.com/p/ab514f3c9d9c

用于 11 x 86 和 Linux 执行 11 x 86 和 Linux 的分页分页法
https://zhuanlan.zhihu.com/p/327860921

12,深入Linux内核的内存 - 分页
https://blog.csdn.net/liyuewuwunaile/article/details/108632620

13.x86 页面表格结构和页面项目格式
https://www.cnblogs.com/vinozly/p/5703215.html

14. STOS指令
https://www.jianshu.com/p/338d2f85e954

15. Linux的第一页表格
https://www.cnblogs.com/long123king/p/3484923.html

16, X86 head_32 的 S 文件中的内存映射信息(带图表) 16, X86 head_32
http://bbs.chinaunix.net/thread-1916887-1-1.html

17 x 86-EFLAGS仓库
https://blog.csdn.net/jn1158359135/article/details/7761011

Intel CPU ID指令(一)
https://blog.51cto.com/u_15127631/2739274

19. 关于Linux中中断源的研究--初始化
https://www.cnblogs.com/tolimit/p/4415348.html

Copyright © 2012-2014 Www.tudoupe.Com. 土豆启动 版权所有 意见建议:tdsky@tudoupe.com

土豆系统,土豆PE,win7系统下载,win7 64位旗舰版下载,u盘启动,u盘装系统,win10下载,win10正式版下载,win10 RTM正式版下载,win8下载,电脑蓝屏,IE11修复,网络受限,4K对齐,双系统,隐藏分区,系统安装不了,U盘装系统,笔记本装系统,台式机装系统,diskgenius运用,GHSOT装系统,U盘修复,U盘技巧,U盘速度,U盘不能格式化,U盘复制发生错误,U盘加密,U盘选购,开机黑屏,蓝屏,进不了系统,上不了网,打不开程序,点击无反应,系统设置,PE个性化,PE添加网络,PE维护系统

点击这里给我发消息