摘要:简单描述了Linux机器启动的过程。提到的几个重要内容包括/etc/inittab文件、/etc/rc.d或者/etc/init.d目录下的文件、/etc/sysconfig目录下的文件。
机器启动时第一个读取的地方是BIOS(Basic I/O System),BIOS里记录了硬件的相关信息。读取了BIOS的内容后,会根据BIOS的内容对硬件加电自检(POST)。POST通过之后会根据BIOS里设置的启动设备顺序搜索启动设备。
硬盘的第一个区域称为MBR(master boot record),MBR中安装了引导加载程序。现时主流的Linux引导加载程序是GRUB,它可以识别Linux的核心文件和Windows的核心文件。所以安装时要先安装Windows后安装Linux,因为Windows的引导加载程序无法识别Linux的核心文件。
引导加载程序会去读取核心文件,读取之后Linux会将核心文件解压缩到内存中。加载核心文件的时候只会载入根目录/,并且是以只读的方式载入。
核心加载结束之后就开始执行程序。第一个被执行的程序是init,利用ps aux | more 命令可以看到第一行显示的内容即是init,它的PID是1.
Init程序做的工作很多。首先就会去读取/etc/inittab文件获取runlevel,获取到runlevel之后,就会根据相关runlevel的设置启动其他程序。在启动有关服务之前,init程序需要设置好整个系统环境。在SuSE中,是根据/etc/init.d/boot脚本文件和/etc/init.d/rc脚本文件来设置系统环境的。(RedHat系统中是根据/etc/rc.d/rc.sysinit脚本文件来设置系统环境的)。所谓系统环境主要包括,获取网络设置、检测usb设备、用户自定义模块加载、系统时间设置等等。
很多系统设置都是保存在/etc/sysconfig目录下面。所以这个目录的内容要好好了解。比如说网络的设置(ip地址等等),就在/etc/sysconfig/network目录内。比如需要修改网卡的ip的话,就可以到这里直接修改配置文件的内容,然后再重启网络服务。(当然也可以通过ifconfig命令修改,但它的修改最终还是反映到这个文件上的)
Init程序设置好系统环境后就要根据/etc/ininttab文件中指定的运行级别,启动相关的服务了。Linux定义了好几个运行级别:0是系统直接关机;1是单用户模式,用于系统出问题后的维护;2是多用户模式,但是没有nfs服务;3是命令行的多用户模式;4是预留的,未使用;5是带图形界面的多用户模式;6是重启系统。我们日常使用的运行级别多为3或者5.可以使用命令runlevel来查看系统当前的运行级别。要切换到其他运行级别,可以使用命令init x (x为运行级别的数字),比如要直接关闭系统可以输入命令init 0
每个运行级别的区别在于它们会启动的服务有所不同。不同的运行级别要启动哪些服务是由/etc/rc.d/rcx.d目录内的内容决定的。比如在/etc/rc.d/rc3.d目录内就有在运行级别3下面要启动的服务的内容。(在SuSE下,/etc/rc.d下面的内容和/etc/init.d下的内容是一样的,是不是为了兼容其他Linux发行版的习惯啊?)
rc3.d目录下的文件都是链接文件,文件都是以Kxx或者Sxx开头的,xx代表的两位数字是指启动的顺序,首先启动01,然后是02等等。S开头的文件表示开机时需要启动的服务,手工启动时使用“文件名 start”来启动该服务,K开头的文件表示关机时需要关闭的服务,手工关闭时使用“文件名 stop”来关闭。大部分的服务也支持“文件名 restart”的方式重启服务。比如要重启网络服务,可以使用"/etc/init.d/network restart”的方式来执行。(在SuSE下也可以执行"/etc/init.d/network restart”,效果一样。之所以是init.d或者rc.d下的network是因为在rc3.d目录下的network文件是链接文件,它指到了这两个位置中的一个。)这里提到的文件都是shell脚本文件,为了方便起见,将一些服务的启动关闭要做的事情写成一个脚本,通过执行脚本的方式来控制这些服务的启动关闭。
分享到:
相关推荐
ARM Linux启动过程分析 1. ARM Linux 启动过程概述 ARM Linux 启动过程可以分为四个部分:引导加载程序(bootloader),Linux 内核,文件系统,应用程序。其中 bootloader 是系统启动或复位以后执行的第一段代码,...
"Linux启动过程分析" Linux 启动过程分析是嵌入式 Linux 系统的核心组成部分,理解 Linux 启动过程对嵌入式系统的开发和应用至关重要。本文将详细分析 Linux 启动过程,包括 bootloader 的执行流程和 ARM Linux 的...
#### Linux启动过程概述 Linux系统的启动通常可以分为几个主要阶段: 1. **硬件自检(POST):** 在启动初期,BIOS会执行一系列硬件检测,即“加电自检”(Power-On Self Test),检查硬件设备的状态,确保它们...
### Linux启动过程概述 Linux系统的启动过程大致可以分为以下几个阶段: 1. **BIOS/UEFI初始化**:计算机启动时,首先由BIOS(基本输入输出系统)或UEFI(统一可扩展固件接口)进行硬件检测和初始化。 2. **加载...
Linux 启动过程分析及 DNS 服务器毕业论文设计 Linux 启动过程分析是 Linux 操作系统的核心组成部分,涉及到 bootloader、Linux 内核、文件系统和应用程序等多个方面。本文将从 Linux 启动过程的各个方面进行分析,...
### Linux 2.6.22 内核启动过程深入解析 #### 一、概述 本文将基于2.6.22版本的Linux内核,深入分析其启动过程。此版本虽然较为老旧,但因其广泛的应用场景而具有重要的研究价值。内核启动过程大致可以分为三个...
### ARM Linux启动过程分析 #### 一、引言 随着嵌入式技术的发展,Linux作为一款高度可移植的操作系统,在各种电子设备上得到了广泛应用。针对不同的处理器架构,Linux的启动过程也会有所不同。本文将以S3C2410 ...
#### 二、启动过程概述 了解Linux系统的启动过程是优化启动时间的基础。通常情况下,Linux启动流程包括以下步骤: 1. **加电自检(POST)**:这是硬件层面上的第一步,主要检查系统的主要部件是否正常工作。 2. **...
以下是对Linux启动过程的详细概述: 1. **硬件启动阶段** - 当计算机开启电源,BIOS(基本输入输出系统)进行上电自检(POST),检查硬件设备,如CPU、内存、硬盘、显卡等。如果发现任何故障,它可能会发出警告音...
基于i386体系结构的Linux启动代码分析,概述Linux系统的启动顺序
### Linux 2.4 内核启动过程详解 #### 概述 本文旨在详细解析 Linux 2.4 内核的启动过程,从内核获取主机硬件控制权的那一刻起,直到内核准备好运行用户进程为止。在此过程中,将涵盖 Linux 在启动时所期望的编程...
### ARM Linux 启动过程分析 #### 一、概述 ARM Linux 启动过程涉及到硬件初始化、引导加载程序(Bootloader)的选择与配置、Linux 内核的加载以及最终用户空间环境的建立等多个阶段。本篇文章将重点分析 ARM ...
### Linux启动过程综述 #### Bootloader阶段 在Linux系统的启动过程中,首先执行的是Bootloader阶段,该阶段负责加载内核以及其他必要的初始化操作。对于不同的硬件平台,Bootloader的实现方式也会有所不同。 - *...
### ARM Linux启动过程分析 #### 一、引言 随着技术的发展,嵌入式系统以其高效性和灵活性在各个领域得到广泛应用。Linux作为一种免费且开源的操作系统,因其良好的可移植性而成为众多嵌入式设备的选择。本文以S3C...
### Linux启动盘制作详解 #### 一、概述 在虚拟化技术广泛应用的今天,Linux启动盘成为了一种非常实用的工具,特别是在VirtualBox或VMware等虚拟机环境中。本文将详细介绍如何从零开始构建一个Linux启动盘,适用于...
本文将深入剖析ARM Linux启动过程,重点讨论内核的加载方式以及内核入口等关键知识点。 #### 二、ARM Linux 内核的加载方式 ##### 1. 非压缩内核映像 非压缩内核映像是指直接使用未经压缩处理的内核代码。具体...