CN112631666B - 一种硬盘启动转网卡引导的无盘启动方法 - Google Patents
一种硬盘启动转网卡引导的无盘启动方法 Download PDFInfo
- Publication number
- CN112631666B CN112631666B CN202011596134.6A CN202011596134A CN112631666B CN 112631666 B CN112631666 B CN 112631666B CN 202011596134 A CN202011596134 A CN 202011596134A CN 112631666 B CN112631666 B CN 112631666B
- Authority
- CN
- China
- Prior art keywords
- boot
- hard disk
- syslinux
- network
- starting
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4416—Network booting; Remote initial program loading [RIPL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种硬盘启动转网卡引导的无盘启动方法,其将PXE模块内置于一个小容量的硬盘中,此硬盘中仅有PXE模块和网卡驱动,对硬盘的性能和容量要求极低,客户机借由常规的硬盘引导,进而加载PXE模块,进而使用网络启动,最终实现集中式控制的目的。本发明旨在使不具备PXE模块或对PXE兼容性差的客户机也可以使用网络启动技术,从而解决部分客户机无法使用无盘启动的问题,实现了硬盘引导转网络启动的目的,使所有类型的客户机均可以支持无盘网络启动,进一步提升集中管理***的硬件兼容性,使用户拥有更多的客户机硬件方案。
Description
技术领域
本发明属于客户机网络启动技术领域,具体涉及一种硬盘启动转网卡引导的无盘启动方法。
背景技术
客户机网络启动技术,是利用网络来虚拟一块磁盘,客户机使用该虚拟磁盘启动的一种技术。一般将***镜像存储于服务端(Server),客户端(Client)通过其自身网卡Rom中的启动代码,使用DHCP协议获取IP地址,使用TFTP协议下载镜像或引导文件,构建镜像或引导文件的运行环境,使客户端(Client)通过服务端的镜像启动,使用该技术的PC在网络方式下的运行速度甚至比有盘还要快。
常见的网络启动技术实现过程大致步骤如下:
(1)一般是借由开源项目iPXE(iPXE是PXE的扩展版)实现的,将iPXE编译后生成一个.kkpxe的可执行文件,.kkpxe文件一般放置于服务端;
(2)客户机设置BIOS为网卡启动后,会运行内置的PXE模块,PXE模块通过内置的DHCP协议获取服务端IP;
(3)PXE模块通过内置的TFTP协议从服务端下载.kkpxe文件并运行;
(4).kkpxe文件内部通过接管bios磁盘中断int 13虚拟一块磁盘,并且将该虚拟磁盘的读写等操作重定向到网络,进一步的将这些操作重定向到服务端的镜像文件中;
(5).kkpxe文件加载并运行虚拟磁盘中的***引导程序,将引导控制权交给***引导程序,***引导程序进而引导***启动。
上述客户机网络启动技术的主要优势如下:
①节省了客户机的存储成本,客户机不再需要硬盘等存储硬件。
②减少了存储冗余,所有的***镜像仅需要在服务端保存一份,而不需要每台客户机单独保存一份。
③天然的***还原管理,客户机可以重定向所有的硬盘写操作到服务端的临时文件中;客户机关机时,可以决定是否保存本次的***更改,如果不保存,则下次仍然使用预设的***还原点启动。
④集中式控制,服务器可以集中管理数台客户机,例如批量修改***配置、安装程序、增删文件等操作。
基于以上优势,客户机网络启动技术发展迅速,特别是针对IT管理人员,能极大的提升工作效率,大多数的硬件厂商均集成了PXE网络启动模块。
PXE(Preboot eXecution Environment)是Intel开发的一项用于通过网络来引导***的标准,延续至今,目前大多数网卡都内置PXE模块。虽然大多数网卡均具备PXE模块,可以支持网络启动,但是仍有一部分客户机网卡不具备PXE模块,例如无线网卡或者不具备PXE模块的网卡,导致其无法使用网络启动技术,进而无法享受集中式控制的便利。
发明内容
为了增强网络启动技术对客户机的兼容性,使更多型号的客户机可以使用集中式控制,本发明提供了一套能兼容所有类型客户机的集中式控制技术方案,相较于PXE模块内置于网卡的标准的网络启动技术,本发明将PXE模块内置于一个小容量的硬盘中,此硬盘中仅有PXE模块和网卡驱动,对硬盘的性能和容量要求极低,客户机借由常规的硬盘引导,进而加载PXE模块,进而使用网络启动,最终实现集中式控制的目的。相较于常规的网络启动技术,本发明牺牲了优势①,但同时获得了其他②③④的优势,特别是集中式控制的优势。
一种硬盘启动转网卡引导的无盘启动方法,包括如下步骤:
(1)基于开源项目iPXE进行修改,并将iPXE编译后生成一个boot.bin的可执行文件;
(2)制作一个用于引导boot.bin的硬盘备份文件.gho;
(3)在准备无盘启动时使用Ghost软件把.gho恢复到客户机硬盘中;
(4)设置客户机BIOS(Basic Input Output System),使其以硬盘启动;
(5)BIOS通过运行硬盘的syslinux,进而找到并运行boot.bin;
(6)最后由boot.bin初始化网卡并协同.kkpxe完成一系列无盘启动操作。
进一步地,所述iPXE是PXE的扩展版,支持更多协议,内部也可以实现PXE的功能,对iPXE进行修改即移除其中无用的功能,仅保留与PXE相关的功能。
进一步地,所述可执行文件boot.bin使用initialise函数初始化运行环境,同时使用DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)函数发出DHCP广播包,并获取DHCP服务器分配的IP信息,进而使用TFTP(Trivial File TransferProtocol,简单文件传送协议)函数从服务端下载可执行文件.kkpxe。一般网络启动环境中仅会在服务端部署一个DHCP服务器所以,DHCP服务器的地址也是服务端的地址。
进一步地,所述步骤(2)中制作硬盘备份文件.gho的过程如下:
2.1在Window***下***一块硬盘并建立一个主分区,格式化成FAT32格式;
2.2在主分区根目录中创建boot文件夹,在boot下创建syslinux文件夹并下载syslinux程序包(syslinux是一个功能强大的轻量级引导加载程序,可以从硬盘、光盘等设备中加载并运行引导文件);
2.3将syslinux程序包中的memdisk、vesamenu.c32、menu.c32、chain.c32、reboot.c32、syslinux.cfg拷贝到客户机硬盘的/boot/syslinux目录下;
2.4通过命令行运行syslinux程序包中的syslinux.exe,若硬盘分区盘符为F盘,则命令行管理员执行syslinux.exe–ma–d/boot/syslinux/F:,执行完成后,在/boot/syslinux/下会有多个ldlinux.sys;
2.5将boot.bin放入/boot目录下,修改syslinux.cfg,在其中添加boot.bin的引导路径;
2.6将该硬盘通过磁盘分区备份软件Ghost制作成硬盘备份文件.gho。
进一步地,所述步骤(6)中boot.bin首先会初始化运行环境以及网卡,进而通过内置的DHCP协议获取服务端IP,并通过内置的TFTP协议从服务端下载可执行文件.kkpxe并运行。
进一步地,当.kkpxe运行后,boot.bin会将引导权交由.kkpxe,.kkpxe内部通过接管BIOS磁盘中断int 13虚拟一块磁盘,并且将该虚拟磁盘的读写操作重定向到网络,进一步的将这些操作重定向到服务端的镜像文件中。
进一步地,所述可执行文件.kkpxe加载并运行虚拟磁盘中的***引导程序,将引导控制权交给***引导程序,***引导程序进而引导***启动。
本发明针对现有网络启动流程进行改进,基于Windows启动技术和网络启动技术,以兼容性更好的硬盘作为引导设备,进一步的引导为网络启动,旨在使不具备PXE模块或对PXE兼容性差的客户机也可以使用网络启动技术,从而解决部分客户机无法使用无盘启动的问题,实现了硬盘引导转网络启动的目的,使所有类型的客户机均可以支持无盘网络启动,进一步提升集中管理***的硬件兼容性,使用户拥有更多的客户机硬件方案。
附图说明
图1为常规客户机网络无盘启动流程示意图。
图2为本发明客户机网络无盘启动流程示意图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
常规的客户机网络无盘启动流程如图1所示:
①一般是借由开源项目ipxe实现的,将ipxe编译后生成一个.kkpxe的可执行文件;
②.kkpxe一般放置于服务端;
③客户机设置BIOS为网卡启动后,会运行内置的PXE模块;
④PXE模块通过内置的DHCP协议获取服务器IP;
⑤PXE模块通过内置的TFTP协议从服务端下载.kkpxe;
⑥PXE模块运行.kkpxe;
⑦.kkpxe内部通过接管BIOS磁盘中断int 13虚拟一块磁盘,并且将该虚拟磁盘的读写等操作重定向到网络,进一步的将这些操作重定向到服务端的镜像文件中;
⑧.kkpxe加载并运行虚拟磁盘中的***引导程序,将引导控制权交给***引导程序;
⑨***引导程序进而引导***启动。
本发明对上述网络启动流程进行改进,以兼容性更好的硬盘作为引导设备,进一步的引导为网络启动,解决了部分对PXE兼容性差的客户机也可以进行网络启动的问题。
如图2所示,本发明硬盘引导转网络无盘启动的方法包括如下步骤:
(1)基于开源项目iPXE修改,iPXE是PXE的扩展版,支持更多协议,内部也可以实现PXE的功能。修改移除无用功能,仅保留PXE相关的功能。编译后生成一个boot.bin的可执行文件。boot.bin操作如下:
1.1boot.bin使用initialise函数初始化运行环境;
1.2boot.bin使用DHCP函数发出dhcp广播包,并获取dhcp服务器分配的ip信息。一般网络启动环境中仅会在服务端部署一个dhcp服务,所以dhcp服务器的地址也是网络启动服务器的地址;
1.3boot.bin使用TFTP函数从服务端下载.kkpxe。
(2)制作一个可以引导boot.bin的硬盘备份文件.gho。
(3)在准备准备无盘启动的上使用Ghost软件把.gho恢复到客户机硬盘中。
(4)设置客户机BIOS,使其以硬盘启动。
(5)BIOS通过运行硬盘的syslinux,进而找到并运行boot.bin。
(6)boot.bin初始化运行环境。
(7)boot.bin初始化网卡。
(8)boot.bin通过内置的DHCP协议,获取到IP。
(9)boot.bin通过内置的TFTP协议下载.kkpxe并运行。
(10)boot.bin将引导权交由.kkpxe。
(11).kkpxe内部通过接管BIOS磁盘中断int 13虚拟一块磁盘,并且将该虚拟磁盘的读写等操作重定向到网络,进一步的将这些操作重定向到服务端的镜像文件中。
(12).kkpxe加载并运行虚拟磁盘中的***引导程序,将引导控制权交给***引导程序。
(13)***引导程序进而引导***启动。
实施例
首先部署厂商提供的无盘服务端,配置客户机与无盘服务端之间的网络,使其在同一个广播域下。
然后制作.gho文件,步骤如下:
①window***下***一块硬盘并建立一个主分区,格式化成FAT32格式。
②在主分区根目录中创建boot文件夹,在boot下创建syslinux文件夹。
③下载syslinux,syslinux是一个功能强大的轻量级引导加载程序,可以从硬盘、光盘等设备中加载并运行引导文件。
④将syslinux包中的memdisk、vesamenu.c32、menu.c32、chain.c32、reboot.c32、syslinux.cfg拷贝到客户机硬盘的/boot/syslinux目录下。
⑤通过命令行运行syslinux包中的syslinux.exe,假设硬盘分区盘符为F盘,命令行管理员执行syslinux.exe–ma–d/boot/syslinux/F:
⑥执行完成后,/boot/syslinux/下会有多个ldlinux.sys;
⑦将boot.bin放入/boot目录下;
⑧修改syslinux.cfg,在其中添加boot.bin的引导路径;
⑨将该硬盘通过磁盘分区备份软件制作成磁盘镜像文件,这里使用Ghost制作成.gho文件。
客户机硬盘刷写,有多种方法,这里仅列举2种常用的:
第一种步骤如下:
①准备一台刷写主机,安装Ghost软件;
②拆下客户机硬盘;
③使用usb转接线接入刷写主机;
④运行Ghost软件,选择要刷写的.gho文件,选择要刷写的客户机硬盘;
⑤刷写完成,正常弹出客户机硬盘;
⑥将客户机硬盘装会客户机。
第二种步骤如下:
①准备一个PE启动U盘,启动盘内有Ghost软件和要刷写的.gho文件;
②设置客户机bios为U盘启动;
③PE启动后,运行Ghost软件,选择要刷写的.gho文件,选择要刷写的客户机硬盘;
④刷写完成后拔掉U盘重启,恢复bios设置。
最后,客户机BIOS设置为硬盘引导,硬盘引导成功后,进一步的启动syslinux,syslinux启动boot.bin。
boot.bin初始化运行环境和网卡,boot.bin使用内置的DHCP协议发出DHCP请求,无盘服务端收到DHCP请求后分配响应的客户机IP;boot.bin使用内置的TFTP协议,从服务端下载.kkpxe网络启动文件并运行。
.kkpxe为标准的无盘启动过程,内部通过接管bios磁盘中断int 13虚拟一块磁盘,并且将该虚拟磁盘的读写等操作重定向到网络,进一步的将这些操作重定向到无盘服务端的镜像文件中。
kkpxe加载并运行虚拟磁盘中的***引导程序,将引导控制权交给***引导程序,***引导程序进而引导***启动。
上述对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明,熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。
Claims (1)
1.一种硬盘启动转网卡引导的无盘启动方法,包括如下步骤:
(1)基于开源项目iPXE进行修改,并将iPXE编译后生成一个boot.bin的可执行文件;所述iPXE是PXE的扩展版,支持更多协议,内部也可以实现PXE的功能,对iPXE进行修改即移除其中无用的功能,仅保留与PXE相关的功能;
所述可执行文件boot.bin使用initialise函数初始化运行环境,同时使用DHCP函数发出DHCP广播包,并获取DHCP服务器分配的IP信息,进而使用TFTP函数从服务端下载可执行文件.kkpxe;
(2)制作一个用于引导boot.bin的硬盘备份文件.gho,具体过程如下:
2.1 在Window***下***一块硬盘并建立一个主分区,格式化成FAT32格式;
2.2 在主分区根目录中创建boot文件夹,在boot下创建syslinux文件夹并下载syslinux程序包;
2.3 将syslinux程序包中的memdisk、vesamenu.c32、menu.c32、chain.c32、reboot.c32、syslinux.cfg拷贝到客户机硬盘的/boot/syslinux目录下;
2.4 通过命令行运行syslinux程序包中的syslinux.exe,若硬盘分区盘符为F盘,则命令行管理员执行syslinux.exe –ma –d /boot/syslinux/ F:,执行完成后,在/boot/syslinux/下会有多个ldlinux.sys;
2.5 将boot.bin放入/boot目录下,修改syslinux.cfg,在其中添加boot.bin的引导路径;
2.6 将该硬盘通过磁盘分区备份软件Ghost制作成硬盘备份文件.gho;
(3)在准备无盘启动时使用Ghost软件把.gho恢复到客户机硬盘中;
(4)设置客户机BIOS,使其以硬盘启动;
(5)BIOS通过运行硬盘的syslinux,进而找到并运行boot.bin;
(6)最后由boot.bin初始化网卡并协同.kkpxe完成一系列无盘启动操作,具体地:boot.bin首先会初始化运行环境以及网卡,进而通过内置的DHCP协议获取服务端IP,并通过内置的TFTP协议从服务端下载可执行文件.kkpxe并运行;当.kkpxe运行后,boot.bin会将引导权交由.kkpxe,.kkpxe内部通过接管BIOS磁盘中断int 13虚拟一块磁盘,并且将虚拟磁盘的读写操作重定向到网络,将这些操作重定向到服务端的镜像文件中;所述可执行文件.kkpxe加载并运行虚拟磁盘中的***引导程序,将引导控制权交给***引导程序,***引导程序进而引导***启动。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011596134.6A CN112631666B (zh) | 2020-12-29 | 2020-12-29 | 一种硬盘启动转网卡引导的无盘启动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011596134.6A CN112631666B (zh) | 2020-12-29 | 2020-12-29 | 一种硬盘启动转网卡引导的无盘启动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112631666A CN112631666A (zh) | 2021-04-09 |
CN112631666B true CN112631666B (zh) | 2023-01-31 |
Family
ID=75286113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011596134.6A Active CN112631666B (zh) | 2020-12-29 | 2020-12-29 | 一种硬盘启动转网卡引导的无盘启动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112631666B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102520978A (zh) * | 2011-11-22 | 2012-06-27 | 浪潮电子信息产业股份有限公司 | 一种基于AoE的便携式无盘镜像启动方法 |
CN106850825A (zh) * | 2017-02-23 | 2017-06-13 | 中南大学 | 一种移动透明计算环境下客户端块级缓存优化方法 |
CN107463388A (zh) * | 2017-09-21 | 2017-12-12 | 成都领沃网络技术有限公司 | 一种uefi无盘启动方法 |
CN112068892A (zh) * | 2020-09-04 | 2020-12-11 | 杭州雾联科技有限公司 | 一种基于uefi技术的无盘工作站启动方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2512376A (en) * | 2013-03-28 | 2014-10-01 | Ibm | Secure execution of software modules on a computer |
-
2020
- 2020-12-29 CN CN202011596134.6A patent/CN112631666B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102520978A (zh) * | 2011-11-22 | 2012-06-27 | 浪潮电子信息产业股份有限公司 | 一种基于AoE的便携式无盘镜像启动方法 |
CN106850825A (zh) * | 2017-02-23 | 2017-06-13 | 中南大学 | 一种移动透明计算环境下客户端块级缓存优化方法 |
CN107463388A (zh) * | 2017-09-21 | 2017-12-12 | 成都领沃网络技术有限公司 | 一种uefi无盘启动方法 |
CN112068892A (zh) * | 2020-09-04 | 2020-12-11 | 杭州雾联科技有限公司 | 一种基于uefi技术的无盘工作站启动方法 |
Non-Patent Citations (1)
Title |
---|
从无盘启动看 Linux 启动原理;良许Linux;《https://jishuin.proginn.com/p/763bfbd32314》;20201123;正文第1-20页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112631666A (zh) | 2021-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7379982B2 (en) | System and method for custom installation of an operating system on a remote client | |
US20060080522A1 (en) | Method, apparatus, and system for facilitating secure computing | |
US9081747B1 (en) | Computer program deployment to one or more target devices | |
US8086836B2 (en) | Method and apparatus for virtualization of appliances | |
KR100553921B1 (ko) | 크기면에서 응용 프로그램 성장을 수용하는 드라이브 분할기법을 이용하는 어플라이언스 서버 | |
US20060288168A1 (en) | Transportable computing environment | |
US20020184484A1 (en) | Automatic appliance server re-provision/re-purposing method | |
US20100132042A1 (en) | Method for upgrading antivirus software and terminal and system thereof | |
CN103746833A (zh) | 基于pxe的raid自动配置方法和*** | |
CN101014034A (zh) | 一种基于u盘服务器的集群解决方法 | |
US20090083375A1 (en) | Installation of a Virtualization Environment | |
CN107463388B (zh) | 一种uefi无盘启动方法 | |
CN101438266A (zh) | 按照离散的级引导操作*** | |
CN111966423B (zh) | 一种实现内存操作***的方法和设备 | |
CN107391193A (zh) | 一种客户端、配置服务器的***和方法 | |
US7234053B1 (en) | Methods for expansive netboot | |
CN113391828B (zh) | 实现***盘raid划分并安装操作***的方法和*** | |
CN112068892A (zh) | 一种基于uefi技术的无盘工作站启动方法 | |
CN112631666B (zh) | 一种硬盘启动转网卡引导的无盘启动方法 | |
WO2006045217A1 (en) | Incremental provisioning of software | |
CN1567198A (zh) | 一种机群跨平台并行***镜像备份的方法 | |
Nusairat et al. | Raspberry pi | |
CN111324384B (zh) | 于预执行环境依装置消息选择开机图像文件的装置及方法 | |
CN111813337A (zh) | 一种基于Kickstart安装***的RAID自动配置方法及装置 | |
KR100463838B1 (ko) | 유아이에이 시스템을 위한 부트로더의 프로그램 다운로드및 엔에프에스 개발환경 지원방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |