首页 > 系统相关 >linux启动过程

linux启动过程

时间:2022-08-20 14:23:55浏览次数:84  
标签:登录 启动 级别 linux etc rc 过程 运行

Linux 系统启动过程

科教 科教无界 2022-06-08 07:16 发表于浙江 收录于合集 #科教152个 #编程技能69个 #Linux11个

Linux启动时我们会看到许多启动信息。

Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段:

内核的引导 ->运行 init ->系统初始化 ->建立终端 ->用户登录系统

图片

 

内核引导

当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。

操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。

图片

运行init

init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。

init 程序首先是需要读取配置文件 /etc/inittab。

图片

许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。

init进程的一大任务,就是去运行这些开机启动的程序。

但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。

Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。

图片

Linux系统有7个运行级别(runlevel):

运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆

运行级别2:多用户状态(没有NFS)

运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式

运行级别4:系统未使用,保留

运行级别5:X11控制台,登陆后进入图形GUI模式

运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

系统初始化

在init的配置文件中有这么一行:si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。

它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。

图片

这一行表示以5为参数运行/etc/rc.d/rc,/etc/rc.d/rc是一个Shell脚本,它接受5作为参数,去执行/etc/rc.d/rc5.d/目录下的所有的rc启动脚本,/etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些连接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。

而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。

/etc/rc.d/rc5.d/中的rc启动脚本通常是K或S开头的连接文件,对于以 S 开头的启动脚本,将以start参数来运行。

而如果发现存在相应的脚本也存在K打头的连接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行。

这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。

至于在每个运行级中将运行哪些守护进程,用户可以通过chkconfig或setup中的"System Services"来自行设定。

图片

建立终端

rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。

init接下来会打开6个终端,以便用户登录系统。在inittab中的以下6行就是定义了6个终端:

图片

 

从上面可以看出在2、3、4、5的运行级别中都将以respawn方式运行mingetty程序,mingetty程序能打开终端、设置模式。

同时它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份。

用户登录系统

一般来说,用户的登录方式有三种:

(1)命令行登录

(2)ssh登录

(3)图形界面登录

图片

对于运行级别为5的图形方式用户来说,他们的登录是通过一个图形化的登录界面。登录成功后可以直接进入 KDE、Gnome 等窗口管理器。

而本文主要讲的还是文本方式登录的情况:当我们看到mingetty的登录界面时,我们就可以输入用户名和密码来登录系统了。

Linux 的账号验证程序是 login,login 会接收 mingetty 传来的用户名作为用户名参数。

然后 login 会对用户名进行分析:如果用户名不是 root,且存在 /etc/nologin 文件,login 将输出 nologin 文件的内容,然后退出。

这通常用来系统维护时防止非root用户登录。只有/etc/securetty中登记了的终端才允许 root 用户登录,如果不存在这个文件,则 root 用户可以在任何终端上登录。

/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。

 


免责声明

本篇文章部分配图与文字来源于网络

如涉及版权问题,请及时与我们联系

收录于合集 #科教  152个 上一篇无论多老,肝脏永远3岁下一篇世界首台百亿亿次超级计算机刷新速度纪录 阅读 1703 科教无界 1篇原创内容  

标签:登录,启动,级别,linux,etc,rc,过程,运行
From: https://www.cnblogs.com/qiangfenger/p/16607634.html

相关文章

  • linux 上特殊的权限位
    通常我们文件一般三种权限名称:读、写、执行标识:r、w、x二进制:4、2、1特殊权限也有三种名称:setuid、setgid、粘连位标识:s、s、t二进制:4、2、1setuid场......
  • 复习:linux 基础命令复习二
    文件查看cat从头到尾显示-A \\整合命令-vET-b \\列出行号-E \\将结尾的断行字符($)显示出来-n \\列出行号,空白行也会标志行号-T \\将tab键以^I表示-......
  • Git在使用过程中遇到的一些问题
    git默认对文件中的大小写不敏感。方案1:通过配置git来达到识别文件大小写的问题。命令如下:gitconfigcore.ignorcecasefalse缺点:每个仓库都需要修改。方案2:1.先删......
  • linux各文件类型解压/压缩命令
    1、tar解压:tar-xvffilename.tar打包:tar-cvffilename.tarfilename2、gz解压:gunzipfilename.gzorgzip-dFileName.gz压缩:gzipFileName3......
  • Linux添加alias简化命令
    一、简介linuxalias是命令的一种别称,输入alias可以看到像下面这样的结果:aliasvi="vim"也即,输入vi后,被自动定向到vim这个命令了。alias的作用就是,可以简写命令。二......
  • 关于安装Wind金融终端后,启动QT后频繁跳出WDF.dll文件注册成功窗口的问题
    安装Wind金融终端后,启动QT后频繁跳出WDF.dll文件注册成功窗口的信息。经过排查后发现,主要问题出在系统环境变量上。安装了wind金融终端后,用户系统环境变量PATH里多了两个......
  • Linux驱动开发十三.platform设备驱动——3.设备树下的platform驱动
    在上一章节我们使用了platform框架在没有设备树的时候是如何使用的,不过现在的大多数半导体厂商都把设备树给我们完善了。区别就是在没有设备树信息的时候需要我们自己想总......
  • Eclipse中tomcat可以启动,但是访问报404
    临时分配到一个项目组,之前项目组用的是Weblogic,该项目租用的是tomcat,只好在eclipse再配置tomcat。1、选择window-->Server-->RuntimeEnviroments,在右边的按钮中选择Add按......
  • 移植busybox 以及从nfs启动系统
    1.前言开发环境Ubuntuserver18.04,因为找到的资料使用的nand是64M的,而我手上的板子是256M,所以资料里的镜像bin文件不能直接用,会有个ecc的问题,因为他在64M的nand上用......
  • 运维脚本----初始化Linux设置学习
    #已经安装操作系统#需求:#1、设置时区并同步时间#2、禁用selinux#3、清空防火墙默认策略#4、历史命令显示操作时间#5、禁止root远程登陆#6、禁止定时任务发......