本技術(shù)涉及虛擬機(jī),特別是涉及一種windows虛擬機(jī)啟動(dòng)加速方法、裝置、計(jì)算機(jī)設(shè)備、計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)和計(jì)算機(jī)程序產(chǎn)品。
背景技術(shù):
1、隨著云計(jì)算和虛擬化技術(shù)的快速發(fā)展,虛擬機(jī)的啟動(dòng)速度和運(yùn)行效率成為了衡量虛擬化平臺(tái)性能的重要指標(biāo)之一。在虛擬化領(lǐng)域,kvm(kernel-based?virtual?machine)作為一種開源的硬件輔助虛擬化解決方案,因其高性能和穩(wěn)定性而被廣泛應(yīng)用于服務(wù)器虛擬化場(chǎng)景。qemu(quick?emulator)作為kvm的虛擬機(jī)監(jiān)視器軟件系統(tǒng),能夠配合kvm實(shí)現(xiàn)高效的硬件輔助虛擬化。
2、在windows系統(tǒng)的linux虛擬機(jī)的啟動(dòng)過程中,啟動(dòng)方式主要是通過開源bios(基本輸入輸出系統(tǒng))加載磁盤的mbr(master?boot?record,主引導(dǎo)扇區(qū)),然后mbr加載vbr(volume?boot?record,卷引導(dǎo)扇區(qū))等逐級(jí)鏈?zhǔn)郊虞d進(jìn)行引導(dǎo)啟動(dòng),這種方式啟動(dòng)流程較為繁瑣,導(dǎo)致啟動(dòng)速度較慢。
3、因此,亟需一種windows虛擬機(jī)啟動(dòng)加速方法、裝置、計(jì)算機(jī)設(shè)備、計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)和計(jì)算機(jī)程序產(chǎn)品,在啟動(dòng)windows虛擬機(jī)時(shí),能夠簡(jiǎn)化啟動(dòng)流程,提高啟動(dòng)速度。
技術(shù)實(shí)現(xiàn)思路
1、基于此,有必要針對(duì)上述技術(shù)問題,提供一種在啟動(dòng)windows虛擬機(jī)時(shí),能夠簡(jiǎn)化啟動(dòng)流程,提高啟動(dòng)速度的windows虛擬機(jī)啟動(dòng)加速方法、裝置、計(jì)算機(jī)設(shè)備、計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)和計(jì)算機(jī)程序產(chǎn)品。
2、第一方面,本技術(shù)提供了一種windows虛擬機(jī)啟動(dòng)加速方法,包括:
3、在windows虛擬機(jī)的啟動(dòng)過程中,利用option?rom機(jī)制編譯生成啟動(dòng)固件;
4、初始化虛擬機(jī)監(jiān)視器qemu,并利用所述虛擬機(jī)監(jiān)視器qemu讀取啟動(dòng)管理器文件boot?manager,獲得啟動(dòng)管理器文件boot?manager的相關(guān)數(shù)據(jù),所述相關(guān)數(shù)據(jù)包括內(nèi)存加載地址和文件內(nèi)容;
5、通過基本輸入輸出系統(tǒng)seabios加載所述啟動(dòng)固件;
6、利用所述虛擬機(jī)監(jiān)視器qemu,將所述文件內(nèi)容存入所述內(nèi)存加載地址對(duì)應(yīng)的目標(biāo)內(nèi)存區(qū)域中;
7、利用所述啟動(dòng)固件,加載所述目標(biāo)內(nèi)存區(qū)域中啟動(dòng)管理器文件boot?manager的文件內(nèi)容。
8、在其中一個(gè)實(shí)施例中,所述相關(guān)數(shù)據(jù)還包括文件所占內(nèi)存;所述將所述文件內(nèi)容存入所述內(nèi)存加載地址對(duì)應(yīng)的目標(biāo)內(nèi)存區(qū)域中之前,包括:
9、將所述文件所占內(nèi)存的大小作為匹配條件,匹配得到目標(biāo)內(nèi)存區(qū)域。
10、在其中一個(gè)實(shí)施例中,所述將所述文件內(nèi)容存入所述內(nèi)存加載地址對(duì)應(yīng)的目標(biāo)內(nèi)存區(qū)域中之后,還包括:
11、利用所述虛擬機(jī)監(jiān)視器qemu將所述內(nèi)存加載地址發(fā)送至所述啟動(dòng)固件;
12、所述利用所述啟動(dòng)固件,加載所述目標(biāo)內(nèi)存區(qū)域中啟動(dòng)管理器文件boot?manager的文件內(nèi)容,包括:
13、利用所述啟動(dòng)固件,根據(jù)所述內(nèi)存加載地址,加載所述目標(biāo)內(nèi)存區(qū)域中啟動(dòng)管理器文件boot?manager的文件內(nèi)容。
14、在其中一個(gè)實(shí)施例中,所述將所述文件內(nèi)容存入所述內(nèi)存加載地址對(duì)應(yīng)的目標(biāo)內(nèi)存區(qū)域中之后,還包括:
15、對(duì)所述啟動(dòng)固件相關(guān)的通用寄存器和段寄存器進(jìn)行復(fù)位處理;
16、獲取windows虛擬機(jī)的配置數(shù)據(jù);
17、根據(jù)windows虛擬機(jī)的配置數(shù)據(jù),為所述通用寄存器和所述段寄存器設(shè)置初始值。
18、在其中一個(gè)實(shí)施例中,所述利用所述虛擬機(jī)監(jiān)視器qemu將所述內(nèi)存加載地址發(fā)送至所述啟動(dòng)固件,包括:
19、在所述啟動(dòng)固件運(yùn)行時(shí),通過固件配置接口fw_cfg,控制所述虛擬機(jī)監(jiān)視器qemu將所述內(nèi)存加載地址發(fā)送至所述啟動(dòng)固件。
20、在其中一個(gè)實(shí)施例中,所述文件內(nèi)容包括boot?manager的運(yùn)行代碼;所述根據(jù)所述內(nèi)存加載地址,加載所述目標(biāo)內(nèi)存區(qū)域中啟動(dòng)管理器文件boot?manager的文件內(nèi)容,包括:
21、通過執(zhí)行l(wèi)jmp跳轉(zhuǎn)指令或lret跳轉(zhuǎn)指令,根據(jù)所述內(nèi)存加載地址,跳轉(zhuǎn)至所述目標(biāo)內(nèi)存區(qū)域,加載所述目標(biāo)內(nèi)存區(qū)域中啟動(dòng)管理器文件boot?manager的運(yùn)行代碼。
22、第二方面,本技術(shù)還提供了一種windows虛擬機(jī)啟動(dòng)加速裝置,包括:
23、固件編譯模塊,用于在windows虛擬機(jī)的啟動(dòng)過程中,利用option?rom機(jī)制編譯生成啟動(dòng)固件;
24、初始化模塊,用于初始化虛擬機(jī)監(jiān)視器qemu;
25、數(shù)據(jù)加載模塊,用于利用所述虛擬機(jī)監(jiān)視器qemu讀取啟動(dòng)管理器文件bootmanager,獲得啟動(dòng)管理器文件boot?manager的相關(guān)數(shù)據(jù),所述相關(guān)數(shù)據(jù)包括內(nèi)存加載地址和文件內(nèi)容;
26、固件加載模塊,用于通過基本輸入輸出系統(tǒng)seabios加載所述啟動(dòng)固件;
27、數(shù)據(jù)存儲(chǔ)模塊,用于利用所述虛擬機(jī)監(jiān)視器qemu,將所述文件內(nèi)容存入所述內(nèi)存加載地址對(duì)應(yīng)的目標(biāo)內(nèi)存區(qū)域中;
28、啟動(dòng)模塊,用于利用所述啟動(dòng)固件,加載所述目標(biāo)內(nèi)存區(qū)域中啟動(dòng)管理器文件boot?manager的文件內(nèi)容。
29、第三方面,本技術(shù)還提供了一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器和處理器,所述存儲(chǔ)器存儲(chǔ)有計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)以下步驟:
30、在windows虛擬機(jī)的啟動(dòng)過程中,利用option?rom機(jī)制編譯生成啟動(dòng)固件;
31、初始化虛擬機(jī)監(jiān)視器qemu,并利用所述虛擬機(jī)監(jiān)視器qemu讀取啟動(dòng)管理器文件boot?manager,獲得啟動(dòng)管理器文件boot?manager的相關(guān)數(shù)據(jù),所述相關(guān)數(shù)據(jù)包括內(nèi)存加載地址和文件內(nèi)容;
32、通過基本輸入輸出系統(tǒng)seabios加載所述啟動(dòng)固件;
33、利用所述虛擬機(jī)監(jiān)視器qemu,將所述文件內(nèi)容存入所述內(nèi)存加載地址對(duì)應(yīng)的目標(biāo)內(nèi)存區(qū)域中;
34、利用所述啟動(dòng)固件,加載所述目標(biāo)內(nèi)存區(qū)域中啟動(dòng)管理器文件boot?manager的文件內(nèi)容。
35、第四方面,本技術(shù)還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)以下步驟:
36、在windows虛擬機(jī)的啟動(dòng)過程中,利用option?rom機(jī)制編譯生成啟動(dòng)固件;
37、初始化虛擬機(jī)監(jiān)視器qemu,并利用所述虛擬機(jī)監(jiān)視器qemu讀取啟動(dòng)管理器文件boot?manager,獲得啟動(dòng)管理器文件boot?manager的相關(guān)數(shù)據(jù),所述相關(guān)數(shù)據(jù)包括內(nèi)存加載地址和文件內(nèi)容;
38、通過基本輸入輸出系統(tǒng)seabios加載所述啟動(dòng)固件;
39、利用所述虛擬機(jī)監(jiān)視器qemu,將所述文件內(nèi)容存入所述內(nèi)存加載地址對(duì)應(yīng)的目標(biāo)內(nèi)存區(qū)域中;
40、利用所述啟動(dòng)固件,加載所述目標(biāo)內(nèi)存區(qū)域中啟動(dòng)管理器文件boot?manager的文件內(nèi)容。
41、第五方面,本技術(shù)還提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)以下步驟:
42、在windows虛擬機(jī)的啟動(dòng)過程中,利用option?rom機(jī)制編譯生成啟動(dòng)固件;
43、初始化虛擬機(jī)監(jiān)視器qemu,并利用所述虛擬機(jī)監(jiān)視器qemu讀取啟動(dòng)管理器文件boot?manager,獲得啟動(dòng)管理器文件boot?manager的相關(guān)數(shù)據(jù),所述相關(guān)數(shù)據(jù)包括內(nèi)存加載地址和文件內(nèi)容;
44、通過基本輸入輸出系統(tǒng)seabios加載所述啟動(dòng)固件;
45、利用所述虛擬機(jī)監(jiān)視器qemu,將所述文件內(nèi)容存入所述內(nèi)存加載地址對(duì)應(yīng)的目標(biāo)內(nèi)存區(qū)域中;
46、利用所述啟動(dòng)固件,加載所述目標(biāo)內(nèi)存區(qū)域中啟動(dòng)管理器文件boot?manager的文件內(nèi)容。
47、上述windows虛擬機(jī)啟動(dòng)加速方法、裝置、計(jì)算機(jī)設(shè)備、計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)和計(jì)算機(jī)程序產(chǎn)品,通過簡(jiǎn)化windows虛擬機(jī)的啟動(dòng)流程,實(shí)現(xiàn)了顯著的技術(shù)效果。傳統(tǒng)啟動(dòng)方式需經(jīng)seabios加載mbr、vbr等逐級(jí)鏈?zhǔn)揭龑?dǎo),流程繁瑣、耗時(shí)長(zhǎng)。而本發(fā)明利用biosoptionrom直接加載bootmgr到內(nèi)存啟動(dòng),跳過中間環(huán)節(jié),大幅縮短啟動(dòng)路徑,顯著提升啟動(dòng)速度,滿足云計(jì)算和虛擬化場(chǎng)景下對(duì)虛擬機(jī)快速啟動(dòng)的需求,優(yōu)化虛擬化平臺(tái)性能。簡(jiǎn)化啟動(dòng)流程還減少了啟動(dòng)環(huán)節(jié)和組件數(shù)量,降低出錯(cuò)概率,增強(qiáng)系統(tǒng)穩(wěn)定性,減少啟動(dòng)失敗或異常情況,提高虛擬化平臺(tái)可靠性和可用性。同時(shí),減少了啟動(dòng)過程中的系統(tǒng)資源占用,使資源更高效分配利用,快速釋放資源,提升資源利用率。