码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • linux内核的文件组织形式


    文章目录

    • 前言
    • 1. Linux内核体系结构
    • 2. 内核引导与启动
    • BIOS/OF
    • BIOS功能
    • 引导装入程序(Boot Loaders)
    • BIOS 与boot loader及内核加载流程
    • GNU GRUB
    • GRUB2
    • 总结


    前言

    讲了Linux内核的一些文件组织管理


    1. Linux内核体系结构

    示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

    2. 内核引导与启动

    在这里插入图片描述

    BIOS/OF

    • 加电后处理器首先访问通常位于只读内存(一般是Flash ROM或仅仅是Flash)中的某一地址。
    • BIOS(基本输入输出)是x86系统加电后最先运行的代码。引导系统并与硬件相关的系统初始化代码。
    • Open Firmware是PPC(PowerPC)系统加电后最先运行的代码。

    BIOS功能

    • 自检及初始化程序;
      自检,对CPU,640K基本内存,1M以上的扩展内存,ROM,主板,CMOS存储器等进行测试。
      初始化,包括创建中断向量、设置寄存器等。
      引导程序 ,引导DOS或Linux等操作系统。
    • 硬件中断处理;系统在加电引导机器时,要读取CMOS信息,用来初始化机器各个部件的状态。
    • 程序服务请求;程序服务处理程序主要是为应用程序和操作系统服务,这些服务主要与输入输出设备有关,例如读磁盘、文件输出到打印机等。

    引导装入程序(Boot Loaders)

    • 格式化磁盘时,会创建主引导记录(MBR),该记录存储在引导设备的第一个扇区(0扇区、0磁道、0磁头)。包含:
    • 一个小程序
    • 一张四入口点的分区表
    • 结束标识符(0XAA55),用来做MBR的有效性检测。
    • Boot loader
      识别操作系统的文件格式,并根据已加载内核到内存中去执行。

    BIOS 与boot loader及内核加载流程

    在这里插入图片描述

    GNU GRUB

    GRUB(Grand Unified Bootloader),基于x86的引导装入程序,用来加载Linux。

    • GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。
    • GRUB允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。
    • GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

    GRUB2

    • GRUB2(GRand Unified Bootloader, Version 2)是GRUB的第二版。

    • GRUB目前已经不再继续开发,只是修正存在的错误。

    • 官方的说法是GRUB的编码实在太烂,以至于没法进行维护升级了,所以重新从零开发了新的GRUB2,从此以后原来的GRUB就叫做GRUB Legacy了。

    • GRUB2对GRUB2的接口进行了完整地重写,并且采用了清晰的架构和模块化的布局。

    • 目前大部分都采用GRUB2作为内核引导管理器。

    • 操作系统必须有loader才有办法加载该OS的内核。但还是MBR是整个硬盘第一个扇区中的一个区块,大小400多B。如何存储loader的数据?

    • Stage1 :执行Boot Loader的主程序
      MBR或启动扇区仅安装boot loader的最小主程序

    • Stage2:主程序加载配置文件
      通过boot loader加载所有配置文件与相关的环境文件 ( ls –l /boot/grub2)

    总结

    Linux内核的文件组织形式

  • 相关阅读:
    一个思维狂赚20万+?揭秘电商平台隐藏的流量认知!
    OpenGL原理与实践——核心模式(六):光照贴图、光源分类以及多光源场景主要源码实现
    业务签署升级,君子签电子签章助推汽车融资租赁释放消费潜力
    字符串、整数倒序输出
    JAVA全局异常处理
    常用的8位单片机+2.4g遥控芯片的“化学”反应
    大数据培训课程之RDD传递一个属性
    目的和目标的差异|丰田自动工程完结的目的、目标、应用化的意义和明确
    Android UI界面去除标题栏的方法
    gt基础教程
  • 原文地址:https://blog.csdn.net/weixin_51422230/article/details/126772390
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号