TWI834472B - 驅動內核模組封裝方法、電子設備與存儲介質 - Google Patents

驅動內核模組封裝方法、電子設備與存儲介質 Download PDF

Info

Publication number
TWI834472B
TWI834472B TW112101379A TW112101379A TWI834472B TW I834472 B TWI834472 B TW I834472B TW 112101379 A TW112101379 A TW 112101379A TW 112101379 A TW112101379 A TW 112101379A TW I834472 B TWI834472 B TW I834472B
Authority
TW
Taiwan
Prior art keywords
driver
package
kernel module
file
packaging method
Prior art date
Application number
TW112101379A
Other languages
English (en)
Other versions
TW202422328A (zh
Inventor
袁傑
Original Assignee
新加坡商鴻運科股份有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 新加坡商鴻運科股份有限公司 filed Critical 新加坡商鴻運科股份有限公司
Application granted granted Critical
Publication of TWI834472B publication Critical patent/TWI834472B/zh
Publication of TW202422328A publication Critical patent/TW202422328A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本申請公開了一種驅動內核模組封裝方法,電子設備和存儲介質。涉及電腦技術領域,驅動內核模組封裝方法包括:根據驅動內核模組配置規範檔;根據將驅動內核模組和規範檔封裝成目標格式的驅動包。通過配置規範檔,定製化了目標格式的驅動包,基於目標格式的驅動包的特性,能夠在系統上用簡便的指令控制目標格式的驅動包,簡便快捷地實現驅動包的安裝、卸載和查詢等操作。同時,將該驅動包安裝在系統後,系統回應於系統啟動指令,根據目標格式的驅動包載入驅動程式,以使驅動程式能夠自動載入。

Description

驅動內核模組封裝方法、電子設備與存儲介質
本申請涉及電腦技術領域,更具體而言,涉及一種驅動內核模組封裝方法、電子設備與存儲介質。
於Linux中載入驅動內核模組時,使用者需要找到驅動內核模組所在之目錄之路徑下,然後手動輸入載入驅動程式之命令,實現驅動程式之載入。使用者想要啟動系統後,驅動程式載入,需要手動操作,操作不方便。
鑒於以上內容,本申請提供一種驅動內核模組封裝方法、電子設備與電腦可讀存儲介質,能夠根據目標格式之驅動包載入驅動程式,使驅動程式能夠自動載入。同時,能夠簡便快捷地實現標格式之驅動包之安裝、卸載與查詢等操作。
本申請第一方面提供一種驅動內核模組封裝方法,系統根據驅動內核模組配置規範檔,接著,將驅動內核模組與規範檔封裝成目標格式之驅動包。藉由配置規範檔,定製化了目標格式之驅動包,基於目標格式之驅動包之特性,能夠於系統上用簡便之指令控制目標格式之驅動包,簡便快捷地實現驅動包之安裝、卸載與查詢等操作。同時,將該驅動包安 裝於系統後,系統回應於系統啟動指令,根據目標格式之驅動包載入驅動程式,使驅動程式能夠自動載入。
作為第一方面之一種可選之實施方式,根據驅動內核模組配置規範檔之步驟可包括:系統根據驅動內核模組生成設定檔;將設定檔與驅動內核模組集成至啟動清單,以完成規範檔之配置,如此,系統根據驅動內核模組能夠生成系統自動載入指令之設定檔,該設定檔夠使驅動程式於系統啟動後自動載入。於啟動系統時,系統載入啟動清單裡之檔,亦即是載入設定檔與驅動內核模組,從而使驅動程式自動載入。
作為第一方面之一種可選之實施方式,將設定檔與驅動內核模組集成至啟動清單之步驟可包括:系統將設定檔存放於第一預設目錄之第一路徑,同時將驅動內核模組存放於第二預設目錄之第二路徑,將第一路徑之設定檔與第二路徑之驅動內核模組集成至啟動清單,其中,第一路徑為設定檔之存儲路徑,第二路徑為系統內核之驅動內核模組之外置存儲路徑。將驅動內核模組存放於系統內核之外置存儲路徑,可儘量不影響系統內核之體積。
作為第一方面之一種可選之實施方式,根據驅動內核模組生成設定檔步驟之後,驅動內核模組封裝方法還可包括:重新生成系統初始化映射檔,以使設定檔生效與將設定檔與驅動內核模組集成至啟動清單。重新生成系統初始化映射檔後,設定檔生效,同時可將設定檔與驅動內核模組集成至啟動清單。
作為第一方面之一種可選之實施方式,驅動內核模組封裝方法還可包括步驟:系統根據驅動內核模組定義系統參數。系統根據驅動內 核模組定義系統參數,可使後續生成之目標格式之驅動包符合系統環境。
作為第一方面之一種可選之實施方式,將驅動內核模組與規範檔封裝成目標格式之驅動包之步驟可包括:系統將驅動內核模組存放於第三預設目錄,將規範檔存放於第四預設目錄後,根據第三預設目錄之驅動內核模組與第四預設目錄之規範檔封裝成目標格式之驅動包。將配置好之規範檔與驅動內核模組存放於指定之路徑下,方便後續找到將配置好之規範檔,從而生成目標格式之驅動包。
作為第一方面之一種可選之實施方式,將驅動內核模組與規範檔封裝成目標格式之驅動包之步驟之後,驅動內核模組封裝方法還可包括步驟:系統安裝目標格式之驅動包。
作為第一方面之一種可選之實施方式,系統安裝目標格式之驅動包之步驟之後,驅動內核模組封裝方法還可包括步驟:系統回應於系統啟動指令,可根據目標格式之驅動包載入所述驅動程式;或者回應於使用者之相應操作指令,查詢、安裝或卸載所述目標格式之驅動包。
本申請第二方面提供一種電子設備,所述電子設備包括處理器與記憶體,所述記憶體中存儲有電腦程式,所述電腦程式被所述處理器執行時,實現上述之封裝方法。
本申請第三方面提供一種電腦可讀存儲介質,其上存儲有電腦程式,所述電腦程式被處理器執行時實現如上述項所述之封裝方法。
上述第二方面與第三方面所獲得之技術效果與第一方面中對應之技術手段獲得之技術效果近似,於這裡不再贅述。
本申請提供之技術方案帶來之有益效果至少包括:系統根據 驅動內核模組配置規範檔,接著,將驅動內核模組與規範檔封裝成目標格式之驅動包。藉由配置規範檔,定製化了目標格式之驅動包,基於目標格式之驅動包之特性,能夠於系統上用簡便之指令控制目標格式之驅動包,簡便快捷地實現驅動包之安裝、卸載與查詢等操作。同時,將該驅動包安裝於系統後,系統回應於系統啟動指令,驅動程式能夠自動載入。
S101-S102:步驟
S201-S205:步驟
S301-S303:步驟
100:電子設備
101:記憶體
102:處理器
圖1是本申請實施方式之驅動內核模組封裝方法之流程示意圖;圖2是本申請實施方式之驅動內核模組封裝方法之流程示意圖;圖3是本申請實施方式之驅動內核模組封裝方法之流程示意圖;圖4是本申請實施方式之電子設備之結構示意圖。
下面先對相關技術之情況做簡要說明。
於Linux中載入驅動內核模組時,使用者需要找到驅動內核模組所在之目錄之路徑下,然後手動輸入載入驅動程式之命令,實現驅動程式之載入。使用者想要啟動系統後,驅動程式載入,需要手動操作,操作不方便。
為此,本申請實施方式提供一種驅動內核模組封裝方法、電子設備與電腦可讀存儲介質,能夠根據目標格式之驅動包載入驅動程式,使驅動程式能夠自動載入。同時,能夠簡便快捷地實現標格式之驅動包之 安裝、卸載與查詢等操作。
為準確地對本申請中之技術內容進行敘述,以及為準確地理解本發明,於對具體實施方式進行說明之前先對本說明書中所使用之術語給出如下之解釋說明或定義。
本申請將驅動程式之套裝軟體簡稱為驅動包。
驅動程式是電腦軟體術語,驅動程式全稱為“設備驅動程式”。驅動程式是一種可使電腦與硬體設備通訊之程式,相當於硬體設備之介面,作業系統藉由這個介面才能控制硬體設備之工作,例如,某一硬體設備未安裝驅動程式,作業系統無法識別到該設備,從而無法控制該設備進行相應之操作。可從硬體設備原廠官網上下載各類設備之驅動程式,下載之驅動程式可分為已經編譯完成之標準系統驅動與驅動源碼包。
源碼(Source Code)是指最原始程式之代碼。
Linux全稱GNU/Linux,是一種類UNIX作業系統,一個基於POSIX之多用戶、多工、支持多執行緒與多CPU之作業系統。
內核模組又稱為kernel object(kernel object,ko)檔,kernel object檔可簡寫為.ko檔案。內核模組是內核之某個模組,亦即是說,可將內核劃分成多個模組,每個模組代表內核之某個功能。系統需要某部分功能時,可將代表該功能之功能模組插回內核,系統就能調用該部分功能,當系統不需要該部分功能時,就卸載掉該內核模組。系統需要驅動程式驅動硬體設備工作,因此,驅動程式以內核模組之形式之存於,可縮小系統內核之體積。本申請中,將以內核模組形式存於之驅動程式,稱為驅動內核模組。
硬體設備可包括顯示器、輸入裝置、主機板、拓展卡、電源 與中央處理器(central processing unit,CPU)等。
RPM(Redhat Package Manager)是基於Redhat、Centos、Fedora等Linux系統之常用套裝軟體管理器,僅需要使用一個命令就可於系統上,將RPM格式之套裝軟體安裝、卸載與查詢。spec檔是規範檔,於Linux作業系統中用於指導rpmbuild命令構建RPM格式之套裝軟體。
請參閱圖1,圖1為本申請實施方式之驅動內核模組封裝方法之流程示意圖,本申請實施方式之驅動內核模組封裝方法可包括:
步驟S101:根據驅動內核模組配置規範檔。
目前,本申請之封裝方法以於Linux作業系統下實現為例進行闡述。Linux作業系統上之驅動程式一般以內核模組之形式存於,亦即是說,驅動內核模組是指以內核模組形式存於之驅動程式。Linux作業系統可直接於本Linux作業系統上調取驅動內核模組。
規範檔是指spec檔,Linux作業系統獲取驅動內核模組後,根據驅動內核模組配置spec檔。Linux作業系統配置完spec檔後,於後續之操作中,會根據已經配置好之spec檔執行相應之動作,從而完成RPM格式驅動包於各階段之任務。各階段可包括預編譯階段、編譯階段、安裝前階段、安裝階段、清理階段、安裝後階段、卸載前階段與卸載後階段等。可分為三個部分配置spec檔,第一部分為RPM格式驅動包之相關描述,第二部分為各階段關於RPM格式驅動包之操作,第三部分為RPM格式驅動包之配置資訊。
可理解地,spec檔是規範檔,spec檔說明瞭RPM格式驅動包如何被配置、安裝之哪些檔、安裝之目錄與於Linux作業系統上安裝時調用 之系統級別活動等,藉由配置spec檔,定製化Linux作業系統於各階段對RPM格式驅動包之操作。
首先,配置第一部分關於RPM格式驅動包之相關描述。相關描述可包括:描述RPM格式驅動包之內容概要,於配置時可使用標籤Summary;RPM格式驅動包之名稱,於配置時可使用標籤Name;驅動程式之主版本號,於配置時可使用標籤Version;驅動程式之發行系列號,於配置時可使用標籤Release;驅動程式之授權方式,授權方式可使用GPLv2,於配置時可使用標籤License;RPM格式驅動包裡有幾個組,於配置時可使用標籤Group。亦即是說,藉由該等標籤可存放RPM格式驅動包之基本資訊。Linux作業系統可使用%define與標籤定義RPM格式驅動包,例如可%define module<module_name>;%define version<version>;%define kernel%(uname -r)等。其中<module_name>、<version>填入驅動包名稱及驅動包之版本。
其次,配置第二部分關於RPM格式驅動包於各階段之操作。
於預編譯階段,可執行解壓驅動源碼壓縮包成驅動源碼包與生成用於開機自動載入之設定檔之操作,例如生成depmod設定檔與darcut之設定檔。於編譯階段,可進行編譯驅動源碼包之操作,將驅動源碼編譯成驅動程式。於安裝階段,可執行指定RPM格式驅動包中之ko之檔、depmod之設定檔與dracut設定檔之安裝路徑之操作。於清理階段,可執行清理之多餘之中間檔之操作。於安裝後階段,可執行depmod與darcut命令,使depmod與darcut之設定檔生效之操作,於卸載後階段,可執行depmod與darcut命令,使depmod與darcut之設定檔失效之操作。
最後,配置第三部分關於RPM格式之RPM格式驅動包之配置資訊。配置資訊可包括待安裝檔列表與RPM格式驅動包版本變更記錄。
步驟S102:將驅動內核模組與規範檔封裝成目標格式之驅動包。
spec檔是構建RPM格式驅動包之工具,因此,目標格式之驅動包是指RPM格式驅動包。可藉由rpmbuild指令將驅動內核模組與已配置好之spec檔封裝成RPM格式驅動包。
可理解地,用spec檔將驅動內核模組封裝成RPM格式驅動包,並將該驅動包安裝於Linux作業系統,Linux作業系統回應於Linux作業系統之啟動指令後,驅動程式能夠自動載入。同時,Linux作業系統利用RPM格式驅動包之套裝軟體管理器,能夠於Linux作業系統上用簡便之指令控制RPM格式驅動包,簡便快捷地實現驅動包之安裝、卸載與查詢等操作。
如此,系統根據驅動內核模組配置規範檔,接著,將驅動內核模組與規範檔封裝成目標格式之驅動包。藉由配置規範檔,定製化了目標格式之驅動包,基於目標格式之驅動包之特性,能夠於系統上用簡便之指令控制目標格式之驅動包,簡便快捷地實現驅動包之安裝、卸載與查詢等操作。同時,將該驅動包安裝於系統後,系統回應於系統啟動指令,根據目標格式之驅動包載入驅動程式,以使驅動程式能夠自動載入。
請參閱圖2,作為一種可選之實施方式,步驟S101:根據驅動內核模組配置規範檔可包括以下步驟:
S201:根據驅動內核模組生成設定檔。
要實現開機自動載入,需要執行系統自動載入之相關指令, 例如,depmod與dracut指令,因此,用於開機自動載入之設定檔指該相關指令之設定檔,例如depmod之設定檔與dracut之設定檔。亦即說,設定檔為Linux作業系統自動載入指令之設定檔。開機自動載入設定檔能夠使驅動程式於開機後自動載入。於配置spec檔之預編譯階段時,Linux作業系統生成驅動內核模組之開機自動載入設定檔。開機自動載入設定檔包括depmod設定檔與dracut設定檔。例如,Linux作業系統可按照以下代碼配置spec檔:echo override %{module}`uname -r|awk -F "-" '{print $1}'`-*weak-updates/%{module}>$RPM_SOURCE_DIR/%{module}-depmod.conf;生成depmod的設定檔。
echo add_drivers+=\" %{module}\''>;$RPM_SOURCE_DIR/%{module}-dracut.conf;生成dracut的設定檔。
為構建RPM格式驅動包,需要先準備打包環境,包括準備各種檔存放之目錄。因此,於配置spec檔之前,可藉由#rpmdev-setuptree命令來創建rpmbuild之工作目錄。後續藉由各種命令生成之各種檔可置於該目錄下。亦即是說,用於開機自動載入之設定檔與驅動內核模組,可放置於該rpmbuild之工作目錄中。其中,$RPM_SOURCE_DIR為RPM之內定參數,為當前rpmbuild目錄中之SOURCE路徑。
可理解地,於安裝RPM格式驅動包之前,先生成用於開機自動載入之設定檔,為後續安裝RPM格式驅動包做準備。同時,用於開機自動載入之設定檔能夠使驅動程式於開機後自動載入。
如此,根據驅動內核模組生成系統自動載入指令之設定檔, 可配置規範檔。該設定檔夠使驅動程式於系統啟動後自動載入。
S202:將設定檔存放於第一預設目錄之第一路徑。
於配置spec檔之安裝階段,Linux作業系統將生成之用於開機自動加之載設定檔,存放於rpmbuild之工作目錄之BUILDROOT子目錄,具體為BUILDROOT子目錄中存放設定檔之儲存目錄,該儲存目錄有映射之存儲路徑,例如存儲路徑etc/depmod.d/%{module}.conf與存儲路徑/etc/dracut.conf.d。亦即是說,第一預設目錄是指rpmbuild之工作目錄中之設定檔之存儲目錄,第一路徑是指設定檔之存儲路徑。
S203:將驅動內核模組存放於第二預設目錄之第二路徑;同時,Linux作業系統內核有用於存放檔之目錄,分為內部存儲目錄與外置存儲目錄,內部存儲目錄映射有內部存儲路徑,外置存儲目錄映射有外置儲存路徑。內部存儲路徑佔用內核之體積,而外置存儲路徑不影響內核之體積。具體地,Linux作業系統將驅動內核模組存放於rpmbuild之工作目錄之BUILDROOT子目錄,具體為BUILDROOT路徑子目錄中存放之Linux作業系統內核之外置存儲路徑,該路徑是內核標準之驅動內核模組之外置路徑,例如路徑/lib/modules/%{kernel}/extra。亦即是說第二預設目錄為外置存儲目錄,第二路徑為Linux作業系統內核之驅動內核模組之外置存儲路徑。
可理解地,將驅動內核模組存放於Linux作業系統內核之外置存儲路徑,可儘量不影響Linux作業系統內核之體積。
步驟S204:重新生成系統初始化映射檔,以使設定檔生效。
具體地,Linux作業系統於完成RPM格式驅動包之安裝後, 與卸載掉RPM格式驅動包後,亦即是於安裝後與卸載階段,可執行depmod與dracut命令,重新生成系統初始化映射檔,系統初始化映射檔為initiramfs檔。使得用於開機自動載入設定檔於完成RPM格式驅動包之安裝後生效,與卸載掉RPM格式驅動包後失效。
因此,Linux作業系統於配置spec檔之安裝後與卸載階段時,可配置重新生成系統初始化映射檔,亦即initiramfs檔之操作。
將設定檔與驅動內核模組集成至啟動清單,以完成規範檔之配置之細化步驟:
步驟S205:將第一路徑之設定檔與第二路徑之驅動內核模組集成至啟動清單,以完成規範檔之配置。
最後,將於設定檔之儲存路徑之設定檔與於Linux作業系統內核之外置存儲路徑之驅動內核模組集成至啟動清單,從而配置規範檔。
例如,Linux作業系統可按照以下代碼配置spec檔,亦即是配置步驟S202至S203:install -m 644 -D $RPM_SOURCE_DIR/%{module}.ko;放置驅動內核模組;$RPM_BUILD_ROOT/lib/modules/%;{kernel}/extra/%{module}/%{module}.ko;install -m 644 -D $RPM_SOURCE_DIR/%{module}-depmod.conf $RPM_BUILD_ROOT/etc/depmod.d/%{module}.conf;放置depmod的設定檔; install -m 644 -D $RPM_SOURCE_DIR/%{module}-dracut.conf $RPM_BUILD_ROOT/etc/dracut.conf.d/%{module}.conf;放置dracut的設定檔。
如此,將設定檔存放於第一預設目錄之第一路徑,同時將驅動內核模組存放於第二預設目錄之第二路徑,根據第一路徑之設定檔與第二路徑之驅動內核模組可集成至啟動清單。將驅動內核模組存放於第二路徑,可儘量不影響Linux作業系統內核之體積。
位於rpmbuild之工作目錄之用於開機自動載入設定檔之生效後,與同位於rpmbuild之工作目錄之驅動內核模組可集成至啟動清單。
Linux作業系統於配置spec檔時,可將用於開機自動載入之設定檔與驅動內核模組均放於rpmbuild之工作目錄中,一起封裝成RPM格式驅動包。當RPM格式驅動包安裝於Linux作業系統上後,Linux作業系統將用於開機自動載入之設定檔與驅動內核模組集成至啟動清單。
可理解地,當啟動Linux作業系統時,Linux作業系統會自動載入啟動清單中之檔,因此,將用於開機自動載入之設定檔與驅動內核模組放於rpmbuild之工作目錄中,集成至啟動列表。於啟動Linux作業系統時,會自動載入開機自動載入之設定檔與驅動內核模組,從而自動載入驅動程式。
如此,系統根據設定檔與驅動內核模組集成至啟動清單,以配置規範檔。於啟動系統時,系統載入啟動清單裡之檔,亦即是載入設定檔與驅動內核模組,從而使驅動程式自動載入。
請參閱圖3,作為一種可選之實施方式,步驟S102:將驅動 內核模組與規範檔封裝成目標格式之驅動包可包括以下步驟:
S301:將驅動內核模組存放於第三預設目錄。
rpmbuild之工作目錄還包括用於存放spec檔之目錄,用代碼可表示為~/rpmbuild/SPECS,包括用於存放源碼之目錄,用代碼可表示為~/rpmbuild/SOURCES/。包括用於存放rpm格式驅動包之目錄,用代碼可表示為~/rpmbuild/RPMS/。亦即是說,第三預設目錄是指,完成配置spec檔後,rpmbuild之工作目錄之源碼之存儲目錄,用代碼可表示為~/rpmbuild/SOURCES/。Linux作業系統於配置完spec檔後,可將驅動內核模組存放於源碼之存儲目錄。
S302:將規範檔存放於第四預設目錄。
第四目錄是指spec檔之存儲目錄,用代碼可表示為~/rpmbuild/SPECS。
S303:將第三目錄之驅動內核模組與第四目錄之規範檔封裝成目標格式之驅動包。
rpmbuild命令可用於創建RPM格式驅動包。Linux作業系統可使用rpmbuild-bs<spec>命令將已經配置好之spec檔與驅動內核模組封裝成RPM格式驅動包。
因此,Linux作業系統於配置好spec檔與獲取驅動內核模組後,將spec檔與驅動內核模組分別存放於rpmbuild之工作目錄下,然後於spec檔存放之目錄下,可執行rpmbuild命令,生成RPM格式驅動包,最後將RPM格式驅動包存放於rpmbuild之工作目錄下儲存。
於一個示例中,Linux作業系統將已經配置好之spec檔存放 於/root/rpmbuild/SPECS下,將驅動內核模組存放於/root/rpmbuild/SOURCES/下,接著於/root/rpmbuild/SPECS下執行rpmbuild-bs<spec>命令,生成RPM格式驅動包。最後,將生成之RPM格式驅動包存放於/root/rpmbuild/RPMS/並儲存。
可理解地,將已經配置好之spec檔與驅動內核模組存放於指定之目錄下,方便後續找到配置好之spec檔,封裝成RPM格式驅動包。
如此,系統將驅動內核模組存放於第三預設目錄,同時將規範檔存放於第四預設目錄,最後根據第三預設目錄之驅動內核模組與第四預設目錄之規範檔封裝成目標格式之驅動包。將配置好之規範檔與驅動內核模組存放於指定之目錄下,方便後續找到將配置好之規範檔,從而生成目標格式之驅動包。
作為一種可選之實施方式,驅動內核模組封裝方法還可包括步驟:
S400:根據驅動內核模組定義系統參數。
於配置spec檔之編譯階段,Linux作業系統可利用標籤與%define定義當前Linux作業系統之參數,當前Linux作業系統之參數包括要封裝之RPM格式驅動包之名稱與版本等。例如按以下代碼配置:%define module<module_name>;定義驅動包的名稱;%define version<version>;定義驅動包的版本;%define kernel %(uname -r);定義內核的版本;其中,<module_name>填入驅動包之名稱,<version>填入驅動包之版本。
可理解地,定義Linux作業系統參數可使後續生成之RPM格式驅動包符合當前Linux作業系統環境,防止生成之RPM格式驅動包因不匹配環境Linux作業系統而無法安裝。
如此,根據驅動內核模組定義系統參數,從而完成規範檔之配置,可使後續生成之目標格式之驅動包符合當前系統環境。
作為一種可選之實施方式,步驟S102:將驅動內核模組與規範檔封裝成目標格式之驅動包之後還可包括以下步驟:
S501:安裝目標格式之驅動包。
首先,利用本申請上述之全部或部分實施方式之封裝方法,封裝而成RPM格式驅動包後,安裝RPM格式驅動包。具體地,於存放RPM格式驅動包之路徑下找到RPM格式驅動包,然後執行安裝命令,將RPM格式驅動包安裝於Linux作業系統中,以完成驅動程式於Linux作業系統上之部署。
於一個示例中,於~/rpmbuild/RPMS/路徑下找到RPM格式驅動包後,執行rpm-ivh<RPM>命令後,RPM格式驅動包安裝於Linux作業系統中。
可理解地,可用一個指令就將RPM格式驅動包安裝於Linux作業系統上,從而完成驅動程式於Linux作業系統上之部署,操作簡便。亦即是說,Linux作業系統利用RPM格式驅動包之套裝軟體管理器,能夠於Linux作業系統上用簡便之指令控制RPM格式驅動包,簡便快捷地實現驅動程式安裝、卸載與查詢等操作。
作為一種可選之實施方式,步驟501:安裝目標格式之驅動包 之後還可包括以下步驟:S601:回應於系統啟動指令,根據所述目標格式之驅動包自動載入驅動程式;S602:回應於相應之操作指令,查詢、安裝或卸載所述目標格式之驅動包。
Linux作業系統部署了RPM格式驅動包後,使用者進行重啟Linux作業系統之操作後,Linux作業系統回應於該操作之指令,自動載入驅動程式,從而驅動Linux作業系統之硬體設備正常工作。
可理解地,完成RPM格式驅動包於Linux作業系統上之部署後,回應於Linux作業系統啟動指令後,驅動程式能夠自動載入,驅動Linux作業系統之硬體設備正常工作。
於Linux作業系統上用相應之指令控制RPM格式驅動包,可簡便快捷地實現RPM格式驅動包之安裝、卸載與查詢等操作。同時,Linux作業系統安裝了RPM格式驅動包後,使用者進行查詢驅動程式之相關資訊之操作,Linux作業系統回應於該操作之指令,顯示驅動程式之相關資訊。相關資訊包括驅動程式之狀態與版本等。
於一個示例中,使用者對Linux作業系統利用rpm-qa指令查詢驅動程式之版本,Linux作業系統回應於使用者之操作指令,顯示驅動程式之版本資訊。
可理解地,目前之Linux作業系統上之驅動程式,使用者無法直觀地查詢到該驅動程式之相關資訊。而本申請實施方式部署了RPM格式驅動包後,用戶可直接利用套裝軟體管理器對應之簡便指令,查詢到驅動 程式之相關資訊。
可理解地,安裝了目標格式之驅動包後,響應於Linux作業系統啟動指令時,驅動程式能夠自動載入。同時目標格式之驅動包能夠被Linux作業系統用一個之指令控制,從而簡便快捷地實現驅動程式安裝、卸載或查詢等操作。
如此,系統安裝目標格式之驅動包。系統安裝目標格式之驅動包後,系統回應於系統啟動指令,可根據目標格式之驅動包載入所述驅動程式;或者回應於使用者之相應操作指令,查詢、安裝或卸載所述目標格式之驅動包。
請參閱圖4所示,為本申請實施方式提供之電子設備100之一種結構示意圖。於一個實施方式中,電子設備100包括記憶體101及至少一個處理器102。本領域技術人員應該瞭解,圖4示出之電子設備100之結構並不構成本申請實施方式之限定,電子設備100還可包括比圖示更多或更少之其他硬體或者軟體,或者不同之部件佈置。
作為一種可選之實施方式,所述電子設備100包括一種能夠按照事先設定或存儲之指令,自動進行數值計算與/或資訊處理之終端,其硬體包括但不限於微處理器、專用積體電路、可程式設計閘陣列、數文書處理器及嵌入式設備等。作為一種可選之實施方式,記憶體101用於存儲程式碼與各種資料。所述記憶體101可包括唯讀記憶體(Read-Only Memory,ROM)、隨機記憶體(Random Access Memory,RAM)、可程式設計唯讀記憶體(Programmable Read-Only Memory,PROM)、可抹除可程式設計唯讀記憶體(Erasable Programmable Read-Only Memory,EPROM)、一次 可程式設計唯讀記憶體(One-time Programmable Read-Only Memory,OTPROM)、電子抹除式可複寫唯讀記憶體(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、唯讀光碟(Compact Disc Read-Only Memory,CD-ROM)或其他光碟記憶體、磁碟記憶體、磁帶記憶體、或者能夠用於攜帶或存儲資料之電腦可讀之任何其他介質。
作為一種可選之實施方式,所述至少一個處理器102可包括積體電路,例如可包括單個封裝之積體電路,亦可包括多個相同功能或不同功能封裝之積體電路,包括微處理器、數文書處理晶片、圖形處理器及各種控制晶片之組合等。所述至少一個處理器102是所述控制器之控制核心(Control Unit),藉由運行或執行存儲於所述記憶體101內之程式或者模組,以及調用存儲於所述記憶體101內之資料,以執行電子設備100之各種功能與處理資料。上述以軟體功能模組之形式實現之集成之單元,可存儲於一個電腦可讀取存儲介質中。上述軟體功能模組存儲於一個存儲介質中,包括複數指令用以使得一台電腦設備(可是個人電腦,終端,或者網路設備等)或處理器(processor)執行本申請各個實施方式所述方法之部分。所述記憶體101中存儲有程式碼,且所述至少一個處理器102可調用所述記憶體101中存儲之程式碼以執行相關之功能。於本申請之一個實施方式中,所述記憶體101存儲多個指令,所述多個指令被所述至少一個處理器102所執行以實現上述驅動內核模組封裝方法。具體地,所述至少一個處理器102對上述指令之具體實現方法對應實施方式中相關步驟之描述,於此不贅述。
本申請實施方式還提供了一種存儲介質。其中,所述存儲介 質中存儲有電腦指令,所述指令於計算設備上運行時,使得所述計算設備可執行前述實施方式提供之驅動內核模組封裝方法。
本領域普通技術人員可意識到,結合本文中所公開之實施方式描述之各示例之單元及演算法步驟,能夠以電子硬體、或者電腦軟體與電子硬體之結合來實現。該等功能究竟以硬體還是軟體方式來執行,取決於技術方案之特定應用與設計約束條件。專業技術人員可對每個特定之應用以使用不同方法來實現所描述之功能,然該種實現不應認為超出本申請之範圍。所屬領域之技術人員可清楚地瞭解到,為描述之方便與簡潔,上述描述之系統、裝置與單元之具體工作過程,可參考前述方法實施方式中之對應過程,於此不再贅述。
於本申請所提供之幾個實施方式中,應該理解到,所揭露之系統、裝置與方法,可藉由其它之方式實現。例如,以上所描述之裝置實施方式僅僅是示意性例如,所述單元之劃分,僅僅為一種邏輯功能劃分,實際實現時可有另外之劃分方式,例如多個單元或元件可結合或者可集成到另一個系統,或一些特徵可忽略,或不執行。另一點,所顯示或討論之相互之間之耦合或直接耦合或通訊連接可是藉由一些介面,裝置或單元之間接耦合或通訊連接,可是電性,機械或其它之形式。所述作為分離部件說明之單元可是或者亦可不是物理上分開作為單元顯示之部件可是或者亦可不是物理單元,即可位於一個地方,或者亦可分佈到多個網路單元上。可根據實際之需要選擇其中之部分或者全部單元來實現本實施方式方案之目的。另外,於本申請各個實施方式中之各功能單元可集成於一個處理單元中,亦可是各個單元單獨物理存於,亦可兩個或兩個以上單元集成於一 個單元中注意,上述僅為本申請之較佳實施方式及所運用之技術原理。
本領域技術人員會理解,本發明不限於這裡所述之特定實施方式,對本領域技術人員來說能夠進行各種明顯之變化、重新調整與替代而不會脫離本發明之保護範圍。因此,雖藉由以上實施方式對本申請進行了較為詳細之說明,然本發明不僅僅限於以上實施方式,於不脫離本發明之構思之情況下,還可包括更多其他等效實施方式,均屬於本發明之保護範疇。
S101-S102:步驟

Claims (9)

  1. 一種驅動內核模組封裝方法,其改良在於,所述驅動內核模組封裝方法包括:根據驅動內核模組生成設定檔;將所述設定檔存放於第一預設目錄之第一路徑;將所述驅動內核模組存放於第二預設目錄之第二路徑,其中,所述第二路徑為系統內核之所述驅動內核模組之外置存儲路徑;根據所述第一路徑的所述設定檔和所述第二路徑的所述驅動內核模組配置規範檔;將所述驅動內核模組與所述規範檔封裝成目標格式之驅動包。
  2. 如請求項1所述之驅動內核模組封裝方法,其中,所述第一路徑為所述設定檔之存儲路徑;將所述第一路徑中之所述設定檔與所述第二路徑中之所述驅動內核模組集成至啟動列表,以配置所述規範檔。
  3. 如請求項1所述之驅動內核模組封裝方法,其中,生成設定檔之後,所述驅動內核模組封裝方法還包括:重新生成系統初始化映射檔,以使所述設定檔生效。
  4. 如請求項1所述之驅動內核模組封裝方法,其中,所述驅動內核模組封裝方法還包括:根據所述驅動內核模組定義系統參數。
  5. 如請求項1所述之驅動內核模組封裝方法,其中,所述將所述驅動內核模組與所述規範檔封裝成目標格式之驅動包包括:將所述驅動內核模組存放於第三預設目錄;將所述規範檔存放於第四預設目錄; 根據所述第三預設目錄之所述驅動內核模組與所述第四預設目錄之所述規範檔封裝成所述目標格式之驅動包。
  6. 如請求項1所述之驅動內核模組封裝方法,其中,所述根據所述驅動內核模組與所述規範檔封裝成目標格式之驅動包之後,所述驅動內核模組封裝方法還包括:安裝所述目標格式之驅動包。
  7. 如請求項6所述之驅動內核模組封裝方法,其中,所述安裝所述目標格式之驅動包之後,所述驅動內核模組封裝方法還包括:回應於系統啟動指令,根據所述目標格式之驅動包自動載入驅動程式;或者回應於相應之操作指令,查詢、安裝或卸載所述目標格式之驅動包。
  8. 一種電子設備,其改良在於,所述電子設備包括處理器與記憶體,所述記憶體中存儲有電腦程式,所述電腦程式被所述處理器執行時,實現如請求項1至7中任一項所述之驅動內核模組封裝方法。
  9. 一種電腦可讀存儲介質,其上存儲有電腦程式,其改良在於,所述電腦程式被處理器執行時實現如請求項1至7中任一項所述之驅動內核模組封裝方法。
TW112101379A 2022-11-18 2023-01-12 驅動內核模組封裝方法、電子設備與存儲介質 TWI834472B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202211449380.8A CN118057309A (zh) 2022-11-18 2022-11-18 驱动内核模块封装方法、电子设备和存储介质
CN2022114493808 2022-11-18

Publications (2)

Publication Number Publication Date
TWI834472B true TWI834472B (zh) 2024-03-01
TW202422328A TW202422328A (zh) 2024-06-01

Family

ID=91068876

Family Applications (1)

Application Number Title Priority Date Filing Date
TW112101379A TWI834472B (zh) 2022-11-18 2023-01-12 驅動內核模組封裝方法、電子設備與存儲介質

Country Status (3)

Country Link
US (1) US20240168768A1 (zh)
CN (1) CN118057309A (zh)
TW (1) TWI834472B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200402630A (en) * 2002-04-19 2004-02-16 Intramedia Pte Ltd System and method for use of multiple applications
US20070271552A1 (en) * 2006-05-19 2007-11-22 Pulley Robert A System and method for packaging software
US20090228881A1 (en) * 2008-03-04 2009-09-10 Atul Mukker Linux matrix compilation system and method
CN101840337A (zh) * 2010-05-06 2010-09-22 浪潮电子信息产业股份有限公司 一种适用于捕包应用的裁减系统定制方法
US10936331B2 (en) * 2017-02-23 2021-03-02 International Business Machines Corporation Running a kernel-dependent application in a container

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200402630A (en) * 2002-04-19 2004-02-16 Intramedia Pte Ltd System and method for use of multiple applications
US20070271552A1 (en) * 2006-05-19 2007-11-22 Pulley Robert A System and method for packaging software
US20090228881A1 (en) * 2008-03-04 2009-09-10 Atul Mukker Linux matrix compilation system and method
CN101840337A (zh) * 2010-05-06 2010-09-22 浪潮电子信息产业股份有限公司 一种适用于捕包应用的裁减系统定制方法
US10936331B2 (en) * 2017-02-23 2021-03-02 International Business Machines Corporation Running a kernel-dependent application in a container

Also Published As

Publication number Publication date
CN118057309A (zh) 2024-05-21
TW202422328A (zh) 2024-06-01
US20240168768A1 (en) 2024-05-23

Similar Documents

Publication Publication Date Title
CN105745617B (zh) 用于预启动固件更新的选择性功率管理
US9301164B2 (en) Method, system, and terminal for performing system update between mobile communication terminals
US8527744B2 (en) Board module for providing alternative board functions which are not called by UEFI compatible programs for driving platform service in silicon components
US7669201B2 (en) System and method for common file installation
US8484631B2 (en) Supporting hardware configuration changes in a UEFI firmware component
US7730295B1 (en) Updating firmware of a peripheral device
US9411601B2 (en) Flexible bootstrap code architecture
US20170010884A1 (en) Systems And Methods To Securely Inject Binary Images And Code Into Firmware
IL181137A (en) Adaptation of software and operating systems for unpredictable / changing hardware environments
US20150149756A1 (en) System and method for setting up a bootable storage device using image
US20070282801A1 (en) Dynamically creating and executing an application lifecycle management operation
US7191328B2 (en) System and method for using an extensible firmware interface (EFI) utility to build an EFI layer between an operating system and a legacy basic input/output system during a boot process
US20170102924A1 (en) Software architecture for embedded systems
CN116643778B (zh) 一种应用程序优化方法及电子设备
US8726258B2 (en) Supporting multiple hardware components in UEFI
TWI834472B (zh) 驅動內核模組封裝方法、電子設備與存儲介質
KR100775431B1 (ko) 임베디드 시스템 및 임베디드 시스템의 펌웨어 업데이트방법
CN113821220A (zh) 一种linux操作系统的安装方法和装置
CN102033766B (zh) 一种存储操作系统的升级方法
CN116954752A (zh) 一种差异化系统配置、加载方法、装置及计算机设备
CN115291951A (zh) Uefi启动方法、装置、电子设备以及存储介质
TW202422329A (zh) 驅動包生成方法、驅動程式部署方法與相關設備
Al-Bokhaiti et al. Customization and Optimization of Android Operating System for Custom Board with the Implementation of an Administrative Tool
Kumar et al. Porting and BSP Customization of Linux on ARM Platform
US20240036850A1 (en) Configuration aware firmware update