一种用户态虚拟网卡的自动探测方法

文档序号:6517904阅读:300来源:国知局
一种用户态虚拟网卡的自动探测方法
【专利摘要】本发明实施例提供了一种用户态虚拟网卡的自动探测方法实现了在用户态虚拟网卡驱动加载时简单高效的自动探测虚拟网卡信息。本发明实施例提供的一种用户态虚拟网卡的自动探测方法,应用于安装有自编译的操作系统的虚拟机上,包括:配置所述操作系统的内核生成新内核;在所述内核的脚本文件下添加语句,以文件形式保存所述内核探测到的PCI设备信息;编译所述新内核并生成内核镜像文件,修改所述内核的启动项引导所述内核镜像文件启动;在所述内核镜像文件启动过程中,用户态从所述PCI设备信息中提取虚拟网卡信息。
【专利说明】一种用户态虚拟网卡的自动探测方法
【技术领域】
[0001]本发明涉及计算机【技术领域】,具体涉及一种用户态虚拟网卡的自动探测方法。
技术背景
[0002]用户态在计算机结构指两项类似的概念。在CPU的设计中,用户态指非特权状态,在此状态下,执行的代码被硬件限定,不能进行某些操作。在操作系统的设计中,用户态也类似,指非特权的执行状态。内核禁止此状态下的代码进行潜在危险的操作,比如写入系统配置文件、杀掉其他用户的进程、重启系统等。
[0003]当一个任务(进程)执行系统调用而陷入内核代码中执行时,称进程处于内核运行态或简称为内核态。此时处理器处于特权级最高的(O级)内核代码中执行。当进程在执行用户自己的代码时,则称其处于用户运行态或简称为用户态。即此时处理器在特权级最低的(3级)用户代码中运行。
[0004]虚拟网卡,即用软件模拟网络环境,主要是建立远程计算机间的局域网。
[0005]现在虚拟机上虚拟网卡的用户态驱动加载已有实现,但是如何做到虚拟网卡的自动探测还是鲜为人知。

【发明内容】

[0006]本发明主要提供了一种用户态虚拟网卡的自动探测方法实现了在用户态虚拟网卡驱动加载时简单高效的自动探测虚拟网卡信息。
[0007]本发明实施例提供的一种用户态虚拟网卡的自动探测方法,应用于安装有自编译的操作系统的虚拟机上,包括:配置所述操作系统的内核生成新内核;在所述内核的脚本文件下添加语句,以文件形式保存所述内核探测到的PCI设备信息;编译所述新内核并生成内核镜像文件,修改所述内核的启动项引导所述内核镜像文件启动;在所述内核镜像文件启动过程中,用户态从所述PCI设备信息中提取虚拟网卡信息。
[0008]其中,所述配置所述操作系统的内核生成新内核包括:修改所述内核的配置文件,点选网络设备驱动选项,以使得所述内核支持所述虚拟机磁盘驱动类型,并使所述内核不再探测加载网卡驱动;
[0009]修改所述操作系统的输出配置,将所述操作系统信息显示由串行端口终端修改为所述虚拟机使用的控制台终端显示;
[0010]修改所述内核的脚本文件,使所述操作系统挂载所述虚拟机中的存储设备。
[0011]其中,所述在所述内核的脚本文件下添加语句,以文件形式保存内核探测到的PCI设备信息包括:在所述内核的脚本文件下添加语句,将PCI设备查看工具显示的设备信息以文件形式保存在挂载的所述存储设备目录下。
[0012]其中,所述PCI设备信息包括总线编号、设备编号、功能编号、设备类别码、设备卖家ID号及设备类型。
[0013]其中,所述用户态从所述PCI设备信息中提取虚拟网卡信息之前包括:用户态以文件形式打开所述PCI设备文件信息。
[0014]其中,所述操作系统为Linux操作系统;所述虚拟机为VMware虚拟机。
[0015]其中,所述配置所述操作系统的内核包括:配置Linux内核.config文件,点选SCSI device support 下相关选项及 VMware PVSCSI driver support 选项,使内核支持VMware虚拟机磁盘驱动类型,点选Network device support选项,使所述内核不编译网卡驱动部分代码,内核不再探测加载网卡驱动;
[0016]修改etc下的inittab文件,将Linux系统信息显示由串行端口终端(/dev/ttySn)修改为VMware使用的控制台终端(/dev/ttyn)显示;
[0017]修改etc/init.d/下的rcS文件,挂载VMware虚拟机中的存储设备(mount/dev/sdal/home)。
[0018]其中,所述在所述内核的脚本文件下添加语句,以文件形式保存内核探测到的PCI设备信息包括:添加语句:lspci > /home/pcidev,将Ispci显示的设备信息以pcidev文件形式保存在挂载的存储设备目录下。
[0019]其中,所述修改所述内核的启动项引导所述内核镜像文件启动包括:修改VMware虚拟机上Linux内核的grub文件,新增启动项,引导内核镜像文件启动。
[0020]本发明实施例提供的一种用户态虚拟网卡的自动探测方法,应用于安装有自编译的操作系统的虚拟机上,通过配置编译内核,提取设备中网卡信息,实现用户态虚拟网卡的自动探测,减少了系统性能损耗,提高CPU利用率。
【专利附图】

