首页 > 其他分享 >开机启动流程

开机启动流程

时间:2022-10-08 19:12:14浏览次数:48  
标签:systemd .. service 启动 流程 init 开机 root localhost

目录

开机启动流程

CentOS 6 开机流程

1.内核引导

  • BIOS加电自检,检测主板上的硬件设备,根据BIOS设置启动系统
  • 读取/boot分区下,所有内核文件

2.运行init

init
sysv:Centos5 之前使用的pid为1的进程
UPstart:Centos6 使用的init进程
Systemd:Centos7


# 加载init,涉及到Linux系统中7个运行级别
# 查看Linux系统当前的运行级别
[root@localhost ~]# runlevel
N 3


0:关机运行级别
1:单用户运行级别
2:多用户运行级别,没有文件系统
3:多用户运行级别,有文件系统(命令行模式)
4:Centos6和7,保留,未使用
5:多用户,图形化运行级别
6:重启运行级别

# 运行init,会读取 /etc/inittab 配置文件
# 读取配置文件中的默认运行级别

# 获取当前系统的运行级别
C6:
id:3:initdefault:

C7默认3级:
[root@localhost ~]# systemctl get-default
multi-user.target

# 修改默认运行级别
systemctl set-default multi-user.target

3.系统初始化

# 根据运行级别中设置了开机自启动服务来启动对应服务
[root@localhost ~]# ll /etc/rc3.d/
根据/etc/rcN.d下面的服务,对应启动


C6
[root@localhost ~]# chkconfig --list

C7
systemctl list-unit-files
[root@localhost ~]# ll /etc/systemd/system/multi-user.target.wants/
total 0
lrwxrwxrwx. 1 root root 38 Mar 14 12:57 auditd.service -> /usr/lib/systemd/system/auditd.service
lrwxrwxrwx. 1 root root 37 Mar 14 12:57 crond.service -> /usr/lib/systemd/system/crond.service

4.建立终端

5.用户登录系统

CentOS 7 开机流程

1.内核引导

  • BIOS加电自检,检测主板上的硬件设备,根据BIOS设置启动系统
  • 读取/boot分区下,所有内核文件

2.MBR(Master Boot Record 主引导记录)

3.GRUB2 Bootloader(引导菜单)

加载grub2菜单,选择要进入的系统

4.Kernel(内核引导)

读取 /boot 目录下所有内核文件

5.Systemd(不再使用init,改成了systemd)

runlevel0.target -> poweroff.target
runlevel1.target -> rescue.target
runlevel2.target -> multi-user.target
runlevel3.target -> multi-user.target
runlevel4.target -> multi-user.target
runlevel5.target -> graphical.target
runlevel6.target -> reboot.target

0:关机运行级别
1:单用户运行级别
2:多用户运行级别,没有文件系统
3:多用户运行级别,有文件系统(命令行模式)
4:Centos6和7,保留,未使用
5:多用户,图形化运行级别
6:重启运行级别

# 使用systemctl get-default来获取默认的运行级别
[root@localhost ~]# systemctl get-default
multi-user.tar


[root@localhost system]# ll /etc/systemd/system/multi-user.target.wants/
根据/etc/systemd/system/multi-user.target.wants/中的.service文件开机启动对应服务

# 使用软链接设置开机自启
[root@localhost system]# ln -s /usr/lib/systemd/system/nginx.service /etc/systemd/system/multi-user.target

6.Runlevel-Target(运行级别)

CentOS7 进入单用户模式-修改root密码

1.关机

halt
poweroff
shutdown -h now
init 0

2.开机

1651990852686

3.按 'e' 编辑gurp2菜单的内核参数

1651991014544

**4.在Linux16行,把 ro 改为 rw ,在行末写入:"enforcing=0 init=0"。修改后按 ctrl + x **

1651991229497

5.修改root密码,重新加载init:“exec /sbin/init ”

1651991428560

# 关闭selinux
vim /etc/sysconfig/selinux 
selinux=enforcing ==> selinux=disabled

没有把Linux16行中 ro 该为 rw ,无法直接修改密码,因为当前/目录是只读状态
# 重新挂载/
mount -o rw,remount / 

# 修改密码
passwd root echo 111 |passwd --stdin root 

# 修改完不成功,创建文件
touch /.autorelabel

# 重新加载init
exec /sbin/init


# 不需要重新挂载/的方法
将Linux16行中的ro 改成rw例:

例:

1651992688433

CentOS7 进入单用户模式-修改默认运行级别

1.关机

2.进入grub2菜单

**3.按 ‘e’ 编辑grub2菜单内容:在Linux16行,把 ro 该为 rw ,行末写入"rd.break" 。修改后按 ctrl + x **

1651995153161

4.修改默认运行级别

# 1.重新挂载root权限
mount -o rw,remount /sysroot

