initramfs下启动linux_BIOS启动Linux过程介绍

本文介绍了Linux系统从BIOS启动到initramfs的详细过程,涉及legacyBIOS与UEFI的区别,MBR与GPT分区,以及grub+kernel初始化阶段。在initramfs阶段,系统加载设备驱动,挂载根目录,最终启动systemd。
摘要由CSDN通过智能技术生成

            在正式研究BIOS的PCI驱动之前,先科普下Linux的启动过程,顺便简单对比一下legacyBIOS和UEFI,为做区分,legacyBIOS指通过MBR分区启动的老式BIOS,BIOS/UEFI指通过从GPT分区启动的新式BIOS。

            现代计算机系统的内存都是volatile的,断电即消失,因此OS必须存储在non-volatile的存储介质上,并且上电后将其下载运行,这个过程即boot或bootstrap。简单的OS比如RTOS可以放在EPROM或者FLASH上面,通过统一编址被CPU直接读取,而像Linux这样复杂的OS则放在硬盘上。

            X86 CPU上电后第一条指令是通过CS:IP来指定的,CPU厂家会给其初始值,32位的X86 CPU第一条指令地址是0xFFFFFFF0,在这个地址处必须映射有FLASH或EPROM,所以硬件将FLASH映射在32位总线地址最高处。比如16MB的FLASH,其MMIO地址为0xFF000000-0xFFFFFFFF。为了兼容第一代X86计算机,X86的初始化代码最开始一段是跑在16位实模式的,第一条指令地址是0xFFFF0,直到第一条长跳转发生,改变了CS的值,才退出实模式进入保护模式,那么这段时间内对0xC0000~0xFFFFFh (预留给legacy BIOS的最大空间)的访问必须映射到0xFFFC0000 ~ 0xFFFFFFFFh,这点需要靠硬件来保证,AMD和Intel的实现方式不一样,如下图所示。要了解更多详情,读者可以下载Int

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值