[toc]

开机启动流程

Centos6

1
2
3
4
5
6
# 开机流程
1.内核引导
2.运行init
3.系统初始化
4.建立终端
5.用户登录系统

Centos6开机流程

  1. 内核引导

    1
    2
    # 'BIOS'加电自检,检测主板上的硬件设备,根据'BIOS'设置启动系统
    # 读取'/boot'分区下,所有内核文件
  2. 运行init

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    # init运行流程
    1 运行init,会读取 /etc/inittab配置文件
    2 读取配置文件中的默认运行级别
    3 获取当前系统的运行级别
    4 启动init进程

    # Linux可以在不同场景,分配不同的开机启动程序,叫做'运行级别'
    ## init程序类型:
    SysV:CentOS 5前使用pid为1的进程 # 配置文件:/etc/inittab
    Upstart:CentOS 6 # 配置文件:/etc/inittab, /etc/init/*.conf
    Systemd:CentOS 7 # 配置文件:/usr/lib/systemd/system、 /etc/systemd/system

    # 加载init,涉及到Linux系统中7个运行级别
    运行级别0:关机运行
    运行级别1:单用户运行(修改root密码),root权限,用于系统维护,禁止远程登陆
    运行级别2:多用户运行,没有文件系统
    运行级别3:多用户运行,有文件系统(命令行模式)
    运行级别4:CentOS6和7 保留,未使用
    运行级别5:多用户,图形化运行级别
    运行级别6:重启运行(reboot)

    # 命令
    runlevel # 查看Linux系统当前的运行级别(前级别 现级别)
    init 级别 # 临时切换运行级别
    vim /etc/inittab # 永久切换运行级别
    ## id:3:initdefault(仅针对chentos6)
    chkconfig --list # 查看开机自启服务
    ## 该输出结果只显示 SysV 服务
  3. 系统初始化

    1
    # 根据运行级别中设置的开机自启动服务,运行rc脚本来启动对应服务 
  4. 建立终端

    1
    # rc执行完毕后,返回init后,init会打开6个终端以便用户登录系统
  5. 用户登录系统

    1
    2
    3
    4
    # 登录方式有三种:
    命令行登录
    ssh登录
    图形界面登录

    image-20221123163525987

Centos6关机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
` 正确的关机流程为:sync > shutdown > reboot > halt
`sync 将数据由内存同步到硬盘中。

# shutdown(关机指令)
shutdown –h 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'

Centos6 忘记root密码或调整了运行级别为’6’

1
2
3
4
5
6
# 进入单用户级别:
1.重启服务器,一直按'E'键,进入grub引导菜单的内核界面
2.在内核界面选择使用上下箭头移动并选择内核
3.内核选定之后再次按下'E'键进行编辑
4.在最后一行后面加上数字1(是单用户模式的运行级别)或者single然后回车
5.然后根据提示按下boot进行重新引导

Centos7

Centos7开机流程

  1. BIOS(开机自检)
1
2
# 'BIOS'加电自检,检测主板上的硬件设备,根据'BIOS'设置启动系统
# 读取'/boot'分区下,所有内核文件
  1. MBR ( Master Boot Record 主引导记录)
1
# 主引导记录放在'linux'引导硬盘的第一个扇区中,此信息通过'BIOS'预加载到'ROM'中
  1. GRUB2 Bootloader(引导菜单)
1
2
# 加载'grub2'菜单,选择要进入的系统
# 可以选择多系统
  1. Kernel(内核引导)