# 2.获取root权限
chroot /sysroot

# 3.修改默认运行级别
systemctl set-default multi-user.target

# 4.退出
exit

# 5.重启
reboot

1651994567905

救援模式

需要有系统盘,才可以进入救援模式

要进入安装系统的界面,才能进入救援模式

1.关机

init 0
halt
poweroff
shutdown -h now

2.将系统盘放入光驱中

1652081306778

3.进入BIOS里的救援模式

# 1.将系统启动的顺序,改为从光盘启动
方法一:
开机时,不断按F2
方法二:
在电源里面点击,进入固件

# 2.按左右,选择boot

# 3.把 CD-ROM 启动顺序排到第一个,按 shift 和 + 键
以后调回去,把 +Hard 启动顺序排到第一个

# 4.按 fn 和 F10 保存并退出,选择 yes

# 5.进入安装系统的界面,选择救援模式

# 6.在后面输入:1

# 7.按回车,获取root的环境
chroot /mnt/sysimage

1652081976506

按左右,选择boot

1652082037696

1652082148636

把 CD-ROM 启动顺序排到第一个,按 shift 和 + 键

1652082317305

按 [fn] 和 F10 保存并退出,选择 yes

1652082445649

进入安装系统的界面,选择救援模式

1652082884290

1652082932856

1652083146396

输入:1

1652083253263

1652083292242

按回车,获取root的环境
chroot /mnt/sysimage

1652083744386

案例1-系统扇区损坏(前512字节)

# 1.损坏扇区
dd </dev/zero >/dev/sda bs=1 count=446

# 2.扇区损坏,需要进入救援模式修复扇区
按回车,获取root的环境
chroot /mnt/sysimage

修复扇区
grub2-install /dev/sda

退出root环境
exit

重启
reboot

损坏扇区

1652084862989

扇区损坏,需要进入救援模式修复扇区

grub2-install /dev/sda

1652085489828

案例2-修复grup菜单

# 1.按回车,获取root的环境
chroot /mnt/sysimage

# 2.修复扇区
grub2-install /dev/sda

# 3.重置grup.cfg配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg

# 4.查看/boot/grup2是否修复
ls /boot/grup2/

# 5.退出root环境
exit

# 6.重启
reboot

1652086322543

systemd管理服务

![](C:\Users\DELL\Downloads\未命名文件 (1).jpg)

systemd的优势

1.最新系统都采用systemd管理(RedHat7,CentOS7,Ubuntu15...)

2.CentOS7支持开机并启动服务,显著提高开机启动效率

3.CentOS7关机只关闭正在运行的服务,而CentOS6,全部都关闭一次

**4.CentOS7服务的启动与停止不在使用脚本进行管理,也就是/etc/init.d下不在有脚本 **

5.CentOS7使用systemd解决原有模式缺陷,比如原有service不会关闭程序产生的子进程

systemd相关配置文件

# 系统中所有服务启动的脚本存放路径
C7:
[root@localhost ~]# ll /usr/lib/systemd/system
nginx.service

C6:
/etc/init.d/

# 系统运行级别相关目录
C7:
[root@localhost ~]# ll /etc/systemd/system

C6:
[root@localhost ~]# ll /etc/rc*.d -d 
lrwxrwxrwx. 1 root root 10 May 7 10:46 /etc/rc0.d -> rc.d/rc0.d 
lrwxrwxrwx. 1 root root 10 May 7 10:46 /etc/rc1.d -> rc.d/rc1.d 
lrwxrwxrwx. 1 root root 10 May 7 10:46 /etc/rc2.d -> rc.d/rc2.d 
lrwxrwxrwx. 1 root root 10 May 7 10:46 /etc/rc3.d -> rc.d/rc3.d 
lrwxrwxrwx. 1 root root 10 May 7 10:46 /etc/rc4.d -> rc.d/rc4.d
lrwxrwxrwx. 1 root root 10 May 7 10:46 /etc/rc5.d -> rc.d/rc5.d 
lrwxrwxrwx. 1 root root 10 May 7 10:46 /etc/rc6.d -> rc.d/rc6.d 

