Linux系统启动过程
Linux启动时我们会看到许多启动信息,其过程可以分为5个阶段:
(1)内核的引导
(2)运行init
(3)系统初始化
(4)建立终端
(5)用户登录系统
内核引导
当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。操作系统接管硬件以后,首先读入/boot目录下的内核文件。
运行init
init进程是系统所有进程的起点,这个进程不启动,系统中任何进程都不会启动。许多程序需要开机启动。在Windows叫做“服务”(service),在Linux就叫做“守护进程”(daemon)。init进程的一大任务,就是去运行这些开机启动的程序。但是,不同的场合需要启动不同的程序。Linux允许为不同的场合,分配不同的开机启动程序,这被称为“运行级别(runlevel)”,即启动时的“运行级别”,就决定了启动时需要启动那些程序。
Linux系统有7个运行级别(runlevel)
(1)运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动。
(2)运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录。
(3)运行级别2:多用户状态(没有NFS)。
(4)运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式。
(5)运行级别4:系统未使用,保留。
(6)运行级别5:X11控制台,登陆后进入图形GUI模式。
(7)运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。
系统初始化
在init的配置文件中会执行:si::sysinit:/etc/rc.d/rc.sysinit。rc.sysinit是一个bash shell的脚本,它主要时执行系统初始化的工作,rc.sysinit在每个运行级别下都要运行。它主要完成的工作有:激活交换分区、检查磁盘、加载硬盘模块以及其他一些需要优先执行任务。
建立终端
rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。init会打开6个终端,以便用户登录系统。
用户登录系统
一般,用户的登录方式有三种:
(1)命令行登录
(2)ssh登录
(3)图形界面登录
Linux启动过程:
Linux使用注意事项
(1)Linux严格区分大小写。
(2)Linux中所有内容以文件形式保存,包括硬件设备。
(3)Linux不靠扩展名区分文件类型。
(4)Linux中所有的存储设备都必须在挂载(给存储设备分配盘符)之后才能使用。
(5)Windows下的程序不能直接在Linux中使用。
Linux系统目录结构
目录名 | 目录的作用 |
bin | 存放系统命令的目录,普通用户和root都可以执行。不过放在bin下的命令在单用户模式下也可以执行。 |
dev | dev时Device(设备)的缩写,该目录下存放的放是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。 |
home | 用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。 |
mnt | 挂载目录。可以将U盘、硬盘等挂载在这个目录。 |
proc | 虚拟文件系统目录。它是系统内存的映射,可以通过直接访问这个目录来后去系统信息。需要注意的是这个目录的内容并不在硬盘上而是在内存里。 |
run | 临时文件系统。存储系统启动以来的信息,当系统重启时,这个目录下的文件应该被删除或清楚。 |
srv | 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据。 |
tmp | 临时目录。系统存放临时文件的目录。 |
var | 动态数据保存的位置。主要保存缓冲、日志以及软件所产生的文件。 |
boot | 系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等。 |
etc | 配置文件保存位置。系统内所有采用默认安装方式(rpm安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用的配置文件等。 |
lib | 系统调用的函数库保存位置。 |
media | Linux系统会自动识别一些设备,例如u盘、光驱等,系统会自动将这些设备挂载到这个目录下。 |
opt | 这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装在这个目录中。 |
root | 超级权限这的用户主目录。 |
sbin | Super User的意思,这里存放的是系统管理员使用的系统管理程序。 |
sys | 虚拟文件系统。和proc目录相似,该目录中的数据都保存在内存中,主要保存与内核相关的信息。 |
usr | 系统软件资源目录。是“UNIX Software Resource”的缩写,所以不是存放用户数据的目录,而是存储系统软件资源的目录。系统中安装的软件大多数保存在这里。 |
(*这篇主要是整理菜鸟教程和C语言学习网上的Linux教程的内容。)