Linux系统管理-开机启动流程


文章目录

  • Linux系统管理-开机启动流程
  • CentoOS6的开机启动流程
  • CentOS6忘记root密码
  • Linux的关机指令
  • CentOS7的开机启动流程
  • CentOS7进入单用户模式
  • 第一种方式(只能修改密码)
  • 第二种方式(只能修改运行级别)
  • 进入救援模式
  • 生产场景1
  • 生产场景2
  • 生产场景3
  • systemd管理服务
  • systemctl相关命令


CentoOS6的开机启动流程

1.内核引导

  1. MBR引导
  2. BIOS加电自检
  3. 加载grub菜单

2.运行init

运行级别

作用

0

关机

1

切换到单用户模式,root权限,禁止远程连接

2

多用户状态(没有文件系统)

3

完全多用户状态,有文件系统,登录后使用命令行控制

4

unused,没有被使用

5

切换到图形化界面(前提是安装了图形化)

6

重启

查看当前运行级别

[root@oldboy ~]# runlevel
N 3

临时切换运行级别

[root@zls ~]# init 5
[root@zls ~]# runlevel
3 5

永久切换运行级别

[root@zls ~]# vim /etc/inittab
id:3:initdefault

3.系统初始化

首先找到,runlevel查看当前系统的运行级别 
然后找到/etc/rc.d/rcN.d N代表当前的运行级别

4.建立终端

tty1

tty2

tty3

tty4

tty5

tty6

5.用户登录系统

init程序的类型:

SysV:       init, CentOS 5之前, 配置文件: /etc/inittab。
Upstart:    init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf。
Systemd:    systemd, CentOS 7,配置文件: /usr/lib/systemd/system、 /etc/systemd/system。

CentOS6忘记root密码

1.开机进入grub菜单

bios 通电自启动 被隐藏_重启

2.按e,进入单用户模式

bios 通电自启动 被隐藏_linux_02

3.按上下键选择内核kernel,再按e

bios 通电自启动 被隐藏_bash_03

4.在最后一行quiet后面加上空格再加数字1(是单用户模式的运行级别)或者single然后回车

5.然后根据提示按下b(boot)进行重新引导

bios 通电自启动 被隐藏_运行级别_04

6.修改root密码

passwd root
reboot

Linux的关机指令

sync 将数据由内存同步到硬盘中。

shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:

shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。

shutdown –h now 立马关机

shutdown –h 20:25 系统会在今天20:25关机

shutdown –h +10 十分钟后关机

shutdown –r now 系统立马重启

shutdown –r +10 系统十分钟后重启

reboot 就是重启,等同于 shutdown –r now

halt 关闭系统,等同于shutdown –h now 和 poweroff

CentOS7的开机启动流程

1.内核引导

  1. MBR引导(512字节)
  2. BIOS加电自检
  3. 加载grub2菜单(选择要进入的系统)

2.运行init(使用systemd来管理init及所有服务)

运行级别

作用

centos7

0

关机

poweroff.target

1

切换到单用户模式,root权限,禁止远程连接

recuse.target

2

多用户状态(没有文件系统)

multi-user.target

3

完全多用户状态,有文件系统,登录后使用命令行控制

multi-user.target

4

unused,没有被使用

multi-user.target

5

切换到图形化界面(前提是安装了图形化)

graphical.target

6

重启

reboot.target

# 修改默认的运行级别
systemctl set-default 运行级别的名字
systemctl get-default 查看运行级别

3.系统初始化

  1. systemctl get-default 查看当前的运行级别 -> multi-user.target
  2. /etc/systemd/system/multi-user.target.wants
  3. 并行开启所有的开机自启服务

4.建立终端

tty1

tty2

tty3

tty4

tty5

tty6

5.用户登录

CentOS7进入单用户模式

第一种方式(只能修改密码)

1.关机

init 0

2.停在grub2菜单

bios 通电自启动 被隐藏_bash_05

3.按e进入内核编辑界面

bios 通电自启动 被隐藏_linux_06

4.将光标下移,移动到linux16那一行,行末(一般是quiet后面)

bios 通电自启动 被隐藏_linux_07

5.输入enforcing=0 init=/bin/bash

bios 通电自启动 被隐藏_运行级别_08

6.按Ctrl + x

bios 通电自启动 被隐藏_bash_09

# 重新挂载/目录 , 因为该模式/目录是只读权限
bash-2.4# mount -o rw,remount /
# 该模式下,只能解决忘记root密码的问题
bash-2.4# echo 123 |passwd --stdin root
# 重新引导系统
bash-2.4# exec /sbin/init

第二种方式(只能修改运行级别)

1.进入grub2菜单

bios 通电自启动 被隐藏_bios 通电自启动 被隐藏_10

2.按e进入内核编辑界面

bios 通电自启动 被隐藏_linux_11

3.将 biosdevname=0 前面的 ro 改成 rw ,避免重新挂在 / 目录,然后还是在 linux16 的行末输入 rd.break

bios 通电自启动 被隐藏_运行级别_12

4.按 Ctrl + x

bios 通电自启动 被隐藏_重启_13

5.执行命令

# 获取到root权限
switch_root:/# chroot /sysroot
# 修改运行级别
sh-4.2# systemctl set-default multi-user.target 
# 退出
sh-4.2# exit
# 重启 
switch_root:/# reboot

进入救援模式

生产场景1

当系统坏了,无法登陆系统,但是需要把里面的数据拷贝出来,怎么办?

