加载不同linux内核,Linux内核加载过程

以32位x86,bzImge为例

grub版本为0.97

1、计算机上电

2、0xFFFFFFF0

当cpu检测reset引脚上的信号后

便将指令指针寄存器的值设置为0xfff0

——INTEL 80386 PROGRAMMER'S REFERENCE MANUAL 1986, Chapter 10

此时为实模式,cpu将执行物理地址0xFFFFFFF0处的指令

访址的时候,硬件将该地址映射到BIOS的ROM中

BIOS中的指令将MBR复制到物理地址0x7c00处,并跳转到该处执行

3、0x7C00

MBR中的指令由grub安装而来,为grub-0.97/stage1/stage1.S

stage1将stage2的第1部分grub-0.97/stage2/start.S(512字节)复制到物理地址0x8000处,并跳转到该处执行

stage2将剩余部分grub-0.97/stage2/asm.S复制到物理地址0x8200处,并跳转到该处执行

...

grub-0.97/stage2/boot.c——load_image()函数

将内核映像bzImage的setup部分复制到物理地址0x90000

vmlinux部分复制到物理地址0x100000处

随后跳转到0x90200处执行

4、0x90200

arch/x86/boot/heaer.S——_start => start_of_setup

检查准备实模式堆栈,bss段清0,随后调用arch/x86/boot/main.c——main()函数

main()中使用BIOS中断读取一些硬件信息,如内存信息等

最后调用arch/x86/boot/pm.c——go_to_protected_mode()函数

go_to_protected_mode()设置段描述符,随后调用arch/x86/boot/pmjump.S——protected_mode_jump()函数

protected_mode_jump()置cr0的PE位,开启保护模式

最后跳转到code32_start,对于bzImage即物理地址0x100000,grub复制的bzImage第2部分

5、0x100000

arch/x86/boot/compressed/head_32.S——startup_32

arch/x86/boot/compressed/misc.c——decompress_kernel()解压内核

解压完成后跳转到output

6、LOAD_PHYSICAL_ADDR

根据不同的配置,解压后的代码在物理内存中的起始位置亦不同

arch/x86/kernel/head_32.S——startup_32

设置页表,置cr0的PG位,开启分页

最后跳转到arch/x86/kernel/head32.c——i386_start_kernel()函数

i386_start_kernel()中最后调用start_kernel()

7、start_kernel()

init/main.c——start_kernel()

进入c代码部分

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525570.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网格变形动画MeshTransform

原文:Mesh Transforms 作者:Bartosz Ciechanowski 译者:kmyhy 我是 transform 属性的超级粉丝。让 UIView 或者 CALayer 的形体发生改变的最简单方法就是联合使用旋转、平移和缩放。在易于适用的同时,常规变换所能实现的效果也同…

cloud一分钟 | 腾讯云联手斗鱼、虎牙两大头部游戏直播平台开启 定制道具的创新互动...

Hello,everyone:9月7日早,星期五,祝大家工作愉快!一分钟新闻时间:完01微 信 群 添加小编微信:tangguoyemeng,备注“进群”即可,加入【云计算学习交流群】,和…

Linux服务器硬盘更换,[ Linux ] 服务器更换硬盘

服务器型号:ThinkServer RD650操作系统:Red Hat 6.7业务用途:生产环境监控机接到机房邮件通知,告知某台服务器硬盘告警,并提供了设备SN号和机柜位置。根据提供想相关信息找到对应的设备IP并确定该设备的业务用途。登录…

【BAT面试现场】如何判断一个数是否在40亿个整数中?

作者channingbreeze如需转载,请联系原作者授权。小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT。今天他就去BAT中的一家面试了。简单的自我介绍后,面试官给了小史一…

彩色BMP转换成灰度图的原理

图像处理中,大部分的处理方法都需要事先把彩色图转换成灰度图才能进行相关的计算、识别。 彩色图转换灰度图的原理如下: 我们知道彩色位图是由R/G/B三个分量组成,其文件存储格式为 BITMAPFILEHEADERBITMAPINFOHEADER,紧跟后面的可…

Linux java 生效不了,linux jdk 不生效怎么办

【摘要】操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。下面是linux jdk 不生效怎么办,让我…

程序猿 - 超实用的工具、素材、学习网站分享

文章目录------------------------------学习教程篇-------------------------------bilibili哔哩哔哩网易云课堂siki学院:泰课在线:可汗学院:线性代数的本质 - bilibili计算机科学速成课 - bilibiliLearnOpenGL:The Book of Shad…

