本发明涉及计算机bios设计技术,尤其涉及一种国产平台bios启动ext文件系统的方法。
背景技术:
现国产平台操作系统均都基于linux内核进行开发,其文件系统大多采用ext文件系统。
ext文件系统将分区分成多个块组,块组包含以下几个部分。超级块:这个区域记载了数据块和索引节点总量、可用量、每个块和索引节点的大小、日志系统的大小、文件系统的挂载时间等数据。组描述符:记录了超级块、数据块位图、数据块的起止块。索引节点位图:记录了所有索引节点的占用情况、每次写入文件前先要查找这个位图、确定使用的空索引节点。数据位图和其含义类似。索引节点表:记录了所有文件夹、文件的属性和数据块存储号,查找到文件的索引节点后就可以获得数据存储的块号,一次性将数据全部读取出来。数据块:实际存储数据的地方,ext2中每个块的大小可以为1k,2k,4k。
但开源bios平台如udk只支持fat,并没有对linux系统原生态文件系统ext进行支持。
技术实现要素:
为了解决以上技术问题,本发明提出了一种国产平台bios启动ext文件系统的方法。通过在udk开源bios中开发ext驱动,实现国产平台bios直接采用ext文件系统引导操作系统,其有利于国产平台自主化发展和提高其兼容性。
根据ext文件系统需要实现超组块,块描述符,索引节点,文件目录项等数据结构。同时实现识别文件系统、打开文件、读取文件和关闭文件系统函数,将其封装成ext驱动。
在ext驱动入口处安装uefidrivermode的drvierbinding协议和componentname协议,用于驱动的安装和卸载。drvierbinding协议的核心是support、start和stop这三个成员函数。support函数用于检测一个设备是否支持ext驱动,start用于将ext安装到设备上,stop用于将驱动从设备上卸载。在start函数中,读取superblock,并根据其字段判断该分区是否支持ext文件系统,若是便将ext解析函数封装为一个ext协议,并安装在该控制器上。
在bootoption枚举函数中,检索各个装有ext协议的控制器是否有我们所需要的bootloader,如果有为其注册boororder选项。当用户设置此boororder为第一选项时,在loadimage中,添加使用ext驱动数据读取程序段,用于读取ext文件系统中的osloader,以启动操作系统。
附图说明
图1是ext文件系统结构示意图;
图2是ext文件数据结构示意图。
具体实施方式
下面对本发明的内容进行更加详细的阐述:
本发明设计对计算机bios设计,计算机设备包括服务器、笔记本、平板电脑、台式机等;主要适用于基于uefi架构的bios进行设计。
本发明的操作步骤为:
1).封装ext驱动,因为其会为很多控制器提供驱动,所以类型选择uefi_driver。
2).在驱动入口处,安装binding协议。
3).在supported函数中,规定非装有diskio和blockio的控制器不得进入。
4).在start函数中,读取superblock,并根据其字段判断该分区是否支持ext文件系统,若是便将ext解析函数封装为一个ext协议,并安装在该控制器上。
5).在bootoption枚举函数中,检索各个装有ext协议的控制器是否有所需要的bootloader,如果有,便为其注册boororder选项。
6).在loadimage中,在fat读取程序段下面,添加ext数据读取程序段。