• Linux开机引导流程


    linux开机引导流程:

    这里写图片描述

    1.BIOS开机自检

    BIOS程序首先检查,计算机硬件能否满足运行的基本条件,这叫做"硬件自检"(Power-On Self-Test),缩写为POST。
    如果硬件出现问题,主板会发出不同含义的蜂鸣,启动中止。如果没有问题,屏幕就会显示出CPU、内存、硬盘等信息。

    2.MBR(主引导记录):512字节:

    主引导程序(Bootloader):446字节;
    硬盘分区表DPT:64字节;
    分区结束标记:2字节。
    (MBR不属于任何一个文件系统)
    PS:
    如何查看MBR的第一个扇区(最前面的512个字节)
    (这512个字节的最后两个字节是0x55和0xAA)

    # dd if=/dev/sda of=sda.mbr bs=512 count=1
    #hexdump -C sda.mbr
    

    –》会发现是以55 aa结尾的
    这里写图片描述

    3.GRUB引导程序

    grub是linux里的一个引导系统启动的程序。
    分3个部分(阶段):

    • stage 1
    • stage 1.5 --》文件系统的驱动程序
    • stage 2 --》文件系统的驱动程序
    #cd /boot/grub/
    #ls    --》
    device.map     ffs_stage1_5      jfs_stage1_5    reiserfs_stage1_5  stage2           xfs_stage1_5
    e2fs_stage1_5  grub.conf         menu.lst        splash.xpm.gz      ufs2_stage1_5
    fat_stage1_5   iso9660_stage1_5  minix_stage1_5  stage1             vstafs_stage1_5
    

    4.加载内核kernel

    vmlinuz-2.6.32-279.e16.i68
    内核文件:被夹在到内存里执行,可以开始管理内存、cpu、磁盘等设备,
    解压image映像文件,查看里面的内容。
    ①/boot/kernel and kernel parameter
    ②/boot/initrd

    5. Sys V init 初始化阶段

    • /sbin/init
    • /sbin/mingetty
    • /etc/X11/prefdm

    这里写图片描述


    一个文件系统下面有哪些目录:*

    这里写图片描述


    最后贴一个自己画的linux开机启动流程思维导图:

    这里写图片描述
    (注:放大即可看清)

    power on–》开机
    bios:系统自检、读启动顺序,启动顺序定位到MBR–》
    MBR(主引导程序bootloader、DPT硬盘分区表、55aa分区结束标记):
    bootloader读取DPT,知道哪一个是活动分区–》
    bootloader(stage1)找到/boot分区(ext4),但是stage1识别不了ext4,于是启动stage2–》
    stage里面有大量的驱动,加载驱动,例如ext4的驱动,就能读取分区(/boot/grub/grub.conf)了–》
    grub.conf会加载kernel和initramfs.img文件到内存里面。–》
    initramfs-版本号.img文件加载到内存里之后,会启动init进程–》
    init进程起来后,会读取/etc/fstab文件、/etc/rc.sysinit、/etc/inittab–》
    通过/etc/inittab文件例如知道运行级别是3了,就会加载/etc/rc.d/rc3.d/目录下的所有文件–》
    例如会启动所有以f开头的服务–》
    再启动/sbin/mingetty文件,提供接口来登录–》
    输入用户名、密码–》
    通过/ertc/passwd和/etc/shadow等文件来验证用户名和密码是否正确–》
    然后再加载4个配置文件:/etc/profile、/etc/bashrc、/root/.bashrc、/root/.bash_profile–》
    之后就可以使用了。

    手动分割线

    最后的最后,贴一个当时班里很牛的一个大神画的超级好看的思维导图。

    这里写图片描述

  • 相关阅读:
    Android开发四大组件--Activity详解
    <base target="_blank"/>
    MVC EF异常-“序列化类型为 XX 的对象时检测到循环引用”
    错误:[将截断字符串或二进制数据。 语句已终止。]
    EasyUI queryParams属性 在请求远程数据同时给action方法传参
    存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。
    easyui DateTimeBox 取值
    [转载]再次谈谈easyui datagrid 的数据加载
    EasyUI datagrid 改变url属性 实现动态加载数据
    在js中获取easyui datagrid的数据
  • 原文地址:https://www.cnblogs.com/lpeng94/p/12546438.html
Copyright © 2020-2023  润新知