Efi Ext驱动支持

保姆级教程:用Ventoy在华硕B460主板上实现Win11+Ubuntu双系统共存 本文提供在华硕B460主板上使用Ventoy实现Win11与Ubuntu双系统共存的详细教程。涵盖从UEFI设置、BIOS调优到分区策略和GRUB引导配置的全流程,特别针对华硕主板的兼容性问题提供解决方案,帮助开发者高效搭建跨平台开发环境。 阅读详情

1 EFI文件系统现状

    无论是EDK还是最新的EDKII,都只支持FAT,并没有对LINUX系统原生态文件系统EXT进行支持。我刚写了EXT驱动没多长时间,趁着没有忘记,就把整个过程写下来,俗话说的好,好记性不如赖笔头。

 

2 EXT文件系统结构

   我们来看一张图:


上面的图为一个磁盘分区的结构。

最起始的部分是BootBlock,固定占有1024字节,只是磁盘厂商传承下来的产物,对于我们的文件系统来说并无帮助。

Block Group,EXT为了便于管理磁盘,便将磁盘划分为不同的块组。因为操作系统不是以扇区为单位进行磁盘读取,而是以逻辑块为基本单位进行读取,在BITMAP中每一个BIT代表一个逻辑块,所以可以将逻辑块乘以8组成一个块组。这样就方便了磁盘管理和读取。

SuperBlock,占有1024字节,磁盘格式化后,便维护着这样一个结构。这个结构特别重要,它指示了整个文件系统的Block和Inode的大小、Block和Inode的数量、Block和Inode的已使用和未使用数量、文件系统版本号、最近一次挂载时间等等。

Group Description,组描述符,整个文件系统只使用Block Goup0的组描述符即可,其它不用访问,只是数据的一个拷贝。它记录着各个BLOCK GROUP的BLOCK BITMAP和INODE BITMAP的起始位置。

DataBlock Bitmap:本组数据块使用情况,使用过,其BIT设为1,空闲则为0。

Inode Bitmap:本组Inode Table使用情况,其用法与DataBlockBitmap相同。作为EFI生BIOS工程师,我们只负责读取文件系统,并不会去往磁盘上写数据,所以这两个结构可以不去管它们。

Inode Table:每个目录或文件都占用一个Inode,用Inode Table来描述此目录或文件的使用情况及属性。对于EFI BIOS工程师来说,我们更注重其中的数据块及占有的数据块数量以及一级指针,二级指针三级指针几个字段,因为这关系到我们读取文件数据。文件大小不一般来讲,并不是正好是BLOCKSIZE整数倍大小,那怎么可以读到大小正确数据值?这里面还有一个SIZE大小的字段,整个数据BLOCK的最后一个BLOCK要根据这个SIZE字段来截断。

DataBlock:我们解析目录和文件都在这里。如果是目录,就有一个DIR_ENTRY的结构来解析此数据块。

以上便是理论部分。具体应该怎么做呢?下面我便粗略地描述一下读文件方式,因为作为EFI BIOS工程师来说,更关心如何读取文件。

 

3 读取文件方式

    我们想要读取一个文件,首先要找到其inode号,然后根据inode号找到inodetable中对应的inode结构,则inode结构找到数据块及大小,然后将其读出。

我们来看一下红帽的grub.efi读取。当然它是FAT文件系统,但我们先假设其是EXT文件格式的。其路径为:\EFI\redhat\grub.efi

    首先找根目录\,其inode号固定为2,其肯定在Group Block0内,找到其inode结构,然后找到其数据块,根据DIR_ENTRY检索EFI目录项。

    由EFI目录项,可以找到其占用的inode号,同理可以找到其对应的inode结构,进而找到其数据块,分析并得到redhat目录项。

    同上面两个步骤一样,再次循环得到grub.efi文件项。

    在grub.efi文件项中可以找到其对应的inode号,由inode号找到其对应的inode结构,进而找到其占用的数据块和文件大小,将其所有数据块读出,并由SIZE确定最后一个数据块占用大小,其所有数据块最终组成一个文件就是grub.efi文件的数据。

 

