系统启动流程
BIOS---->MBR:Boot Code---->执行引导程序GRUB(操作系统引导程序)---->加载内核---->执行init--->runlevel
其实不同的系统启动时,启动程序是大同小异的
1、BIOS
Basic input output system我们称之为基本输入输出系统,一般保存在主板上的BIOS芯片中。
计算机启动的时候第一个运行的就是BIOS,BIOS负责检查硬件并查找可启动设备
可启动设备在BIOS设置中进行定义,如USB、CDROM、HD
可启动设备的识别:第一个512字节的后2个字节是不是55AA来判断
2、MBR(512字节)
BIOS找到可启动设备后执行其引导代码
引导代码为MBR的前446字节,功能就是用来引导更复杂的系统引导程序(因446字节比较小,功能有限),linux中是引导GRUB
(MBR的前446字节,因446字节比较小,功能有限,它仅仅只作为一个跳转,跳转到真正的引导程序)
(扩展:若底层不是BIOS而是EFI,如苹果或高端的服务器,则分区格式或引导格式就会是GPT而不是MBR)
3、GRUB
GRUB是现在linux使用的主流引导程序,它可以用来引导现在几乎所有的操作系统,winPE盘就是用GRUB做引导的
GRUB的相关文件保存在/boot/grub/中
GRUB配置文件为/boot/grub/grub.conf
4、KERNEL
MBR的引导代码负责找到并加载内核
linux内核保存在/boot/vmlinuz-2.6.32-504.el6.x86_64
一般还会加载内核模块打包文件:/boot/initramfs-2.6.32-504.el6.x86_64.img
linux为保持kernel的精简将一些不常用的驱动,功能编译成为模块,在需要的时候动态加载,而这些模块被打包保存为一个initramfs文件
命令dmesg或cat /var/log/dmesg可以查看本次启动时内核的输出信息
5、INIT
INIT是linux系统中运行的第一个进程
调用/etc/rc.d/rc.sysinit负责对系统进行初始化,挂载文件系统,并且根据运行级别启动相应服务
linux运行级别:
0关机、1单用户模式、2不带网络的多用户模式、3多用户模式、4未使用、5 X11图形模式、6重新启动
可以通过/etc/inittab配置文件修改默认的运行级别
每个级别对应的启动服务保存在、etc/rc.d/rc[0123456].d中
命令runlevel可显示当前及上一个运行级别
命令init可用以改变当前的运行级别
修改密码1、普通用户可以通过root用户更改密码
#passwd 用户名
2、root用户找回密码
单用户模式修改root密码
为内核传递参数“1”或“single“可系统进入单用户模式
单用户模式下不启动任何服务
单用户模式直接以root登陆,并且不需要密码
可以使用passwd修改密码
具体步骤:
开机启动时按上键或下键让界面停止-->按e键进入编辑界面-->选中kernel行按e键进入-->在末尾加入数字”1“后回车-->按b启动即进入单用户启动模式-->键入passwd命令修改密码-->按exit后即退出单用户模式并正常启动
3、GRUB加密
为防止任何人接触物理主机后恶意修改root密码,便需要grub加密
通过在grub.conf中的启动配置中加入如下参数即可对grub进行加密
加密后的密码可以通过grub-md5-crypt生成
具体步骤:
第一步:通过grub-md5-crypt生成加密密码
第二步:在/boot/grub/grub.conf的配置文件行首加入加密后的密码
第三步:init 6重启系统,再进入单用户模式时按e已经不能进入编辑模式,只能按p后输入grub密码才能进入单用户模式,从而防止了恶性人为修改root密码
4、若不小心忘了grub加密密码,那事情就大了
解决方法:
只能先找到物理主机,拆下硬盘--->找一个好的主机将硬盘插上--->开机找到grub.conf文件,删除grub加密密码信息即可。
5、防止人为恶意拆硬盘盗数据,可以在上述的加密基础上对重要文件的分区及目录再做加密