Linux引导过程

Linux引导过程

Linux引导过程一共分为五个步骤

开机加电自检

对硬件进行自检,找到可引导的硬盘后将控制器给MBR

MBR引导

MBR中存放boot loader启动引导程序,存放了分区表,里面有一个55AA或AA55字段,表示有操作系统,同时生成一个initramfs虚拟文件系统,同时寻找内核并加载内核,调用grub菜单

grub菜单

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

加载内核

检测硬件驱动程序,加载module模块用于存放硬件驱动程序,其中initramfs为了驱动和挂载系统

进程初始化

在initramfs中找到驱动程序的所有硬件,然后作为PID 1从initramfs执行/lib/systemd/systemd,centos6是init进程,centos7是systemd进程

运行级别

Linux系统中有七种

init 0

关机,systemd中是target

init 1

维护系统,单用户模式,systemd中是rescue.target

init 2

没有网络,没有共享存储的命令行,systemd中是multi-user.target

init 3

命令行模式,systemd中是multi-user.target

init 4

用作保留,未使用,systemd中是multi-user.target

init 5

图形界面模式,systemd中是graphcal.target

init 6

重启,systemd中是reboot.target

查看当前运行级别用runlevel,或者systemctl get-default

systemd中的单元类型

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

systemctl的管理命令
/etc/systemd/system 用于存放不同级别的开机自启服务
/run/sysytemd/system 系统执行过程中所产生的服务脚本所在目录
/usr/lib/systemd/system 每个服务最主要的启动脚本设置

systemd
systemctl is-enabled httpd 查看是否开机自启
systemctl enable httpd 设置开机自启
systemctl disable httpd 设置开机不自启
systemctl status httpd 查看当前服务的状态
systemctl reload httpd 不关闭进程重启
systemctl start httpd 开启httpd服务
systemctl stop httpd 关闭httpd服务
systemctl list-unit-files | grep enabled 查看当前启动的进程
systemctl cat httpd 查看服务启动配置文件
systemctl isolate multi-user.target 切换模式为命令行模式

相关实验

centos7忘记密码恢复方法

启动系统,并在GRUB2启动屏显时,按下e键进入编辑模式
Linux引导过程
按Ctrl+x启动到shell,然后重新挂载,重新设置密码
Linux引导过程
然后重启
Linux引导过程
如果发现重启一直进不去,可以进入/etc/selinux中删除config这个文件即可
注意:密码必须八位,不然会提示密码不正确

MBR扇区修复

先模拟扇区故障,将a硬盘第一块扇区移走

[root@localhost ~]# dd if=/dev/sda of=/opt/mbr.bak bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000147779 秒,3.5 MB/秒
[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000145505 秒,3.5 MB/秒
[root@localhost ~]# 

发现一直不能开机
Linux引导过程
设置boot选项从光盘进入,选择修复模式进入
Linux引导过程
选第三个
Linux引导过程
选第二个
Linux引导过程
选1继续
Linux引导过程
进入shell
Linux引导过程
重新创建一个挂载点挂载,然后将备份的第一个扇区转入sda中
Linux引导过程
然后将boot选项设置成硬盘启动
Linux引导过程
然后就可以输入密码了
Linux引导过程

grub修复

模拟grub故障
Linux引导过程
删掉图形化菜单后开机
Linux引导过程

设置boot从光盘启动
Linux引导过程
同上进入修复模式,然后按1继续
Linux引导过程
然后输入
Linux引导过程
然后重新创建grub2中的被删除的文件
Linux引导过程
Linux引导过程
然后将boot设置硬盘启动
Linux引导过程

上一篇:13.LINUX——引导过程与服务控制


下一篇:Kubernetes集群使用CentOS 7.6系统时kubelet日志含有“Reason:KubeletNotReady Message:PLEG is not healthy:”信息