一种虚拟网卡的自动探测及驱动加载方法技术

技术编号:9794449 阅读:91 留言:0更新日期:2014-03-21 18:40
本发明专利技术实施例提供了一种虚拟网卡的自动探测及驱动加载方法,实现了在用户态虚拟网卡的自动探测及驱动加载。本发明专利技术实施例提供的一种虚拟网卡的自动探测及驱动加载方法,应用于安装有自编译的操作系统的虚拟机上,包括:配置所述操作系统的内核,将网卡驱动信息编译进所述内核,生成新内核;编译所述新内核并生成内核镜像文件,修改所述内核的启动项引导所述内核镜像文件启动;内核启动初始化阶段,并在探测并保存虚拟网卡信息后终止;在所述内核镜像文件启动过程中,用户态获取所述内核探测到的虚拟网卡信息;用户态根据所述虚拟网卡信息以及所述网卡驱动信息初始化虚拟网卡并加载驱动。

【技术实现步骤摘要】

本专利技术涉及计算机
,具体涉及。技术背景操作系统是通过各种驱动程序来驾驭硬件设备,它为用户屏蔽了各种各样的设备,驱动硬件是操作系统最基本的功能,并且提供统一的操作方式。正如我们查看屏幕上的文档时,不用去管到底使用NVIDIA芯片,还是ATI芯片的显示卡,只需知道输入命令后,需要的文字就显示在屏幕上。硬件驱动程序是操作系统最基本的组成部分,在Linux内核源程序中也占有较高的比例。内核加载驱动报文收发会随着报文的大量冲击引发的大量中断消耗一定的CPU资源(特别是X86体系结构);作为虚拟网卡驱动,驱动程序的数据接收和发送并不直接和真实网卡打交道,而是通过用户态来转交,这就需要内核态和用户态之间数据的交互,Linux操作系统的内核态到用户态的数据拷贝损失的性能也是包处理设备无法充分利用多核CPU的原因,特别是在VMware虚拟多个PC的情况下,内核驱动加载的缺点将更加明显。
技术实现思路
本专利技术提供了,将虚拟网卡的自动探测和驱动加载以及网络数据报文的处理均放在用户态,实现了在用户态虚拟网卡的自动探测及驱动加载。本专利技术实施例提供的,应用于安装有自编译的操作系统的虚拟机上,包括:配置所述操作系统的内核,将网卡驱动信息编译进所述内核,生成新内核;编译所述新内核并生成内核镜像文件,修改所述内核的启动项弓I导所述内核镜像文件启动;内核启动初始化阶段,并在探测并保存虚拟网卡信息后终止;在所述内核镜像文件启动过程中,用户态获取所述内核探测到的虚拟网卡信息;用户态根据所述虚拟网卡信息以及所述网卡驱动信息初始化虚拟网卡并加载驱动。其中,所述配置所述操作系统的内核,将网卡驱动信息编译进所述内核,生成新内核,包括:修改所述内核的配置文件,点选网络设备驱动选项,使所述内核编译网卡驱动部分代码并支持所述虚拟机磁盘驱动类型;修改所述操作系统的输出配置,将所述操作系统信息显示由串行端口终端修改为所述虚拟机使用的控制台终端显示。其中,在内核启动初始化阶段之前,进一步包括:所述操作系统申请大块连续内存;及通过操作系统内存映射,将内存的物理地址映射为用户态地址。其中,所述内核启动初始化阶段,并在探测并保存虚拟网卡信息后终止,包括:PCI驱动加载调用统一的接口注册各个驱动,扫描PCI总线上的所有设备,根据驱动与设备的标识信息的匹配情况,判定驱动与设备匹配后,保存探测到的虚拟网卡信息,并终止。其中,所述在所述内核镜像文件启动过程中,用户态获取所述内核探测到的虚拟网卡信息包括:用户态通过接口函数访问内核态,获取内核探测到的虚拟网卡信息。其中,所述虚拟网卡信息包括网卡类型、虚拟网卡个数、对应的驱动类型以及虚拟网卡作为PCI设备的设备信息。其中,所述虚拟网卡作为PCI设备的设备信息,包括:虚拟网卡设备所对应的总线编号、设备编号及功能编号。其中,所述用户态根据所述虚拟网卡信息以及所述网卡驱动信息初始化虚拟网卡并加载驱动包括:配置虚拟网卡的使能、收发包资源并根据获取的虚拟网卡类型加载相应的驱动以及根据获取的虚拟网卡个数加载相应次数驱动。其中,所述操作系统为Linux操作系统;所述虚拟机为VMware虚拟机。其中,所述配置内核,将网卡驱动编译进内核,包括:配置Linux内核.config文件,点选 Network device support、SCSI device support 下相关选项及 VMware PVSCSIdriver support选项,使内核编译网卡驱动部分代码并支持VMware虚拟机磁盘驱动类型;修改etc下的inittab文件,将Linux系统信息显示由串行端口终端修改为VMware使用的控制台终端显不。本专利技术实施例提供的,应用于安装有自编译的操作系统的虚拟机上,待用户态获取内核保存的信息后,用户态初始化虚拟网卡驱动及配置资源,将虚拟网卡的自动探测和驱动加载以及网络数据报文的处理均放在用户态,实现了在用户态虚拟网卡的自动探测及驱动加载,进而可以消除内核态驱动带来的系统调用及数据包拷贝的高额开销,减少了系统性能损耗,提高CPU利用率。【附图说明】图1所示为本专利技术实施例提供的虚拟网卡的自动探测及驱动加载方法流程图。【具体实施方式】下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术实施例提供了,应用于安装有自编译的操作系统的虚拟机上,将虚拟网卡的自动探测和驱动加载以及网络数据报文的处理均放在用户态,可以实现用户态虚拟网卡的自动探测及驱动加载。图1所示为本专利技术实施例提供的虚拟网卡的自动探测及驱动加载方法流程图。如图1所示,该方法包括:步骤100:配置操作系统的内核,将网卡驱动信息编译进该内核,生成新内核。修改内核的配置文件,点选网络设备驱动选项,使内核编译网卡驱动部分代码并支持虚拟机磁盘驱动类型;修改操作系统的输出配置,将该操作系统信息显示由串行端口终端修改为虚拟机使用的控制台终端显示。步骤200:编译新内核并生成内核镜像文件,修改内核的启动项引导该内核镜像文件启动。步骤300:内核启动初始化阶段,并在探测并保存虚拟网卡信息后终止。内核启动初始化阶段,PCI驱动加载会调用统一的接口注册各个驱动,然后扫描PCI总线上的所有设备。根据驱动与设备的标识信息的匹配情况,判定驱动与设备是否匹配。在PCI驱动与设备匹配的过程中,根据虚拟网卡类别码(Class Code)单独处理虚拟网卡,即在内核探测到虚拟网卡驱动和虚拟网卡设备匹配后把需要的所有信息,包括虚拟网卡类型、个数、对应的驱动类型,以及虚拟网卡所对应的总线编号、设备编号、功能编号,保存在全局变量中,然后直接返回,不再初始化虚拟网卡,留待用户态获取内核保存的信息后,去初始化虚拟网卡驱动及配置资源。步骤400:在内核镜像文件启动过程中,用户态获取内核探测到的虚拟网卡信息。步骤500:用户态根据获取的虚拟网卡信息以及网卡驱动信息初始化虚拟网卡并加载驱动。操作系统初始化过程中,完成PCI操作内核模块的注册,用户态通过设备接口函数可以对内核函数进行调用,用户态通过接口函数访问内核态,获取内核探测到的虚拟网卡信息,根据虚拟网卡信息配置虚拟网卡的使能、收发包资源并根据获取的虚拟网卡类型加载相应的驱动以及根据获取的虚拟网卡个数加载相应次数驱动。在本专利技术一实施例中,用户态虚拟网卡的自动探测及驱动加载基于Linux内核实现,在装有Linux系统的VMware虚拟机上,需要修改内核的grub引导编译的内核,来实现VMware虚拟机上的虚拟网卡自动探测及驱动加载。其中,配置Linux内核,将网卡驱动编译进内核,包括:配置Linux 内核.config 文件,点选 Network device support、SCSI devicesupport下相关选项及VMware PVSCSI driver support选项,使内核编译网卡驱动部分代码并支持VMware虚拟机磁盘驱动类型;修改etc下的inittab文件,将Linux系统信息显示由串行端口终端修改为VMware使用的控本文档来自技高网...

