Linux內核編譯 實時性_第1頁
Linux內核編譯 實時性_第2頁
Linux內核編譯 實時性_第3頁
Linux內核編譯 實時性_第4頁
Linux內核編譯 實時性_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

研究生課程論文(2009-2010學年第一學期)基于2.6內核和RTAI的實時Linux操作系統的構建

研究生:xx提交日期:2010年03月09日研究生簽名:xx學號xxxxxxxxxx學院自動化科學與工程學院課程編號S0811020課程名稱嵌入式系統原理及應用學位類別碩士任課教師xxx教師評語:成績評定:分任課教師簽名:年月曰基于2.6內核和RTAI的實時Linux操作系統的構建xx摘要:傳統的桌面系統由于其面向用戶的窗口系統,實時性在工業控制領域不能得到滿足。RTAI是一套用戶可以使用的實時任務調用接口,它的出現給人們帶來了契機。本文首先簡單介紹Linux操作系統,然后給出了基于Linux-2.6.23內核的RTAI-3.8實時包安裝過程,包括詳細的內核配置修改及實時系統測試。關鍵詞:Linux;RTAI;實時操作系統1引言1.1Linux操作系統Linux操作系統在短短的幾年之內得到了非常迅猛的發展,這與Linux具有的良好特性是分不開的。Linux包含了Unix的全部功能和特性。簡單的說,Linux具有開放性、多用戶、多任務、良好的用戶界面、設備獨立性、提供了豐富的網絡功能、可靠的系統安全、良好的可移植性。Linux以它的高效性和靈活性著稱。它能夠在PC計算機上實現全部的Unix特性,具有多任務、多用戶的能力。Linux是在GNU公共許可權限下免費獲得的,是一個符合POSIX標準的操作系統。Linux操作系統軟件包不僅包括完整的Linux操作系統,而且還包括了文本編輯器、高級語言編譯器等應用軟件。它還包括帶有多個窗口管理器的X-Windows圖形用戶界面,如同我們使用WindowsNT一樣,允許我們使用窗口、圖標和菜單對系統進行操作。Linux之所以受到廣大計算機愛好者的喜愛,主要原因有兩個,一是它屬于自由軟件,用戶不用支付任何費用就可以獲得它和它的源代碼,并且可以根據自己的需要對它進行必要的修改,無償對它使用,無約束地繼續傳播。另一個原因是,它具有Unix的全部功能,任何使用Unix操作系統或想要學習Unix操作系統的人都可以從Linux中獲益。1.2實時Linux操作系統早期的Linux系統沒有實時能力,就連基本的內核態任務搶占也沒有。如果談論Real-TimeLinux系統,首先要談論RTLinux,它是第一個實時Linux系統,并且現在比較流行。RTAI是Real-TimeAppicationInterface的縮寫。從名稱中可以看出RTAI是一套用戶可以使用的實時任務調用接口。RTAI實際上是RTLinux的變種,由于RTLinux在移植時比較困難,因此RTLinux的一部分開發人員建立了RTAI系統。RTAI也采用了架空Linux內核的機制。為了提供方便的移植結構,RTAI非常小心的在Linux上定義了一組RTHAL(Real-TimeHardwareAbstractionLayer)。RTHAL將RTAI需要在Linux中修改的部分定義成一組函數接口,RTAI只使用這組接口和Linux溝通。這樣可以使以后的移植工作中對Linux內核的代碼修改量達到最低。RTAI是完全開源的實時系統,它的源代碼可以從RTAI官方網站免費獲取。現在RTAI的使用范圍比RTLinux廣泛的多。2實時Linux操作系統實現步驟2.1內核的編譯內核,是個操作系統的核心。他負責管理系統的進程、內存、設備驅動程式、文檔和網絡系統,決定著系統的性能和穩定性。用戶想要使用這些新特性,或想根據自己的系統度身定制一個更高效,更穩定的內核,就需要重新編譯內核。更新的內核會支持更多的硬件,具備更好的進程管理能力,運行速度更快、更穩定,并且一般會修復老版本中發現的許多漏洞等,經常性地選擇升級更新的系統內核是Linux使用者的必要操作內容。安裝Linux操作系統首先在計算機上安裝ubuntu9.10系統,由于編譯內核很難一次成功,需要多次編譯,而編譯過程中需要占用較大的空間,故給了20G的硬盤空間,其中/boot給了256M,swap給了200M,其余全給/。登陸/下載最新的RTAI壓縮包rtai-3.8-tar.bz2,可以雙擊打開壓縮包以查看里面內容,在這里主要查看與RTAI補丁包相匹配的內核包的型號,進A/rtai-3.8/base/arch/i386/patches/目錄,查看當下文件,可以看到支持最新的內核的相關文件是hal-linux-2.6.23-i386-1.12-03.patch。故需要下載linux-2.6.23版本內核。這里i386與x86之間的區別很小,因為之間用過x86中的相關內核2.6.32編譯總出現錯誤,故在此選擇i386中的3)登陸/pub/linux/kernel/下載相關內核,現在我們就得到了RTAI壓縮包和內核壓縮包了。接下來將兩個壓縮包拷到/usr/src文件夾里面,這里需要root根用戶權限,為以后能更方便的以管理員身份操作文件,這里安裝一個軟件,它的功能是用右鍵點擊文件夾會出現“以管理員身份打開”選項,否則直接復制會出現“移動文件出錯:Permissiondenied”提示。在終端輸入sudoapt-getinstallnautilus-gksu便可以安裝。4)現在/usr/src文件夾中有兩個壓縮包,分別是:rtai-3.8.tar.bz2和linux-.tar.bz2。下面開始內核的編譯工作:5)切換到root權限,并準備基本的編譯工具:wr-laptop:~#sudo-iroot@wr-laptop:~#apt-getinstallbuild-essentialkernel-packagencurses-dev6)進入/usr/src目錄,以后的操作都是在這個目錄中進行,解壓縮rtai補丁包:root@wr-laptop:~#cd/usr/srcroot@wr-laptop:/usr/src#tarjxvfrtai-3.8.tar.bz27)解壓縮后會在/usr/src目錄下出現rtai-3.8文件夾。也可以在此查看rtai支持的Linux內核版本,如下圖所示:圖2.1rtai-3.8支持的Linux內核版本

