centos系统的开机启动过程
1、POST加电自检(Power On Self Test)
按下开机键以后,所有的硬件设备将会通电,进行自我检查,如果某个硬件出现问题,会有蜂鸣声的报警声音,每一个硬件设备检查没有问题后,会从bios芯片当中读取bios程序加载到内存,然后根据程序的设定去找第一个用于引导操作系统启动的硬件设备,找到该设备后,会将MBR扇区中的内容加载进内存,然后后续有MBR接手操作系统的引导过程
2、MBR引导
MBR中的前446字节称为boot loader(引导加载器),可以为用户提供一个选择菜单,用于选择启动哪一个操作系统,当用户选择后,MBR自身的工作就完成了,MBR会加载该操作系统的引导程序, 例如centos系统用的引导程序就是grub
3、GRUB菜单引导(核心目的为找到操作系统的内核程序,并将其加载进内存中)
当grub程序被加载进内存后,会根据其自身的配置文件(grub.conf)来寻找内核,该文件中记录了操作系统内核程序的文件(vmlinuz-版本号)及所在路径,同时也记录了一个伪根目录的文件名称(initrd.img)
4、加载内核及根目录
当grub找到了内核文件,就会把内核程序加载进内存,此时操作系统的内核就已经启动了,启动后做的第一个工作,就是加载根目录。但是在加载根目录之前,需要先启动支持根目录挂载的驱动模块,但是这些驱动模块是保存在/lib/modules目录中,这个目录在根目录下,所以根目录如果启动不了就找不到这些驱动模块,于是陷入了矛盾之中。所以此时内核会先使用initrd.img这个伪根目录,来加载驱动模块,然后加载完成后,释放伪根目录,再挂载真正的根目录
5、init进程启动
当内核正常运行,根目录也挂载完成后,操作系统中的第一个程序就会启动了,该程序叫做init,然后系统中的其他应用程序也会随之启动,到此操作系统启动完成。
程序和进程的关系
程序是静止的,保存在硬盘中的,没有运行的
进程是运行中的程序,运行在内存中
程序运行后,就变成了进程
开机启动过程中需要用的重要配置文件
/etc/inittab //用于控制开机启动时运行级别
/etc/rc.local //用于开机启动时可以自动执行指定的命令
/etc/init/control-alt-delete.conf //用于控制ctrl+alt+delete快捷键(重启),一般会将该文件删除来禁用快捷重启功能
*centos6系统中的运行级别:
0:关机
1:单用户模式(指以root身份不需要密码直接登录系统,无法以远程连接的方式进入单用户模式)
2:文字界面的多用户模式,但是这个模式中不能联网
3:文字界面的多用户模式,可以联网
4:保留使用
5:图形界面的多用户模式
6:重启
*centos7中的运行级别:
0:关机
1:单用户模式(指以root身份不需要密码直接登录系统,无法以远程连接的方式进入单用户模式)
3:文字界面的多用户模式,可以联网
5:图形界面的多用户模式
6:重启
centos7系统中设置开机时的默认运行级别的方法
systemctl set-default {运行级别名称}
multi-user.target //表示运行级别3,文字界面
graphical.target //表示运行级别5,图形界面
查看centos7中,默认运行级别的方法
查看当前运行级别,systemctl get-default
临时修改运行级别:使用init命令,加上运行级别编号即可
例如:切换到文字界面
init 3
切换到图形界面
init 5
企业中的关机方式
sync;sync;sync;init 0
修复MBR扇区故障
首先需要对MBR扇区的数据进行备份,只需要备份/dev/sda中的前512字节即可
使用dd命令可以按字节复制
格式:dd if={源文件} of={目标文件} bs={指定块大小} count={指定复制几块}
例:
dd if=/dev/sda of=/kgc/mbr.bak bs=512 count=1
然后同样使用dd命令将sda的前512字节模拟损坏,可以用另一个文件的512字节来覆盖sda的前512字节即可
然后重启进入光盘,通过光盘进入急救模式,在急救模式中挂载备份文件所在磁盘,然后同样使用dd命令,将备份文件中的内容复制回sda,重启即可
修复grub引导故障
故障出现原因:
1、grub.cfg配置文件丢失,导致grub程序不能正常找到内核
2、MBR扇区中的前446字节被毁坏
针对grub.cfg配置文件丢失的修复思路
首先需要提前备份好grub.cfg文件
当grub.cfg丢失而导致系统不能启动时,需要开机时进入bios调整启动顺序,将光驱调整为第一个启动,从而通过光盘进入急救模式
在急救模式中,原来操作系统的根目录是保存在/mnt/sysimage这个目录中,这个目录下有原来操作系统的boot目录
将备份好的grub.cfg文件复制回这个/mnt/sysimage/boot/grub2目录中即可完成修复
关机重启时,再次进入bios,将光驱的启动顺序还原,正常启动后,即可进入系统。
重新安装grub,进入急救模式,换跟,chroot /mnt/sysimage/ , 重新安装,grub2-install /dev/sda,退跟重启
修复root密码丢失问题:
修复思路:系统开机时,直接进入单用户模式,是用passwd root重写设定root密码即可
针对centos7系统的修复方法:
开机时在系统选择界面按任意键中断引导,按字母e进入编辑模式
在编辑模式当中,找到linux16开头的行,在该行的行尾输入 空格rd.break
然后按ctrl+x快捷键,进行继续引导,此时系统会直接进入单用户模式
在单用户模式中首先使用,mount -o remount,rw /sysroot重新以读写权限挂载/sysroot目录,因为该目录中,挂载了操
作系统原本的根目录
然后使用chroot命令切换根目录到/sysroot
然后使用passwd root命令修改root密码
最后touch /.autorelabel建立安全标志文件
exit,reboot重启即可修改完成
命令:
开机按e进入编辑模式
在linux16开头的行尾加上空格rd.break,ctrl+x启动
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
touch /.autorelabel
exit
reboot
cent6的root重置, e2e 空格1回车再按b, passwd 重置密码, reboot 重启完成
服务控制
服务:也是软件程序的一种,但是他们往往工作在后台,用户使用时并不会感觉到他们的
存在,只有在使用相关的应用程序,需要服务的支持,他们才会提供相应的功能,所以
他们有着独特的启停控制方法
centos7中的常用服务控制命令:systemctl
1、启动服务
systemctl start {服务名称}
2、停止服务
systemctl stop {服务名称}
3、重启服务
systemctl restart {服务名称}
4、平滑重启服务
systemctl reload {服务名称}
5、查询服务运行状态
systemctl status {服务名称}
以上几种控制方式,均属于临时修改服务的运行状态
以下列出在开机的时候是否自动启停服务的方法
6、设置服务的开机自动启动
systemctl enable {服务名称}
7、设置服务开机不自动启动
systemctl disable {服务名称}
针对centos6的服务控制命令(centos7也可以用)
1、用于临时调整服务的运行状态:service
用法:
service {服务名称} {控制类型}
如:
service network restart
2、用于调整开机时,服务自行的启动状态的控制命令(只能一次控制一个服务):chkconfig
用法:
列出服务的开机启动状态:
chkconfig --list {服务名称}
修改服务的开机启动状态
chkconfig {服务名称} on/off
修改服务的特定的运行级别的启动状态
chkconfig --level {运行级别} {服务名称} on/off
注意:不光是开机时进入对应的运行级别,才会走该命令的配置,当开机后,从一个运行级别切换到另一个运行级别时,也一样会遵循这个命令的相关配置
3、用于调整开机时,服务自行的启动状态的控制命令(可以批量操作多个服务的启停):ntsysv
用法
ntsysv 【--level {运行级别}】
进入图形界面后,方向键移动光标,通过空格键可以修改服务的开机运行状态。
补充:列出当前系统中的所有服务
systemctl list-unit-files