开机的时候,先是硬件自检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 服务:
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
init 0 正常关机的状态,其中一个命令 shutdown
init 1 修复系统,root系统,相当于windos的安全模式,单用户模式
init 2 不太常用,没有共享存储,无网络 ,多用户模式
init 3 默认字符界面,多用户模式,不止root 用户可以使用,如果是最小安装,没有图形界面 默认init 3
init 4 保留,不使用
init 5 图形化界面,实现图形界面的多用户模式
init 6 重启 或者reboot 或者 shutdown -r
运行级别:
命令 | 作用 |
---|---|
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 |