1
读取'/boot'目录下所有内核文件
  1. Systemd (不再使用init,改成了systemd
1
2
3
4
5
6
7
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
  1. Runlevel-Target (运行级别)
1
2
3
4
5
6
7
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户运行(修改root密码),root权限,用于系统维护,禁止远程登陆
运行级别2:多用户运行级别(没有文件系统)
运行级别3:完全的多用户状态(有文件系统),登陆后进入控制台命令行模式
运行级别4:多用户运行级别(保留,未使用)
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则反复重启

Centos7关机

1
2
3
4
5
6
7
8
9
10
11
# 关机
shutdown
init 0
halt
shutdown -h now
poweroff

# 重启
reboot
init6
shutdown -r now

Centos7单用户模式

修改root密码(忘记root密码时使用)

  1. 开机在引导界面输入’e’,进入内核编辑模式

    image-20221123174551929

  2. 进入编辑模式运行修改过的内核程序,并进入单用户模式

    1
    # 在Linux16行末,添加:'enforcing=0 init=/bin/bash',然后按下'Ctrl+X'组合键来运行修改过的内核程序

    image-20221123174741063

  3. 在单用户模式界面修改密码

    1
    2
    3
    4
    5
    6
    # 无法直接修改密码,因为当前'/'目录是只读状态

    # 挂载'/'目录后再修改密码
    mount -o rw,remount / # 重新挂载'/'目录
    echo 111 | passwd --stdin root # 免交互修改密码
    exec /sbin/init # 重新加载init

    image-20221123175609379

PS:不需要重新挂载的方式

1
将ro改成rw可以免挂载'/'目录

image-20221123180014370

修改默认运行级别(默认运行级别无法进入系统时使用)

  1. 开机在引导界面输入’e’,进入内核编辑模式

    image-20221123174551929

  2. 进入编辑模式运行修改过的内核程序,并进入单用户模式

    1
    # 在Linux16行末,添加:'rd.break',然后按下'Ctrl+X'组合键来运行修改过的内核程序

    image-20221123181427434

  3. 在单用户模式界面设备运行级别

    1
    2
    3
    4
    5
    6
    7
    8
    # 挂载sysroot目录

    mount -o rw,remount /sysroot/ # 重新挂载sysroot目录
    chroot /sysroot/ # 获取root权限
    systemctl get-default # 查看当前默认运行级别
    systemctl set-default multi-user.target # 设置允许级别为multi-user(runlevel 3级别)
    exit # 退出
    reboot # 重启

    image-20221123193741348

Centos7救援模式

  1. 挂载Linux系统光盘镜像文件

    image-20221123194602566

  2. 设置启动时进入BIOS

    image-20221123194539162

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

    1
    2
    3
    4
    5
    # 设置从光盘启动

    1.通过键盘'←''→'键进入boot界面
    2.通过'+''-'移动启动项顺序,最上面的为第一启动项
    3.设置完成后按'F10'保存并退出,按回车键确认

    image-20221123195448076

  4. 进入故障排除界面

    image-20221123195818662

  5. 进入救援模式

    image-20221123200015913

  6. 选择’1’

    1
    2
    3
    # 选择'继续'
    输入要进入的选项编号'1'
    按回车键进入

    image-20221123200327804

  7. 修复扇区救援

    1
    2
    3
    4
    5
    bash-4.2# chroot /mnt/sysimage						  # 获取root权限
    bash-4.2# grub2-install /dev/sda # 修复
    bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg # 重置grub.cfg配置文件
    exit # 退出root环境
    reboot # 重启

    image-20221123200926812

  8. 再进入BIOS把启动项还原

    image-20221123201156016

c7 systemctl(服务运行管理命令)

1
2
3
4
5
6
7
8
9
10
11
12
13
# systemctl(服务运行管理命令)

systemctl get-default # 查看当前默认运行级别
systemctl set-default multi-user.target # 设置允许级别为multi-user(runlevel 3级别)
systemctl start # 启动服务
systemctl stop # 停止服务
systemctl restart # 重启服务
systemctl reload # 重新加载不重启服务
systemctl disable # 取消开机自启
systemctl enable # 启动开机自启
systemctl list-unit-files # 查看各个级别下服务的启动与禁用
systemctl is-enabled crond.service # 查看特定服务是否为开机自启动
systemctl 26 daemon-reload # 创建新服务文件或者变更设置