站长之家权重,深圳网站制作必选祥奔科技,做网站怎么每天更新内容,一流的高端企业网站Linux_22_系统初始化流程 系统初始化启动流程Boot Loader初始化文件系统第一个程序 内核模块Grub2配置Grub2启动管理修改root密码 系统初始化
启动流程
1#xff09;读取BIOS#xff0c;根据BIOS加载硬件信息和硬件系统自检#xff1b;
2#xff09;根据BIOS读取第一个可… Linux_22_系统初始化流程 系统初始化启动流程Boot Loader初始化文件系统第一个程序 内核模块Grub2配置Grub2启动管理修改root密码 系统初始化
启动流程
1读取BIOS根据BIOS加载硬件信息和硬件系统自检
2根据BIOS读取第一个可启动设备中MBR的启动引导程序Boot Loader
3根据启动引导程序将指定内核Kernel文件加载至内存中解压和执行
4待内核检测硬件和加载驱动程序完毕系统即可运行。
//内核文件一般为压缩文件使用前需解压缩才能加载到内存中 在驱动程序加载完成后Kernel会主动调用Systemd程序进行default.target流程
1Systemd执行sysinit.target初始化系统
2Systemd执行basic.target设计运行环境
3Systemd启动multi-user.target下的本机/服务器的服务
4Systemd执行multi-user.target的/etc/rc.d/rc.local、getty.target和登录服务
//若是图形界面Systemd还需执行graphical.target所需的服务 BIOS基础输入输出系统提供系统最底层和最直接的硬件设置和控制
1不论BIOS还是UEFI BIOS都统称为BIOS固化在主板上 MBR主引导记录磁盘中的Boot Loader区块
1系统的MBR一般指的是第一个启动设备中的MBR
2只要BIOS可检测到磁盘不论任何格式都可通过硬件的INT 13中断功读取磁盘内的第一个扇区内的MBR
Boot Loader
Boot Loader启动引导程序识别内核文件格式并加载至内核中执行
1Boot Loader程序安装在MBR中磁盘的第一个扇区
//不同的操作系统的Boot Loader不同且内核需对应的Boot Loader才可加载所以每个文件系统都会保留一块启动扇区Boot Loader用于安装Boot Loader 如系统中有多个文件系统时的boot loader
//Windows安装时默认将在MBR和boot sector上都装上boot loader
//Linux可选择是否安装选择在MBR若不选择在MBR上安装boot loader则boot loader仅在boot sector上安装反之亦然 boot loader功能
1提供多重引导启动功能加载指定的内核文件
//实现一台电脑安装多个操作系统
2直接加载内核文件
//默认会加载至boot sector内的启动引导程序如grub2
3将启动管理功能转交至其他boot loader
//Windows的boot loader默认不具有控制权转交功能所以不能实现在启动Windows后的boot loader后再加载Linux的boot loader这也是系统安装多重引导时需先装Windows再装Linux 如Windows、Linux和直接加载内核 1MBR(grub2)Linux Kernelbooting
2MBR(grub2)boot sectore(Windows Loader)Windows Kernelbooting
3MBR(grub2)boot sectore(grub2)Linux Kernelbooting 内核文件存储在/boot/vmlinuz-版本号
//不同版本系统的内核版本和版本号不同所以没有具体路径
如查看/boot目录下的文件 Linux内核是通过动态加载内核模块实现多个功能加载
1Linux发行版都将非必要且可编译的内核功能编译成模块 //如USB、SATA和SCSI等磁盘设备的驱动程序都是以模块方式加载内核模块都存储在/lib/modules
//因为动态加载所以“/”和“/lib”必须放在同一个硬盘分区
如查看/lib/module目录下存放的内核模块
//若含有多个内核则以内核版本号命名的目录存储其内核模块
//虽然设备的驱动程序在/lib/modules目录下但内核并不能挂载该目录也读取不到该目录下的驱动程序且内核不能识别具体设备只能通过加载具体设备的驱动程序将其挂载至根目录
初始化文件系统
初始化文件系统Initial Ram Filesystem内存中模拟文件系统以提供执行程序
1虚拟文件系统通过boot loader加载至内存中并被解压缩压缩文件在内存中模拟成一个根目录使用
2通过虚拟文件系统提供的程序加载启动程序中需要的内核模块模块通常为文件系统设备的驱动程序
3加载完成后再帮助内核重新调用Systemd完成后续的启动流程
//初始化文件系统也可称为虚拟文件系统
如BIOS、boot loade和内核加载流程
//boot loader加载Kernel和initramfsInitial RAM Filesystem在内存中将initramfs解压缩成根目录由此加载所需的驱动程序加载完成后释放initramfs并挂载实际的根目录文件系统
如查看系统的虚拟文件系统initramfs //initramfs就是一个小型的根目录且由Systemd管理initramfs通过initrd.target启动 initramfs存在原因内核模块都存储在/lib/modules/$(uname-r)/kernel目录下则内核想读取这些模块就需先将其在根目录挂载而内核本身不具备磁盘的驱动程序所以不能挂载到根目录进而不能读取到模块 initramfs具体操作
1将/lib/modules目录下内核启动过程所需的模块打包成一个文件initramfs
2在启动过程中就通过INT 13硬件中断的功能将文件解压缩
3initramfs在内存中模拟成根目录且包含磁盘驱动程序和文件系统的模块
4内核通过initramfs就可识别实际的磁盘进而将实际的根目录挂载 dracut命令建立/重置initramfs文件
指令格式1dracut 选项 initramfs文件名
选项含义-f强制编译initramfs 若initramfs文件已存在则覆盖-v显示dracut运行过程
//各个发行版的内核都默认提供initramfs文件 指令格式2dracut 选项 initramfs文件名
选项含义–add-drivers添加指定内核模块到initramfs文件中 指定的内核需在/lib/modules/$uname -r/kernel存在–filesystems添加指定额外的文件系统到initramfs文件中–gzip --bzip2 --xz指定initramfs文件压缩方式 默认为gzip
第一个程序
待内核加载完成、硬件检测和驱动程序加载都完成后内核会自动调用第一个程序“Systemd”所以Systemd的PID是1
1Systemd功能通过default.target设计软件运行的环境
2Systemd的默认启动服务集合/etc/systemd/system/default.target
//如系统的主机名、网络设置、文件系统格式和其他服务的启动等 如查看/etc/systemd/system/default.target
当内核完成/etc/systemd/systemd/default.target的默认启动服务集合后就会链接到/usr/lib/systemd/system目录下加载multi-user.target或graphical.target
//加载graphical.target相当于也加载了multi-user.targetgraphical.target在multi-user.target加载完成后通过加载其他服务而完成 如继续加载multi-user.targetgraphical.target同理流程 1查看multi-user.target配置文件
//multi-user.target需在basic.target加载完毕后再加载很多服务
2查看multi-user.target加载的其他服务
//其中/usr/lib/systemd/multi-user.target.wants代表系统设置加载的服务/etc/systemd/system/multi-user.target.wants代表用户设置加载的服务 Systemd启动流程
1local-fs.target挂载系统/etc/fstab规范的文件系统
2swap.target配置内存交换分区
3sysinit.target检测硬件和加载内核所需模块等
4basic.target加载主要设备的驱动程序和防火墙等
5multi-user.target加载普通系统服务和网络服务
//若系统为图形界面还需执行graphical.target完成界面化服务 sysinit.target提供系统基本的内核功能、文件系统和设备驱动等初始化系统
sysinit.target主要实现功能如下
sysinit.target主要实现功能特殊文件系统设备的挂载 如dev-hugepages.mount和dev-mqueue.mount等挂载服务特殊文件系统的启用 如磁盘阵列RAID、网络驱动器iscsi和文件系统对照服务等系统启动过程中信息传递和画面展示 如plymouthd服务和plymouth命令来传递动画和信息日志文件服务的启动 如systemd-journald服务的启用加载额外的内核模块 如通过/etc/modules-load.d/模块名.conf文件实现加载内核额外功能加载额外的内核参数设置 如读取/etc/sysctl.conf和/etc/sysctl.d/模块名.conf启动系统的随机数生成器 如帮助系统进行密码加密演算功能设置终端字体 如配置终端显示的字体形式启动动态设备管理器 如通过udevd程序动态对应实际设备读写和设备文件名
//不论任何运行级别sysinit.target都是必须工作的 basic.target完善初始化后系统的其他服务操作系统
basic.target主要实现功加载alsa音效驱动程序 如alsa是音效相关的驱动程序使系统有音效效果加载firewalld防火墙 CentOS7后用firewalld替代iptables依然是iptables框架设置有差异加载root指定的模块 如模块存储在/etc/sysconfig/modules/模块名.modules和/etc/rc.modules启动/配置SELinux安全上下文 如root可强制重新设置SELinux的安全上下文加载CPU微指令功能加载Systemd支持的timer功能将启动过程所产生的数据写入到/var/log/dmesg /etc/systemd/system/multi-user.target.wants通过链接文件控制服务开机自启
//系统在启动时会自动启动该目录下的所有文件若让一个服务开机自启只需将在该目录下做个链接文件
如取消cups服务的开机自启再设置其为开机自启
//通过systemctl建立/删除链接文件实现是否开机自启 /etc/systemd/system目录存储系统启动需执行的程序/脚本文件
//实现效果同/etc/rc.d/rc.local文件一致两者不同处在于前者属于Systemd后者属于System V rc-local.service为兼容System V的rc.local
//该服务是否启动成功与/etc/rc.d/rc.local是否具有可执行权限有关若rc.local具有可执行权限systemctl重读配置文件后则可启动该服务若rc.local不具有可执行权限则rc-local.service无法启动 如启动rc-local.service服务
1查看/etc/rc.d/rc.local权限并启动rc-local.service服务
2使/etc/rc.d/rc.local具有可执行权限并启动rc-local.service服务
/etc/modules-load.d/模块名.conf存储内核需加载的模块
1内容格式一行即代表一个需加载的内核模块
2sysinit.target加载模块时默认调用该目录下的文件 /etc/modprobe.d/模块名.conf存储内核模块的配置参数
1内核模块的参数配置文件一般与该内核模块同名 /etc/sysconfig目录存储系统服务的脚本文件
//虽然Systemd已拥有其他的配置文件处理方式但为了兼容System V系统启动时还是会读取/etc/sysconfig目录下的文件 如/etc/sysconfig目录下常用的脚本文件
1authconfig规范用户的身份认证功能、/etc/passwd、/etc/shadow使用权限和/etc/shadwon的密码加密算法Centos7默认使用SHA-512加密算法
2cpupower规范Linux内核操作CPU的原则和启动cpupower.service
//cpupower.service可让系统以CPU最大性能的方式来运行
3firewalld与防火墙相关的配置
//与防火墙相关的还有iptables-config、ip6tables-config和ebtables-config
4network-scripts网卡配置参数相关
内核模块
内核相关配置文件/boot/vmlinuz-内核版本号存储内核文件/boot/initramfs-内核版本号存储内核运行时所需的RAM Disk/usr/src/kernels存储内核源代码默认不安装/proc/version存储内核加载至内存后内核版本相关信息/proc/sys/kernel存储内核加载至内存后内核功能相关文件/lib/modules/内核版本号/kernel存储内核模块
如查看/lib/modules/$(uname-r)/kernel目录
7/lib/modules/内核版本号/modules.dep记录内核模块依赖性
//内核模块的启动/运行类似服务一样具有依赖性 depmod命令分析当前内核模块依赖性并写入默认文件中
//默认文件/lib/modules/内核版本号/modules.dep
指令格式depmod 选项
//不加选项时默认分析当前内核模块依赖性并重新写入默认文件中
选项含义-a检查所有模块依赖性并写入默认文件中-A检查是否有模块比默认文件中的模块新 若存在则更新默认文件反之不更新-e显示当前已加载却不可执行的模块-n将分析结果输出到终端不写入默认文件 lsmod命令查看当前内核加载模块数量
指令格式lsmod 如查看当前内核加载了多少模块
内容格式模块名称Module 模块大小Size 模块是否被引用Used by modinfo命令显示指定内核模块的信息
//modinfo不仅可查看内核模块还可查看具体模块文件
指令格式modinfo 选项 模块名
选项含义-n仅显示指定模块的绝对路径-d仅显示指定模块的说明-p仅显示指定模块的参数说明-a仅显示指定模块的开发人员
如查看ip_tables模块的信息 rmmod命令从内核中删除指定模块
指令格式rmmod 选项 模块名
选项含义-f强制删除-w等待模块能被删除时再删除该模块 insmod命令添加指定模块到内核中
//insomd可添加模块到内核中但不能解决模块依赖性问题
指令格式insmod 选项 内核模块的绝对路径
选项含义-v显示执行过程-p测试模块是否能添加Kernel中-f强制添加 不检查当前Kernel版本和模块编译时的Kernel版本是否一致 modprobe命令根据modules.dep文件添加/删除内核中的模块
//modprobe可添加一个/一组相依的模块modprobe根据modules.dep文件中的依赖关系决定添加哪些模块且不需指定模块的绝对路径因为modules.dep已记录该模块的绝对路径若添加过程中发生错误modprobe会删除整组模块
指令格式modprobe 选项 模块名
选项含义-c列出当前系统中所有的模块-f强制添加模块-r删除指定模块
Grub2
Grub2Centos7使用的一种boot loader grub2的优点如下
1识别和支持较多的文件系统且grub2可直接在文件系统中查找内核文件
2系统启动时可自行编译和修改启动设置选项类似bash命令行模式
3动态查找配置文件
//只需修改/boot/grub2/grub.cfg的设置参数后下次重启自动生效 grub2-install命令将grub2安装到指定设备下
指令格式grub2-install 选项 安装设备
选项含义–force强制安装–recheck若安装设备上已存在则删除后再安装–skip-fs-probe忽略该设备上的文件系统影响–boot-directory目录路径安装到指定设备的目录上
//grub2-install默认将grub2所有的文件都安装到/boot/grub2目录下
//grub2-install仅能安装grub2主程序和相关配置文件到/boot/gurb2目录下
//若将grub2安装到磁盘分区下时需添加许多选项才能安装且不能用grub2-install将主程序写入到启动扇区导致无法启动
配置Grub2
Linux将grub2分为两个阶段stage进行保存和运行
//由于MBR是硬盘的第一个扇区的一个区块容量仅446B故不能存储下类似grub2这种复杂功能的grub2GPT也不能 1Stage1运行grub2主程序主程序被安装在启动区MBR或boot sector并不安装其相关的配置文件
2Stage2主程序加载配置文件通过grub2加载所有配置文件和相关的环境参数文件文件系统定义和主要配置文件grub.cfg /boot/grub2目录存储grub2相关配置文件
如查看/boot/grub2 grub2的磁盘命名格式
// grub2通过对磁盘命名识别不同磁盘和磁盘分区
1磁盘名以小括号括起来
2磁盘以“hdN”表示N代表该磁盘的被查找到的顺序
//第一个查找的磁盘为0第二个为1以此类推
//由于BIOS可动态调整磁盘的启动顺序则磁盘被查找的顺序不固定所以N是可能会变动的
3每个磁盘的第一个分区为1以此类推 如系统中含有三块磁盘其在grub2的中命名如下
磁盘被查找到的顺序在grub2中的命名第一块MBRhd0、hd0msdos1、hd0msdos2……第二块GPThd1、hd1gpt1、hd1gpt2……第三块hd2、hd21、hd22……
//第一块磁盘的第一个逻辑分区的启动扇区命名应为hd0msdos5
//在命名格式中msdos和gpt可省略 /boot/grub2/grub.cfg文件grub2的主要配置文件
//由于该文件内容太过复杂数据量过多所以不建议修改该文件而是通过grub2-mkconfig命令产生新的grub.cfg文件
如查看/boot/grub2/grub.cfg内容
//grub.cfg内容可分为两部分第一部分为其他脚本文件的执行和基础运行环境的设计第二部分menuentry为设计针对具体Linux内核文件运行的环境
//配置文件中有几个menuentry配置启动时就有几个选项 /boot/grub2/grub.cfg中特殊设置
1set root指定在Linux文件系统中根目录在那个磁盘上
2linux16 /vmlinuz-内核版本号指定Linux内核文件和内核执行时的参数设置
//由于系统在启动过程中内核文件需挂载根目录并从根目录中读取配置文件所以需搭配“set root”在配置中内核文件后一定要指定根目录所在的磁盘
3initrd16 /initramfs-内核版本号指定虚拟文件系统
//与linux 16同理需搭配“set root”在配置中指定具体设备才能读取到正确的虚拟文件系统 /etc/default/grub文件提供用户修改grub2默认环境配置文件
如查看/etc/default/grub内容
设置项含义GRUB_TIMEOUT指定默认倒数读秒的秒数 若取消等待则设置为0直接为默认项 若强制用户选择则设置为-1GRUB_TIMEOUT_STYLE指定默认是否显示启动选项 menu显示默认项 countdown取消显示但显示等待秒数 hidden取消所有显示包括秒数GRUB_TERMINAL_OUTPUT指定默认信息输出终端 可设置为console默认项、serial、gfxterm和vag_textGRUB_DEFAULT指定默认启动选项 指定哪一个menuentry作为默认启动项 默认第一个启动选项为默认启动项GRUB_CMDLINE_LINUX指定内核运行的额外参数 实现类似linux16后的内核参数设置
//可通过menuentry的saved、数字、title名和ID名指定默认启动项
如当系统含有3个menuentry时指定默认启动项 1查看3menuentry的title名和ID名
2指定编号是1的menuentry为默认启动项
3指定ID名是“3rd-win-system”为默认启动项
4指定saved为默认启动项 仅修改/etc/default/grub并不能更改grub2的配置配置/etc/default/grub文件后还需通过grub2-mkconfig命令使/boot/grub2/grub.cfg文件建立/更新
如使启动选项时等待10秒默认选用第一个选项且选项是显示的内核外带“elevatordeadline”参数 1配置/etc/default/grub文件
2更新grub.cfg文件
3检验是否配置成功 grub2-mkconfig命令通过多个脚本文件辅助建立/更新grub.cfg文件
指令格式grub2-mkconfig -o /boot/grub2/grub.cfg
//grub2-mkconfig本质是分析/etc/grub.d目录下的文件和/etc/default/grub文件再通过执行这些文件来建立/更新grub.cfg文件 /etc/grub.d目录存储辅助建立/更新grub.cfg的脚本文件
如查看/etc/grub.d
文件名作用00_header初始化grub2配置 分析需加载的模块和屏幕终端的格式等 通过调用/etc/default/grub来建立/更新grub.cfg文件01_users管理gurb2在线编辑10_linux分析/boot目录的所有文件找到正确的Linux内核、读取该内核需要的文件系统模块和参数等 并将以上这些设置到grub.cfg文件中30_os-prober分析并找到其他分区含有的操作系统 并将这些操作系统写入到grub.cfg中 以作为启动选项处理40_customShell文件 root通过配置该文件实现其他选项/需求
//若有其他需配置的选项都应该通过配置40_custom文件实现通过配置/etc/grub.d/40_custom可实现功能如下
//在配置/etc/grub.d/40_custom后都需通过grub2-mkconfig命令使其生效
1自定义内核若直接启动普通内核可通过grub2-mkconfig获取10_linux脚本文件而制作但要带自定义的内核就需使用grub2-mkconfig获取40_custom脚本文件而制作 制作步骤 1从grub.cfg当中复制指定内核选项menuentry到40_custom 2在40_custom中配置带有自定义的内核
2转交控制权通过chainloader实现boot loader控制权的转交
chainloader启动引导程序的链接将控制权转交给其他boot loader
//所以grub2就不需要识别每个内核的文件名只将控制权转交给下一个boot loader或MBR中的boot loader即可
也不需要识别下一个boot loader的文件系统
制作步骤 1加载chainloader模块
2指定转交至的文件系统
3指定转交至的硬盘分区
4设置系统去启动扇区读取boot loader软件
如设置两个启动选项取得Windows 7启动选项和回到MBR默认环境的选项 1查看当前MBR设备分区信息
2配置/etc/grub.d/40_custom文件
启动管理
配置grub2完成各个配置文件后其启动效果如下 1系统启动时当进行到该界面时就是已经由grub2管理
//设置默认显示选项所以可在5个选项中选择其中一个内核运行
//在该界面按“e”进入对应选项内核的grub2在线编辑按“c”进入grub提供的shell模式
2按“e”进入grub2在线编辑后显示该界面上方grub.cfg文件的内容可通过方向键查看/编辑下方编辑说明/帮助 //取消当前操作并回到前一个画面ESC或Ctrl和C直接启动Ctrl和X
如在启动过程以图形过程显示且显示中文 1编辑/etc/default/grub文件并grub2-mkconfig 2再在grub2配置文件的中文启动时可显示如图
grub2用户grub2有同Linux的用户管理架构其用户身份分为两种
//grub2默认允许任何人修改和选择的且没有设置任何用户身份
//通过grub2用户管理可实现内核使用和修改的权限配置
1superusers管理员用户在grub2下具有修改和选择所有内核的权限
//设置superusers后所有的命令修改都会成受限制的
2users普通用户在grub2下仅能选择指定选项不能修改任何内核
通过配置/etc/grub.d/40_custom文件实现grub2用户的管理
//配置/etc/grub2/grub.cfg也可实现grub2用户的管理不建议
如当前系统配置三个操作系统分别安装在(hd01)、(hd02)和(hd03)其中 hd01是所有人都可使用的系统 hd02是仅系统管理员可使用的系统 hd03是仅系统管理员和指定用户可使用的系统
1配置/etc/grub.d/40_custom文件并grub2-mkconfig更新grub.cfg文件 //password也可替换为password_pbkdf2密文密码
//若内核配置中加入“–unrestricted”参数代表该内核启动时不需要grub2的用户验证但进入内核在线编辑时需grub2的用户验证
2启动时多出三个选项
grub2-mkpasswd-pbkdf2命令根据输入的密码生成密文密码
指令格式grub2-mkpasswd-pbkdf2
如将密码“123456789”加密成密文密码
grub2在线编辑能够实现修改root密码和修改系统等对系统影响巨大的功能所以需要通过设置grub2进入在线编辑验证登陆提高系统安全性
//优先级grub2管理员用户验证 grub2验证登录若/etc/grub.d/40_custom和/etc/grub.d/01_users同时存在验证登录则以/etc/grub.d/40_custom的管理员用户验证登录为准 通过配置/etc/grub.d/01_users文件实现grub2在线编译的验证登录
//也可配置/etc/grub.d/00_header实现但该文件较为重要不建议配置
//由于/etc/grub.d目录下的文件都是被其他脚本所执行的文件所以不能直接写入用户名和密码而是通过cat和echo等命令将用户名和密码写入到文件中
如配置grub2在线编辑验证登录用户名为“mwl3”密码为“123456789” 1配置/etc/grub.d/01_users文件 2重启再次进入grub2在线编辑模式时
修改root密码
通过grub2在线编辑功能实现root密码的修改步骤
1在grub2选项界面时按“e”进入在线编辑
//若grub2设置密码输入密码进入
2在内核参数设置中添加“rd.break”内核参数
3按下“Ctrl和X”等待系统进入rd.break系统状态紧急救援模式
4输入以下指令
挂载/sysroot目录mount -o remountrw /sysroot
切换到实际系统的根目录chroot /sysroot
修改root密码echo “root密码” | passwd --stdin root
恢复SELinux上下文touch /.autorelabel
退出系统实际目录exit
重启reboot //由于autorelabel使系统重新写入每个文件的SELinux类型所以启动时间较长 chroot命令切换系统根目录为指定目录
指令格式chroot 挂载目录
修改root密码的步骤原理
1rd.break内核参数可使系统进入RAM Disk操作系统状态拥有root权限此时所有的目录都属于RAM Disk原系统根目录挂载在/sysroot目录下
2需要将/sysroot目录挂载并具有可读写权限用chroot命令切换到/sysroot目录下并修改root密码
//切换到原系统根目录下就可处理原系统的文件系统和用户管理等
3由于在rd.break系统状态下系统不具有SELinux功能而修改root密码导致/etc/shadow文件的SELinux安全上下文被取消就需通过/.autorelabe使系统在启动时使用默认的SELinux类型重新配置每个文件的SELinux安全上下文
//若不恢复该文件的SELinux安全上下文会导致启动无法正常启动 另一种恢复SELinux安全上下文步骤
1在rd.break系统状态下修改root密码后修改SELinux的运行模式为“permissive
2重启以root身份登录系统并输入“restorecon -Rv /etc”恢复/etc目录下所有文件的SELinux安全上下文
3再将SELinux的运行模式改为Enforcing 另一种修改root密码的步骤
1在grub2选项界面时按“e”进入在线编辑
2在内核参数设置中添加“init/bin/bash”内核参数
//系统提供一个bash同时不需输入root密码也具有root权限
由于是默认bash环境其PATH仅有/bin也没有Syetemd或init所以在执行各种命令时需输入绝对路径
3输入以下指令
挂载/目录mount -o remountrw /
修改root密码echo “root密码” | passwd --stdin root
恢复SELinux上下文touch /.autorelabel
重启硬件强制重启断电
//Linux不能随意关机容易导致文件系统错乱或某些服务无法启动