Linux之内核管理及故障排错
一、Centos6启动流程:
- 加电自检PSOT
- 引导加载器BootLoader
- MBR(GRUB第一阶段)||(GRUB第1.5阶段)(GRUB第2阶段)
- 加载内核(vmlinuz、initramfs)
- mount /,启动第一个程序/etc/inittab
- etc/rc.d/rc.sysinit---->>/etc/rcX.d/K*/S*
- /etc/rc.local
- mingetty login,windows
1、POST
Power-On-Self-Test:加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统等硬件情况的检测。
BIOS:Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、开机加电自检程序和系统启动自举程序等。
2、BootLoader
引导加载器,Windows使用的bootLoader是ntloader,只可以引导Windows系统;Linux使用的bootloader早期有LILO(LInux LOader),现在6系列用的GRUB0.97版,7系列使用的是GRUB2。
3、GRUB
grub总共分为三个阶段:
第1阶段:存放在MBR前446个字节
第1.5阶段:1.5阶段存放在1-27扇区;由于grub1阶段需要去读取grub2阶段的程序和配置文件,但是grub2阶段的程序存放在磁盘的/boot分区中,想要读取分区中的文件就必须要有驱动文件系统的驱动模块,1.5阶段就是来做这件事的。
第2阶段:存放在磁盘的/boot分区上(/boot/grub/),启动时选择内核版本界面,还有配置文件都是由第2阶段负责。
4、加载内核
在grub2阶段只能识别到boot分区,内核初始化后;
vmlinuz内核文件借助文件驱动来挂载真正的根系统,initramfs识别文件驱动系统
5、挂载根,/etc/inittab
init程序启动系统的第一个进程init,它负责创建系统启动后的所有服务进程
init程序的类型:CentOS5.x:SysV;CentOS6.x:Upstart;CentOS7.x:Systemd
初始化的相关文件:
/etc/inittab:定义系统默认的启动级别 id:3:initdefault:
6、/etc/rc.d/rc.sysinit
系统初始化脚本,包括主机名、欢迎信息、挂载的文件系统、lvm和raid等
7、/etc/rcX.d/K*/S*
根据系统的启动级别来执行相关开机启动和禁止服务
K*:运行次序;数字越小,越先运行;数字越小的服务,通常为依赖到别的服务
S*:运行次序;数字越小,越先运行;数字越小的服务,通常为被依赖到的服务
8、/etc/rc.local
系统启动最后一个进程,在所有启动脚本执行完成后执行此脚本,可以把开机时自动运行的命令放入该脚本来执行。
管理工具:
chkconfig
--list 查看
--level ##:指定级别,默认为2 3 4 5
--add 将脚本加入对应的级别(需要将脚本放到/etc/rc.d/init.d/目录下,并且在脚本开头加上chkconfig: 启动级别 关闭优先级 开启优先级),一般“关闭优先级 + 开启优先级 = 100”
--del 删除对应级别脚本
+servername on/off 开启或关闭服务
service 服务名 { start | stop | restart }
--status-all 查看所有服务的状态
ntsysv:字符界面工具,用来设置开启自启的服务
xinetd
超级守护进程;配合chkconfig来使用
二、Centos7启动流程
- post
- mbr
- grub2
- systemd init
- initrd.target所有单元,包括挂载/etc/fstab
- 从initramfs根文件系统切换到磁盘根目录
- systemd执行/etc/systemd/system目录下的配置
- systemd 执行默认target 配置,配置文件/etc/systemd/system/default.target
- systemd 执行sysinit.target 初始化系统及basic.target 准备操作系统
- systemd 启动multi-user.target 下的本机与服务器服务
- systemd 执行multi-user.target 下的/etc/rc.d/rc.local
- systemd 执行multi-user.target 下的getty.target及登录服务
- systemd 执行graphical 需要的服务
由于Centos7启动流程较为复杂,不再做深究
systemd
系统启动和服务器守护进程管理器,负责在系统启动或运行时,激
活系统资源,服务器进程和其它进程
Unit
表示不同类型的systemd对象;
/usr/lib/systemd/system:每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/
/run/systemd/system:系统执行过程中所产生的服务脚本,比上面目录优先运行
/etc/systemd/system:管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/Sxx类的功能,比上面目录优先运行
其中unit类型中.service(用于定义系统服务)和.target(用于模拟实现运行级别)很重要;
管理工具:
systemctl:
命令:systemctl COMMAND name.service
启动:service name start ==> systemctl start name.service
停止:service name stop ==> systemctl stop name.service
重启:service name restart ==> systemctl restart name.service
状态:service name status ==> systemctl status name.service
chkconfig:
chkconfig命令的对应关系:
设定某服务开机自启:
chkconfig name on ==> systemctl enable name.service
设定某服务开机禁止启动:
chkconfig name off ==> systemctl disable name.service
切换至紧急救援模式:
systemctl rescue
切换至emergency模式:
systemctl emergency
暂时更新自认为常用的,后期碰见再修改。
centos6常见故障:
实验:破解root口令
开机进菜单项按a,输入1/s/S/signal临时进入命令行模式执行passwd命令即可。
实验: /etc/inittab 默认模式改为6,恢复
开机进菜单项按a,输入5临时进入图形模式再修改/etc/inittab文件即可。
实验:删除vmlinuz 文件,恢复之(启动页面出现error错误)
1)cp /mnt/isolinux/vmlinuz /mnt/sysimage/boot/vmlinuz-`uname -r`
2)chroot /mnt/sysimage; mount /dev/sr0 /mnt ; rpm -ivh /Packages-kernel-3.....
实验:grub.conf配置文件删除,恢复之
grub> kernel /vmlinuz-2...... root=/dev/sda
initrd /initramfs-2......
boot
实验:删除grub1 1.5 2阶段恢复
有无备份,有备份直接拷贝446字节主分区表(scp)
无备份,grub-install /dev/sda(boot分区位置)安装或ssh上传相同文件
实验:centos6逻辑卷上删除/etc/fstab 和/boot 分区,恢复
1)激活逻辑卷组 vgchange -ay
2)安装vmlinuz和initramfs文件;
3)安装grub文件和配置grub.conf文件
实验:centos6 rm -rf /sbin/init
scp上传相同文件即可。
实验:centos6 自制linux
1)准备一块新的硬盘,分区(/和boot),格式化
2)把需要的文件拷到新硬盘里
添加boot下的内核和驱动文件以及grub.conf和grub
3)添加/root下各种配置
4)/bin下添加命令脚本
centos7常见故障:
实验:破解grub2口令
启动时任意键暂停启动;按e键进入编辑模式;将光标移动linux16开始的行,改为rw init=/sysroot/bin/sh
;按ctrl-x启动;chroot /sysroot;passwd root;touch /.autorelabel;exit;reboot
实验:grub.cfg配置文件删除,恢复之
grub2-mkconfig > /boot/grub2/grub.cfg
实验:删除grub1 1.5 2阶段恢复
grub2-install /dev/sda(boot分区位置)
实验:centos7 删除/boot,恢复
grub2-install /dev/sda(boot分区位置);grub-mkconfig > /boot/grub2/grub.cfg