Linux基础-----引导过程管理与服务控制

目录

 

一.引导过程

二.systemd单元类型

三.Linux运行级别和对应的systemd目标

四.修复MBR扇区的故障

五.修复GRUB引导故障

六.遗忘root用户密码

七.系统服务控制


一.引导过程

  • Linux操作系统的引导过程包括:开机自检(BIOS),MBR引导,GRUB菜单,加载Linux内核,init进程初始化
  • 开机自启(BIOS):服务器主机开机以后,根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统的控制权,大多数时候会移交给本机硬盘
  • MBR引导:当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR的设置,将系统的控制权传递给包含操作系统引导文件的分区或者直接根据MBR记录中的引导信息调用启动菜单
  • GRUB菜单:对于Linux系统,GRUB是使用最广泛的多系统引导器程序,系统控制权传递给GURB以后,将会显示启动菜单提供给用户选择,并且根据所选项加载Linux内核文件,然后将系统控制权转交给内核
  • 加载Linux内核:Linux内核是一个预先编译好的特殊的二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制全以后,将完全掌控整个Linux系统
  • init进程初始化:为了进一步完成系统的引导过程,Linux内核首先将系统的“/sbin/init”加载到内存中运行,init进程负责完成一系列的系统初始化过程,最后等待用户进行登录
  • 在引导Linux系统的过程中,“/sbin/init”是内核第一个加载的程序,因此init进程的PID号为1,init进程是其他进程的父进程。

二.systemd单元类型

  • .service(扩展名),描述一 个系统服务
  •  .socket(扩展名),描述一 个进程间通信的套接字
  •  .device(扩展名),描述一 个内核识别的设备文件
  •  .mount(扩展名),描述一 个文件系统的挂载点
  •  .automount (扩展名), 描述一个文件系统的自动挂裁点
  •  .swap (扩展名), 描述一个内存交换设备或交换文件
  • .path(扩展名),  描述一个文件系统中文件或目录
  •  .timer (扩展名), 描述一个定时器(用于实现类似cron的调度任务)
  • .snapshot(扩展名),用于保存一个systemd的状态
  •  .scope(扩展名),  使用systemd的总线接口以编程的方式创建外部进程
  • .slice (扩展名), 描述居于Cgroup的一组通过层次组织的管理系统进程
  •  .target(扩展名),  描述一组systemd的单元

三.Linux运行级别和对应的systemd目标

  • 0:关机状态,使用该级别时将会关闭主机,对应systemd中的target
  • 1:单用户模式,不需要密码验证即可登录系统,多用于系统维护,对应的systemd中的rescue.target
  • 2:用户定义/域特定运行级别,默认等同于3,对应的systemd中的multi-user.target
  • 3:字符界面的完整多用户模式,大多数服务器主机运行此级别,对应的systemd中的multi-user.target
  • 4:用户定义/域特定运行级别,默认等同于3,对应的systemd中的multi-user.target
  • 5:图形界面的多用户模式,提供了图形桌面操作环境,对应的systemd中的graphical.target
  • 6:重新启动,使用该级别时将会重启系统,对应的systemd中的reboot.target

四.修复MBR扇区的故障

  • 故障原因:病毒、木马等造成的破环或者不正确的分区操作、磁盘读写误操作
  • 故障现象:找不到引导程序,启动中断或者无法加载操作系统,开机后黑屏
  • MBR引导扇区位于物理硬盘的第一个扇区(512B),该扇区又称为主引导扇区,其中包含系统引导程序和分区情况
  • 模拟MBR破坏且恢复使用的步骤
1:备份MBR扇区数据
        增加一块新的硬盘sdb1,做备份
        分区>格式化>挂载(挂载到/mnt)
        备份:dd if=/dev/sda of=/mnt/sda.mbr.bak bs=512 count=1
2: 损坏MBR扇区的文件
       dd if=/dev/zero of=/sda bs=512 count=1
3:进入镜像系统文件的急救模式
4:把备份数据做恢复处理
     重新挂载(添加文件):mount /dev/sdb1 /mnt
     恢复数据: dd if=/mnt/sda.mbr.bak of=/dev/sda bs=512 count=1
  • 实例:
  • 创建新的磁盘,格式化,且挂载在/mnt中,用dd命令把MBR进行备份
[root@localhost ~]# mount /dev/sdb1 /mnt
[root@localhost ~]# dd if=/dev/sda of=/mnt/sda.mbr.bak bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000414638 秒,1.2 MB/秒
[root@localhost ~]# 
  • 模拟损坏MBR