【大数据学习笔记】新手学习路线图

第1阶段-数据仓库基 1.MysQL关系型数据库 (MySQL介绍、MySQL安装、MySQL基础语法、MySQL高级语法、MySQL系统架构、MySQL存储引擎、MySQL索引、MySQL备份恢复、MySQL主从、主主复制、MySQL存储过程、MySQL分库分表、MySQL综合案例、MySQL性能优化) 2.P…

面趣 | 马云在面试中出的一道题,据说只有一个人答对……

大神,求解!据说,马云给新员工出了一道题然鹅,只有一个人答对了!!!!智商不足的小编居然打开了这道题求解!!!我手里有50元钱花去剩余买衣服 20元30…

linux划分5t硬盘,关于磁盘分区(以linux系统为例)

一、关于硬盘种类、物理几何结构及硬盘容量、分区大小计算;1、硬盘种类、物理几何结构硬盘的种类主要是SCSI 、IDE 、以及现在流行的SATA等;任何一种硬盘的生产都要一定的标准;随着相应的标准的升级,硬盘生产技术也在升级&#xf…

云漫圈 | 敢怼我们程序员?哼,有你好看的。。。

作者设计师静静来源非著名程序员原创作品,如有转载,请联系公众号授权。原创漫画,禁止转载,侵权必究前几天在网络上看到一个关于产品经理和设计的对话,非常的搞笑,有意思。对话如下:产品经理&…

这些软件太强了,Windows必装!尤其程序员!

Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享…

linux配置端口ipv6地址,linux配置ipv6地址命令

linux配置ipv6地址命令模块加载:/etc/module.conf中增加下列行:alias net-pf-10 ipv6配置ipv6:/etc/sysconfig/network中增加下列行:NETWORKING_IPV6yes其它选项(摘自linux下/etc/sysconfig/network-scripts/init.ipv6-global脚本)&#xff1…

教师节 | 程序员都这么玩,你敢挑战吗?

课堂上的每一课您总能「抽象」出整个世界不断「重载」出覆盖这个世界的任何方法当某个「异常」陷入自己的「静态属性」难以自拔时您总会调用千百种「方法」作为一种特别的「参数」传进把「异常」从一个「死循环」中解救出来在无尽的黑夜中您「释放」所有的系统资源不断的开发我…

如何在linux安装mysql7版本的,如何在linux下用tar方式安装Mysql5.7版本

1、下载根据自己的linux系统情况选择对应的tar包2、解压tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar再移动并重命名一下mv mysql-5.7.26-linux-glibc2.12-x86_64 /usr/local/mysql3、创建mysql用户组和用户并修改权限groupadd mysqluseradd -r -g mysql mysql4、创建数…

cloud一分钟 | 腾讯金融云总经理胡利明:腾讯云服务金融的“加减 乘除”法。...

Hello,everyone:9月10日早,星期一,祝大家工作愉快!祝各位老师节日快乐!一分钟新闻时间:完01微 信 群 添加小编微信:tangguoyemeng,备注“进群公司职位”即可&#xff0c…

cloud一分钟 | 李飞飞离任谷歌云,工作重心将重新转回学术界

Hello,everyone:9月11日早,星期二,祝大家工作愉快!一分钟新闻时间:完01微 信 群 添加小编微信:tangguoyemeng,备注“进群公司职位”即可,加入【云计算学习交流群】&…

Python bytearray/bytes/string区别

目录 一.字节与字符的区别1.字节概念2.字符概念3.字符串概念4.字节串概念二.str / bytes / bytearray 区别三.string 与 bytes / bytearray 相互转换1.string 经过编码 encode 转化成 bytes 2.bytes 经过解码 decode 转化成 string四.猜你喜欢零基础 Python 学习路线推荐 : Pyt…

linux shell 获取参数 $,Linux - Shell - 参数获取

HTML5 canvas易错点一.画布的默认宽高 你的浏览器不支持h ...遍历hashMap对效率的影响测试环境:jdk1.7.0_79\Processor 1.7 GHz Intel Core i5 遍历Map的方式有很多,通常场景下我们需要的是遍历Map中的Key和Value. 写了两个方法: pu ...Java Build Path(Java 构建路径…

如何成为云计算专家?这些必须知道

Level 200、300、400你正处在云计算技术的哪个阶段呢?从进阶,到高级,再到专家AWS INNOVATE 2018 在线技术大会为不同阶段的你量身定制技术内容高屋建瓴的 “主题演讲”包罗万象的 “技术分论坛”亲历亲为的 “Builders 实验室”……我们的进度…