有時候除錯韌體的時候,難免會遇到載入核心時出現各種問題,所以學習一些常用及基本的核心除錯方法方便我們定位問題。
bios(basic input/output system),基本輸入/輸出系統。
bios完成處理器及晶元組的初始化,並將晶元內的部分裝置抽象出個別介面供核心使用俗稱runservice。
uefi是bios的公升級版,github官網上由tiano社群開源維護,uefi支援shell下的run命令進行載入與啟動核心,而現如今很多方式都是通過efi-grub進行引導核心,因為其支援更多的分割槽與有其自身的眾多特性。
無論是哪種方式引導核心,都可以進行指定命令列引數,所以我們先從命令列開始展開。
以後將持續更新ing, 請看下面例項。
命令列引數例項1:
此行命令是uefi引導的grub的命令列,其中loglevel=7就像核心下的幾級除錯資訊一樣,7是最大的輸出level。
例項2:
還是繼續看:
linux: 指定了載入的核心 。
root: 指定了根檔案系統的位置。
console: 指定了log輸出的重定向位置。
loglevel: 指定了log輸出的限制。
maxcpus,nr_cpus: 指定了核心下啟動的核數。
isolcpus: 指定了boot核後,核心下不自動排程的邏輯核號。
當核心正常啟動後,在核心下top命令將看到有4個核進入了核心,當你執行應用的時候將看到不會占用到1,2核的cpu資源,這就是因為使用isolcpu的原因,導致核心不會自動去排程孤立的核資源。
那麼如何在核心下去呼叫孤立的核資源呢,那就用到了tasket -c coreid ./exec.out 這條命令,將會將指定的程式執行在指定的核上。
今天就到這。
核心程式設計隨筆2
note 1 以前版本的windows設計的一些應用程式之所以在windows vista上不能正常工作,就是因為在實現這些程式時,沒有充分考慮安全性.假定乙個應用程式在啟動時要從乙個登錄檔子項中讀取一些資料.正確的做法是呼叫regopenkeyex,向其傳入key query value,從而指定...
核心程式設計隨筆4
note 1 在windows vista中,系統dlls是在程序位址空間的隨機位址載入的.所以,不要像在windows xp中那樣將peb的位址硬編碼為0x7ffdf000.相反,你需要呼叫ntqueryinformationprocess,並傳遞processbasicinformation作為...
核心程式設計隨筆5
note 0 windows提供了乙個作業 job 核心物件,它允許你將程序組合在一起並建立乙個 沙箱 來限制程序能夠做什麼.最好將作業物件想象成乙個程序容器.但是,即使作業中只包含乙個程序,也是非常有用的,因為這樣可以對程序施加平時不能施加的限制.note 1 以下的startrestricted...