【技术保护点】
一种虚拟网卡的自动探测及驱动加载方法,特征在于,应用于安装有自编译的操作系统的虚拟机上,所述方法包括:配置所述操作系统的内核,将网卡驱动信息编译进所述内核,生成新内核;编译所述新内核并生成内核镜像文件,修改所述内核的启动项引导所述内核镜像文件启动;所述内核启动初始化阶段,并在探测并保存虚拟网卡信息后终止;在所述内核镜像文件启动过程中,用户态获取所述内核探测到的虚拟网卡信息;用户态根据所述虚拟网卡信息以及所述网卡驱动信息初始化虚拟网卡并加载驱动。

【技术特征摘要】
1.一种虚拟网卡的自动探测及驱动加载方法,特征在于,应用于安装有自编译的操作系统的虚拟机上,所述方法包括: 配置所述操作系统的内核,将网卡驱动信息编译进所述内核,生成新内核; 编译所述新内核并生成内核镜像文件,修改所述内核的启动项引导所述内核镜像文件启动; 所述内核启动初始化阶段,并在探测并保存虚拟网卡信息后终止; 在所述内核镜像文件启动过程中,用户态获取所述内核探测到的虚拟网卡信息; 用户态根据所述虚拟网卡信息以及所述网卡驱动信息初始化虚拟网卡并加载驱动。2.根据权利要求1所述的方法,其特征在于,所述配置所述操作系统的内核,将网卡驱动信息编译进所述内核,生成新内核,包括: 修改所述内核的配置文件,点选网络设备驱动选项,使所述内核编译网卡驱动部分代码并支持所述虚拟机磁盘驱动类型; 修改所述操作系统的输出配置,将所述操作系统信息显示由串行端口终端修改为所述虚拟机使用的控制台终端显示。3.如权利要求1所述的方法,其特征在于,在内核启动初始化阶段之前,进一步包括: 所述操作系统申请大块连续内存;及通过操作系统内存映射,将内存的物理地址映射为用户态地址。4.根据权利要求1所述的方法,其特征在于,所述内核启动初始化阶段,并在探测并保存虚拟网卡信息后终止,包括: PCI驱动加载调用统一的接口注册各个驱动,扫描PCI总线上的所有设备,根据驱动与设备的标识信息的匹配情况,判定驱动与设备匹配后,保存探测到的虚拟网卡信息,并终止。5.根据权利要求1所述...

【专利技术属性】
技术研发人员:高福亮
申请(专利权)人:天津汉柏信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1