本发明涉及一种在uefibios中实现多种文件系统的方法,属于uefibios的技术领域。
背景技术:
随着cpu及其他计算机硬件设备的革新,传统的legacybios逐渐暴露出其不足之处,例如,开发效率低、性能差、功能扩展性差、升级缓慢、安全性差以及不支持从硬盘2tb以上的地址引导等。legacybios的这些不足逐渐成为计算机系统发展的瓶颈。基于此,uefi(unifiedextensiblefirmwareinterface,统一可扩展固件接口)于20世纪90年代中期被提出,uefi很好的弥补了legacybios的不足,主要得益于uefi系统的以下优点:开发效率更高、可扩展性更强、系统性能更好、安全性更高。
传统的legacybios采用的是legacybios+mbr的启动方式,在bios完成平台自检后,进行启动设备检测,当检测到启动设备后,执行mbr中的启动程序,从而进入操作系统。随着legacybios被uefibios所取代,这种启动方式也会渐渐退出历史舞台(因为兼容性原因,现在还有较多平台采用这种启动方式)。uefibios采用的是uefibios+gpt的启动方式,在uefi系统安装完成之后,系统的启动程序(一般为pe32格式的efi可执行文件)会放在启动设备(如硬盘)的某个路径下,uefibios完成平台自检并检测到启动设备后,开始从启动设备中加载系统启动程序,从而将控制权交给操作系统,uefibios的工作到此完成。由上可见,uefibios需要在启动设备的文件路径下加载系统启动程序,因此,uefibios必须支持文件系统。uefibios的灵活性和开放性给计算机带来了新的发展空间。相比legacybios,uefibios更像一个微操作系统,可在操作系统载入之前操控所有的硬件资源,且具有实现更复杂逻辑运算的能力,这一特点使得在uefibios中加载文件系统驱动成为可能。
uefibios默认支持fat文件系统,由于这个限制,系统的启动文件必须放在启动设备的fat分区中,否则uefibios将无法加载操作系统启动文件。
技术实现要素:
针对现有技术的不足,本发明提供一种在uefibios中实现多种文件系统的方法。
本发明的技术方案为:
一种在uefibios中实现多种文件系统的方法,包括步骤如下:
1)在uefibios中添加多个文件系统驱动;
2)按照uefi驱动模型,为文件系统驱动匹配文件系统接口驱动;本步骤为步骤1)中的多个文件系统匹配一个统一的符合uefi规范的接口驱动;
3)文件系统接口驱动遍历系统中所有的存储设备;
4)针对每个存储设备,加载文件系统接口驱动,遍历所有文件系统,直至得到正确的文件系统驱动;
5)如果遍历所有文件系统后没有得到正确的文件系统驱动,则判定uefibios中没有可启动的设备。
根据本发明优选的,所述文件系统驱动为ext,iso9660和fat。
根据本发明优选的,所述文件系统接口驱动包括blocklo和disklo。
根据本发明优选的,所述步骤4)的具体实现过程如下:
uefibios在运行到bds阶段进行存储设备和文件系统驱动的connect操作时,针对每个存储设备分区,通过文件系统接口驱动遍历所有的文件系统,并进行挂载操作,如果挂载成功,则判定对应的文件系统能够驱动当前的存储设备,则将对应的文件系统驱动安装到当前存储设备并停止遍历过程;如果挂载失败,则继续遍历,直至遍历到对应的文件系统;其中,uefibios为每个存储设备分区分配一个handle。
本发明的有益效果为:
1.本发明所述在uefibios中实现多种文件系统的方法,将多种文件系统做成统一的符合uefi驱动格式的接口,根据检测到的不同存储设备加载相应的文件系统;克服了uefibios系统的启动文件必须放在启动设备的fat分区中的限制,提高了uefibios的灵活性。
附图说明
图1为uefibios中支持多种文件系统的驱动接口示意图;
图2为uefibios遍历存储设备及文件系统流程图。
具体实施方式
下面结合实施例和说明书附图对本发明做进一步说明,但不限于此。
实施例1
如图1-2所示。
一种在uefibios中实现多种文件系统的方法,包括步骤如下:
1)在uefibios中添加三个文件系统驱动;三个文件系统驱动为ext,iso9660和fat;
2)按照uefi驱动模型,为文件系统驱动匹配文件系统接口驱动;本步骤为步骤1)中的多个文件系统匹配一个统一的符合uefi规范的接口驱动;
3)文件系统接口驱动遍历系统中所有的存储设备;
4)针对每个存储设备,加载文件系统接口驱动,遍历所有文件系统,直至得到正确的文件系统驱动;
5)如果遍历所有文件系统后没有得到正确的文件系统驱动,则判定uefibios中没有可启动的设备。
实施例2
如实施例1所述的在uefibios中实现多种文件系统的方法,所不同的是,所述文件系统接口驱动包括blocklo和disklo。
实施例3
如实施例1所述的在uefibios中实现多种文件系统的方法,所不同的是,所述步骤4)的具体实现过程如下:
uefibios在运行到bds阶段进行存储设备和文件系统驱动的connect操作时,针对每个存储设备分区,通过文件系统接口驱动遍历所有的文件系统,并进行挂载操作,如果挂载成功,则判定对应的文件系统能够驱动当前的存储设备,则将对应的文件系统驱动安装到当前存储设备并停止遍历过程;如果挂载失败,则继续遍历,直至遍历到对应的文件系统;其中,uefibios为每个存储设备分区分配一个handle。