8)解壓縮內核,并進入到linux-2.6.23文件夾目錄中:root@wr-laptop:/usr/src#tarjxvflinux-2.6.23.tar.bz2root@wr-laptop:/usr/src#cdlinux-2.6.23圖2.2解壓縮后的文件夾9)給內核打上相應的RTAI補丁,注意補丁與內核要匹配:root@wr-laptop:/usr/src/linux-2.6.23#patch-p1-b</usr/src/rtai-3.8/base/arch/i386/patches/hal-linux-2.6.23-i386-1.12-03.patch10)配置Linux內核,配置菜單有很多種,在ubuntu下推薦使用圖形化的配置菜單,如果提示錯誤表示當前并沒有安裝ncurse庫,可以通過命令apt-getinstalllibncurses5-dev下載安裝ncurese庫(前面基本的編譯工具中已安裝)。重新建立一個核心需要將源代碼樹置于一種完整和一致的狀態。因此,可以先執行命令makemrproper,它將清除目錄下所有配置文件和先前生成核心時產生的中間文件。root@wr-laptop:/usr/src/linux-2.6.23#makemrproperroot@wr-laptop:/usr/src/linux-#makemenuconfig圖2.3menuconfig內核配置界面11)配置內核需要格外的細心和耐心,一步一步配置,因為這直接影響后面對內核的編譯,關系到能否編譯成功,需要說明的是,編譯中出現的問題需要一些耐心解決,多查資料,多嘗試,有時候需要反復編譯才能成功。在此只列出一些較重要的選項進行說明:(1).Generalsetup--->Localversion-appendtokernelrelease=-rtai-3.8本地版本-附加內核發行版本,此處填-rtai-3.8-wr,表明我們已經給新內核配置了RTAI這樣會在新內核的啟動向導中出現2.6.23—rtai-3.8-wr的選項,Generalsetup--->Createdeprecatedsysfsfiles(NEW)--->no(3).Enableloadablemodulesupport--->(允許可裝載的模塊支持)->Moduleversioningsupport(模塊支持的版本)=no不同的內核在使用同一模塊時區別于塔原有的模塊,此處不選。Enableloadablemodulesupport->Moduleunloading(模塊卸載)這個選項可以卸載不再使用的模塊,如果不選將不能卸載任何模塊。(4).Processortypeandfeatures--->(處理器的類型和特性)--->Symmetricmulti-processingsupport(對稱多處理器支持)=no如果有多個CPU或者使用的是多核CPU就選上.此時"EnhancedRealTimeClockSupport"選項必須開啟「'AdvancedPowerManagement"選項必須關閉Processortypeandfeatures--->Interruptpipeline=yesProcessortypeandfeatures--->SubarchitectureType(子構架類型)=PC-compatible標準的PC或兼容機。Processortypeandfeatures--->Processorfamily(處理器系列)=core2/newerxeon根據實際CPU選擇Processortypeandfeatures--->Genericx86supportC通用x86支持)=noCPU能在上述"Processorfam中找”到就可不選Processortypeandfeatures--->Multi-coreschedulersupport(針對多核CPU進行調度策略優化)=yesProcessortypeandfeatures--->PreemptionModel(內核搶占模式)--->PreemptibleKernel(Low-LatencyDesktop)(適合運行實時程序的主動內核搶占)--->yes(5).Powermanagementoptions(ACPI,APM)--->PowerManagementsupport(電源管理選項)=no電源管理有APM何ACPI兩種標準且不能同時使用,即使關閉該選項,X86上運行的Linux也會在空閑時發出HLT指令將CPU進入睡眠狀態。Powermanagementoptions(ACPI,APM)--->CPUFrequencyscaling(CPU變頻控制)--->CPUFrequencyscalingPowermanagementoptions=noCPU變頻控制允許在運行中改變CPU主頻,達到省電和降溫的目的,但是這個驅動不會自動改變CPU的時鐘速度,選擇no。其他的設置可以保持默認,保存設置,也可備份一份配置文件,文件為/usr/src/linux-2.6.23/.config。若要更進一步精簡內核,則需要對配置的各類信息和自己的計算機硬件有詳細的了解。實際上也可以使用xconfig對內核進行配置,用起來會更加方便。先得裝依賴包。如下:root@wr-laptop:/usr/src/linux-2.6.23#aptitudeinstalllibqt3-headerslibqt3-mt-devlibqt3-compat-headerslibqt3-mtroot@wr-laptop:/usr/src/linux-2.6.23#makexconfig

圖2.4xconfig內核配置界面圖2.4xconfig內核配置界面root@wr-laptop:/usr/src/linux-2.6.23#make-kpkgcleanroot@wr-laptop:/usr/src/linux-2.6.23#make-kpkg--initrdkernel_imagekernel_headersroot@wr-laptop:/usr/src/hnux-2.6.23文件(日編輯(日查看M終端(I)幫助(H)ccLDCCCCCCCCCCCCCCCCCCLDCCCCCCCCccLDCCCCCCCCCCCCCCCCCCLDCCCCCCCCCCCCccccLDCCCC□[H][H][H][H][H][M][H][H][H][H][M][H][H][H][H][M][H][H][H][H][H][H][M]drivers/media/vide0/saa7134/saa7134-cards.odrivers/media/video/saa7134/saa7134-core.□drivers/media/video/saa7134/saa7134-i2c.odrivers/media/video/saa7134/saa7134-1s.odrivers/media/video/saa7134/saa7134-tvaudio.odrivers/media/vide0/saa7134/saa7134-vbi.odrivers/media/video/saa7134/saa7134-video.odrivers/media/video/saa7134/saa7134-input.odrivers/media/video/saa7134/saa7134.□drivers/media/video/saa7134/saa7134-empress.odrivers/media/vide0/saa7134/saa6752hs.o

圖2.5內核編譯中圖2.6內核編譯完成當編譯結束后,會在/usr/src目錄下生成兩個文件,分別是鏡像文件和頭文件,如下圖所示,然后需要安裝這兩個文件。

圖2.7編譯后生成的鏡像文件和頭文件13)安裝相應的鏡像文件和頭文件:root@wr-laptop:/usr/src/linux-2.6.23#cd/usr/srcroot@wr-laptop:/usr/src#dpkg-ilinux-headers-2.6.23-rtai-3.8-wr_2.6.23-rtai-3.8-wr-10.00.Custom_i386.debroot@wr-laptop:/usr/src#dpkg-ilinux-image-2.6.23-rtai-3.8-wr_2.6.23-rtai-3.8-wr-10.00.Custom_i386.deb

