美文网首页
启动和内核管理

启动和内核管理

作者: 一桥长书 | 来源:发表于2017-09-03 17:09 被阅读0次

    1 CentOS 6 启动流程

    1. 加载BIOS 的硬件信息,获取第一个启动设备
    2. 读取第一个启动设备MBR 的引导加载程序(grub) 的启动信息
    3. 加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
    4. 核心执行init 程序,并获取默认的运行信息
    5.init 程序执行/etc/rc.d/rc.sysinit 文件
    6. 启动核心的外挂模块
    7.init 执行运行的各个批处理文件(scripts)
    8.init 执行/etc/rc.d/rc.local
    9. 执行/bin/login 程序,等待用户登录
    10. 登录之后开始以Shell 控制主机
    
    MBR:
      446: bootloader, 64:  分区表, 2: 55AA
    GRUB:
      primary boot loader : 1st stage ,1.5 stage
      secondary boot loader  :2nd stage ,分区文件
    kernel: :
      自身初始化:
      探测可识别到的所有硬件设备
      加载硬件驱动程序(借助于ramdisk 加载驱动)
      以只读方式挂载根文件系统
      运行用户空间的第一个应用程序:/sbin/init
    
    ramdisk文件的制作
      (1) mkinitrd 命令
      为当前正在使用的内核重新制作ramdisk 文件
      mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
      (2) dracut 命令
      为当前正在使用的内核重新制作ramdisk 文件
      dracut /boot/initramfs-$(uname -r).img $(uname -r)
    
    /etc/rc.d/rc.sysinit:  系统初始化脚本
      (1)  设置主机名
      (2)  设置欢迎信息
      (3)  激活udev 和selinux
      (4)  挂载/etc/fstab 文件中定义的文件系统
      (5)  检测根文件系统,并以读写方式重新挂载根文件系统
      (6)  设置系统时钟
      (7)  激活swap 设备
      (8)  根据/etc/sysctl.conf 文件设置内核参数
      (9)  激活lvm 及software raid 设备
      (10)  加载额外设备的驱动程序
      (11) 清理操作
    
    运行 /etc/rc#.d
    K* 表示 级别切换要关闭的服务,有顺序
    S* 表示 级别切换要开启的服务,有顺序
    说明:rc N -->  意味着读取/etc/rc.d/rcN.d/
      K*: K##* :## 运行次序;数字越小,越先运行;数字
    越小的服务,通常为依赖到别的服务
      S*: S##* :## 运行次序;数字越小,越先运行;数字
    越小的服务,通常为被依赖到的服务
    
    CentOS 6 启动流程:
      POST --> Boot Sequence(BIOS) --> Boot Loader -->Kernel(ramdisk) --> rootfs --> switchroot --> /sbin/init -->(/etc/inittab, /etc/init/*.conf) --> 别 设定默认运行级别 -->  系统初始化脚本 rc.sysinit --> 务 关闭或启动对应级别的服务 -->  启动终端
        grub: GRand Unified Bootloader
        grub 0.97: grub legacy
        grub 2.x: grub2
        grub legacy:
          stage1: mbr
          stage1_5: mbr 之后的扇区,让stage1 中的bootloader能识别stage2 所在的分区上的文件系统
          stage2 :磁盘分区(/boot/grub/)
    
    grub安装
    (1) grub-install
      安装grub stage1 和stage1_5 到/dev/DISK 磁盘上,并
      复制GRUB到 相关文件到 DIR/boot 目录下
      grub-install --root-directory=DIR /dev/DISK
    (2) grub
      grub> root (hd#,#)
      grub> setup (hd#)
    
    grub legacy 的配置文件
      default=#:  设定默认启动的菜单项;落单项(title) 编号从0 开始
      timeout=# :指定菜单项等待选项选择的时长
      splashimage=(hd#,#)/PATH/XPM_FILE :菜单背景图片文件路径
      hiddenmenu :隐藏菜单
      password [--md5] STRING:  启动菜单编辑认证
      title TITLE :定义菜单项“标题”,  可出现多次
        root (hd#,#) :查找stage2 及kernel 文件所在设备分区;为grub 的根
        kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS] :启动的内核
        initrd /PATH/TO/INITRAMFS_FILE:  内核匹配的ramfs 文件
        password [--md5|--encrypted ] STRING:  启动选定的内核或操作系统时进行认证
    
    生成grub口令
      grub-md5-crypt  MD5 口令
      grub-crypt  sha512口令
    

    2 内核参数调整

    /proc 目录:
      内核把自己内部状态信息及统计信息,以及可配置参数通 过proc 伪文件系统加以输出
    参数:只读:输出信息
      可写:可接受用户指定“新值”来实现对内核某功能或特性的配置
    /proc/sys
      (1) sysctl 命令用于查看或设定此目录中诸多参数
        sysctl -w path.to.parameter=VALUE
        sysctl -w kernel.hostname=mail.magedu.com
      (2) echo 命令通过重定向方式也可以修改大多数参数的值
        echo "VALUE" > /proc/sys/path/to/parameter
        echo “websrv” > /proc/sys/kernel/hostname
    
    sysctl 命令:
      默认配置文件:/etc/sysctl.conf
      (1)设置某参数
        sysctl -w parameter=VALUE
      (2)通过读取配置文件设置参数
        sysctl -p [/path/to/conf_file]
      (3)查看所有生效参数
        sysctl -a
      注意: 如果在内存的内核参数和文件的参数起冲突,才会修改内存中加在的内核参数,否则内存中的内核参数将不会修改
    
    /sys 目录:
    sysfs :为用户使用的伪文件系统,输出内核识别出的各
    硬件设备的相关属性信息,也有内核对硬件特性的设定信息;有
    些参数是可以修改的,用于调整硬件工作特性
    udev 通过此路径下输出的信息动态为各设备创建所需要
    设备文件,udev 是运行用户空间程序
    专用工具:udevadmin, hotplug
    udev 为设备创建设备文件时,会读取其事先定义好的规
    则文件,一般在/etc/udev/rules.d 及/usr/lib/udev/rules.d目 目
    录下
    

    3 内核模块管理

     lsmod 命令:
    显示由核心已经装载的内核模块
    显示的内容来自于: /proc/modules 文件
      modinfo 命令:
      显示模块的详细描述信息
      modinfo [ -k kernel ] [ modulename|filename... ]
        -n:  只显示模块文件路径
        -p:  显示模块参数
        -a: author
        -d: description
        -l: license
    
    modprobe 命令:会自动解决依赖关系
    装载或卸载内核模块
      modprobe [ -C config-file ] [ modulename ] [ moduleparame-ters... ]
    配置文件:/etc/modprobe.conf,/etc/modprobe.d/*.conf
      modprobe [ -r ] modulename...
    
    depmod 命令:
    内核模块依赖关系文件及系统信息映射文件的生成工具 装载或卸载内核模块:
      insmod 命令:指定模块文件,不自动解决依赖模块
        insmod [ filename ] [ module options... ]
        insmod `modinfo –n exportfs`
        lnsmod `modinfo –n xfs`
      rmmod 命令:卸载模块
        rmmod [ modulename ]
        rmmod xfs
        rmmod exportfs
    

    相关文章

      网友评论

          本文标题:启动和内核管理

          本文链接:https://www.haomeiwen.com/subject/blrjjxtx.html