Linux之内核管理及故障排错

版权声明:©2018 DuanXin. All Rights Reserved. https://blog.csdn.net/qq_42736877/article/details/82713690

一、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目录下的配置
  1. systemd 执行默认target 配置,配置文件/etc/systemd/system/default.target
  2. systemd 执行sysinit.target 初始化系统及basic.target 准备操作系统
  3. systemd 启动multi-user.target 下的本机与服务器服务
  4. systemd 执行multi-user.target 下的/etc/rc.d/rc.local
  5. systemd 执行multi-user.target 下的getty.target及登录服务
  6. 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

猜你喜欢

转载自blog.csdn.net/qq_42736877/article/details/82713690