Linux启动过程:从软盘到硬盘的引导解析
需积分: 40 75 浏览量
更新于2024-08-25
收藏 154KB PPT 举报
"本文主要探讨了Linux系统的启动过程,特别是软盘和硬盘的启动机制,以及涉及的关键代码和内存布局。在i386体系结构下,Linux启动代码包括bootsect.S、setup.S等文件,从实模式转换到保护模式,并在内存中加载内核的不同部分。软盘启动通过BIOS从0x7c00开始执行,然后加载到0x90000,而硬盘启动则采用两阶段引导,先加载LILO,再加载LINUX。"
在Linux操作系统中,启动过程是一个复杂而关键的环节。这个过程通常分为多个阶段,首先从软盘或硬盘的引导扇区开始。软盘启动时,引导扇区代码bootsect.S被BIOS加载到内存的0x7c00地址,然后将控制权转移至0x90000,这里通常存放的是LILO(LInux LOader)的一部分。在这个阶段,会设置堆栈,其基地址位于0x3ff4,向下增长,并存储磁盘参数表。在屏幕上显示"Loading"后,执行setup程序,将控制权交给0x90200的Setup.S。
启动代码还包括了对实模式和保护模式的处理。实模式是80x86架构的初始模式,它提供对早期8086兼容性的支持,具有20位的地址总线,允许访问1MB的内存。在此模式下,逻辑地址由段地址和段内偏移组成,段寄存器长度为16位。Linux启动初期就在实模式下运行,但为了实现更高级的功能,如虚拟内存管理,需要切换到保护模式。
在实模式下,内存布局通常如下:ROM-BIOS位于低端,接着是VIDEO-BIOS和VRAM,然后是0x00000开始的RAM,直到1MB。软盘启动后的代码会把小内核加载到0x10000(64KB处),大内核加载到0x100000(1MB处)。对于硬盘启动,它采用两阶段引导,首先加载LILO到内存的第一个扇区,随后加载Linux内核。
硬盘启动过程中,Bootsect.S负责加载到0x90000,Setup.S继续在0x90200执行,最终跳转到setup,完成内核的加载和初始化。这些步骤确保了Linux操作系统能够正确地加载和运行,为后续的系统服务和用户进程提供了基础。理解这些启动流程和内存布局对于系统调试、内核开发和优化都至关重要。
2009-04-26 上传
2010-02-02 上传
2021-09-30 上传
2022-11-10 上传
2022-07-05 上传
2022-07-05 上传
2013-06-27 上传
2020-08-04 上传
2010-03-28 上传
深夜冒泡
- 粉丝: 16
- 资源: 2万+
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常