apt install linux-source-3.16linux
安裝其餘編譯須要的工具: apt install build-essential libc-dev libc6-dev pkg-config ncurses-devbootstrap
安裝好的內核源碼和config文件在 /usr/src中,linux-source-3.16.tar.xz是源碼壓縮包(找個地方解壓下,下面稱解壓的linux源碼根目錄爲 $linux-tree),而linux-config-3.16中有須要的config文件,找一個和 uname -r 輸出類似的config,對於32位的Debian來講應該是 config.i386_none_686-pae.xz,解壓以後重命名爲 .config放到 $linux-tree中去,如今能夠編譯下內核試試了架構
這樣編譯好的內核就自動安裝到 /boot/ 目錄下去了,而模塊在 /lib/modules/3.16.36xxx 下面了函數
簡單運行下 grub2-mkconfig -o /boot/grub2/grub.cfg 就能夠將新編譯的內核放到開機的grub菜單中去了(趕忙試試吧)工具
https://xenomai.org/downloads/xenomai/stable/latest/ 我下載的是 3.0.3 版本,解壓,後面稱xenomai源碼根目錄爲 $xeno-tree測試
還要下載對應版本的 I-pipe 補丁,我下載的是這個 https://xenomai.org/downloads/ipipe/v3.x/x86/older/ipipe-core-3.16-x86-3.patch (後面我發現好像有未發佈的對應 3.16.36版本的i-pipe補丁,不過我沒有再試)ui
安裝編譯工具:apt install autoconf automake libltdl-devip
(注意:必須安裝 libltdl-dev,不然bootstrap都通不過,參見 https://xenomai.org/faq/ )源碼
雖然Xenomai3也能夠在正常的linux下運行,但那固然不是咱們想要的,咱們仍是要雙內核架構的 cobalt,首先就要把patch打內核上去,因爲咱們沒有對應到內核小版本的補丁,因此這一步還須要手動來調整一下it
會出現一些失敗,還有一些偏移後成功的項,根據我此次的經驗,直接顯示成功的就不用管了,fuzz後成功的要注意下,偏移太多了要重點檢查,頗有可能就錯了,若是失敗了,會生成一個 .rej 文件,因此在 $linux-tree 目錄,執行 find . -name *.rej 就能找到這些失敗的位置了。每一個 @@表示一個patch塊的開始,而同行最後一個@@後面表示當前的context(即在修改塊上面的代碼,能夠先搜索到這個位置,再看),下面沒有+或-的也是改動的未改變的上下文,-表示刪除 +表示添加,仔細看看,通常失敗的狀況也很好判斷出應該如何修正,極少會遇到函數改名的狀況,須要注意一下,建議你們手動來一遍。
把全部的rej都搞定了以後,再根據xenomai的說明來準備內核,即執行 scripts/prepare-kernel.sh --linux=$linux-tree --arch=x86
OK下面就是配置內核了, make menuconfig,你可能會看到 Xenomai下面有一堆warning,根據這個網頁來配置就能夠了 https://xenomai.org/2014/06/configuring-for-x86-based-dual-kernels/,即
若是還有其餘的warning,請自行嘗試把warning消除,多看看help,有一些項被其餘項所選擇,不能直接改變,要先改選擇了它的項。另外注意ACPI不能所有都不選擇,那樣會啓不了機,或者啓機特別慢(個人是PCI IRQ錯誤,而且USB都很差使),ACPI只把 PROCESSOR選掉。
好了,從新編譯內核吧 make bzImage modules && sudo make modules_install && sudo make install
從新啓動,不出意外的話就能夠啓機了,啓動後 dmesg | grep Xenomai,應該會有一些輸出,不然就是有問題了。另外,有一個smi的問題,這個須要修改grub的啓動參數,給內核參數後面加上 xenomai.smi=enabled,不過這項可能會致使硬件損壞,好比CPU過熱燒掉了(看這裏 https://xenomai.org/2014/06/configuring-for-x86-based-dual-kernels/dealing-with-x86-smi-troubles ),本身看着辦吧。
安裝完的庫在 /usr/xenomai 文件夾中,執行 sudo /usr/xenomai/bin/xeno-test 便可,注意必須用root才能運行測試,另外這個測試默認不會本身結束,必須 Ctrl+C結束, 看看 /usr/xenomai/bin/latency --help,就知道 latency 測試的參數了。
PS:個人T410i本子跑個實時任務仍是不錯的,50us輪循週期,最大latency爲11us多,還能夠!