由于公司有k8s和ceph集群混合部署的需求臀脏,需要將服務(wù)器的內(nèi)核版本升級(jí)到4.(ceph推薦使用4.的內(nèi)核)
centos 7官方維護(hù)的版本是3.10病蛉,第三方源(ELRepo)有最新的內(nèi)核版本和長(zhǎng)期維護(hù)版本(4.4)
地址: https://pkgs.org/search/?q=kernel
一方灾、使用4.4的rpm包直接升級(jí)內(nèi)核
升級(jí)完之后重啟發(fā)現(xiàn)ceph有問(wèn)題积瞒,cephfs掛載不上。google說(shuō)是需要升級(jí)至4.10以上的內(nèi)核
二翩概、由于不想使用最新的5.*版本內(nèi)核(怕不穩(wěn)定)凫岖,所以決定自己編譯內(nèi)核拐邪。
1、centos官方維護(hù)了4.14的內(nèi)核隘截,不過(guò)基于aarch64架構(gòu)的扎阶,所以根據(jù)文檔重新編譯了4.14 x86的內(nèi)核版
[https://wiki.centos.org/zh/HowTos/Custom_Kernel]
內(nèi)核源碼: [http://vault.centos.org/7.6.1810/os/Source/SPackages/]
在之前也嘗試了編譯4.18的代碼 http://vault.centos.org/7.7.1908/updates/Source/SPackages/kernel-4.18.0-147.0.3.el7.src.rpm
但是由于需要升級(jí)rpm版本,升級(jí)之后使用rpmbuild就無(wú)法找到依賴已安裝的依賴婶芭,問(wèn)題不了了之 : )
2东臀、使用上面的.config文件,編譯linux官方的4.14長(zhǎng)期維護(hù)版本 [https://www.kernel.org/](https://www.kernel.org/)
參考文檔: [https://www.linux.com/tutorials/how-compile-linux-kernel-0/]
將上面的.config文件copy到編譯目錄,然后執(zhí)行make oldconfig犀农,補(bǔ)全差異的配置項(xiàng)惰赋,然后直接make rpm-pkg就行。
注意:需要置空內(nèi)核配置文件中的 CONFIG_SYSTEM_TRUSTED_KEYS 選項(xiàng): CONFIG_SYSTEM_TRUSTED_KEYS=""
不然編譯會(huì)報(bào)錯(cuò):
make[3]: *** No rule to make target 'certs/rhel.pem', needed by
'certs/x509_certificate_list'. Stop.
3呵哨、兩個(gè)內(nèi)核都能啟動(dòng)赁濒,哪個(gè)比較穩(wěn)定還需要進(jìn)一步測(cè)試
疑惑點(diǎn)和坑:
1、源碼編譯出來(lái)的rpm包比較大, 400多M孟害,發(fā)行版的只有幾十M
2拒炎、make menuconfig / make oldconfig的用法
3、rpm升級(jí)之后, rpm -qa 輸出是空的挨务,yum --version之后發(fā)現(xiàn)yum使用的rpm還是舊版本击你,估計(jì)和這個(gè)有關(guān)系
ps: 升級(jí)內(nèi)核需要安裝header、devel和kernel三個(gè)包谎柄,然后修改默認(rèn)啟動(dòng)版本
查看所有安裝的內(nèi)核: awk -F' '2}' /etc/grub2.cfg
修改啟動(dòng)內(nèi)核: grub2-set-default "CentOS Linux (4.14.160) 7 (Core)"
查看啟動(dòng)內(nèi)核: grub2-editenv list