理论:引导过程与服务控制 (解决忘记root问题、解决不能正常开机的问题)

前言:

学习引导过程,排除启动类故障,服务控制及切换运行级别,优化启动过程;重点了解修复MBR扇区,gurb菜单,root密码重置,优化开机启动

一: 引导过程总览

序号 步骤 解释
1 开机自检(BIOS) 1.加电自检(服务器例外,当服务器通电时,风扇会先转一圈),自检硬件设备是否完好无损 2.加载驱动
2 MBR引导 去找系统盘内的MBR去启用
3 GRUB菜单 选择系统去启用(系统例如双系统、急救系统等)
4 加载内核(kernel) 内核就是系统的核心部分,即加载内核去运行系统
5 init进程 初始化 PID=1,初始化包含把之前的缓存数据全部清空、恢复默认,然后再次加载其他的程序

启动类型(优先级从<到n):自动,自动(延迟启动,即开机后自启动),手动,禁用

二 : init 进程

2.1 init 进程

  • 由Linux内核加载运行 /sbin/init 程序
  • 是系统中第一个进程
  • PID(进程标记)号永远为1

/sbin/init 中的sbin是一个软连接,并不是一个目录

[[email protected] /]# ls -al  ‘查看sbin和bin‘
总用量 32
dr-xr-xr-x.  18 root root  249 11月 12 19:02 .
dr-xr-xr-x.  18 root root  249 11月 12 19:02 ..
drwxr-xr-x.   2 root root    6 11月  5 12:17 abc
lrwxrwxrwx.   1 root root    7 10月 23 13:35 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 10月 23 13:41 boot
drwxr-xr-x.  20 root root 3300 11月 13 10:00 dev
drwxr-xr-x. 138 root root 8192 11月 13 13:36 etc
drwxr-xr-x.   5 root root   45 11月 13 08:53 home
lrwxrwxrwx.   1 root root    7 10月 23 13:35 lib -> usr/lib
lrwxrwxrwx.   1 root root    9 10月 23 13:35 lib64 -> usr/lib64
drwxr-xr-x.   2 root root    6 11月  5 2016 media
drwxr-xr-x.   2 root root    6 11月  5 2016 mnt
drwxr-xr-x.   8 root root  150 11月 12 17:33 opt
dr-xr-xr-x. 203 root root    0 11月 13 10:00 proc
-rw-r--r--.   1 root root    4 11月 13 14:06 ps.txt
dr-xr-x---.  14 root root 4096 11月 13 10:01 root
drwxr-xr-x.  42 root root 1260 11月 13 13:36 run
‘lrwxrwxrwx.   1 root root    8 10月 23 13:35 sbin -> usr/sbin
drwxr-xr-x.   2 root root    6 11月  5 2016 srv
dr-xr-xr-x.  13 root root    0 11月 13 10:00 sys
drwxrwxrwt.  27 root root 4096 11月 13 14:04 tmp
drwxr-xr-x.  13 root root  155 10月 23 13:35 usr
drwxr-xr-x.  22 root root 4096 11月  5 23:09 var

三 : Systemd 单元类型