# 默认运行级别需要开机自启的服务存放目录
C7:
[root@localhost ~]# ll /etc/systemd/system/multi-user.target.wants/
total 0
lrwxrwxrwx. 1 root root 38 Mar 14 12:57 auditd.service -> /usr/lib/systemd/system/auditd.service
lrwxrwxrwx. 1 root root 37 Mar 14 12:57 crond.service -> /usr/lib/systemd/system/crond.service
lrwxrwxrwx. 1 root root 41 Mar 14 12:57 firewalld.service -> /usr/lib/systemd/system/firewalld.service
lrwxrwxrwx. 1 root root 42 Mar 14 12:57 irqbalance.service -> /usr/lib/systemd/system/irqbalance.service
lrwxrwxrwx. 1 root root 46 Mar 14 12:57 NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service
lrwxrwxrwx. 1 root root 39 Mar 14 12:57 postfix.service -> /usr/lib/systemd/system/postfix.service
lrwxrwxrwx. 1 root root 40 Mar 14 12:57 remote-fs.target -> /usr/lib/systemd/system/remote-fs.target
lrwxrwxrwx. 1 root root 46 Mar 14 12:57 rhel-configure.service -> /usr/lib/systemd/system/rhel-configure.service
lrwxrwxrwx. 1 root root 39 Mar 14 12:57 rsyslog.service -> /usr/lib/systemd/system/rsyslog.service
lrwxrwxrwx. 1 root root 36 Mar 14 12:57 sshd.service -> /usr/lib/systemd/system/sshd.service
lrwxrwxrwx. 1 root root 37 Mar 14 12:57 tuned.service -> /usr/lib/systemd/system/tuned.service
lrwxrwxrwx. 1 root root 40 Mar 14 12:57 vmtoolsd.service -> /usr/lib/systemd/system/vmtoolsd.service

C6:
/etc/rc3.d/ 
K01smartd -> ../init.d/smartd 
K10psacct -> ../init.d/psacct 
K10saslauthd -> ../init.d/saslauthd 
K15svnserve -> ../init.d/svnserve 
K50netconsole -> ../init.d/netconsole 
K74ntpd -> ../init.d/ntpd 
K75ntpdate -> ../init.d/ntpdate 
K75quota_nld -> ../init.d/quota_nld 
K87restorecond -> ../init.d/restorecond 
K89rdisc -> ../init.d/rdisc 
K99rngd -> ../init.d/rngd 
S01sysstat -> ../init.d/sysstat 
S02lvm2-monitor -> ../init.d/lvm2-monitor 
S08ip6tables -> ../init.d/ip6tables 
S08iptables -> ../init.d/iptables 
S10network -> ../init.d/network 
S11auditd -> ../init.d/auditd 
S12rsyslog -> ../init.d/rsyslog 
S13cpuspeed -> ../init.d/cpuspeed 
S13irqbalance -> ../init.d/irqbalance 
S15mdmonitor -> ../init.d/mdmonitor 
S20kdump -> ../init.d/kdump 
S22messagebus -> ../init.d/messagebus 
S25blk-availability -> ../init.d/blk-availability 
S25netfs -> ../init.d/netfs 
S26acpid -> ../init.d/acpid 
S26haldaemon -> ../init.d/haldaemon 
S26udev-post -> ../init.d/udev-post 
S55sshd -> ../init.d/sshd 
S80postfix -> ../init.d/postfix 
S82abrt-ccpp -> ../init.d/abrt-ccpp 
S82abrtd -> ../init.d/abrtd 
S90crond -> ../init.d/crond 
S95atd -> ../init.d/atd 
S99local -> ../rc.local

systemd管理服务的命令

1652090283979

# 1.启动服务
C6:
/etc/init.d/服务名 start 
service 服务名 start 

C7:
systemctl start 服务名 
service 服务名 start 

# 2.停止服务
C6:
/etc/init.d/服务名 stop 
service 服务名 stop 

C7:
systemctl stop 服务名 
service 服务名 stop 

# 3.服务重启
C6:
/etc/init.d/服务名 restart 
service 服务名 restart 

C7:
systemctl restart 服务名 
service 服务名 restart 

# 4.服务重新加载
C6:
/etc/init.d/服务名 reload 
service 服务名 reload 

C7:
systemctl reload 服务名 
service 服务名 reload 

# 5.检查服务的启动状态
C6:
[root@localhost ~]# /etc/init.d/sshd status 
openssh-daemon (pid 1508) is running...

C7:
systemctl status sshd 

# 6.判断服务是否在运行
[root@localhost ~]# systemctl is-active sshd active 
[root@localhost ~]# systemctl stop sshd 
[root@localhost ~]# systemctl is-active sshd inactive 

# 7.禁用某个服务
[root@localhost ~]# systemctl mask crond 

# 8.取消禁用某个服务
[root@localhost ~]# systemctl unmask crond




# 服务启动
systemctl start服务名
/etc/init.d/服务名start

# 服务停止
systemctl stop服务名
/etc/init.d/服务名stop

# 服务重启
systemctl restart服务名
/etc/init.d/服务名restar

# 服务重新加载
systemctl reload 服务名
/etc/init.d/服务名 reload

# 查看服务状态
systemctl status 服务名
/etc/init.d/服务名 status

# 判断服务是否在运行
systemctl is-active 服务名

# 禁止服务运行
systemctl mask 服务名

# 取消禁止服务运行
systemctl unmask 服务名

开机自启服务管理

# 1.查看开机自启的服务有哪些
C6:
[root@localhost ~]# chkconfig 

C7:
[root@localhost ~]# systemctl list-unit-files 
UNIT FILE                                     STATE   
proc-sys-fs-binfmt_misc.automount             static  
dev-hugepages.mount                           static  
dev-mqueue.mount                              static  
proc-sys-fs-binfmt_misc.mount                 static  
run-vmblock\x2dfuse.mount                     disabled
sys-fs-fuse-connections.mount                 static  
auditd.service                                enabled 
[email protected]                               enabled 

# 2.设置开机自启动
C6:
[root@localhost ~]# chkconfig sshd on (默认 2 3 4 5 运行级别都自启) 
[root@localhost ~]# chkconfig |grep sshd 
sshd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 
[root@localhost ~]# chkconfig sshd on 
[root@localhost ~]# chkconfig |grep sshd 
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off 
[root@localhost ~]# chkconfig sshd off 
[root@localhost ~]# chkconfig |grep sshd 
sshd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 
[root@localhost ~]# chkconfig sshd --level 3 on 
[root@localhost ~]# chkconfig |grep sshd 
sshd 0:off 1:off 2:off 3:on 4:off 5:off 6:off 

C7:
[root@localhost ~]# systemctl enable sshd 

# 3.关闭开机自启
C6:
[root@localhost ~]# chkconfig sshd off 

C7:
[root@localhost ~]# systemctl disable sshd 

# 4.查看指定服务是否开机自启
C6:
[root@localhost ~]# chkconfig --list sshd 
sshd 0:off 1:off 2:off 3:on 4:off 5:off 6:off 

C7:
[root@localhost ~]# systemctl is-enabled nginx 
enabled:允许开机自启 
disabled:不允许开机自启 

# 7.如果启动脚本被修改,重新加载启动脚本 
C7:
systemctl daemon-reload

思维导图

标签:systemd,..,service,启动,流程,init,开机,root,localhost
From: https://www.cnblogs.com/LZA1218/p/16769930.html

相关文章

  • windows批量启动程序并设置延迟启动
    首先新建一个文本文件txt:以启动es为例:启动顺序如下:找到我们要启动的程序右键属性:在新建的txt文件中输入:start/d"程序路径"程序名(注意程序名前面有个空格)如下:sta......
  • RNA-seq | 转录组标准分析流程和常用工具软件介绍
    笔记内容摘要:RNA-seq转录组基础知识与标准分析流程,简单记录学习过程。转录组分析是对样本转录产物RNA的深入挖掘研究。通常情况下,植物的表型差异可能由许多因素控制,其中......
  • [转]深入理解Docker ulimit(docker容器启动报错library initialization failed - unab
    原文地址:深入理解Dockerulimit-DockOne.io【编者的话】Docker大规模应用后,如果你没踩过坑,说出去肯定没人信。昨天就遇到一个ulimit的经典问题:业务Container内ulimit值......
  • Linux 简单的Java sh脚本启动jar包
    123projectName="你的项目名"45#提醒功能6help(){7echo"help:sh${projectName}.sh[start|stop|restart]"8exit19}1011#判断项......
  • 重装Intel核显后,设备管理器英特尔显卡属性这里报告了一个未启动设备(igfx)
    问题:卸载了Intel集显之后,重装,发现外接显示器无法被识别并显示页面在设备管理器里面,右键核显的属性,查看事件,显示“未启动设备(igfx)”解决方案:右键集显,点击“扫描硬件改动”......
  • 记一次debian无法启动的解决经历
    前言有几台debian物理机突然无法开机了,断电重启后,一直卡在下面这个界面参考了博客【linux】解决系统卡在ubuntuloadinginitialramdisk发现无法修复在recovery模式......
  • springMVC执行流程
    1.浏览器将请求发送到前端控制器;2.前端控制器通过处理器映射器将请求绑定在一个处理器上;3.将请求绑定的处理器返回给前端控制器;4.前端控制器通过处理器适配器将处理器......
  • voltus的IR drop分析(简单流程)
    一:文件准备voltus的环境文件配置1:pgv库配置pgv库分别配置std库;mem库;IP库配置库命令:libgen_stdcell.tclread_lib-lefset_pg_library_mode\ -ground_pins *......
  • 计算机中丢失MSVCP140.dll无法启动此程序问题
    一次清理电脑安装程序,发现同时安装有VC2015运行库和VC2018运行库(VisualC++RedistributablePackage),而且有x86和x64两种,感觉VC2018能向前兼容VC2015,于是随手删除了2015版......
  • 从SpringBoot启动,阅读源码设计
    目录一、背景说明二、SpringBoot工程三、应用上下文四、资源加载五、应用环境六、Bean对象七、Tomcat服务八、事件模型九、配置加载十、数据库集成十一、参考源码服务启......