微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C6 C7的开机启动流程

C6开机启动流程

1.内核引导,加电自检(通电后检查内核):检查bios的配置,检测硬件
装好系统之后才会进行以下内容

MBR 引导 (3.2.1...)

GRUB菜单 (选择不同的系统)(按e,进入单用户模式)

c6改密码很简单,可以直接改
2.运行init

  • 0:关机(系统加载到init 0 ,会开关机)
  • 1:单用户模式(修改密码或开机死循环)(单用户工作状态,root权限,用于系统维护,禁止远程登陆)(开机按E进入单用户命令行模式之后,vim /etc/inittab 修改左下角重启就好)(开机按e进入单用户命令行模式之后,echo xx |passwd --stdin root 可以修改密码
  • 2:多用户模式(没有文件系统和网络)
  • 3:多用户模式(命令行,认模式)(纯命令行模式)
  • 4:没有使用的模式(废物模式)
  • 5:多用户模式(图形化界面)
  • 6:重启(认运行级别不能设为6,否则不能正常启动,死循环)
c6:
查看当前运行的级别,c6,c7都可以使用runlevel查看运行级别

[root@oldboy ~]# vim /etc/inittab # 可以看到左下角的运行级别


[root@zls ~]# runlevel  上一次的运行级别和现在的级别
N 3
临时切换运行级别

[root@zls ~]# init 5   切换,没有图形化界面则不会切换
[root@zls ~]# runlevel
3 5

永久切换运行级别
[root@zls ~]# vim /etc/inittab
id:3:initdefault

c7:
[root@oldboy ~]# vim /etc/inittab

# inittab is no longer used when using sy@R_502_6063@d.
 使用sy@R_502_6063@d时不再使用inittab。
# ADDING CONfigURATION HERE WILL HAVE NO EFFECT ON YOUR SY@R_502_6063@.
 在此处添加配置不会对您的系统产生任何影响。
# Ctrl-Alt-Delete is handled by /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/ctrl-alt-del.target
 Ctrl Alt Delete由/usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Ctrl-Alt-del.target处理
# sy@R_502_6063@d uses 'targets' instead of runlevels. By default, there are two main targets:
 sy@R_502_6063@d使用“targets”而不是runlevels。认情况下,有两个主要目标:
# multi-user.target: analogous to runlevel 3
multi-user.target:类似于runlevel 3
# graphical.target: analogous to runlevel 5
 graphical.target:类似于runlevel 5
# To view current default target, run:
要查看当前认目标,请运行:
# sy@R_502_6063@ctl get-default
#
# To set a default target, run:
要设置认目标,请运行:
# sy@R_502_6063@ctl set-default TARGET.target

[root@oldboy ~]# sy@R_502_6063@ctl set-default multi-user.target   # 永久
=init 3:多用户模式(命令行,认模式)(纯命令行模式)

[root@oldboy ~]# ll /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/|grep '.target$'
-rw-r--r--. 1 root root  402 Aug  8  2019 shutdown.target    0
-rw-r--r--. 1 root root  486 Aug  8  2019 rescue.target      1
-rw-r--r--. 1 root root  492 Aug  8  2019 multi-user.target  234
-rw-r--r--. 1 root root  558 Aug  8  2019 graphical.target   5
-rw-r--r--. 1 root root  552 Aug  8  2019 poweroff.target    6

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

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

l5: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/rcn.d 下面以S开头的 (软连接)是开机启动的服务的顺序,以K开头的是停止(开机不启动)的服务

# c6可以使用以下命令,c7不能使用(add,可以使用runlevel)(可以使用chkconfig --list,废物)

chkconfig --list      列出所有的系统服务 # c6c7都可以使用

chkconfig --add httpd 增加httpd服务 # 先添加,后选择级别

chkconfig --del httpd 删除httpd服务

chkconfig命令提供了一种简单的方式来设置一个服务的运行级别。例如,为了设置MysqL服务器在运行级别3和4上运行,# 你必须首先将MysqL添加为受chkconfig管理的服务:

chkconfig --add MysqL

现在,我们在级别3和5上设定服务为“on”

chkconfig --level 35 MysqL on   # 纯命令模式和图形化模式
或
chkconfig MysqL on   # 认是3 上 on ,开机--/etc/inittab--/rc.sysinit--/etc/rcN.d  然后按有没有,按顺序(按链接)进行启动服务

在其他级别上设为off

chkconfig --level 01246 MysqL off

为了确认你的配置被正确的修改了,我们可以列出服务将会运行的运行级别,如下所示:

#chkconfig --list MysqL  

MysqL           0:off       1:off       2:off       3:on 4:off       5:on 6:off

-------------------------

[root@oldboy ~]# ll /etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.wants/  查看开机自启动服务
[root@oldboy ~]# chkconfig --level 35 Nginx on
lrwxrwxrwx  1 root root 37 Apr 25 08:49 Nginx.service -> /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service  系统自动创建了软连接(开机自启动)

-----------------------

# c7  添加服务到开机自启动 (这个时候源码Nginx要 可以使用sy@R_502_6063@ctl,也就是说运行过那个脚本,如果脚本里面指定有创建/usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service脚本并写入了,启动信息就可以!)
sy@R_502_6063@ctl enable 服务名
[root@oldboy ~]# sy@R_502_6063@ctl enable Nginx  (状态改变,才会输出)
Created symlink from /etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.wants/Nginx.service to /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service.
创建了从/etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.want/Nginx.service到/usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service的符号链接。(# 前提的Nginx.service存在)

[root@oldboy ~]# reboot 
[root@oldboy ~]# sy@R_502_6063@ctl status NginxNginx.service - The Nginx HTTP and reverse proxy server  (绿色,开机自启动了)
[root@oldboy ~]# chkconfig --list  这个时候用这个命令是看不到Nginx开机启动服务的

# 使用软连接让服务加入开机自启动
[root@oldboy ~]# ll /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/
-rw-r--r--  1 root root  635 Apr 24 08:26 Nginx.service
[root@oldboy ~]# ll /etc/sy@R_502_6063@d/sy@R_502_6063@
drwxr-xr-x. 2 root root   87 Apr 18 22:09 default.target.wants

ln -s /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service  /etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.wants/Nginx.service

[root@oldboy ~]# ll /etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.wants
total 0
lrwxrwxrwx. 1 root root 38 Apr 18 22:10 auditd.service -> /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/auditd.service

4.建立终端(tty)
tty1~6,是centos系统(init服务)认创建的6个终端,是内核需要用到的终端,(可以在命令行使用 init N 实现终端之间的切换)

pts/0 , pts/1 xshell远程连接的终端

启动mingetty 进程

5.用户登录

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

(1)命令行登录(虚拟机)
(2)ssh登录
(3)图形界面登录

## 关机命令
init 0            立马关机
halt              立马关机
shutdown -h Now   立马关机
shutdown -h 20:20
shutdown -h +10
shutdown -a       取消关机设置
poweroff          立马关机

## 重启命令
init 6
reboot
shutdown -r Now
shutdonw -r 20:20
shutdown -r +10

C7

1.BIOS(开机自检)

打开系统电源后,它将读取所有设备设置并执行开机自检(开机自检)过程,以识别硬件设备,以测试和初始化系统硬件组件。成功后处理后,它将加载MBR(主引导记录)以进行下一个引导处理。

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

主引导记录放在Linux引导硬盘的第一个扇区中,MBR的大小只有512个字节,它包含用于引导操作系统的机器代码指令,称为引导加载程序,以及分区表

3.GRUB2 Bootloader(引导菜单

言简意赅:grub2菜单,如果装了双系统会让你进行选择

grub2配置文件位于/boot/grub2/grub.cfg中,由grub2 mkconfig使用/etc/grub.d中的模板和/etc/default/grub中的设置自动生成。不建议编辑GRUB2配置文件

4.Kernel(内核引导)

Linux内核是操作系统的核心,它是系统上第一个加载的程序。当系统启动时,内核从initrd.img加载所有必要的内核模块和驱动器,以加载Linux7中的系统第一个进程sy@R_502_6063@d,在6里面,init是爸爸,在7里面换了个爸爸,那就是sy@R_502_6063@d

**

 [root@oldboy ~]# top
 1 root      20   0  125324   3852   2608 S  0.0  0.4   0:02.38 sy@R_502_6063@d 
 
 [root@oldboy ~]# ll /etc/init.d/ 只能用绝对路径的方式启动/etc/init.d/下的2个服务,所以centos7里面,大多数服务都是用sy@R_502_6063@ctl这个命令 启动
total 40
-rw-r--r--. 1 root root 18281 Mar 29  2019 functions
-rwxr-xr-x. 1 root root  4569 Mar 29  2019 netconsole
-rwxr-xr-x. 1 root root  7923 Mar 29  2019 network
-rw-r--r--. 1 root root  1160 Aug  8  2019 README
 
#centos7上使用centos6的命令:
[root@oldboy ~]# /etc/init.d/network restart
Restarting network (via sy@R_502_6063@ctl):                        [  OK  ]
[root@oldboy ~]# service network restart
Restarting network (via sy@R_502_6063@ctl):                        [  OK  ]

[root@oldboy ~]# vim a.sh     判断/syy 是否存在
#!/bin/bash
. /etc/init.d/functions

if [ -d /root/syy ];then
        action '该目录已存在' /bin/true
else
        action '该目录不存在' /bin/false
fi
[root@oldboy ~]# sh a.sh 
该目录已存在                                               [  OK  ]

5.Sy@R_502_6063@d (不再使用init,改成了sy@R_502_6063@d)
sy@R_502_6063@d使用“targets”而不是runlevels。认情况下,有两个主要级别:

1) multi-user(多用户).target: analogous to runlevel 3
#查看运行级别
[root@zls ~]# sy@R_502_6063@ctl get-default
multi-user.target
2) graphical(图形化).target: analogous to runlevel 5
#设置认运行级别
[root@zls ~]# sy@R_502_6063@ctl set-default graphical.target
Removed symlink /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target.
Created symlink from /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target to /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/graphical.target.

#查看认界面
[root@zls ~]# sy@R_502_6063@ctl get-default
graphical.target

[root@zls ~]# vim /etc/inittab
# inittab is no longer used when using sy@R_502_6063@d.
 使用sy@R_502_6063@d时不再使用inittab
# ADDING CONfigURATION HERE WILL HAVE NO EFFECT ON YOUR SY@R_502_6063@.
 在此处添加配置不会对您的系统产生任何影响
# Ctrl-Alt-Delete is handled by /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/ctrl-alt-del.target
 Ctrl Alt Delete由/usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Ctrl-Alt-del.target处理
# sy@R_502_6063@d uses 'targets' instead of runlevels. By default, there are two main targets:
 sy@R_502_6063@d使用“targets”而不是runlevels。认情况下,有两个主要目标:
# multi-user.target: analogous to runlevel 3
multi-user.target:类似于runlevel 3
# graphical.target: analogous to runlevel 5
graphical.target:类似于runlevel 5
# To view current default target, run:
要查看当前认目标,请运行
# sy@R_502_6063@ctl get-default
#
# To set a default target, run:
要设置认目标,请运行:
# sy@R_502_6063@ctl set-default TARGET.target

CentOS7中的运行级别:(runlevel:运行级别的意思)
# init              0~6

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      # 重启
(234一样)

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

6.Runlevel-Target (运行级别)
运行级别:

init 0.target -> poweroff.target		# 关机
init 1.target -> rescue.target			# 单用户模式
init 2.target -> multi-user.target		# 多用户模式(没有文件系统和网络)
init 3.target -> multi-user.target		# 多用户模式(命令行模式,认模式)
init 4.target -> multi-user.target		# 多用户模式(还是没有被使用)		
init 5.target -> graphical.target		# 图形化模式
init 6.target -> reboot.target			# 重启
(234一样)

# 获取当前认的运行级别
[root@qls ~]# sy@R_502_6063@ctl get-default
multi-user.target

# 修改运行级别
[root@qls ~]# sy@R_502_6063@ctl set-default poweroff  (可以分开成两条命令,手动设置)

[root@oldboy ~]# ll /etc/sy@R_502_6063@d/sy@R_502_6063@/
lrwxrwxrwx. 1 root root  37 Apr 18 22:12 default.target -> /lib/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target
[root@oldboy ~]# ll /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/  
lrwxrwxrwx. 1 root root   16 Apr 18 22:09 default.target -> graphical.target# 不管
-rw-r--r--. 1 root root  552 Aug  8  2019 poweroff.target
-rw-r--r--. 1 root root  486 Aug  8  2019 rescue.target
-rw-r--r--. 1 root root  492 Aug  8  2019 multi-user.target
-rw-r--r--. 1 root root  558 Aug  8  2019 graphical.target
-rw-r--r--. 1 root root  543 Aug  8  2019 reboot.target
[root@oldboy ~]# ll /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/|grep '^l'
lrwxrwxrwx. 1 root root   15 Apr 18 22:09 runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root   13 Apr 18 22:09 runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root   17 Apr 18 22:09 runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root   17 Apr 18 22:09 runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root   17 Apr 18 22:09 runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root   16 Apr 18 22:09 runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root   13 Apr 18 22:09 runlevel6.target -> reboot.target
c7看 /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target 链接关系找 对应的运行级别,/usr/lib/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target,(找运行级别)
#/etc/sy@R_502_6063@d/sy@R_502_6063@/default.target.wants 目录下的xx.service文件,连接到/usr/lib/sy@R_502_6063@d/sy@R_502_6063@/xx.service   (找服务)

c6看 配置文件中(/etc/inittab),调用执行了/etc/rc.d/rc.sysinit,然后选择对应的运行级别
rcN.d 实现光速切换系统开机运行服务的级别

## 使用两条命令修改认运行级别---------运行级别原理
[root@qls ~]# rm -f /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target
[root@qls ~]# ln -s /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/poweroff.target /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target


## 相关目录
[root@qls ~]# ll /etc/sy@R_502_6063@d/sy@R_502_6063@   (认的运行级别)
[root@qls ~]# ll /usr/lib/sy@R_502_6063@d/sy@R_502_6063@ (运行级别和服务启动 脚本)

CentOS7进入单用户模式

[root@qls ~]# sy@R_502_6063@ctl set-default poweroff

c7进入单用户模式

出现2行内容的时候,按e进入单用户模式,q退出来,回车进入系统,

linux16这一行UTF-8后面输入enforcing=0 init=/bin/bash (顺序不重要)

可以手动修改ro 为 rw ,(这样可以使用sy@R_502_6063@ctl了)

ctrl + x 真正进入单用户模式

## 修改认启动方式
bash-4.2# mount -o rw,remount /        重新挂载根目录(英文逗号)(改成读写权限)
bash-4.2# systectl set-default multi-user.target    (不能用sy@R_502_6063@ctl)(只能分开执行)
bash-4.2# rm -f /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target
bash-4.2# ln -s /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target
bash-4.2# exec /sbin/init              重新引导init后可以使用sy@R_502_6063@ctl

## 修改密码
bash-4.2# mount -o rw,remount /
bash-4.2# echo 123|passwd --stdin root
bash-4.2# exec /sbin/init

进入正经模式,要重新修改密码

方法2:

linux16这一行UTF-8后面输入 rd.break (这种方法只能修改启动级别,不能修改密码,无论的交互还是非交换,有的系统可以改)

switch_root:/# mount -o rw,remount /sysroot  重新挂载/sysroot
switch_root:/# chroot /sysroot  获取root权限,命令提示符改变
sh-4.2# sy@R_502_6063@ctl set-default multi-user.target  可以使用sy@R_502_6063@ctl
sh-4.2# exit            退出
switch_root:/# reboot   重启

[root@qls ~]# sy@R_502_6063@ctl set-default poweroff

c7进入单用户模式

按e进入单用户模式,q退出来,回车从硬盘进入系统,

linux这一行UTF-8后面输入enforcing=0 init=/bin/bash

linux这一行 ro (只读)改成 rw (可读可写)(这样可以使用sy@R_502_6063@ctl了)

ctrl + x 进入

改就完事了

总结

# 查看认运行级别
sy@R_502_6063@ctl get-default
runlevel

# 设置认运行级别
sy@R_502_6063@ctl set-default multi-user.target  ###
rm -f /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target
ln -s /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target

# 设置开机自启动--------------------------------- 开机自启原理
1. sy@R_502_6063@ctl enable Nginx  
   sy@R_502_6063@ctl disable Nginx   取消服务的开机自启
2. ln -s /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service /etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.wants/Nginx.service
#注意,/usr/lib/sy@R_502_6063@d/sy@R_502_6063@/下得有Nginx.service,也就是运行了ngin-rpm -d指定的那个脚本,执行了那个脚本,/usr/lib/sy@R_502_6063@d/sy@R_502_6063@/就有有Nginx.service
同样,如果服务开机自启,那么,/etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.wants/下就有Nginx.service,
3. /app/Nginx/sbin/Nginx

总结:(服务的开机自启)
1. 要存在 /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/服务.service #启动脚本文件
2. 软链接 ln -s /usr/lib/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service /etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.wants/Nginx.service
所以说sy@R_502_6063@cl enable Nginx ,就是做出来一个链接而已

用户模式

CentOS7忘记root密码,进入单用户模式

1.重启系统

2.在grub菜单界面,按'e'进入单用户模式

3.方法一:

在linux16内容的行末写enforcing=0 init=/bin/bashCtrl + x正式进入单用户模式

4.重新挂载 /目录,权限设置为可读可写(rw)

mount -o rw,remount /

5.修改root密码

echo 1|passwd --stdin root

6.重新加载sy@R_502_6063@d

exec /sbin/init
reboot

3.方法二:

在linux16内容的行末写rd.breakCtrl + x开机

4.重新挂载sysroot目录设置可读可写权限(rw)

mount -o rw,remount /sysroot

5.获取root权限

chroot /sysroot

6.设置root密码

echo 123|passwd --stdin root

7.退出sh-4.2

exit

8.重启服务器

reboot
# 进入命令行模式记得再次修改用户密码,不然就不能改用户密码了(一次性??),只能修改运行级别

救援模式

救援模式的作用
-不损坏数据的前提下,修复磁盘(/dev/sda),,,密码,运行级别
-修复grub2菜单(/boot/grub2/grub2.cfg)

1.打开电源进入BIOS
2.选择boot界面,将CD-ROM(光驱),放在第一行(,选择,按 + )
3.按F10保存退出,把CD提到第一位,按f10,这样保存之后,重启系统的话,我们将会从光驱进入系统,这样可以选择是否进入救援模式

同样的,如果在服务器上插入USB(U盘),bios一般也可以扫描到U盘,所以,我们也可以在这里选择是否从U盘进入系统,修复系统。(前提是U盘上有相应的镜像)
4.选择yes

5.进入救援模式

install centos7 就是安装centos7,安装系统也可以达到修复系统的目的,但是会导致数据清空

选择install centos 7 按TAB键可以修改认网卡名(eth),dell(戴尔服务器)net.ifnames=0 biosdevname=0,如果不是戴尔服务器,net.ifnames=0
选择硬盘启动的话,直接进入系统(常用的那个)
回车

救援模式是通过第二行进入的,单用户模式是通过--从硬盘启动---grub菜单---按e----进入的,

<font color=red>救援模式:1.修复磁盘。2.修复grub菜单,3.修改运行级别,修改密码</font>

<font color=red>单用户模式:1.修改运行级别。2.修改忘记的密码</font>

6.进入救援模式之后,选择(1)继续
输入,随便输入回车  (获取root权限)
输入 chroot /mnt/sysimage(xxx不用输入)

可以修改密码修改运行级别了

exit

reboot

选择救援模式(3)---救援模式(2)--输入修改后的密码进入系统(修改xshell密码,远程连接),,,当然也可以选择开机进入固件,选择硬盘进入系统(回去解放前)

删根了只有快照可以救

模板机删了不影响克隆机


场景二:损坏MBR(磁盘损坏,无法进入系统),进入救援模式解决

多种方法进入命令行模式



## 损坏MBR
[root@oldboy ~]# ll /dev/sda*
brw-rw---- 1 root disk 8, 0 Apr 24 16:39 /dev/sda  #磁盘
brw-rw---- 1 root disk 8, 1 Apr 24 16:39 /dev/sda1 #分区
brw-rw---- 1 root disk 8, 2 Apr 24 16:39 /dev/sda2
brw-rw---- 1 root disk 8, 3 Apr 24 16:39 /dev/sda3

[root@qls ~]# dd < /dev/zero >/dev/sda bs=1 count=446  (认单位是b字节)   损坏磁盘的前 512b(小心不是bs=1M count=10 哈哈)
446+0 records in
446+0 records out
446 bytes (446 B) copied, 0.00032064 s, 1.4 MB/s
选救援模式
选从本地硬盘启动 (假装若无其事)
刚刚对磁盘的写入已经损坏了磁盘前512b,无法找到操作系统
遇到这一步的解决方法,1.重装系统(但是数据没了),windows可以用pe,linux不能用pe 

2.

进入救援模式
选第二个,进入救援模式
输入以下内容

sh-4.2# chroot /mnt/sysimage      提权
bash-4.2# grub2-install /dev/sda  修复
bash-4.2# exit					退出
sh-4.2# reboot

修复磁盘扇区成功,可以重新进入系统(数据不变)

选择从本地硬盘启动,进入正常的操作系统(去看看有没有真的修好

## 场景3:误删除GRUB菜单(啥都没了),进入救援模式

```bash
[root@oldboy ~]# ll /boot/
total 91920
-rw-r--r--. 1 root root   152976 Aug  8  2019 config-3.10.0-1062.el7.x86_64
drwxr-xr-x. 3 root root       17 Apr 18 22:09 efi
drwxr-xr-x. 2 root root       27 Apr 18 22:09 grub
drwx------. 5 root root       97 Apr 23 21:41 grub2  #
[root@oldboy ~]# cd /boot/grub2
[root@oldboy grub2]# ll
total 32
-rw-r--r--. 1 root root   84 Apr 18 22:12 device.map
drwxr-xr-x. 2 root root   25 Apr 18 22:12 fonts
-rw-r--r--. 1 root root 4261 Apr 18 22:13 grub.cfg #

[root@qls ~]# rm -fr /boot/grub2/
[root@qls ~]# reboot

从硬盘进入(假装若无其事)

grub2菜单删除,简单的ll,ls,命令都不能使用

grub2菜单删除,就肯定进不去单用户模式,单用户模式是进入grub2菜单之后,按e进入的
再次进入救援模式
输入以下内容,看右下角,alt+tab 可以切换窗口

```bash
sh-4.2# chroot /mnt/sysimage     提权
bash-4.2# grub2-install /dev/sda
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg  创建配置文件
bash-4.2# exit
sh-4.2# reboot

选从本地硬盘启动,进入正经系统
可以进入系统了,说明/boot/grub2/grub.cfg已经做好了

如果不想再进入光驱系统了,那么关闭虚拟机,选择打开电源进入固件,进入bios。选择boot

把Hard Drive 提到第一位,f10保存退出,这样重新启动,虚拟机将会直接从本地硬盘进入系统


C6 C7

sy@R_502_6063@d进程管理

sy@R_502_6063@d优势

1.最新系统都采用sy@R_502_6063@d管理(RedHat7,CentOS7,Ubuntu15...)
2.CentOS7 支持开机并行启动服务,显著提高开机启动效率
3.CentOS7关机只关闭正在运行的服务,而CentOS6,全部都关闭一次。
4.CentOS7服务的启动与停止不在使用脚本进行管理,也就是/etc/init.d下不在有脚本。
5.CentOS7使用sy@R_502_6063@d解决原有模式缺陷,比如原有service不会关闭程序产生的子进程。

什么是sy@R_502_6063@d

sy@R_502_6063@d即为sy@R_502_6063@ daemon守护进程,为系统的启动和管理提供一套完整的解决方案。

sy@R_502_6063@d相关的配置文件

/usr/lib/sy@R_502_6063@d/sy@R_502_6063@ #类似C6系统的启动脚本目录/etc/init.d/
/etc/sy@R_502_6063@d/sy@R_502_6063@/ #类似C6系统的/etc/rc.d/rcN.d/
/etc/sy@R_502_6063@d/sy@R_502_6063@/multi-user.target.wants/


Linux一直以来都采用init进程作为爸爸,但是init有两个缺点:

1.启动时间长,init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
2.启动脚本复杂,初始化完成后,系统会加载很多脚本,脚本都会处理各自的情况,这回让脚本多而复杂

sy@R_502_6063@d 相关文件

相关文件 CentOS6 CentOS7
服务启动脚本存放路径 /etc/init.d /usr/lib/sy@R_502_6063@d/sy@R_502_6063@
开机自启服务存放路径 /etc/rcN.d /etc/sy@R_502_6063@d/sy@R_502_6063@/N.target.wants
认运行级别 /etc/inittab /etc/sy@R_502_6063@d/sy@R_502_6063@/default.target

sy@R_502_6063@d启动相关命令

sy@R_502_6063@ V init CentOS6 sy@R_502_6063@d CentOS7 作用
/etc/init.d/Nginx start sy@R_502_6063@ctl start Nginx 启动Nginx服务
/etc/init.d/Nginx stop sy@R_502_6063@ctl stop Nginx 停止Nginx服务
/etc/init.d/Nginx status sy@R_502_6063@ctl status Nginx 查看服务的启动状态
/etc/init.d/Nginx restart sy@R_502_6063@ctl restart Nginx 重启服务
/etc/init.d/Nginx reload sy@R_502_6063@ctl reload Nginx 不停止服务,重新加载Nginx配置文件
sy@R_502_6063@ctl is-acvite Nginx 判断Nginx服务是否存活(写脚本用)
sy@R_502_6063@ctl mask Nginx 禁止服务运行
sy@R_502_6063@ctl unmask Nginx 取消禁止
service Nginx start service Nginx start 启动Nginx服务

service不能TAB,c6c7都可以使用service命令(向下兼容)

restart 停止服务,重新加载Nginx配置文件,然后再启动,reload 不停止服务,重新加载Nginx配置文件,只有Nginx可以使用reload(reload报错就用重启restart试试)

./Nginx -t 或者 /app/Nginx/sbin/Nginx -t 检查Nginx配置文件有没有问题,有错误的话就显示错误的位置,不能Nginx -t 是因为Nginx没有加入到环境变量(PATH)

[root@oldboy ~]# sy@R_502_6063@ctl is-active Nginx
unkNown
[root@oldboy ~]# sy@R_502_6063@ctl start Nginx
[root@oldboy ~]# sy@R_502_6063@ctl is-active Nginx
active

[root@oldboy ~]# vim Nginx.sh
panduanjieguo=$(sy@R_502_6063@ctl is-active Nginx)
if [ $panduanjieguo == 'active' ];then
        echo 'Nginx存活'
else
        echo 'Nginx不存活'
fi

[root@oldboy ~]# sy@R_502_6063@ctl mask Nginx
Created symlink from /etc/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service to /dev/null.
创建了从/etc/sy@R_502_6063@d/sy@R_502_6063@/linix.service到/dev/null的符号链接。(#软链接)
[root@oldboy ~]# sy@R_502_6063@ctl start Nginx
Failed to start Nginx.service: Unit is masked.
[root@oldboy ~]# sy@R_502_6063@ctl unmask Nginx
Removed symlink /etc/sy@R_502_6063@d/sy@R_502_6063@/Nginx.service.

sy@R_502_6063@d开机自启动相关命令

C6 C7 作用
chkconfig --list sy@R_502_6063@ctl list-unit-files 查看开机自启的服务
chkconfig Nginx on(2345) sy@R_502_6063@ctl enable Nginx 加入开机自启动
chkconfig Nginx off sy@R_502_6063@ctl disable Nginx 关闭开机自启动
chkconfig --list Nginx sy@R_502_6063@ctl is-enabled Nginx 查看指定服务是否被开机自启
chkconfig --add Nginx sy@R_502_6063@ctl daemon-reload 当我们手写脚本时让系统认识
[root@oldboy ~]# chkconfig --list|grep 3:on   #在c6好用

Note: This output shows SysV services only and does not include native
      sy@R_502_6063@d services. SysV configuration data might be overridden by native
      sy@R_502_6063@d configuration.

      If you want to list sy@R_502_6063@d services use 'sy@R_502_6063@ctl list-unit-files'.
      To see services enabled on particular target use
      'sy@R_502_6063@ctl list-dependencies [target]'.

network        	0:off	1:off	2:on	3:on	4:on	5:on	6:off

[root@oldboy ~]# sy@R_502_6063@ctl list-unit-files
[email protected]                               enabled 
blk-availability.service                      disabled
brandbot.service                              static

sy@R_502_6063@d服务状态

服务状态 状态说明
loaded 服务单元的配置文件已经被处理
active(running) 服务的一个或多个进程在运行中
active(exited) 一次性运行的服务成功被执行并退出(服务运行后完成任务,相关进程会自动退出)
active(waiting) 服务已经运行但在等待某个事件
inactive 服务没有在运行
enable 服务设定为开机运行
disabled 服务设定为开机不运行
static 服务不能被设定开机启动,但可以由其他服务启动该服务

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