单元类型 关键信息
Service 文件所在位置: /lib/systemd/system/*./service
Socket 套接字,即通信协议的一个载体、介质,开发者去写的,比如在myscl安装时需要用到
Device 设备文件 块设备(负责存储)和字符设备(负责输入输出)
Mount 挂载点
Automount 自动挂载
Swap 交换空间,必要组件
Path 路径(PATH是变量,使用时用echo $PATH)
Timer 定时器,比如cron设置周期性计划需要调取定时器
Snapshot 保存状态,即快照功能
Scope 外部进程
Slice 管理进程
Target 目标服务

四 :运行init 级别所对应的Systemd目标 (centos 7)

五 : 修复MBR扇区故障

5.1 故障原因

  • 病毒、***等造成的破坏
  • 不正确的分区操作、磁盘读写误操作

5.2 故障现象

  • 找不到引导程序,启动中断
  • 无法加载操作系统,开机后黑屏

5.3 解决思路

  • 未雨绸缪,养成习惯,提前做好备份文件
  • 以安装光盘的形式去引导进入急救模式
  • 从备份文件中恢复

5.4 实验:模拟MBR扇区故障,然后去进行修复

思路:

修复MBR(另一种是GPT)扇区故障

一个扇区512字节

MBR中存有文件元信息(属性,位置)还有系统的引导文件;文件数据信息(具体内容)存放在磁盘的别的位置

步骤:

1:先备份MBR扇区数据

1)加一块硬盘做备份sdb,分区,格式化,挂载

[[email protected] ~]# init 6  ‘重启‘
[[email protected] ~]# fdisk /dev/sdb  ‘给sdb备份盘分区‘
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x99e92b15 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x99e92b15

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    41943039    20970496   83  Linux
命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

[[email protected] ~]# mkfs.xfs /dev/sdb1  ‘格式化‘
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=1310656 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242624, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[[email protected] ~]# mkdir /beifen   ‘创建挂载点‘
[[email protected] ~]# mount /dev/sdb1 /beifen ‘挂载‘
[[email protected] ~]# cd /beifen
[[email protected] beifen]# ls
[[email protected] beifen]#

2)然后备份过去

[[email protected] beifen]# dd if=/dev/sda of=/beifen/MBR.sda.bak bs=512 count=1
‘运用dd命令去把/dev/的sda磁盘的MBR备份,注意,不是sba1‘
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000550469 秒,930 kB/秒
[[email protected] beifen]# ls ‘查看‘
MBR.sda.bak

2:模拟故障

[[email protected] beifen]# dd if=/dev/zero of=/dev/sda bs=512 count=1
‘依旧运用dd,去把MBR覆盖‘
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000125984 秒,4.1 MB/秒
[[email protected] ~]# init 6  ‘重启‘

然后出现了报错

3:加载系统镜像文件中的急救模式

1)先把镜像放进去

2)在读条的时候按esc进入boot

选第三个troubleshooting

选择Rescue a CentOS system

3)加载,加载完毕

选第一个continue,连接

然后就可以回车键入命令

4:把备份数据做恢复处理

1)此时进入的系统是镜像文件中的系统,并不是电脑中的系统,这里重新创建挂载点,把含有备份文件的磁盘挂载上去,依旧运用dd命令去将备份数据覆盖上去

然后reboot进行重启

成功


小结:

1:备份mbr扇区数据
1)加一块硬盘做备份sdb
分区--》格式化---》挂载/abc
2)dd if=/dev/sda of=/abc/sda.mbr.bak bs=512 count=1

2:模拟故障

dd if=/dev/zero of=/dev/sda bs=512 count=1

3:加载系统镜像文件中的急救模式

加载系统镜像文件中的内核界面

4:把备份数据做恢复处理

mkdir /aaa

mount /dev/sdb1 /aaa

dd if=/aaa/sda.mbr.bak of=/dev/sda bs=512 count=1

六 :修复GRUB引导故障

6.1 故障原因

  • MBR中的GRUB引导程序遭到破坏
  • grub,conf文件丢失、引导配置有误

6.2 故障现象

  • 系统引导停滞,显示“grub>”提示符

6.3 解决思路

  • 尝试手动输入引导命令(100多行,嫌麻烦的就别手输了,了解即可)
  • 进入急救模式,重写或者从备份中恢复grub.conf(即加载镜像文件中的备份)
  • 向MBR扇区中重建grub程序

6.4 实验:grub菜单故障恢复

思路:

1.使用系统急救模式进入命令字符界面

2.加载镜像中的的系统进入bash环境

3.重新构建grub菜单系统

4.重启

步骤

1.先查看下grub所在的文件位置

[[email protected] ~]# cd /boot    ‘切换到/boot‘
[[email protected] boot]# ls
config-3.10.0-693.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-33c124456fa34c50a98483245dfea58d.img
initramfs-3.10.0-693.el7.x86_64.img
initrd-plymouth.img
symvers-3.10.0-693.el7.x86_64.gz
System.map-3.10.0-693.el7.x86_64
vmlinuz-0-rescue-33c124456fa34c50a98483245dfea58d
vmlinuz-3.10.0-693.el7.x86_64
[[email protected] boot]# ls grub/
splash.xpm.gz
[[email protected] boot]# ls grub2/
device.map  fonts  grub.cfg(‘配置文件‘)  grubenv  i386-pc  locale
[[email protected] boot]#

可以查看下grub.cfg文件

[[email protected] grub2]# vim grub.cfg 

 22
 23 if [ x"${feature_menuentry_id}" = xy ]; then
 24   menuentry_id_option="--id"
 25 else
 26   menuentry_id_option=""
 27 fi
 28
 29 export menuentry_id_option
 30
 31 if [ "${prev_saved_entry}" ]; then
 32   set saved_entry="${prev_saved_entry}"
 33   save_env saved_entry
 34   set prev_saved_entry=
 35   save_env prev_saved_entry
 36   set boot_once=true
 37 fi
 38
 39 function savedefault {
 40   if [ -z "${boot_once}" ]; then
 41     saved_entry="${chosen}"
 42     save_env saved_entry
 43   fi
 44 }

这个配置文件就是需要手动输入的,不忙的同学实在想尝试的话可以背下来手动输入

把grub.cfg配置文件删除,然后重启测试一波

[[email protected] grub2]# rm -rf grub.cfg
[[email protected] grub2]# ls
device.map  fonts  grubenv  i386-pc  locale
[[email protected] grub2]# init 6

2.没有进入系统,出现了手动输入grub的界面

进入急救模式,依旧是依靠镜像文件,把镜像文件挂载好,esc进入(在读取系统时就要去按,眼疾手快)

选择第三个CD-ROM Drive

跟MBR一样,先进入troubleshooting,后进入Rescue a centos system,选择1)continue

里面让用户run the command(运行这个命令):chroot /mnt/sysimage去进入镜像文件中的系统

输入chroot /mnt/sysimage 命令就会从sh切换到bash

重新构建grub2

grub2-install /dev/sda 给sda系统盘安装grub2

grub2-mkconfig -o /boot/grub2/grub.cfg 紧跟的这个指令指创建配置文件,指定位置是/boot/grub2/grub/cfg(也就是最开始删掉cfg的目录)

exit 保存

保存完成,reboot重启

解决问题

小结:

1:使用系统急救模式进入命令字符界面

2:加载镜像中的系统进入bash环境

chroot /mnt/sysimage

3:重新构建grub菜单系统

grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg

exit

reboot

七 : 遗忘root密码

7.1 故障原因

  • 遗忘root用户的密码

7.2 故障现象

  • 无法进行需要root权限的管理操作
  • 若没有其他可用账号,将无法登陆系统

7.3 解决思路

  • 进入急救模式,重设密码

7.4 实验

步骤:

1.加载镜像系统

esc 进镜像,依旧进入急救模式

2.直接改密码

选择1

chroot /mnt/sysimage/ 进入系统

直接输入passwd root 就可以修改密码

记得exit保存

reboot重启,测试密码

小结:

1:加载镜像系统
chroot /mnt/sysimage

2:直接改密码
passwd root
输入密码

八 : 系统服务控制

8.1 系统服务控制

  • 常用方式
[[email protected] ~]# systemctl  控制类型 服务名称
  • 控制类型

    • start: 启动
    • stop: 停止
    • restart: 重新启动(会中断服务,相当于先stop,后start)
    • reload: 重新加载(会重新加载配置文件,不会中断)
    • status: 查看服务状态
    • ......

九:Linux系统的运行级别

9.1 查看运行级别

  • runlevel命令
  • systemctl工具

9.2 临时切换运行级别

  • init命令(命令参数是运行级别所对应的数字)
  • systemctl工具(命令参数是具体的target)
[[email protected] ~]# runlevel    ‘查看运行级别‘
N 5 ‘N处的位置代表上一个运行的级别‘
[[email protected] ~]# init 3
[[email protected] ~]# init 5
[[email protected] ~]# runlevel
3 5

一般都是在35界别进行相互切换

十 : 优化启动过程

10.1 系统服务管理工具

  • ntsysv工具(伪图像化界面)

    • 提供一个交互式、可视化窗口
    • 可以在字符终端运行
    • 便于集中管理多个服务
  • systemctl 工具
    • 不提供交互式、可视化窗口
    • 管理单个服务效率更高
[[email protected] ~]# ntsysv 

带星号的会开机自启动

空格可以添加去掉星号

tab键可以切换界面

[[email protected] ~]# rpm -q httpd
httpd-2.4.6-90.el7.centos.x86_64
[[email protected] ~]# netstat -ntap | grep 80 ‘查看80端口的网络状态‘
tcp        0      0 192.168.139.152:59860   117.78.24.34:80         TIME_WAIT   -
tcp        0      0 192.168.139.152:59862   117.78.24.34:80         TIME_WAIT   -
[[email protected] ~]# systemctl start httpd   ‘开启httpd‘
[[email protected] ~]# netstat -ntap | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      4863/httpd

设置自启动不会影响工具目前的运行状态

十一 : 系统服务的启动和控制

11.1 ntsysv 系统服务管理工具

11.2 查看系统服务的启动状态

[[email protected] ~]# systemctl is-enabled 服务名称

11.3 设置系统服务的启动状态

[[email protected] ~]# systemctl enable/disable 服务名称

systemctl enable httpd 可以设置自启动

systemctl is-enabled httpd 可以检测服务是否开启自启动

[[email protected] ~]# systemctl enable httpd  ‘设为开机自启动‘
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[[email protected] ~]# systemctl is-enabled httpd  ‘查看启动状态‘
enabled
[[email protected] ~]# systemctl disable httpd ‘禁止自启动‘
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
[[email protected] ~]# systemctl is-enabled httpd  ‘再次查看‘
disabled
[[email protected] ~]# chkconfig --add 名称  ‘系统中的服务中添加一个工具(名称)‘

原文地址:https://blog.51cto.com/14558445/2450197

时间: 2024-10-17 00:19:29

理论:引导过程与服务控制 (解决忘记root问题、解决不能正常开机的问题)的相关文章

Linux系统管理09——引导过程与服务控制

Linux系统管理09--引导过程与服务控制 一.引导过程总览 1.init进程 ·由linux内核加载运行/sbin/init程序 ·是系统中的第一个进程,所有进程的父进程 ·PID(进程标记)号永远为1 2.Upstart启动方式 初始化配置分散存放,响应不同的启动事件 参数 说明 /etc/inittab 配置默认运行级别 /etc/sysconfig/init 控制tty终端的开启数量.终端颜色方案 /etc/init/rcS.conf 加载rc.sysinit脚本,完成系统初始化任务

引导过程与服务控制(理论基础,后续实操敬请期待)

我们来掌握引导过程与服务控制的基础知识 1.引导过程 2.排除启动类故障 3.服务控制及切换运行级别 4.优化启动过程 一.引导过程总览 1.开机自检(BIOS)--MBR引导--GRUB菜单--加载内核(kernel)--init进程初始化 2.Init进程由linux内核加载运行/sbin/init程序是系统中第一个进程PID(进程标记)号永远为1 3.Systemd单元类型 4.运行级别所对应的systemd目标9 二.排除启动类故障 修复MBR扇区故障1.故障原因病毒.***等造成的破坏

linux引导过程和服务控制

引导过程和服务控制 要求: ? 设置Linux系统每次开机后自动进入字符模式界面. 步骤: 编辑/etc/inittab文件,将默认运行级别修改为3.如图所示: ? 使用ntsysv工具同时调整2.3.4.5运行级别中的服务状态,关闭下列服务:anacron.atd.avahi-daemon.Bluetooth.cups.firstboot.hidd.hplip.ip6tables.iptables.isdn.mcstrans.mdmonitor.nfslock.pcscd.portmap.re

linux的引导过程和服务控制

引导过程和服务控制 要求: ? 设置Linux系统每次开机后自动进入字符模式界面. 步骤: 编辑/etc/inittab文件,将默认运行级别修改为3.如图所示: ? 使用ntsysv工具同时调整2.3.4.5运行级别中的服务状态,关闭下列服务:anacron.atd.avahi-daemon.Bluetooth.cups.firstboot.hidd.hplip.ip6tables.iptables.isdn.mcstrans.mdmonitor.nfslock.pcscd.portmap.re

Linux引导过程与服务控制

一:系统引导流程: 开机自检(BIOS)-->MBR引导-->GRUB菜单-->加载内核(kernel)-->init进程初始化  二:系统引导级别: 0 poweroff.target 关机状态,使用该级别时将会关闭主机 1 rescue.target   单用户模式,不需要密码验证即可登录系统,多用 于系统维护 2 multi-user.target 用户定义/减特定运行级别.默认等同于3,但是不支持网络 3 multi-user.target 字符界面的完整多用户模式,大多数

Linux系统启动引导过程和服务控制

刚入门的小伙伴们是不是还在迷惑到底系统从我们按下电源键的那一刻,是如何进行一步一步运行的,知道我们输入用户名和密码进入系统,来操作电脑,今天我们就来写一下开机的启动过程以及相关服务的控制. 一. 系统引导流程: 1 . 开机加电,BIOS对硬件加电自检 加电自检,检测硬件设备,这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬盘信息.内存信息.时钟信息.PnP特性等等 2 . 检查启动顺序,从硬盘引导,读取MBR(446字节) 硬盘上第0磁道第一个扇区被称为MBR,也就是Master

Linux-9引导过程与服务控制

一 引导过程 开机自检 (BIOS自检) MBR引导 GRUB菜单 加载内核(kernel) init 进程初始化 1  init进程 是所有进程的父进程 PID号永远为1 2 runlevels ——运行级别 0:关机 1:单用户模式,无需密码登录,用于系统维护 3:字符界面的完整多用户模式 (大部分服务器运行此级别) 5:图形界面的多用户模式 ,提供了图形桌面操作环境 6:重新启动 五  服务控制及优化启动 常用控制类型 start    ##启动 stop   ##停止 restart 

引导过程与服务控制

1111 引导过程总览 1. 开机自检(BIOS) 2. MBR引导 3.GRUB菜单 4. 加载内核 (kernel) 5. init 进程初始化 2222  系统引导级别(0-6) 0: 关机状态,使用该级别将会关闭主机 1:单用户模式,无需密码验证即可登录系统,用于系统维护 2: 字符界面的多用户模式(不支持网络访问) 3:字符界面完整多用户模式,大多数服务器运行在此级别 4: 未分配使用(省点模式) 5:图形界面的多用户模式,提供了图形桌面操作环境 6:重新启动 33333   修复 

CentOS 7引导过程与服务控制(二)

一.系统服务控制 在 CentOS 系统中,各种系统服务的控制脚本默认放在/usr/lib/systemd 目录下.通过 systemctl 命令工具可以实现对指定系统服务的控制.常见的几种控制类型如下所述. 1.start(启动):运行指定的系统服务程序,实现服务功能. 2.stop(停止):终止指定的系统服务程序,关闭相应的功能. 3.restart(重启):先退出,再重新运行指定的系统服务程序. [平常不建议使用]4.reload(重载):不退出服务程序,只是刷新配置.在某些服务中与 re