【附图说明】
[0021]图1所示为本发明实施例提供的用户态虚拟网卡的自动探测方法流程图:
[0022]图2所示为本发明一实施例提供的配置内核的方法流程图。
【具体实施方式】
[0023]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0024]本发明实施例提供了一种用户态虚拟网卡的自动探测方法,可以实现在用户态虚拟网卡驱动加载时自动探测虚拟网卡信息,该方法应用于安装有自编译的操作系统的虚拟机上。
[0025]图1所示为本发明实施例提供的用户态虚拟网卡的自动探测方法流程图。如图1所示,该方法包括:
[0026]步骤100:配置虚拟上当前操作系统的内核生成新内核。
[0027]修改内核的配置文件,点选网络设备驱动选项,使得内核支持虚拟机磁盘驱动类型,并使内核不再探测加载网卡驱动,将操作系统信息显示由串行端口终端修改为虚拟机使用的控制台终端显示,修改内核的脚本文件,使操作系统挂载虚拟机中的存储设备。
[0028]步骤200:在该内核的脚本文件下添加语句,以文件形式保存该内核探测到的PCI设备信息。[0029]在内核脚本文件下添加语句,将内核探测到的PCI设备信息以文件形式保存在挂载的存储设备目录下,这样就保存到了内核探测到的所有PCI设备信息。其中,内核探测到的PCI设备信息包括:总线编号、设备编号、功能编号、设备类别码、设备卖家ID号及设备类型。
[0030]步骤300:编译新内核并生成内核镜像文件,修改内核的启动项引导该内核镜像文件启动。
[0031]步骤400:在内核镜像文件启动过程中,用户态从PCI设备信息中提取虚拟网卡信
肩、O
[0032]用户态程序以文件形式打开在内核启动过程中保存的探测到的所有PCI设备信息,然后根据虚拟网卡的类别码(Class Code) 0x0200从所有PCI设备的信息中将虚拟网卡的设备信息提取出来,并保存到全局变量中,供用户态初始化虚拟网卡驱动使用。
[0033]在本发明一实施例中,用户态虚拟网卡的自动探测基于Linux内核实现,在装有Linux系统的VMware虚拟机上,修改内核的grub引导编译的内核,来实现VMware虚拟机上的虚拟网卡自动探测。
[0034]图2所示为本发明一实施例提供的配置内核的方法流程图。在装有Linux系统的VMware虚拟机上,该方法包括:
[0035]步骤101:配置Linux内核.config文件,点选SCSI device support下相关选项及VMware PVSCSI driver support选项,使内核支持VMware虚拟机磁盘驱动类型,点选Network device support选项,使所述内核不编译网卡驱动部分代码,内核不再探测加载网卡驱动;
[0036]步骤102:修改etc下的inittab文件,将Linux系统信息显示由串行端口终端(/dev/ttySn)修改为VMware使用的控制台终端(/dev/ttyn)显示;
[0037]步骤103:修改etc/init.d/下的rcS文件,挂载VMware虚拟机中的存储设备(mount/dev/sdal/home)。
[0038]在对内核进行配置修改后,还包括对PCI设备文件信息的存储,包括:添加语句:Ispci > /home/pcidev,将Ispci显示的设备信息以pcidev文件形式保存在挂载的存储设备目录下,这样就保存到了内核探测到的所有PCI设备信息。
[0039]在Linux系统中,使用Ispci来显示系统中所有PCI总线设备或连接到该总线上的所有设备。一般显示格式如下:
[0040]虚拟网卡设备:00:19.0Class0200:8086:10ef
[0041]其他PCI 设备:00:10.lClass0880:8086:dl58
[0042]其中,00:19.0分别表示设备的总线编号(00)、设备编号(19)、功能编号(0);0200就是虚拟网卡的类别码;8086是intel的venID (设备卖家ID) ;10ef就是Devid (设备类型)。
[0043]编译配置后生成的新内核生成内核镜像文件,修改VMware虚拟机上Linux内核的grub文件(/boot/grub/menu.1st),新增启动项,引导内核镜像文件启动。在内核镜像文件启动过程中,用户态程序以设备文件形式打开在内核启动过程中保存的探测到的所有PCI设备信息/home/pcidev,然后从所有PCI设备的信息中根据虚拟网卡的类别码(ClassCode)0X0200将虚拟网卡的设备信息提取出来并保存到全局变量中,供用户态初始化虚拟网卡驱动使用。
[0044]本发明实施例提供的一种用户态虚拟网卡的自动探测方法,应用于安装有自编译的操作系统的虚拟机上,通过配置编译内核,提取设备中网卡信息,实现用户态虚拟网卡的自动探测,减少了系统性能损耗,提高CPU利用率。
[0045]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种用户态虚拟网卡的自动探测方法,特征在于,应用于安装有自编译的操作系统的虚拟机上,所述方法包括: 配置所述操作系统的内核生成新内核; 在所述内核的脚本文件下添加语句,以文件形式保存所述内核探测到的PCI设备信息; 编译所述新内核并生成内核镜像文件,修改所述内核的启动项引导所述内核镜像文件启动; 在所述内核镜像文件启动过程中,用户态从所述PCI设备信息中提取虚拟网卡信息。
2.根据权利要求1所述的方法,其特征在于,所述配置所述操作系统的内核生成新内核包括: 修改所述内核的配置文件,点选网络设备驱动选项,以使得所述内核支持所述虚拟机磁盘驱动类型,并使所述内核不再探测加载网卡驱动; 修改所述操作系统的输出配置,将所述操作系统信息显示由串行端口终端修改为所述虚拟机使用的控制台终端显示; 修改所述内核的脚本文件,使所述操作系统挂载所述虚拟机中的存储设备。
3.根据权利要求1所述的方法,其特征在于,所述在所述内核的脚本文件下添加语句,以文件形式保存内核探测到的PCI设备信息包括:在所述内核的脚本文件下添加语句,将PCI设备查看工具显示的设备信息以文件形式保存在挂载的所述存储设备目录下。
4.根据权利要求1所述的方法,其特征在于,所述PCI设备信息包括总线编号、设备编号、功能编号、设备类别码、设备卖家ID号及设备类型。
5.根据权利要求1所述的方法,其特征在于,所述用户态从所述PCI设备信息中提取虚拟网卡信息之前包括:用户态以文件形式打开所述PCI设备文件信息。
6.根据权利要求1至5任一所述的方法,其特征在于,所述操作系统为Linux操作系统;所述虚拟机为VMware虚拟机。
7.根据根据权利要求6所述的方法,其特征在于,所述配置所述操作系统的内核包括: 配置Linux内核.config文件,点选SCSI device support下相关选项及VMwarePVSCSI driver support选项,使内核支持VMware虚拟机磁盘驱动类型,点选Networkdevice support选项,使所述内核不编译网卡驱动部分代码,内核不再探测加载网卡驱动; 修改etc下的inittab文件,将Linux系统信息显示由串行端口终端(/dev/ttySn)修改为VMware使用的控制台终端(/dev/ttyn)显示; 修改etc/init.d/下的rcS文件,挂载VMware虚拟机中的存储设备(mount/dev/sdal/home)。
8.根据权利要求6所述的方法,其特征在于,所述在所述内核的脚本文件下添加语句,以文件形式保存内核探测到的PCI设备信息包括:添加语句:lspci > /home/pcidev,将Ispci显示的设备信息以pcidev文件形式保存在挂载的存储设备目录下。
9.根据权利要求6所述的方法,其特征在于,所述修改所述内核的启动项引导所述内核镜像文件启动包括:修改VMware虚拟机上Linux内核的grub文件,新增启动项,引导内核镜像文件启动。
【文档编号】G06F9/455GK103631639SQ201310542133
【公开日】2014年3月12日 申请日期:2013年11月4日 优先权日:2013年11月4日
【发明者】高福亮 申请人:天津汉柏信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1