4 主要数据结构

   读取文件所用到的结构罗列如下:

    超组块,块描述符,Inode结构,文件目录项,其结构可以自行在网上查找。

 

5 具体做法

(1)建一EXT驱动,因为其会为很多控制器提供驱动,所以类型选择UEFI_DRIVER。

(2)在驱动入口处,安装binding协议。

(3)在Supported函数中,规定非装有DISKIO和BlockIO的控制器不得进入。

(4)在Start函数中,读取superblock,并根据其字段判断该分区是否支持EXT文件系统,若是便将EXT解析函数封装为一个Ext协议,并安装在该控制器上。

(5)在LoadImage中,在FAT读取程序段下面,添加EXT数据读取程序段。

(6)在BootOption枚举函数中,检索各个装有Ext协议的控制器是否有我们所需要的BootLoader,如果有,便为其注册BoorOrder选项。

 


lenovoT460s-mac-efi.rar thinkpad T460s 黑苹果 EFI 适用于 mac10.12 链接:https://pan.baidu.com/s/1op-lk4v99r03L50zrDOpYQ 提取码:oe67 立即下载

相关推荐

EFI(安装配置文件 驱动显卡配置文件)

黑苹果安装10.12成功

EFI、GPT、EXT*放在一起方便回忆

EFI,可扩展固件接口英文名Extensible Firmware Interface 的缩写,一种在未来的类PC的电脑系统中替代BIOS的升级方案 EFI的组成   一般认为,EFI由以下几个部分组成:   1. Pre-EFI初始化模块   2. EFI驱动执行环境   3. EFI驱动程序   4.兼容性支持模块(CSM) ...

weixin_34174422的博客 334

黑苹果(MacOS 10.15) EFI驱动

本人的台式机配置如下: CPU:Intel Core I5 8400 集显:Intel Graphics UHD 630 主板:华硕Z370-P 声卡:Realtek ALC887 网卡:Realtek RTL8111H

UEFI的UEFI Driver

UEFI Driver是一种特殊类型的驱动程序,用于在计算机启动时加载和初始化硬件设备的软件组件,如显卡、网卡、声卡等。而Driver 是用于控制硬件设备的软件程序,它可以在操作系统中运行,并与操作系统进行交互,以便与硬件设备通信。简单来说,UEFI driver是在计算机启动时加载的,而Driver则是在操作系统中加载的。

weixin_44041504的博客 3227

clover黑苹果常用的基础efi驱动包

这是一款整合的efi驱动,适用于clover引导的黑苹果,内置基本的黑苹果efi引导,分享给需要的朋友

联想T460s 黑苹果驱动文件EFI

联想T460s 黑苹果clover驱动文件EFI,解压拷贝即可。i5-6200u,集显版本完美使用,无任何问题。独显版请自行屏蔽。

EFI Driver初始化过程

EFI Driver再被LoadImage()加载进内存之前,是存在于存储器中的,例如:系统ROMs,Flash芯片,PCI option ROM,或者网络服务器中。 (1)LoadImage() LoadImage()为Boot Service,通过调用LoadImage()将driver加载进内存,同时该driver会生成自己的Image Handle,并且在Image Handle下安装

xzhang76 8891

FOC实战笔记:RC吸收电路的设计考量与参数调优

本文深入探讨了FOC驱动器中RC吸收电路的设计与调优。针对MOS管开关过程中的电压尖峰问题,详细阐述了RC电路的钳位与能量吸收原理,并提供了从参数计算、实验调试到布局布线的完整实战指南,旨在帮助工程师有效提升系统可靠性与稳定性。

weixin_29219539的博客 275

探索Ext3Fsd:Windows上的EXT3/EXT4文件系统驱动

探索Ext3Fsd:Windows上的EXT3/EXT4文件系统驱动 去发现同类优质开源项目:https://gitcode.com/ 在数字时代,跨平台的数据共享和存储变得日益重要。Linux系统的EXT3和EXT4文件系统因其稳定性和效率而被广泛采用,但在Windows操作系统上直接访问这些文件系统却是一个挑战。现在,有了,这一切变得更加简单。 项目简介 Ext3Fsd是由开发者创建的一个开源...

gitblog_00061的博客 1373

