美文网首页
2018-09-29

2018-09-29

作者: whamai | 来源:发表于2018-10-09 16:16 被阅读0次

    1、简述linux操作系统启动流程

    大家都知道Linux内核是一个操作系统中非常重要的一环,它是底层硬件与上层软件链接的枢纽,Linux系统的组成:内核+根文件系统

    Linux内核特点:

    支持模块化:.ko 

    支持模块运行时动态装载或卸载

    组成部分:

    1.核心文件:/boot/vmlinuz-VERSION-release

    2.ramdisk:(动态创建临时根文件,里面是内核启动加载磁盘文件系统根必须的磁盘驱动程序等,在某些个人计算机上,可以设计无需此帮助,使用缓冲和缓存来加速对磁盘上的文件访问,把内存当硬盘使用)

    ramdisk:ramdisk --> ramfs

    CentOS 5: initrd    工具程序:mkinitrd

    CentOS 6,7: initramfs   工具程序:dracut, mkinitrd

    (文件位置)CentOS 6,7:/boot/initramfs-VERSION-release.img

    3.模块文件:(包含许多内核需要加载的模块文件,如文件系统类型文件存放)

    /lib/modules/VERSION-release

    如我这里的vmlinuz-3.10.0-327.e17.x86_64 就是内核的核心文件

    initramfs-3.10.0-327.el7.x86_64.img 就是相对应的ramdisk文件

    而、lib/modules/就是相对应内核版本的模块文件

    centos 系统启动流程

    1.内核空间

    (1)POST:加电自检;ROM:CMOS     BIOS:Basic Input and Output System

    ROM+RAM

    (2)Boot Sequence:按次序查找各引导设备,第一个有引导程序的设备即为本次启动要用到的设备;

    *MBR:Master Boot Record

    512bytes:

    446bytes:bootloader

    64bytes:fat

    2bytes:55AA (有效)非55AA(无效)

    (3)bootloader:引导加载器,程序 Linux:(放置于MBR中)

    LILO:LIinux  LOader

    GRUB:Grand Uniform Bootloader

    (这个过程是选择操作系统内核,将内核装载到内存特定空间中。把系统控制权给内核)

    *GRUB                                                                       

    bootloader:1st stage

    Partition:filesystem driver, 1.5 stage

    Partition:/boot/grub, 2nd stage

    (MBR)bootloadder—————(GRUB)Partition(第二阶段,提供交互式界面,选择内核类型)————加载内核

    (4)加载内核(kernel)

    开始自身初始化

    探测可识别的所有硬件设备——加载硬件驱动(可能借助ramdisk)———只读挂载文件系统(读取根文件系统)————运行总父程序init(用户空间的老大)

    *init程序的类型:

    CentOS 5-:SysV init     配置文件:/etc/inittab

    CentOS 6:Upstart        配置文件:/etc/inittab/etc/init/*.conf

    CentOS 7:Systemd       配置文件:/usr/lib/systemd/system/, /etc/systemd/system/

    总结

    *内核空间(内核级别的启动流程)

    POST(电自检)——Boot Sequence(查找引导设备)——(MBR)bootloadder—————(GRUB)Partition(第二阶段,提供交互式界面,选择内核类型)————加载内核————探测可识别的所有硬件设备——加载硬件驱动(可能借助ramdisk)———只读挂载文件系统(读取根文件系统)————运行总父程序init(用户空间的老大)

    2.用户空间(分别从5,6,7版本说明)

    centos 5 (级别适用于6,7)

    *设置默认运行级别

    运行级别:为了系统的运行或维护等目的而设定的机制;0-6:7个级别;

    默认级别:3, 5

    级别切换:init #

    级别查看:(1)who -r   (2)runlevel

    配置文件:/etc/inittab

    0:关机, shutdown

    1:单用户模式(single user),root用户,无须认证;维护模式;

    2、多用户模式(multi user),会启动网络功能,但不会启动NFS;维护模式;

    3、多用户模式(mutli user),完全功能模式;文本界面;

    4、预留级别:目前无特别使用目的,但习惯以同3级别功能使用;

    5、多用户模式(multi user), 完全功能模式,图形界面;

    6、重启,reboot

    目录下的服务脚本所控制服务;

    K*:要停止的服务;K##*,优先级,数字越小,越是优先关闭;依赖的服务先关闭,而后关闭被依赖的;

    S*:要启动的服务;S##*,优先级,数字越小,越是优先启动;被依赖的服务先启动,而依赖的服务后启动;

    inittab服务

    配置文件地址:/etc/init.d/服务名

     chkconfig  后台服务管理命令

     /etc/init.d/* (/etc/rc.d/init.d/*)

    centos7 init,centos5 inttab服务位置

     脚本框架:#!/bin/bash# (级别)(启动优先级)(关闭优先级) 

                                # chkconfig: LLL NN NN#

     description: (非必要) 

     for srv in /etc/rc.d/rc#.d/K*; do

     $srv stop 

    done 

     for srv in /etc/rc.d/rc#.d/S*; do

     $srv start 

    done

    脚本执行方式:# /etc/init.d/SRV_SCRIPT {start|stop|restart|status}# service SRV_SCRIPT {start|stop|restart|status} 

     每个服务脚本在各级别下的启动或关闭状态;

     查看:chkconfig --list name 

    添加:chkconfig --add name

     删除:chkconfig --del name 

    修改模式状态chkconfig --level number name <on|off|reset>

    *系统初始化脚本:/etc/rc.d/rc.sysinit(相对于centos5来说)

    (1) 设置主机名;

    (2) 设置欢迎信息;

    (3) 激活udev和selinux;

    (4) 挂载/etc/fstab文件中定义的所有文件系统;

    (5) 检测根文件系统,并以读写方式重新挂载根文件系统;

    (6) 设置系统时钟;

    (7) 根据/etc/sysctl.conf文件来设置内核参数;

    (8) 激活lvm及软raid设备;

    (9) 激活swap设备;

    (10) 加载额外设备的驱动程序;

    (11) 清理操作;

    *终端配置文件

    tty1:2345:respawn:/usr/sbin/mingetty tty1

    ... ...

    tty6:2345:respawn:/usr/sbin/mingetty tty6

    (1)mingetty会调用login程序;

    (2)打开虚拟终端的程序除了mingetty之外,还有诸如getty等;


    centos 6 服务配置

    init程序:upstart,但依然为/sbin/init,其配置文件:

    /etc/init/*.conf, /etc/inittab(仅用于定义默认运行级别)

    注意:*.conf为upstart风格的配置文件;

    rcS.conf

    rc.conf

    start-ttys.conf

    CentOS 7 服务配置

    init程序:systemd,配置文件:/usr/lib/systemd/system/*,  /etc/systemd/system/*

    完全兼容SysV脚本机制;因此,service命令依然可用;不过,建议使用systemctl命令来控制服务;

    # systemctl  {start|stop|restart|status}  name[.service]

    centos7全新的rc服务脚本位置

    总结

    *用户空间(用户级别的启动流程)

    /sbin/init——/etc/inttab(访问配置文件)——设置默认运行级别—————运行系统初始化脚本,完成系统初始化————关闭K服务开启S服务————设置登录终端---------启动图形终端(非必要)

    合并总结

    *内核空间+用户空间(相对于centos5,6而言)

    POST(电自检)——Boot Sequence(查找引导设备)——(MBR)bootloadder—————(GRUB)Partition(第二阶段,提供交互式界面,选择内核类型)————加载内核————探测可识别的所有硬件设备——加载硬件驱动(可能借助ramdisk)———只读挂载文件系统(读取根文件系统)————运行总父程序init(用户空间的老大)/sbin/init——/etc/inttab(访问配置文件)——设置默认运行级别—————运行系统初始化脚本,完成系统初始化————关闭K服务开启S服务————设置登录终端---------启动图形终端(非必要)

    2、简述grub启动引导程序配置及命令行接口详解

    我们知道Linux开机过程中遇到grub交互界面,来选择内核和系统类型,ramdisk等

    对于(centos5,6来说)
    grub legacy:

    stage1: mbr

    stage1_5: mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统;

    stage2:磁盘分区(/boot/grub/)

    配置文件:/boot/grub/grub.conf <-- /etc/grub.conf

    stage2及内核等通常放置于一个基本磁盘分区;

    功用:

    (1) 提供菜单、并提供交互式接口

    e: 编辑模式,用于编辑菜单;

    c: 命令模式,交互式接口;

    (2) 加载用户选择的内核或操作系统

    允许传递参数给内核

    可隐藏此菜单

    (3) 为菜单提供了保护机制

    为编辑菜单进行认证

    为启用内核或操作系统进行认证

    如何识别设备:

    (hd#,#)

    hd#: 磁盘编号,用数字表示;从0开始编号

    #: 分区编号,用数字表示; 从0开始编号

    (hd0,0)

    grub的命令行接口

    help: 获取帮助列表

    help KEYWORD: 详细帮助信息

    find (hd#,#)/PATH/TO/SOMEFILE:

    root (hd#,#)

    kernel /PATH/TO/KERNEL_FILE: 设定本次启动时用到的内核文件;额外还可以添加许多内核支持使用的cmdline参数;

    例如:init=/path/to/init, selinux=0

    initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件的ramdisk;

    boot: 引导启动选定的内核;

    手动在grub命令行接口启动系统:

    grub> root (hd#,#)

    grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE

    grub> initrd /initramfs-VERSION-RELEASE.img

    grub> boot

    配置文件:/boot/grub/grub.conf

    配置项:

    default=#: 设定默认启动的菜单项;落单项(title)编号从0开始;

    timeout=#:指定菜单项等待选项选择的时长;

    splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;

    hiddenmenu:隐藏菜单;

    password [--md5] STRING: 菜单编辑认证;

    title TITLE:定义菜单项“标题”, 可出现多次;

    root (hd#,#):grub查找stage2及kernel文件所在设备分区;为grub的“根”;

    kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核

    initrd /PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件;

    password [--md5] STRING: 启动选定的内核或操作系统时进行认证;

    grub-md5-crypt命令 

    内核保护密码设置明文,来是登入输入密码加载内核

    进入单用户模式:

    (1) 编辑grub菜单(选定要编辑的title,而后使用e命令);

    (2) 在选定的kernel后附加

    1, s, S或single都可以;

    (3) 在kernel所在行,键入“b”命令;

    安装grub:

    (1) grub-install

    grub-install --root-directory=ROOT /dev/DISK

    (2) grub

    grub> root (hd#,#)

    grub> setup (hd#)

    练习:

    1、新加硬盘,提供直接单独运行bash系统;

    2、破坏本机grub stage1,而后在救援模式下修复之;

    3、为grub设置保护功能;

    编辑开机grub信息 我在这里不仅添加bash,还添加了ls命令

    使用镜像修复(紧急救援模式)

    为grub设置保护功能


    3、实现kickstart文件制作与光盘镜像制作

    为了将Linux系统内的文件传输到window中,我通过QQ邮箱来,但是通过下载包rz命令,可以通过window向Linux传输文件

    相关文章

      网友评论

          本文标题:2018-09-29

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