linux內核中PREEMPT_RT實時補丁的安裝

本文參考了兩篇博文:

https://blog.csdn.net/zzsfqiuyigui/article/details/7621665

https://www.jianshu.com/p/8787e45a9e01

根據我自己安裝的實際情況做了一些小的修改。

 

1、下載內核代碼和補丁

Kernel:http://www.kernel.org/pub/linux/kernel/

PREEMPT_RT:http://www.kernel.org/pub/linux/kernel/projects/rt/

下載的內核和補丁要對應,如kernel爲linux-4.16.18.tar.gz,補丁爲patch-4.16.18-rt12.patch.gz

通常不必執着於當前系統的內核版本是否有對應的patch,我用的是ubuntu16.04的發行版,默認是4.15的內核,但這個版本的內核似乎沒有對應的patch。linux系統裏是可以安裝多個內核的,所以編譯安裝好的帶實時補丁的內核,可以與當前正在使用的無補丁內核共存,只需要在開機的時候,在Advanced options for ubuntu裏選擇需要使用的內核。

2、打補丁

$tar xfv linux-4.16.18.tar.gz
$ gzip -d patch-4.16.18-rt12.patch.gz
$ cd linux-4.16.18
$ sudo patch -p1 < ../patch-4.16.18-rt12.patch

3、安裝依賴包

$ sudo apt-get install libncurses5-dev
$ sudo apt-get install bison
$ sudo apt-get install flex
$ sudo apt install libelf-dev 
$ sudo apt install libssl-dev

以上安裝包是根據我的情況來安裝的,如果不提前安裝好,在後面make的時候,如果缺失的話也會一個個提示安裝。

 

4、配置

在linux-4.16.18這個源碼目錄下:

$ sudo make mrproper
$ make menuconfig

第二個命令會出現一個圖形界面。

需要進行以下三步的修改:

(1)在“Processor type and features”中的“Preemption Model”中選擇“Complete Preemption(Real-Time)”【如果不打補丁的話,沒有Complete Preemption這個選項】

(2)在“Processor type and features”中選擇“Thread Softirqs”和“Thread Hardirqs”(如果沒有可以不管,我的安裝經驗中沒有出現過這兩項)

(3)在”Device Drivers”中,去掉“Staging Drivers”

以上Processor type and features和Device Driver都是在圖形界面的頂級目錄中的選項,記得退出Processor type and features再找Staging Drivers。(圖形界面可以參考鏈接中給出的截圖)

修改完成後,不必選擇Save,直接選擇Exit退出,會提示是否保存,如果選擇Save會有一些奇怪的提示,我還沒弄明白應該怎麼正確操作。

 

5、編譯及安裝

$ make -j12(12是線程數,根據機器的cpu核數修改)
$ sudo make modules_install
$ sudo make install
$ cd /boot
$ sudo mkinitramfs -k -o initrd.img-4.16.18-rt12 4.16.18-rt12

6、重啓系統

在grub界面選擇高級選項(Advanced options for ubuntu),選擇rt內核進入。在我的經驗裏,新安裝的內核會默認出現在第一個位置,不選的話,也應該默認進入新裝好的帶補丁的內核中。但還是可以進高級選項看一下,是否真的裝好了新的內核。

進入系統後,驗證:

uname -r

在我上述給出的例子中,執行下來後,這裏顯示的內核名爲4.16.18-rt12

如何修改默認啓動的內核,可以參考下一篇博文ubuntu修改默認啓動的linux內核

打了實時補丁的內核中,不能直接apt install顯卡驅動,別的內核上安裝了可用的顯卡驅動,在實時內核中也不可用。顯卡驅動的解決參考下下篇博文使用實時補丁內核的ubuntu中安裝nvidia顯卡驅動

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章