Linux 的启动流程详解

第一阶段:BIOS启动引导阶段

  1. 在该过程中实现硬件的初始化以及查找启动介质
  2. 从MBR中装载启动引导管理器(GRUB)并运行该启动引导管理

第二阶段:GRUB启动引导阶段

  1. 装载stage1
  2. 装载stage1.5
  3. 装载stage2
  4. 读取/boot/grub.conf文件并显示启动菜单
  5. 装载所选的kernel和initrd文件到内存中

第三阶段:内核阶段

  1. 运行内核启动参数
  2. 解压initrd文件并挂载initd文件系统,装载必须的驱动
  3. 挂载根文件系统

第四阶段:Sys V init初始化阶段

  1. 启动/sbin/init程序
  2. 运行rc.sysinit脚本,设置系统环境,启动swap分区,检查和挂载文件系统
  3. 读取/etc/inittab文件,运行在/et/rc.d/rc<#>.d中定义的不同运行级别的服务初始化脚本
  4. 打开字符终端1-6号控制台/打开图形显示管理的7号控制台

启动流程和细节详解

BIOS ==> bootloader ==> kernel & initrd.img ==> /sbin/init

 1.bootloader (grub)

  /boot/grub/grub.conf    在/boot/grub目录中有两个stage文件,其中:
stage1      stage2    如果grub出现问题可能会有两种情况:
a.无法进入grub,屏幕左上角只出现一个光标。出现这种情况基本上MBR已经被破坏,需要进入rescue模式进行修复。

  --> chroot环境,执行 "grub-install /boot所在分区" 进行修复
--> 无grub相关命令时,安装grub.rpm包进行恢复
--> /boot目录下无相关的vmlinuz和initrd.img文件时,安装kernel.rpm包进行修复
--> 无grub.conf时需要手工修复

  b.grub成功加载,屏幕出现“grub>”,表示配置文件grub.conf找不到。

  --> 手工修复

  2.kernel & initrd.img

  在加载vmlinuz和initrd时出现:kernel panic情况,基本是grub.conf设置参数出问题。

--> 检查grub.conf编写是否出现问题
--> 也有可能是分区设置或者硬盘损坏等问题,需要进入rescue模式检查

  3./sbin/init

  /sbin/init的配置文件是/etc/inittab

按照这个配置文件,系统会依次执行以下脚本:

---> /etc/rc.d/rc.sysinit

定义hostname,重新挂载各分区,加载各模块

---> /etc/rc.d/rc[0-6].d/目录下以S开头的脚本

启动各runlevel的服务

---> mingetty /dev/tty[1-6]

启用终端

原文发布时间为:2012-03-21

时间: 2024-08-04 02:33:12

Linux 的启动流程详解的相关文章

Linux系统启动流程详解

那篇文章不涉及操作系统,只与主板的板载程序有关.今天,我想接着往下写,探讨操作系统接管硬件以后发生的事情,也就是操作系统的启动流程. 这个部分比较有意思.因为在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多:但是,一旦进入操作系统,程序员几乎可以定制所有方面.所以,这个部分与程序员的关系更密切. 我主要关心的是Linux操作系统,它是目前服务器端的主流操作系统.下面的内容针对的是Debian发行版,因为我对其他发行版不够熟悉. 第一步.加载内核 操作系统接管硬件以后,首先读入

Linux如何实现开机启动程序详解

Linux开机启动程序详解我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. 加载内核LILO启动之后,如果你选择了Linux作为准备引导的操作系统,第一个被加载的东西就是内核.请记住此时的计算机内存中还不存在任何操作系统,PC(因为它们天然的设计缺陷)也还没有办法存取机器上全部的内存.因此,内核就必须完整地加载到可用RAM的第一个兆字节之内.为了实现这个目的,内核是被压缩

《嵌入式 Linux应用程序开发标准教程(第2版)》——2.2 Linux启动过程详解

2.2 Linux启动过程详解 嵌入式 Linux应用程序开发标准教程(第2版) 在了解了Linux的常见命令之后,下面详细讲解Linux的启动过程.Linux的启动过程包含了Linux工作原理的精髓,而且在嵌入式开发过程中非常需要这方面的知识. 2.2.1 概述 用户开机启动Linux过程如下: (1)当用户打开PC(intel CPU)的电源时,CPU将自动进入实模式,并从地址0xFFFF0000开始自动执行程序代码,这个地址通常是ROM-BIOS中的地址.这时BIOS进行开机自检,并按BI

Android Bluetooth蓝牙技术使用流程详解_Android

在上篇文章给大家介绍了Android Bluetooth蓝牙技术初体验相关内容,感兴趣的朋友可以点击了解详情. 一:蓝牙设备之间的通信主要包括了四个步骤 设置蓝牙设备 寻找局域网内可能或者匹配的设备 连接设备 设备之间的数据传输 二:具体编程实现 1. 启动蓝牙功能 首先通过调用静态方法getDefaultAdapter()获取蓝牙适配器BluetoothAdapter,如果返回为空,则无法继续执行了.例如: BluetoothAdapter mBluetoothAdapter = Blueto

Linux操作系统启动过程详解

如果你对Linux操作系统有一定的了解,想对其更深层次的东西做进一步探究.这当中就包括系统的启动流程.文件系统的组成结构.基于动态库和静态库的程序在执行时的异同.协议栈的架构和原理.驱动程序的机制等等. 其中Linux操作系统启动过程肯定是大家最有兴趣了解的,这里在综合了现有网上大家智慧的基础上,基于2.6.32的内核的CentOS 6.0系统,对Linux的启动流程做了些分析,希望对大家有所帮助. OK,我们言归正传.对于一台安装了Linux系统的主机来说,当用户按下开机按钮时,一共要经历以下

Linux下chkconfig命令详解(转)

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是,返

CenterOS 中安装Redis及开机启动设置详解_Linux

CenterOS 中安装Redis及开机启动设置详解 从官方下载最新Redis进行安装,官网地址:http://redis.io/download $ wget http://download.redis.io/releases/redis-3.2.3.tar.gz $ tar xzf redis-3.2.3.tar.gz $ cd redis-3.2.3 $ make $ make install Redis启动 RedisServer /path/to/redis.conf Redis关闭(

Android Bluetooth蓝牙技术使用流程详解

在上篇文章给大家介绍了Android Bluetooth蓝牙技术初体验相关内容,感兴趣的朋友可以点击了解详情. 一:蓝牙设备之间的通信主要包括了四个步骤 设置蓝牙设备 寻找局域网内可能或者匹配的设备 连接设备 设备之间的数据传输 二:具体编程实现 1. 启动蓝牙功能 首先通过调用静态方法getDefaultAdapter()获取蓝牙适配器BluetoothAdapter,如果返回为空,则无法继续执行了.例如: BluetoothAdapter mBluetoothAdapter = Blueto

Linux系统进程管理命令详解

1.at命令:定时运行命令 作用:at命令在指定时刻执行指定的命令序列. 格式: at [-V] [-q x] [-f file] [-m] time atq [-V] [-q x] atrm [-V] [-q x] job- batch [-V] [-f file] [-m] 主要选项如下. -V:显示作业将被执行的时间. -q:选用q参数则可选队列名称,队列名称可以是a-z和A-Z之间的任意字母.队列字母顺序越高则队列优先级别越低. -f:从文件中读取命令或shell脚本,而非在提示后指定它