Linux引导过程与服务控制

Posted 袁❈晔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux引导过程与服务控制相关的知识,希望对你有一定的参考价值。

引导过程与服务控制

Linux操作系统引导过程

引导过程总览

开机自检:硬件自检,这个过程中主要是检测我们的计算机硬件设备(CPU,内存,主板,显卡,CMOS等设备)是否有故障存在。

MBR引导:MBR大小为512字节,存放启动引导程序(boot loader)(446字节)用来寻找内核加载内核、分区表等信息(64字节,一个分区16个字节,有4个分区)、16进制的字段(55AA/AA55)(2字节)。

GRUP菜单:系统控制权传递给GRUB 以后,将会显示提供用于选择,并根据-选项加载linux内核文件。

加载内核:系统引导器程序会从本地硬盘中加载内核以及内存文件系统 initramfs,其中包含启动时所有必要的硬件内核模块、初始化脚本等。

init进程初始化:在initramfs中找到驱动程序的所有硬件,然后作为PID 1从initramfs执行/lib/systemd/systemd。systemd启动initrd.target中所有单元,包括挂载/etc/fstab,然后从initramfs根文件系统切换到磁盘根目录并且systemd启动默认target(字符界面还是图形化界面)也就是/etc/systemd/system/default.target,最后等待用户登陆。

Systemd单元类型

运行级别所对应的Systemd目标

运行级别:init 0、init 1、init 2、init 3、init 4、init 5、init 6

一些管理命令

runlevel  查看当前运行级别

systemctl  start  name.service  开启服务

systemctl  stop  name.service  停止服务

systemctl  restart name.service  重启服务(相当于先停止再启动,服务的PID会改变)

systemctl  reload  name.service  重新加载服务的配置文件(服务不会中断)

systemctl  status  name.service  查看服务的状态

systemctl  enable  name.service  设置服务开机自启

systemctl  disable  name.service  设置服务开机不自启

systemctl  is-enabled  name.service  查看服务是否开机启动

systemctl  list-unitfiles | grep enaabled  查看已启动的服务列表

systemctl  mask  name.service  屏蔽服务

systemctl  cat  kube-apiserver.service  查看服务的system服务配置

systemctl  unmask  name.service  取消屏蔽服务

systemctl  get-defaut  查看当前系统默认启动的target

systemctl  set-default multi-user.target  设置默认启动的target为multi-user.target

systemctl  cat  sshd  

systemd-analyze  查看系统启动耗时,等同于systemd-analyze time

配置文件:

/etc/systemd/system/ 存放不同级别的开启自启服务

/run/sys/temd/system/  系统执行过程中所产生的服务脚本所在目录

/user/lib/systemd/system  每个服务最主要的启动脚本设置,类似于之前的/etc/initd.d

排除启动类故障

修复MBR扇区故障

故障原因:

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

故障现象:

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

解决思路:

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

1、首先模拟故障
新加一块硬盘,格式化挂载
dd if=/dev/sda of=/opt/sdb/mbr.bak bs=512 count=1
dd if=/dev/zero of=/dev/sda bs=512 count=1
2、重启电脑,无法进入系统
3、设置boot选项从光盘进入
4、选择修复模式进入
5、mkdir /bak
6、重新挂载sdb,mount /dev/sdb /bak
7、dd if=/bak/mbr.bak of=/dev/sda
8、reboot重启
9、boot修改第一启动项为硬盘,顺利进入系统

修复GRUB引导故障

故障原因:

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

故障现象:

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

解决思路:

  • 尝试手动输入引导命令
  • 进入急救模式,重写或者从备份中恢复grub.conf
  • 像MBR扇区中重建grub程序

从光盘启动,进入救援模式,进入修复shell

执行chroot /mnt/sysimage    #初始系统已经挂载到了/mnt/sysimage下面,想要进入初始系统下面,需要执行chroot /mnt/sysimage命令
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
exit
reboot

遗忘root用户密码

故障原因:

  • 遗忘root用户的密码

故障现象:

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

解决思路:

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

启动系统,并在GRUB2启动屏显时,按下e键进入编辑模式
在linux16/linux/linuxefi所在参数行尾添加以下内容:init=/bin/sh
按Ctrl+x启动到shell
挂载文件系统为可写模式:mount –o remount,rw /
运行passwd,并按提示修改root密码
运行命令exec /sbin/init来正常启动,或者用命令exec /sbin/reboot重启

以上是关于Linux引导过程与服务控制的主要内容,如果未能解决你的问题,请参考以下文章

Linux的引导过程与服务控制

引导过程与服务控制

Linux引导过程与服务控制(完)

linux引导过程与服务控制!

Linux引导过程与服务控制

Linux——引导过程与服务控制