无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 31690|回复: 51
打印 上一主题 下一主题

UEFI中直接访问NTFS和iso文件系统的驱动

    [复制链接]
跳转到指定楼层
#
发表于 2013-2-8 23:19:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
玩过uefi启动的应该知道,uefi和dos一样,只能直接访问FAT文件系统(FAT12/16/32),而不能直接从其他文件系统中读取文件。
近日从rEFInd和clover EFI bootloader中发现两个文件系统驱动,能让efi shell下读取NTFS分区和光盘iso文件系统(类似于dos的ntfs驱动和光盘驱动),并且直接可以从NTFS和光盘上直接启动UEFI支持的操作系统了。
附件中的ntfs.efi和iso9660_x64.efi分别是这两个驱动(x64平台的,x86平台的也有但没什么意义)。在EFI shell中cd到相关文件的目录(这两个文件本身还需要存储在FAT分区中,也可以放在一个FAT分区的u盘上),然后执行命令
  1. load ntfs.efi
  2. map -r
复制代码
第一条命令是加载驱动,第二条命令是重新分配盘符(fs0: fs1等等)。然后就能访问NTFS分区了(这个ntfs分区是只读的)。
iso驱动也类似用load加载然后map -r重新分配盘符,就能读取光盘上的文件了(不支持UDF光盘

以上命令可以放在startup.nsh脚本中自动执行,其作用类似于autoexec.bat

测试了几个用途:
一、直接从没有任何启动信息的普通数据光盘启动win7 win8的pe。直接制作了一张简单的数据光盘,包含了uefi版winpe,根目录下放了bootmgfw.efi文件。此光盘没有任何启动信息,直接加载iso驱动插入光盘map -r,就能读取光盘内容了,然后执行光盘上的bootmgfw.efi就能启动光盘上的winpe。
二、单ntfs分区的硬盘上启动win7 win8。一个硬盘只有ntfs分区,没有FAT分区,更没有什么efi系统分区保留分区等,启动菜单也在ntfs分区上。我从u盘加载ntfs驱动后,然后就能执行ntfs分区中的bootmgfw.efi启动win7/win8了
三、uefi shell访问ntfs格式u盘和移动硬盘。加载ntfs驱动,然后map -r后uefi shell就给ntfs的usb分区分配盘符了。使用感觉和dos类似。

[ 本帖最后由 fujianabc 于 2013-2-8 23:26 编辑 ]

efi.rar

52.6 KB, 下载次数: 618, 下载积分: 无忧币 -2

评分

参与人数 2无忧币 +15 收起 理由
zhczf + 5 赞一个!
jneny + 10

查看全部评分

推荐
发表于 2014-8-6 11:59:17 | 只看该作者
jneny 发表于 2013-2-16 23:37
在efi上使用MBR那就成使用EFI 的CSM 兼容模式了吧 ,感觉像是64位系统使用32位的程序。所以选择了 uefi onl ...

挖个坟,偶然看见就回一下吧

CSM和loader没半毛钱关系,EFI的loader同样可以用回原来那套MBR+PBR的启动流程。
CSM存在的意义是为了提供传统BIOS的API,即所谓的内部中断。
win7 无论是32bit还是64bit都只能在有CSM的机器上启动,否则蓝屏,因为启动的时候用到了int 10h中断。
只有win8才能在无CSM的机器上启动

评分

参与人数 1无忧币 +3 收起 理由
jneny + 3

查看全部评分

回复

使用道具 举报

48#
发表于 2021-4-30 20:44:16 | 只看该作者
谢谢分享!!!
回复

使用道具 举报

47#
发表于 2020-9-1 22:09:02 | 只看该作者
正需要这个 感谢分享
回复

使用道具 举报

46#
发表于 2019-2-27 21:12:31 | 只看该作者
能删除NTFS的文件吗? 另外有分区功能的工具吗?
回复

使用道具 举报

45#
发表于 2016-12-22 18:55:45 | 只看该作者
老师,驱动有没有最新版的,谢谢。
回复

使用道具 举报

44#
发表于 2016-9-6 20:54:01 | 只看该作者
支持一个,最近再完uefi 装 mac
回复

使用道具 举报

43#
发表于 2016-5-9 08:39:16 来自手机 | 只看该作者
有efi的触控驱动吗?
回复

使用道具 举报

42#
发表于 2016-5-9 08:01:29 | 只看该作者
谢谢分享
回复

使用道具 举报

41#
发表于 2015-1-13 01:44:24 来自手机 | 只看该作者
试试效果怎么样
回复

使用道具 举报

40#
发表于 2015-1-12 17:33:35 | 只看该作者
正在找这个。。找上半天了。
回复

使用道具 举报

39#
发表于 2014-6-9 10:58:27 | 只看该作者
这个可以有,对于单个大于4G文件需要驱动,请问各位网友,这个驱动现在也没有新的版本,感谢。
回复

使用道具 举报

38#
发表于 2014-4-16 10:58:01 | 只看该作者
楼主,有 NTFS.efi 的源代码?
回复

使用道具 举报

37#
发表于 2014-3-6 21:39:38 | 只看该作者
本帖最后由 ali88home 于 2014-3-6 21:42 编辑

bootmgfw.efi的功能的确强大,搜寻所有资料区,连UD都不放过,我把WIN8-bootmgfw.efi替换了由GRUB2启动操作了,效果很好。

让GRUB2作为您WIN8的启动选项
http://bbs.wuyou.net/forum.php?m ... &fromuid=156496
(出处: 无忧启动论坛)


一个问题:EFI启动能加载IMG、ISO先加载到内存执行吗?像CDlinux、Puppy、slitaz微型linux中文定制版...
回复

使用道具 举报

36#
发表于 2013-10-5 12:49:46 | 只看该作者
那个ntfs.efi貌似不支持压缩的ntfs分区
回复

使用道具 举报

35#
发表于 2013-10-3 02:47:44 | 只看该作者
谢谢 F大带来的研究成果,比较奇怪的是 才看到这个帖子
回复

使用道具 举报

34#
发表于 2013-10-2 14:08:54 | 只看该作者
fujianabc 发表于 2013-2-17 02:20
和CSM无关,只是广大厂家的宣传有些误导了,让广大群众认为EFI只能从gpt硬盘启动。EFI启动完全可以用MBR分 ...

科普学习中,很好的技术讨论帖。
回复

使用道具 举报

33#
发表于 2013-9-29 09:33:23 | 只看该作者
下来试试吧
回复

使用道具 举报

32#
发表于 2013-3-19 16:27:32 | 只看该作者

回复 #10 zds1210 的帖子

U+V2写入可EFI启动的ISO,支持高端隐藏,今天测试成功!
回复

使用道具 举报

31#
发表于 2013-3-16 10:31:42 | 只看该作者
感觉太麻烦了,手动操作。
回复

使用道具 举报

30#
发表于 2013-2-24 17:56:12 | 只看该作者
新技术PE啊..................................
回复

使用道具 举报

29#
 楼主| 发表于 2013-2-20 06:48:14 | 只看该作者
原帖由 my9823 于 2013-2-19 18:37 发表
For GPT partitioned disks
Two choices:
Using GNU Parted/GParted: Create a FAT32 partition. Set "boot" flag on for that partition.
Using GPT fdisk (aka gdisk): Create a partition with gdisk typ ...

你那个估计是给MBR-GPT混合分区表用的,强烈不推荐用混合分区表,大部分程序包括windows本身都太兼容混合分区表。
用普通的mbr+FAT32格式化u盘足够用于EFI启动了
回复

使用道具 举报

28#
发表于 2013-2-19 18:43:24 | 只看该作者
怎么没有意义,话说硬件厂商说了算,我们想用就得低头,毕竟在人家屋檐下!

[ 本帖最后由 my9823 于 2013-2-19 19:16 编辑 ]
回复

使用道具 举报

27#
发表于 2013-2-19 18:41:34 | 只看该作者
试试,好像意义不大。
回复

使用道具 举报

26#
发表于 2013-2-19 18:37:55 | 只看该作者
For GPT partitioned disks
Two choices:
Using GNU Parted/GParted: Create a FAT32 partition. Set "boot" flag on for that partition.
Using GPT fdisk (aka gdisk): Create a partition with gdisk type code "EF00". Then format that partition as FAT32 using mkfs.vfat -F32 /dev/<THAT_PARTITION>
Note: Setting "boot" flag in parted in a MBR partition marks that partition as active, while the same "boot" flag in a GPT partition marks that partition as "UEFI System Partition".
Warning: Do not use util-linux fdisk, cfdisk or sfdisk to change the type codes in a GPT disk. Similarly do not use gptfdisk gdisk, cgdisk or sgdisk on a MBR disk, it will be automatically converted to GPT (no data loss will occur, but the system will fail to boot).
For MBR partitioned disks
Two choices:
Using GNU Parted/GParted: Create FAT32 partition. Change the type code of that partition to 0xEF using fdisk, cfdisk or sfdisk.
Using fdisk: Create a partition with partition type 0xEF and format it as FAT32 using mkfs.vfat -F32 /dev/<THAT_PARTITION>
Note: It is recommended to use always GPT for UEFI boot as some UEFI firmwares do not allow UEFI-MBR boot.
老大,这段什么意思,这个fat32分区不是普通的fat分区吗,还有分区类型区别吗?下边的图片式在bootice中确实看到这个类型的efi分区,upan不用这么格式化吧?

[ 本帖最后由 my9823 于 2013-2-19 19:00 编辑 ]

无标题.jpg (145.53 KB, 下载次数: 197)

无标题.jpg
回复

使用道具 举报

25#
发表于 2013-2-19 17:59:02 | 只看该作者
谢谢老大!archlinux的wiki上有一篇关于uefi的文章,可惜鸟语不好,所以找老大问下!
回复

使用道具 举报

24#
 楼主| 发表于 2013-2-19 15:22:08 | 只看该作者
原帖由 my9823 于 2013-2-19 12:33 发表
fujianabc老大,有几个问题请教:
1,既然uefi只支持fat12/16/32分区,那windows光盘上的efi怎么能识别?
2,是不是u盘上存在efi文件夹,将efi文件放到这个目录或者根目录就可以在启动时扫描到?
3,既然引导 ...

1、支持EFI启动的光盘,是用传统的软盘模拟方式启动的。EFI相关文件存放在那个FAT12的虚拟软盘中
2、 默认是只扫描\efi\boot\bootx64.efi文件,但有些主板还会扫描根目录的efi文件
3、存在主板的nvram上的,主板都提供编辑、添加、删除启动项的功能的
回复

使用道具 举报

23#
发表于 2013-2-19 12:33:04 | 只看该作者
fujianabc老大,有几个问题请教:
1,既然uefi只支持fat12/16/32分区,那windows光盘上的efi怎么能识别?
2,是不是u盘上存在efi文件夹,将efi文件放到这个目录或者根目录就可以在启动时扫描到?
3,既然引导项目存储在主板上,怎么删除或者编辑启动项目?
希望老大能开导一下小菜!!!

[ 本帖最后由 my9823 于 2013-2-19 12:38 编辑 ]
回复

使用道具 举报

22#
 楼主| 发表于 2013-2-17 02:20:57 | 只看该作者
原帖由 jneny 于 2013-2-16 23:37 发表
在efi上使用MBR那就成使用EFI 的CSM 兼容模式了吧 ,感觉像是64位系统使用32位的程序。所以选择了 uefi only选项。

vmware 中的 efi shell 能提取出来吗? 那个版本好像比intel的更新

我还是想多了解下st ...

和CSM无关,只是广大厂家的宣传有些误导了,让广大群众认为EFI只能从gpt硬盘启动。EFI启动完全可以用MBR分区启动而不用GPT的,硬盘、u盘乃至软盘都不用GPT。win7/win8 在mbr硬盘上用uefi启动很容易,见下贴第四点
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=206863

uefi shell一直在更新,具体项目网页
http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=UEFI_Shell

至于startup.nsh,我也没用过,只是看到intel网站上有些文档,和autoexec.bat差不多。
感觉startup.nsh可以单独开贴研究了,放dos脚本哪个版块比较合适。。。

点评

科普学习中,很好的技术讨论帖。  详情 回复 发表于 2013-10-2 14:08
回复

使用道具 举报

21#
发表于 2013-2-16 23:37:10 | 只看该作者

回复 #20 fujianabc 的帖子

在efi上使用MBR那就成使用EFI 的CSM 兼容模式了吧 ,感觉像是64位系统使用32位的程序。所以选择了 uefi only选项。

vmware 中的 efi shell 能提取出来吗? 那个版本好像比intel的更新

我还是想多了解下startup.nsh的写法,外文的论坛看不懂。。

点评

挖个坟,偶然看见就回一下吧 CSM和loader没半毛钱关系,EFI的loader同样可以用回原来那套MBR+PBR的启动流程。 CSM存在的意义是为了提供传统BIOS的API,即所谓的内部中断。 win7 无论是32bit还是64bit都只能在有  详情 回复 发表于 2014-8-6 11:59
回复

使用道具 举报

20#
发表于 2013-2-16 19:31:42 | 只看该作者
大家好好研究,我用现成的,呵呵。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-7-28 14:07

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表