下載內(nèi)核和補(bǔ)丁
運(yùn)行uname -a
可以看到當(dāng)前內(nèi)核版本赞枕。
補(bǔ)丁地址: https://www.kernel.org/pub/linux/kernel/projects/rt/ 從中選擇一個(gè)與當(dāng)前內(nèi)核版本接近并且更新的補(bǔ)丁下載(系統(tǒng)啟動(dòng)時(shí)會(huì)自動(dòng)選擇版本更高的內(nèi)核)
內(nèi)核地址: http://www.kernel.org/pub/linux/kernel/ 根據(jù)下載的補(bǔ)丁版本下載內(nèi)核邑商,內(nèi)核版本要和補(bǔ)丁一致。
下面以linux-5.4.54內(nèi)核與patch-5.4.54-rt32.patch補(bǔ)丁為例進(jìn)行說(shuō)明。打補(bǔ)丁
$ sudo mkdir /usr/src/rt-preempt-linux
將下載的內(nèi)核與補(bǔ)丁解壓鲫凶,先將解壓后的補(bǔ)丁放到解壓后的內(nèi)核文件夾里面,然后再將內(nèi)核文件夾放到剛創(chuàng)建的rt-preempt-linux文件夾里面。
$ sudo cp -r linux-5.4.54/ /usr/src/rt-preempt-linux/
然后運(yùn)行以下命令打補(bǔ)丁龄寞。
$ cd /usr/src/rt-preempt-linux/linux-5.4.54
$ sudo patch -p1 < patch-5.4.54-rt32.patch
- 內(nèi)核配置
繼續(xù)在/usr/src/rt-preempt-linux/linux-5.4.54路徑下執(zhí)行指令
$ sudo make mrproper # 刪除目錄下殘留的.o文件和其他從屬文件
在boot文件夾下可以找到與當(dāng)前內(nèi)核版本匹配的config文件,例如:config-3.16.0-30-generic 汤功。將其拷貝到當(dāng)前目錄/usr/src/rt-preempt-linux/linux-5.4.54 下并命名為.config
物邑。
$ sudo cp /boot/config-3.16.0-30-generic .config
安裝幾個(gè)必要的套件
$ sudo apt-get install libncurses5-dev flex bison
進(jìn)入菜單配置界面,此時(shí)窗口必須足夠大滔金。
$ sudo make menuconfig
進(jìn)入“General setup”
在"Preemption Model"中選擇“Fully Preemptible Kernel(Real-Time)”
回到上一層色解,進(jìn)入”Device Drivers”中,去掉“Staging drivers”
- 編譯內(nèi)核
下面的編譯過(guò)程會(huì)比較費(fèi)時(shí)鹦蠕,大約需要2個(gè)小時(shí)左右冒签。
仍然在/usr/src/rt-preempt-linux/linux-5.4.54路徑下執(zhí)行指令
$ sudo make -jn
(n是要衍生的作業(yè)數(shù),在實(shí)際中钟病,每個(gè)處理器上一般衍生一個(gè)或兩個(gè)作業(yè)萧恕。例如在一個(gè)雙核處理器上可以使用$make -j4)
$ sudo make modules_install
$ sudo make install
$ cd /boot
$ sudo mkinitramfs -k -o initrd.img-5.4.54-rt32 5.4.54-rt32
最后重啟就可以選擇使用打過(guò)補(bǔ)丁的內(nèi)核了,如果重啟后找不到相應(yīng)選項(xiàng)肠阱,再對(duì)/boot/grub/grub.cfg進(jìn)行修改票唆,修改方法可以上網(wǎng)查。
參考:
http://blog.csdn.net/zzsfqiuyigui/article/details/7621665
http://blog.csdn.net/deng_sai/article/details/38080603
http://blog.csdn.net/fjt19900921/article/details/8316481