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

需积分: 3 7 下载量 106 浏览量 更新于2024-07-23 收藏 987KB DOC 举报
"Linux启动过程详解" 在Linux操作系统的学习中,理解系统的启动流程是至关重要的。这一过程涉及到多个步骤,从BIOS的初始化到用户登录Shell,每个环节都是系统正常运行的基础。下面我们将深入探讨Linux启动过程的关键部分。 1. BIOS启动: 当计算机电源开启,Basic Input/Output System (BIOS) 执行自检(POST),检查硬件是否正常。接着,根据用户在BIOS设置中的选择,BIOS会从预设的启动设备(通常是硬盘)启动。 2. 引导加载器: Linux系统使用引导加载器,如LILO (LInux Loader) 或GRUB (Grand Unified Bootloader),来加载内核。引导加载器从硬盘上的特定位置读取内核映像,并将其传送给CPU执行。 3. 内核引导(核内引导): 内核引导阶段由`arch/i386/boot`目录下的汇编程序负责,包括bootsect.S、setup.S和video.S。bootsect.S是引导扇区的代码,它加载setup.S。setup.S负责将系统参数从实模式复制到保护模式下可用的内存区域,并处理视频设置。然后,通过转换到保护模式,setup.S将控制权交给位于0x100000的代码。 4. 内核解压: Red Hat 9.0的内核通常以压缩形式存在,名为vmlinuz。CPU跳转到0x100000时,执行的代码是解压内核的逻辑,这部分由`arch/i386/boot/compressed`目录下的head.S和misc.c中的decompress_kernel()函数实现。解压完成后,真正的内核映像会被加载到内存中。 5. 内核初始化: 解压后的内核开始执行,初始化硬件设备,设置中断处理,加载模块,设置网络接口,以及初始化其他必要的系统组件。在这个阶段,内核还会决定使用哪个运行级别(runlevel),这决定了哪些系统服务会在启动时启动。 6. init进程: 内核启动完成后,第一个用户空间进程init被创建。在Red Hat系统中,通常是System V init或者Upstart。init根据/etc/inittab配置文件启动rc.sysinit和rc系列脚本,执行系统初始化任务,如挂载文件系统,设置网络,启动系统服务等。 7. 系统服务启动: rc.sysinit和rc脚本启动系统服务,如网络服务、日志记录服务等。这些服务是系统运行所必需的,它们在后台运行,提供各种功能。 8. 登录界面: 当系统服务初始化完成后,init会启动多个mingetty进程,为用户提供登录终端。用户在终端输入用户名和密码,验证通过后,系统会为该用户创建一个shell实例,如bash,用户就可以开始交互式地使用系统了。 以上就是Linux从开机到用户登录的基本流程,涉及了硬件初始化、内核加载、系统服务启动等多个层次的操作。了解这个过程有助于我们更好地理解和调试Linux系统。