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. 服务控制及切换运行级别

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

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

运行级别:
查看运行级别:
runlevel命令
systemct工具
runlevel只能查看切换运行级别与当前运行级别
systemctl时能查看默认的运行级别

临时切换运行级别:
init命令
systemctl工具
init的命令参数是运行级别所对应的数字
systemctI的命令参数是具体的target

4.优化启动过程

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

Systemd
Systemd是Linux操作系统的一种init软件
CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit
CentOS7中运行的第一个init进程 是/lib/systemd/systemd
详细的分类为:

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

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值