ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

13.LINUX——引导过程与服务控制

2021-05-12 20:02:05  阅读:144  来源: 互联网

标签:引导 13 name service 启动 systemd init systemctl LINUX


目录

1.linux 操作系统引导过程


开机的时候,先是硬件自检BIOS 基本的输入输出系统 主板上的ROM芯片
配置BIOS 使用的是汇编语言 可以配置密码,时间等 配置BIOS信息的内容放在 CMOS 上面,是以RAM存储,对硬件加电自检 寻找可以引导系统启动的设备或者程序(光盘,硬盘,U盘,网络)
UEDI 使用的是C语言。比较容易实现,未来可能会接替BIOS

MBR引导 主引导记录,在磁盘的第一扇区,512字节的MBR
启动引导程序 boot loader 456字节
存放MBR分区表 64字节 一个分区16字节,有4个分区
16进制的字段, 2个字节 :根据系统型号决定,例如55AA AA55 ,意思可引导
核心目标: boot loader 寻找内核,加载内核,寻找的是系统里面的操作系统自己本身的 loader ,去进行识别,会有选项 提供用户,这就是GRUB菜单

GRUB菜单 centos 6 grub / centos 7 grub2
将会显示提供用于选择,并根据-选项加载linux内核文件

加载内核 boot loader 移交控制权,进行解压,在系统中运行
本身也会进行自检,检查驱动程序是否安装
加载上module 模块,系统引导器程序会从本地硬盘中加载内核以及内存文件系统 initramfs,其中包含启动时所有必要的硬件内核模块、初始化脚本等
为了挂载,加载驱动,依赖一个虚拟文件系统,帮助识别挂载,
内核无法自己主动识别驱动,boorleader 找到内核,找到initarnfs文件系统(伪根)
之后找到真正的根 文件系统

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

system 启动之后,有一个支持的软件环境,systemd 服务
systemd 服务:

  1. sysint 对系统进行初始化,准备一些文件系统,用户名,网络的基本设置,文件系统的格式
    2.multiuser 然后进入命令行模式,系统自启动的服务
    3.getty 为用户准备一个登录环境,安装图形化界面的步骤
    4.graphcal 实现图像界面化的登录.

2.排除启动故障错误

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

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修复
1、从光盘启动,进入救援模式,进入修复shell

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

3. 服务控制及切换运行级别


init 0 正常关机的状态,其中一个命令 shutdown
init 1 修复系统,root系统,相当于windos的安全模式,单用户模式
init 2 不太常用,没有共享存储,无网络 ,多用户模式
init 3 默认字符界面,多用户模式,不止root 用户可以使用,如果是最小安装,没有图形界面 默认init 3
init 4 保留,不使用
init 5 图形化界面,实现图形界面的多用户模式
init 6 重启 或者reboot 或者 shutdown -r

运行级别:

4.优化启动过程


5.相关命令

命令作用
systemctl --version查看systemd的版本
systemctl start name.service开启服务
systemctl stop name.service停止服务
systemctl restart name.service重启服务,先停止后启动
systemctl reload name.service重新加载服务的配置文件,服务不会中断
systemctl status name.service查看服务状态
systemctl enable name.service设置开机自启
systemctl disable name.service设置服务开机不自启
systemctl is-enable name.service查看服务是否开机启动
systemctl cat kube-apiserver .service查看服务的system服务配置
systemctl unmask name.service取消屏蔽服务
systemctl get-default查看当前系统默认启动的target
systemctl set-default multi-user.target设置启动的target为 multi-user.target
systemd-analyze查看系统启动耗时,等同于systemd-analyze time

标签:引导,13,name,service,启动,systemd,init,systemctl,LINUX
来源: https://blog.csdn.net/weixin_55299423/article/details/116718412

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有