圖2.8安裝完鏡像文件和頭文件安裝后將得到了三個非常重要的文件,分別是System.map,config和vmlinuz,其具體的文件名字是這三個文件名后接上內核版本還有個性化定制的名字,這三個文件應該已經被拷貝到/boot/路徑下,如下圖所示:圖2.9安裝成功后生成的三個文件14)重啟系統root@wr-laptop:/usr/src#reboot選擇進入剛剛編譯的新內核,相應的選項應該為:linux-2.6.23-rtai-3.8-wr。因為ubuntu是硬盤安裝,故開機畫面無截圖。2.2編譯RTAI啟動新內核后,打開終端,接下來編譯RTAI對新內核進行實時配置。1)配置RTAIwr-laptop:~#sudo-iroot@wr-laptop:~#cd/usr/src/rtai-3.8root@wr-laptop:/usr/src/rtai-3.8#makemenuconfig圖2.10RTAI配置界面配置中只需改動以下選項:General>Linuxsourcetree=/usr/src/linux-2.6.23此處是對新內核進行RTAI配置,故路徑選擇是新內核的絕對路徑/usr/src/linux-2.6.23Machine(x86)>NumberofCPUs(SMP-only)=2由于我的電腦是雙核,故此處選擇的是2。其他的配置是選擇默認的。2)編譯RTAIroot@wr-laptop:/usr/src/rtai-3.8#make3)安裝RTAIroot@wr-laptop:/usr/src/rtai-3.8#makeinstallroot@wr-faptop:/usr/src/rtai-3.8口回巨文件[日編輯(日查看(Y)終端任)幫助舊)e/include-町preempt-preeiiipt.□-MD-MP-HF.deps/preempt-preempt.Tpo-c-opreempt-preeniipt.o"test-f1preempt.c'11echo'preempt.cmiv-f.deps/preempt-preempt.Tpo.deps/preempt-preempt.Po/bin/sh/llbtool--tag=CC--mode=linkcc-□preemptpreempt-preempt.o../base/sched/'Lib'Lxrt/'Lib'Lxrt.la-Ipthreadmkdir.libs***Warning:Linkingtheexecutablepreemptagainsttheloadablemodule***liblxrt.soisnotportable!cc-□.libs/preemptpreempt-preempt.□../■./base/sched/'Lib'Lxrt/.'Libs/libIxrt.so-Ipthread-Wl,-rpath-WlVusr/realtime/libcreatingpreemptcc-DHAVE_CONFIG_H-I.-I../■■-02-I/usr/src/Iinux-2.6.23-rc8/include-WaiI-Wstrict-prototypes-pipe-D__INRTAI_-I../■./base/include-I■/hase/include-I4Tdisplay-display.□-MD-MP-MF.deps/display-display.Tpo-c-odisplay-display.□"test-f'display.c'11echo'"display.cmiv-f.deps/display-display.Tpo.deps/display-display.Po/bin/sh./libtool--tag=CC--mode=linkcc-odisplaydisplay-display.o../base/sched/'Lib'Lxrt/'Lib'Lxrt.la-Ipthread***Warning:Linkingtheexecutabledisplayagainsttheloadablemodule***liblxrt.soisnotportable!cc-□.libs/displaydisplay-display.□../■./base/sched/lib'Lxrt/.'Libs/liblxrt.so-Ipthread-Wlp-rpath-WlVusr/realtime/lib圖2.11安裝RTAI中4)測試Linux-RTAIroot@wr-laptop:/usr/src/rtai-3.8#cd/usr/realtime/time/testsuite/kern/latencyroot@wr-laptop:/usr/realtime/time/testsuite/kern/latency#./run圖2.12測試中可按Ctrl-C停止運行。2.3出現的問題與解決1)CPU核過多,出現以下提示(之前編譯2.6.32所出現的問題):GENinclude/linux/bounds.hCCarch/x86/kernel/asm-offsets.sInfileincludedfrominclude/linux/sched.h:62,fromarch/x86/kernel/asm-offsets_32.c:8,fromarch/x86/kernel/asm-offsets.c:2:include/linux/ipipe.h:76:2:error:#error"CONFIG_NR_CPUSistoolarge,pleaselowerit.”make[1]:***[arch/x86/kernel/asm-offsets.s]錯誤1make:***[prepare。]錯誤2解決方法:首先嘗試在網上搜索,是需要將CPU的個數支持降低,但是按步驟修改后,仍然出現上述錯誤,最后的解決方案是:在配置內核時將Processortypeandfeatures--->Symmetricmulti-processingsupport關掉。2)可能是寄存器錯誤,出現以下提示:圖2.13錯誤提示解決方法:其實對問題的根源不是很清楚,在網站上查到了解決方案,打開文件arch/i386/boot/boot.h所在行用"=q"替換"=r"即可,如下圖所示:

圖2.14修改boot.h文件3)編譯成功后進入新內核提示以下錯誤:udev:missingsysfsfeatures;pleaseupdatethekernelordisablethekernel'sCONFIG_SYSFS_DEPRECATEDoption;解決方法:在.config文件中查到CONFIG_SYSFS_DEPRECATED一行,將之關閉。3總結與感受在編譯

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論