别再死磕AUTOSAR文档了!手把手教你用ISOLAR-A配置BswM模块(附实战流程图)

本文通过Vector ISOLAR-A工具实战演示AUTOSAR BswM模块的配置流程,帮助工程师快速掌握基础软件模式管理。从环境准备到模式仲裁规则配置,再到动作列表实现,详细讲解每个步骤,并提供常见问题排查和高级优化技巧,大幅提升开发效率。

weixin_42542669的博客 249

『n8n』初识界面

在首页(Overview),我们和 n8n 最常打交道的是“Workflows”、“Credentials”、“Executions”这几个面板(其实后面2个也会用到,但初学阶段可以先不管)。Workflows 面板可以看到我们创建的所有工作流,所以要给工作流起一个一眼看上去就知道是干嘛的名字。

weixin_39415598的博客 1460

一篇读懂 UEFI .EFI 文件:结构、加载、驱动机制与安全体系全解析

摘要: .efi 文件是符合 UEFI 规范的可执行镜像,采用 PE/COFF 格式,运行于固件环境而非操作系统。其主要用途包括 UEFI 应用程序、引导加载器、DXE/Runtime 驱动等。.efi 文件通过 UEFI 协议与服务工作,支持安全启动验证。其生成涉及 EDK II 工具链,需配合 .inf(模块定义)、.dsc(平台配置)、.fdf(固件布局)等文件协同构建。加载机制包括 Boot Manager 路径、NVRAM 变量或 Shell 调用,生命周期由 UEFI 框架管理。与 Window

就聊这个了,window/linux 嵌入式驱动 3459

boost::circular_buffer缓行缓冲区

1、circular_buffer实现了一个环形缓冲区,空间大小是固定的,当到达容器末尾时,将自动利用容器另一端的位置空间。 2、当程序需要容纳大量的元素,但多数情况下仅保存较少数量元素时可以使用circular_buffer_space_optimized,他可以有效的减少内存的占用,提高程序的运行效率。 3、主要接口: 4、实现一个生产者---消费者模式示例: #inc...

小米的修行之路 791

一块 ESP 启动三大系统:CloverBootloader 的文件系统支持是怎么做到的