bash-4.2# mkfs.xfs -f /dev/sdc
bash-4.2# mkdir /data
bash-4.2# mount /dev/sdc /data
bash-4.2# cp -a /raid0 /data
bash-4.2# umount /dev/sdb

生产场景2

修复MBR,主要出现在安装双系统的时候,后安装的系统把原来的MBR删除了,需要修复

破坏硬盘的钱446字节,模拟MBR引导损坏,会发现重启无法启动系统

系统损坏,没有机会进入grub菜单

[root@zls ~]# dd < /dev/zero >/dev/sda bs=1 count=446
记录了446+0 的读入
记录了446+0 的写出
446字节(446 B)已复制,0.0011061 秒,403 kB/秒

1.选择Troubleshooting

bios 通电自启动 被隐藏_重启_14

2.选择Rescue a CentOS system 进入救援模式

bios 通电自启动 被隐藏_linux_15

3.进入救援模式后输入 1 按回车

bios 通电自启动 被隐藏_bash_16

bios 通电自启动 被隐藏_运行级别_17

4.敲回车,获得一个shell

bios 通电自启动 被隐藏_linux_18

## 获取到root权限 
bash-2.4# chroot /mnt/sysimage

## 修复mbr引导 
grub2-install /dev/sda

## 退出
exit

## 重启
reboot

生产场景3

CentOS7 误删除grub文件,进行修复

1.模拟故障

#删除grub2
[root@oldboy ~]# rm -fr /boot/grub2/
#重启
[root@oldboy ~]# reboot

2.查看系统状态

bios 通电自启动 被隐藏_bios 通电自启动 被隐藏_19

3.从BIOS启动

bios 通电自启动 被隐藏_bash_20

4.进入BIOS设置从光盘启动

bios 通电自启动 被隐藏_linux_21

5.按F10保存退出

bios 通电自启动 被隐藏_bash_22

6.选择Troubleshooting

bios 通电自启动 被隐藏_linux_23

7.选择救援模式

bios 通电自启动 被隐藏_重启_24

8.进入救援模式后输入 1 按回车获得一个shell

bios 通电自启动 被隐藏_重启_25

9.输入chroot /mnt/sysimage获取root权限

bios 通电自启动 被隐藏_bios 通电自启动 被隐藏_26

10.重新安装MBR,加载grub2中的grub.cfg文件

bash-4.2# chroot /mnt/sysimage
bash-4.2# grub2-install /dev/sda
bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg

bios 通电自启动 被隐藏_linux_27

11.查看加载出来的文件

bios 通电自启动 被隐藏_bash_28

12.退出、关机

bios 通电自启动 被隐藏_bash_29

13.进入BIOS设置从光盘启动把Hard Drive调到最上面,然后按F10保存退出

bios 通电自启动 被隐藏_运行级别_30

systemd管理服务

优势

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

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

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

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

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

相关的配置文件

/usr/lib/systemd/system #类似C6系统的启动脚本目录/etc/init.d/

/etc/systemd/system/ #类似C6系统的/etc/rc.d/rcN.d/

/etc/systemd/system/multi-user.target.wants/ (开机启动的服务在这个目录下)

System V init(6系统)

systemctl命令(7系统)

作用

service crond start

systemctl start crond.service

启动服务

service crond stop

systemctl stop crond.service

停止服务

service crond restart

systemctl restart crond.service

重启服务

service crond reload

systemctl reload crond.service

重新加载配置(不终止服务)

service crond status

systemctl status crond.servre

查看服务运行状态

systemctl is-active sshd.service

查看服务是否在运行中

systemctl mask crond.servre

禁止服务运行

systemctl unmask crond.servre

取消禁止服务运行

systemctl设置服务开机启动、不启动、查看各级别下服务启动状态等常用命令

System V init(6系统)

systemctl命令(7系统)

作用

chkconfig crond on

systemctl enable crond.service

开机自动启动

chkconfig crond off

systemctl disable crond.service

开机不自动启动

chkconfig --list

systemctl list-unit-files

查看各个级别下服务的启动与禁用

chkconfig --list crond

systemctl is-enabled crond.service

查看特定服务是否为开机自启动

chkconfig–add crond

systemctl daemon-reload

创建新服务文件或者变更设置

systemctl服务状态说明

服务状态

状态说明

loaded

服务单元的配置文件已经被处理

active(running)

服务的一个或多个进程在运行中

active(exited)

一次性运行的服务成功被执行并退出(服务运行后完成任务,相关进程会自动退出)

active(waiting)

服务已经运行但在等待某个事件

inactive

服务没有在运行

enable

服务设定为开机运行

disabled

服务设定为开机不运行

static

服务不能被设定开机启动,但可以由其他服务启动该服务

systemctl相关命令

# 启动服务 
systemctl start 服务名 
# 停止服务 
systemctl stop 服务名 
# 重启服务 
systemctl restart 服务名 
# 重新加载配置文件,不重启服务 
systemctl reload 服务名 
# 查看服务的运行状态 
systemctl status 服务名 
# 判断服务是否在运行 
systemctl is-active 服务名 
# 禁止服务运行 
systemctl mask 服务名 
# 取消禁止服务运行 
systemctl unmask 服务名 
# 开机自启 
systemctl enable 服务名 
# 禁止开机自启 
systemctl disable 服务名 
# 查看系统中开机自启和禁止、静态服务 
systemctl list-unit-files 
# 查看服务是否允许开机自启 
systemctl is-enabled 服务名 
# 重新加载启动脚本 
systemctl daemon-reload