zoukankan      html  css  js  c++  java
  • 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目录下的配置
    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

  • 相关阅读:
    addEventListener、onclick和jquery的bind()、click()
    JQuery的click、bind、delegate、off、unbind
    JS的Scope
    JS对象深入剖析
    IP查找所属网段
    C#类的成员初始化顺序
    C#操作XML的完整例子——XmlDocument篇
    【开发实例】C#调用SAPI实现语音合成的两种方法
    C#打包制作安装程序过程全记录
    C# 仿制QQ弹出新闻消息框
  • 原文地址:https://www.cnblogs.com/duanxin1/p/9784177.html
Copyright © 2011-2022 走看看