用一块 ESP 分区同时引导 Windows、macOS 和 Linux 时,你会遇到同一堵墙:固件本身只认 FAT,而三大系统分别躺在 NTFS、APFS 和 EXT4 里。CloverBootloader 用独立的 EFI 文件系统驱动补齐每一块短板,让启动菜单能看到所有分区。 [![CloverBootloader 启动菜单,展示文件系统驱动识别出的系统分区](https://raw.gi

gitblog_00119的博客 404

Kimodo 入门教程(一)英伟达开源人形机器人动捕数据集训练运动学动作扩散模型

Kimodo是一个基于700小时商用光学动作捕捉数据集训练的运动学动作扩散模型,能够生成高质量的人体和机器人3D动作。该模型支持通过文本提示和多种约束条件(如关键帧、末端执行器位置等)进行控制,并提供数字人类和类人机器人两种模型变体。安装方式包括软件包安装和源代码安装两种,需要配置HuggingFace令牌以访问文本编码器。推荐使用GPU加速,最低需要17GB显存。项目提供命令行生成和交互式演示两种使用方式,演示程序支持时间轴编辑和实时3D可视化。模型分为商用友好版和受限版,其中SMPL-X版本需要额外申请

2506_90492529的博客 1929

Android应用发布到Google Play的步骤和注意事项

发布Android应用到Google Play是将您的应用分享给全球用户的重要步骤。Google Play是Android平台上最大的应用分发渠道之一,使得开发者可以轻松将他们的应用推广到数百万的用户。在本篇博客中,我们将逐步介绍如何将您的Android应用发布到Google Play,同时提供详细的步骤和注意事项,以及相关的代码示例。

2201_76125261的博客 850

为深度学习腾地方:在 Win10 的 Dell 7090 上无损加装 Ubuntu 20.04 双系统全记录

本文详细记录了在Dell OptiPlex 7090上无损安装Ubuntu 20.04双系统的全过程,特别针对深度学习科研场景优化。从硬盘分区、BIOS设置到Ubuntu安装及深度学习环境配置,提供实用技巧和最佳实践,帮助用户实现Windows 10与Ubuntu 20.04的无缝协作。

weixin_33693070的博客 480

Python遥感图像处理应用篇(二十三):Python+GDAL 批量拼接图像

遥感影像拼接分多种不同的情况,比如比较常用的是两幅影像拼接或者多个图像合并为一个图像。GDAL中实现影像拼接的方式也有多种,比如常用可以通过numpy读取影像数组,并计算各个图像的numpy数组范围,合并多个numpy数组为一个最终的结果,并将其重新输出为一幅新的图像,即可实现图像的拼接。另外比较方便的一种方法便是使用GDAL.warp()函数方法。这个函数的功能很多,可以实现多种不同的目的,比如用于坐标系转换、投影变换、图像合并与镶嵌、地理范围裁剪、更改分辨率、矢量裁剪等多种功能。这些功能可以通过设置Op

soderayer的博客 4643

Ventoy终极指南:如何用单个U盘启动1200+操作系统镜像

Ventoy是一款革命性的开源多系统启动工具,它彻底改变了传统U盘启动盘的制作方式。与传统的启动盘工具不同,Ventoy不需要反复格式化U盘,只需将ISO/WIM/IMG/VHD(x)/EFI等镜像文件复制到U盘即可直接启动。作为技术爱好者和系统管理员必备的工具,Ventoy支持x86 Legacy BIOS、IA32 UEFI、x86_64 UEFI、ARM64 UEFI和MIPS64EL UE

gitblog_00259的博客 170

PCL 点云圆柱形邻域搜索【2026最新版】

圆柱形邻域搜索是KD-tree算法在点云数据处理中的扩展应用,在一些特定场景应用中具有无与伦比的优势。博客长期更新,本文最近一次更新时间为:2026年5月4日。

点云侠的博客 3451

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

EFI Driver Model(下)-SCSI 驱动设计

SCSI是Small Computer System Interface(小型计算机系统接口)的缩写,使用50针接口,外观和普通硬盘接口有些相似。SCSI硬盘和普通IDE硬盘相比有很多优点:接口速度快,并且由于主要用于服务器,因此硬盘本身的性能也比较高,硬盘转速快,缓存容量大,CPU占用率低,扩展性远优于IDE硬盘,并且支持热插拔。

weixin_41172506的博客 1169

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Ventoy终极指南:如何用单个U盘启动1200+个操作系统镜像

还在为每个操作系统制作单独的启动盘而烦恼吗?还在为频繁格式化U盘而浪费时间吗?Ventoy是一款革命性的开源启动盘制作工具,它彻底改变了传统的启动盘制作方式。通过Ventoy,你只需要一次安装,就可以在同一个U盘上存储并启动任意数量的ISO/WIM/IMG/VHD(x)/EFI文件,无需反复格式化。本文将深入解析Ventoy的核心功能、技术实现和最佳实践,帮助你掌握这个强大的多系统启动解决方案。

gitblog_00152的博客 393

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Clover引导都支持哪些.efi文件

Clover引导都支持哪些.efi文件

Z17362251225的博客 903

Ventoy技术深度解析:如何用单U盘管理1200+系统镜像的启动革命

在系统部署与维护领域,Ventoy正悄然引领一场技术革命。这款开源启动盘制作工具彻底颠覆了传统单系统启动盘的局限性,实现了"一次安装,永久使用"的多系统管理理念。不同于传统工具每次更换系统都需要重新格式化U盘,Ventoy允许用户直接将ISO、WIM、IMG、VHD(x)和EFI文件复制到U盘中,通过智能引导菜单自由选择启动目标。目前,Ventoy已成功测试超过1200个系统镜像文件,兼容Wind

gitblog_01106的博客 890

黑苹果xxx.efi格式文件详解

黑苹果xxx.efi格式文件详解

Z17362251225的博客 5346

黑苹果xxx.efi格式文件介绍

黑苹果xxx.efi格式文件介绍

Z17362251225的博客 2505
上一篇: EFI基本概念之UDK2015定制EDKTOOL
下一篇: BIOS工程师手边事--GPT
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值