码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • x86计算机的启动初期流程 Linux 启动流程


    x86计算机的启动初期流程

    CPU:

    step1,加点开机,cpu自己初始化

    step2,cpu 从物理地址 0xFFFFFFF0h 取指令执行;此处存放BIOS代码,这些代码可以是由主板自动从 EEPROM中拷贝至此内存地址处;即下面将执行的 POST 代码

    BIOS:


    step3,POST:加电自检(Power-On Self-Test, POST):计算机通电后,BIOS会执行自检程序,检查硬件是否正常工作。


    step4,测试成功 则继续下面的步骤,否则显示出错信息;


    step5,加载 BIOS 的中断向量到物理内存的最低1024字节单元中去;


    step6,执行 INT 19h 软中断调用,根据 CMOS 的设置,顺序地从引导盘搜寻引导扇区(以55AA为标志该盘为引导盘),找到第一个引导盘的引导扇区后,继续下一步;

         补充:MBR 主引导记录在磁盘的0磁头0柱面1号扇区,BIOS的代码会锁定这个位置查看。

                    MBR 由三部分构成:

                          (1)446字节的引导记录,负责检查硬盘分区表、寻找可引导分区、将可引导的活动分区记录DBR装入内存,它位于硬盘的每一分区的第一个扇区;

                          (2)硬盘分区表16x4=64,每份16字节的4份硬盘分区表,其中记录了每个分区的类型,分区size,和分区开始与结束的位置等;

                           (3)magic Number  55AAH ,占2个字节,是MBR结束标志

                          MBR 总共占 446 + 64 + 2 = 512 bytes


    step7,执行 INT 13h 软中断调用,从引导扇区取 MBR 值DBR转存到内存00007C00处,并跳转到该处开始执行,即将控制权交给引导扇区的引导程序。

    上述3~7步由BIOS完成,开源的BIOS可参考复古8088PC的 8088_bios 和 快跑的 Coreboot:

    GitHub - skiselev/8088_bios: BIOS for Intel 8088 based computers

    GitHub - coreboot/coreboot: Mirror of https://review.coreboot.org/coreboot.git. We don't handle Pull Requests.

    Loader:


    step8,执行引导程序:引导扇区中包含引导程序(Boot Loader),比如 grub2,该程序负责加载操作系统的核心部分到内存中,例如 vmlinux,并启动操作系统的运行。

    上述由引导程序完成,可参考 grub2:

    GNU GRUB - Obtaining GRUB

    https://github.com/rhboot/grub2

    GNU GRUB Manual 2.12

    OS:


    step9,启动操作系统:引导程序加载完操作系统核心后,控制权被转移到操作系统内核,操作系统开始初始化并启动系统服务。

    Linux。。。

  • 相关阅读:
    MES管理系统的生产模块与ERP有何差异
    造成电解电容鼓包都有哪些原因?唯样商城
    删除的数据如何恢复?误删了文件怎么恢复
    谁的孙子最多II
    vue 页面监听vuex state值的变化
    xss跨站脚本(cross-site scripting)
    2023华为OD统一考试(B卷)题库清单(按算法分类),如果你时间紧迫,就按这个刷
    JVM篇---第十篇
    85-Java阶段实战案例:模拟电影购票系统
    《QT实用小工具·三十九》仿 Windows10 画图3D 的颜色选择器, 但更加强大
  • 原文地址:https://blog.csdn.net/eloudy/article/details/139710073
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号