Linux引导过程和服务控制

本文详细介绍了Linux操作系统的引导流程,包括BIOS启动、MBR引导、GRUB菜单、init进程启动,以及Systemd在CentOS7中的应用。文章还涵盖了Linux运行级别概念、查看与切换方法,以及服务管理,包括开机自启设置和MBR扇区故障的修复过程。
摘要由CSDN通过智能技术生成

目录

Linux操作系统引导过程

系统初始化进程

init进程

Systemd

Linux系统运行级别

运行级别概念

查看运行级别

(1)runlevel命令

(2)systemctl

切换运行级别

(1)init

(2)systemctl

(3)修改默认运行级别

系统服务控制(服务管理操作)

服务管理操作命令

服务管理控制类型

服务开机自启

(1)使用systemctl设置服务开机自启

(2)图形化管理开机自启

​编辑

(3)使用chkconfig设置开机自启

排除启动类故障

(一)修复MBR扇区故障

(1)故障发生的原因

(2)故障产生时的现象

(3)怎么解决

操作实验


Linux操作系统引导过程

1.开机自检

       计算机加电后,首先会进入BIOS启动环境。在这个环境中,固件会检测硬件,并且搜索可引导设备,比如硬盘。

2.MBR引导

       BIOS会在可引导设备中搜索引导加载程序,如GRUB。引导加载程序位于硬盘的MBR(主引导记录)上。引导加载程序的作用是加载操作系统内核。

3.启动GRUB菜单

       引导加载程序会读取GRUB配置文件获取内核的设置和位置,然后显示GRUB菜单

4.内核加载

       引导加载程序会读取内核映像文件并将其加载到内存中。一旦内核加载完毕,引导加载程序会将控制权转交给内核。

5.init进程启动

       内核初始化完成后,会启动init进程(通常是/sbin/init),并将init进程加载到内存中运行。init进程是用户空间的第一个进程,负责启动其他进程和服务。

6.系统初始化

       init进程会执行一系列的配置文件和脚本,以初始化用户空间的环境。这些配置文件和脚本可以包括/etc/inittab、/etc/rc.d/等。

系统初始化进程

init进程

由 Linux 内核加裁运行 /sbin/init 程序

init进程是系统中第一个进程

init进程是所有进程的父进程init进程的PID号永远为1

Systemd

Systemd 是Linux操作系统的一种init软件

Centos7中采用全新的Systemd启动方式,取代传统的SysVinit

Centos7中运行的第一个init进程是 /lib/systemd/systemd

Linux系统运行级别

运行级别概念

       操作系统的运行级别是指操作系统在启动过程中的不同阶段的运行状态。不同的运行级别对应着不同的功能和服务。

       常见的操作系统运行级别有以下几种:

运行级别功能
0关机
1单用户模式
2字符界面的多用户模式
3字符界面的多用户模式
4字符界面的多用户模式
5图形界面的多用户模式
6重启

查看运行级别

(1)runlevel命令

runlevel         #查看上一次的运行级别和当前的运行级别

(2)systemctl

systemctl get-default    #查看当前的默认运行级别

切换运行级别

(1)init

平常使用较多的是:init  切换运行级别

(2)systemctl

功能systemctl
关机poweroff.target
单用户模式rescue.target
字符界面的多用户模式multi-user.target
字符界面的多用户模式multi-user.target
字符界面的多用户模式multi-user.target
图形界面的多用户模式graphical.target
重启reboot.target

(3)修改默认运行级别

systemctl set-default multi-user.target | graphical.target      #设置默认运行级别(字符界面                                                                                            多用户模式和图形界面多用户模式)

系统服务控制(服务管理操作)

服务管理操作命令

(1)systemctl 控制系统中的服务

systemctl    控制类型   服务名称

注意systemctl 要确保在 /usr/lib/systemd/system/ 目录中有相关服务的 XXX.service 文件

(2)service 控制系统中的服务

service  服务名  服务类型

注意service 要确保在 /etc/init.d/ 目录中有相关服务的管理脚本文件

服务管理控制类型

start启动
stop停止
restart重新启动
reload重新加载
status查看服务状态

服务开机自启

(1)使用systemctl设置服务开机自启

systemctl enable|disable [--now] 服务名[.service]       #enable代表开启;disable代表关闭;                                                                                         --now选项实现立即开启|关闭服务
systemctl is-enabled 服务名[.service]

(2)图形化管理开机自启

ntsysv

(3)使用chkconfig设置开机自启

chkconfig --add 服务名                             #服务名就是 /etc/init.d/ 目录下的脚本文件名
chkconfig --level 运行级别列表  服务名  on|off     #开启|关闭服务在哪些运行级别下开机自启
chkconfig --list 服务名                            #查看自启状态

排除启动类故障

(一)修复MBR扇区故障

(1)故障发生的原因

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

(2)故障产生时的现象

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

(3)怎么解决

  • 可以提前作好备份文件
  • 以安装光盘引导进入急救模式
  • 从备份文件中恢复
操作实验

为了实现恢复,先对MBR进行备份,防止破坏导致无法登录系统

(1)新建一块硬盘专门用于备份,新建fdisk分区,格式化,挂载

[root@localhost ~]# fdisk -l 

磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a0e82

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    83886079    40893440   8e  Linux LVM

磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节



[root@localhost ~]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。

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

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

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

命令(输入 m 获取帮助):83
8: unknown command
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# mkfs -t xfs /dev/sdc1
meta-data=/dev/sdc1              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


[root@localhost ~]# mount /dev/sdc1 /opt/mbr-bak

[root@localhost ~]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        35G  4.4G   31G   13% /
/dev/sda1               xfs      1014M  187M  828M   19% /boot
tmpfs                   tmpfs     378M  8.0K  378M    1% /run/user/42
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/sdc1               xfs        20G   33M   20G    1% /opt/mbr-bak

(2)在opt目录中新建一个备份目录mbr-bak

(3)使用dd命令备份数据

[root@localhost ~]# dd if=/dev/sda of=/opt/mbr-bak/benfen bs=512 count=1
                      #从sda一块硬盘中提取第一个扇区的数据512字节到opt目录中

记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.00027866 秒,1.8 MB/秒


[root@localhost ~]# cd /opt/mbr-bak


[root@localhost mbr-bak]# ll -h
总用量 4.0K
-rw-r--r--. 1 root root 512 4月  22 01:08 benfen

(4)模拟黑客破坏攻击,使系统无法正常登录

[root@localhost mbr-bak]# dd if=/dev/zero of=/dev/sda bs=512 count=1


记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000138101 秒,3.7 MB/秒


[root@localhost mbr-bak]#init 6

重启之后无法正常进入操作系统

(5)重启进入急救模式,选择Troubleshooting

进入rescue a CentOS system

(6)此时进入了shell环境下,新建一个目录用于还原,将备份的数据导入sda中,重启

(7)可以正常登录了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值