Linux启动过程详解:从开机到登录

需积分: 3 2 下载量 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驱动开发工程师至关重要,因为这有助于他们诊断启动问题,优化系统性能,以及更好地理解和控制系统的运行状态。