Linux启动过程详解:从内核到init阶段

需积分: 10 1 下载量 8 浏览量 更新于2024-09-12 收藏 915KB PDF 举报
"Linux启动过程详解" Linux系统的启动过程是一个复杂而有序的序列,涉及多个阶段,从硬件初始化到用户空间服务的启动。以下是对Linux启动过程的详细解析: 1. **内核引导阶段** - **bootsect阶段**: 这是启动过程的第一步,通常由引导装载程序(如GRUB或LILO)执行。引导装载程序负责从硬盘上的特定位置加载Linux内核到内存中。 - **setup阶段**: 内核被加载后,会执行`setup.s`汇编代码,它初始化必要的硬件,如内存管理、中断处理,并设置堆栈。 - **head.S阶段**: 接下来,`head.S`汇编程序接手,进行更复杂的硬件配置,如时钟、设备初始化,并为C语言代码准备环境。 - **main.c阶段**: 最后,C语言的`main.c`函数启动,这是内核初始化的开始,包括更多设备驱动的加载和系统设置。 2. **init阶段** - **阶段1:确定用户登录模式**:根据`/etc/inittab`文件定义的运行级别,Linux决定启动哪种服务和桌面环境。运行级别0表示halt,1是单用户模式,2是多用户无NFS,3是全功能多用户(文本界面),4未使用,5是X11(图形界面),6是重启。默认运行级别通常是5,即X-Windows多用户模式。 - **阶段2:执行脚本/etc/rc.d/rc.sysinit**:在确定了运行级别后,系统执行`rc.sysinit`脚本,这一步初始化系统的基本环境,如设定默认路径、主机名,以及读取`/etc/sysconfig/network`中的网络配置。 - **阶段3:启动内核的外挂模块及各运行级的脚本**:接着,系统加载`/etc/modules.conf`或`/etc/modules-load.d/`目录下的模块,以及与当前运行级别相关的脚本,这些脚本通常位于`/etc/rc.d/rc.runlevel`目录下,例如`/etc/rc.d/rc3.d`对于运行级别3。 3. **运行级别服务启动** - 系统根据选定的运行级别,运行对应的S开头的链接文件(如S99reboot或S01network)。这些链接指向`/etc/rc.d/init.d/`目录下的服务脚本,依次启动或停止服务。 4. **启动多用户环境** - 如果运行级别是5(X-Windows),则启动X Window System,同时运行桌面环境,如Gnome或KDE。 5. **用户登录** - 系统显示登录提示,用户输入用户名和密码后,系统会创建一个shell进程,让用户交互操作。 在整个启动过程中,Linux通过一系列精心设计的脚本和服务实现了从硬件到软件的全面初始化,确保系统以稳定且安全的方式启动。对于初学者来说,理解这个过程有助于更好地管理和优化Linux系统。