Linux启动过程

目录

五阶段

内核引导

运行init

运行级别runlevel

运行级别切换

修改系统启动运行级别

系统初始化

建立终端

用户登录系统

Linux关机


五阶段

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


内核引导

        在计算机电源打开后,首先是BIOS(基本输入输出系统)开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。操作系统接管硬件后,首先读入/boot目录(存放用于系统引导时使用的各种文件)下的内核文件。

        注释:BIOS对硬件进行检测,CPU从起始地址为0xFFF0处开始执行程序,其自检内容主要包括CPU、内存、硬盘等设备和即用设备


运行init

        init进程是系统所有进程的起点,没有这个进程,系统中任何进程都不会启动。init程序首先需要读取配置文件/etc/inittab(etc存放系统的配置文件)。

运行级别runlevel

        Linux为允许不同的场合,分配不同的开机启动程序就叫做运行级别。启动时会根据运行级别,确定运行哪些程序

很多程序需要开机启动,他们在windows叫做service(服务),在Linux叫做daemon(守护进程)

7个运行级别
运行级别0系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1单用户工作状态,root权限,用于系统维护,禁止远程登录
运行级别2多用户状态(没有NFS网络文件系统
运行级别3完全的多用户状态(有NFS),登录后进入控制台命令行模式
运行级别4系统未使用,保留
运行级别5X11控制台,登录后进入图形GUI模式
运行级别6

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

target文件保存在:/lib/systemd/system 目录中

运行级别设置由 /etc/systemd/system/default.target 文件来控制

运行级别服务程序存放位置: /etc/rc.d/

服务进程存放在运行级别对应目录中:Snnxxxx或Knnxxxx服务程序的脚本存放位置:/etc/rc.d/init.d/


运行级别切换

  • runlevel               --当前运行级别
  • ll /etc/systemd/system/default.target     --启动时的运行级别
  • init 3/5/6              --命令级别切换:字符模式/图形模式/重启

修改系统启动运行级别

举个栗子

  • 法一:重新设置链接文件 

 #rm -rf /etc/systemd/system/default.target

 #ln -s /lib/systemd/system/runlevel3.target /etc/systemd/default.target

  • 法二:使用systemctl命令

#systemctl set-default runlevel3.target


系统初始化

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

        主要完成的工作有:

  • 激活交换分区
  • 检查磁盘
  • 加载硬件模块
  • 以及其它一些需要优先执行的任务

举个栗子

        15:5:wait:/etc/rc.d/rc 5  //这一行表示以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(以Start参数运行)开头的连接文件,倘若发现存在相应的脚本也存在K开头的连接,而且已经处于运行态(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已启动的守护进程,然后重新运行。(这样是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。每个运行级别中将运行哪些守护进程,用户可以通过chkconfig或setup中的“System Services”来自行设定。)


建立终端

        rc执行完毕后,返回init。(基本系统环境已经设置好,各种守护进程也启动好)init这是会打开6个终端,以便用户登录系统。在inittab中的定义的6个终端

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

//   /sbin类似/bin目录,也存放二进制可执行文件,只能root权限才能访问,mingetty程序能打开终端、设置模式。

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


用户登录系统

三种登录方式:

  • 命令行登录
  • ssh登录
  • 图形界面登录


Linux关机

关机流程:sync (必须先运行sync命令)> shutdown > reboot > halt

关机指令:shutdown

sync            //将数据由内存同步到硬盘中
shutdown        //关机指令,可以使用 man shutdown 来看一下帮助文档

//关机命令

shutdown -h 10 'This server will shutdown after 10 mins' //表示计算机将在10分钟后关机,并且会显示在登录用户的当前屏幕中
shutdown -h/-r now           //立马关机/重启
shutdown -h 20:45            //系统将在20:45关机
shutdown -h/-r +10           //十分钟后关机/重启

reboot                       //重启,==》shutdown -r now ==》shutdown -r now reboot init 6
halt                         //关闭系统,==》shutdown -h now ==》poweroff ==》 shutdown -h now halt poweroff 和 init 0

  • 27
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值