[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000697366 秒,734 kB/秒
[root@localhost ~]# 
 //dev/zero中的数据是无用文件
  • 进入系统镜像的急救模式

开启光驱,保证镜像文件和原主机系统相同

Linux基础-----引导过程管理与服务控制_第1张图片

进入光驱

Linux基础-----引导过程管理与服务控制_第2张图片

选择急救模式

Linux基础-----引导过程管理与服务控制_第3张图片

Linux基础-----引导过程管理与服务控制_第4张图片

Linux基础-----引导过程管理与服务控制_第5张图片

  • 把备份数据作恢复处理,且重启

Linux基础-----引导过程管理与服务控制_第6张图片

 

注:必须用非MBR所在硬盘,进行备份;此外,模拟损坏之后挂载会失效,必须重新挂载,数据备份,重启系统之后,挂载也会失效

五.修复GRUB引导故障

  • 故障原因:MBR中的GRUB引导程序遭到破坏或者grub.conf文件丢失、引导配置有误
  • 故障现象:系统引导停滞,显示“grub>”提示符
  • 模拟GRUB破坏且恢复使用的步骤
1.模拟破环grub
由于GRUB的配置文件在/boot/grub2/grub.cfg中,即可以
删除配置文件:rm -rf /boot/grub2/grub.cfg
2.进入系统镜像的急救模式的命令字符界面
3.加载镜像中的系统进入bash环境
chroot /mnt/sysimage
4.重新建立加载sda分区
grub2-install /dev/sda
5.重新构建grub菜单配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
5.退出,且重启
exit 
reboot
  • 实例
  • 破坏GRUB的配置文件
[root@localhost ~]# cd /boot/grub2
[root@localhost grub2]# ls
device.map  fonts  grub.cfg  grubenv  i386-pc  locale
[root@localhost grub2]# cd
[root@localhost ~]# rm -rf /boot/grub2/grub.cfg
[root@localhost ~]# ls /boot/grub2
device.map  fonts  grubenv  i386-pc  locale
[root@localhost ~]# 
  • 进入镜像系统急救模式中的字符界面(注意:连接光驱,加载镜像)

Linux基础-----引导过程管理与服务控制_第7张图片

进入光驱

Linux基础-----引导过程管理与服务控制_第8张图片

选择急救模式

Linux基础-----引导过程管理与服务控制_第9张图片

Linux基础-----引导过程管理与服务控制_第10张图片

Linux基础-----引导过程管理与服务控制_第11张图片

  • 加载bash环境

Linux基础-----引导过程管理与服务控制_第12张图片

  • 重新建立加载sba分区的GRUB

  • 重新构建grub菜单的配置文件

Linux基础-----引导过程管理与服务控制_第13张图片

六.遗忘root用户密码

  • 故障原因:遗忘root用户密码
  • 故障现象:无法进行需要root权限的管理操作且若无其他可用账号,将无法登录系统
  • 解决步骤
1.加载镜像系统,进入bash环境
chroot /mnt/sysimage
2.直接使用passwd修改root密码
passwd root > 123123 >123123 
3.exit退出,且reboot重启

注:添加光驱,加载镜像文件(和本系统相同)

七.系统服务控制

  • systemctl工具,不提供交互式、可视化窗口,且管理单个服务效率更高
  • 使用格式:systemctl 控制类型 服务名称
  • 控制类型:start(启动);stop(停止);restart(重新启动);reload(重新加载);status(查看服务状态)
  • restart,重新启动会先停止服务,在开启服务;reload,不会停止服务,而是重新加载文件
  • 实例如下
[root@localhost ~]# netstat -natp | grep httpd
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# netstat -natp | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      1774/httpd          
[root@localhost ~]# 
  • systemctl enable 服务名称,开机自启服务
  • systemctl disable 服务名称 ,开机关闭服务
  • systemctl is-enabled 服务名称,检测服务的状态
  • netstat -natp | grep 服务名称,查看服务端口是否开启
  • 实例如下
[root@localhost ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost ~]# systemctl disable httpd
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
[root@localhost ~]# systemctl is-enabled htttpd
Failed to get unit file state for htttpd.service: No such file or directory
[root@localhost ~]# netstat -natp | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      1774/httpd          
[root@localhost ~]# 

  • runlevel查看运行级别(N代表init初始化,5代表图形化界面)
[root@localhost ~]# runlevel
N 5
[root@localhost ~]# 
  • ntsysv工具,提供一个交互式、可视化窗口,可以在字符终端运行,便于集中管理多个服务
  • ntsysv,用字符伪造图形化界面,查看服务是否被开启

Linux基础-----引导过程管理与服务控制_第14张图片

 

 

你可能感兴趣的:(Linux基础,Linux命令)