Linux启动过程详解:从开机到登录
需积分: 3 150 浏览量
更新于2024-09-12
收藏 50KB DOC 举报
"本文档详细介绍了Linux系统的启动过程,涵盖了从BIOS自检到用户登录Shell的完整流程,特别强调了内核引导的关键步骤,包括引导程序如lilo或grub的作用,以及内核在内存中的加载和解压。"
在深入理解Linux启动过程时,首先要了解的是计算机开机后BIOS(Basic Input/Output System)的角色。BIOS是固件,负责硬件自检POST(Power-On Self Test),然后根据设置的启动顺序加载启动设备上的引导程序,例如lilo或grub。
引导程序的主要任务是加载Linux内核到内存中。在Red Hat 9.0系统中,lilo或grub会被用来读取并加载内核。引导程序成功加载内核后,控制权转移给内核,内核的引导阶段正式开始。
内核引导的第一步涉及"arch/i386/boot"目录下的汇编代码,如bootsect.S、setup.S和video.S。bootsect.S生成引导扇区,它的作用是加载setup.S。setup.S则处理系统参数,拷贝BIOS提供的硬件信息到特定内存区域,并调用video.S进行显示器配置。随后,系统进入保护模式,执行0x100000地址处的代码。
0x100000内存位置存放的是解压缩后的内核映像,因为原生内核通常较大,所以使用了压缩技术。在Red Hat系统中,内核文件名为vmlinuz。在内核加载过程中,"arch/i386/boot/compressed/"目录下的head.S配合misc.c中的decompress_kernel()函数解压vmlinuz到0x100000。
一旦内核成功解压并开始执行,它会继续进行初始化,包括硬件驱动的加载、文件系统的挂载等。接着,内核会启动init进程,它是系统中第一个进程,PID为1。init根据/etc/inittab配置文件启动rc.sysinit和rc等初始化脚本,进行网络设置、设备配置和服务启动等任务。
当系统初始化完成后,init会启动多个mingetty进程,打开终端等待用户登录。用户输入用户名和密码后,成功验证身份将进入Shell,至此,Linux系统的启动过程结束,用户可以开始交互式操作。
了解Linux启动过程对嵌入式Linux驱动开发工程师至关重要,因为这有助于他们诊断启动问题,优化系统性能,以及更好地理解和控制系统的运行状态。
2011-01-26 上传
2023-03-16 上传
2014-03-31 上传
2010-09-22 上传
2015-06-20 上传
2009-12-17 上传
2009-04-05 上传
ping19900607
- 粉丝: 2
- 资源: 20
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