聽說核心升級的步驟很麻煩!
聽說核心升級的設定值選錯會開不了機!
聽說核心升級之後才能支援最新的硬體設備!
是的!這些的確曾經是事實。
但是請遺忘掉那個牛車時代的故事吧,跟著我們一起來到先進的太空時代了。
在 Linux 的世界,自由軟體基金會的創辦人 Richard Matthew Stallman 的地位非常重要。
偏偏所有 Linux 的書大多都只提到 Linus Torvalds 這個人,為什麼這個脾氣不太好的大叔為什麼那麼知名呢?
因為他創造了 Linux 裡面最重要的東西 - 核心 (Kernel),而且直到現在他依然在 The Linux Kernel Organization 持續開發新一代的功能。
至於脾氣不好這回事,鬧最大的事件應該是 T客邦 - Linux 之父對 NVIDIA 表達 「F**k You」事件,還原原委、雙方攻防戰 提到的這件吧,有興趣的朋友請自行服用。
核心到底幹啥用的
簡單的說,這寶貝是介於硬體與軟體之間的橋樑,我們可以從 O'Reilly - Linux Device Drivers 這本書的第一章的圖片看到,它主要負責管理 CPU、記憶體、儲存媒體、週邊設備、網路介面等資源。
讓每一個服務套件、函數庫、系統程式不必自己去驅動硬碟設備和管理硬體資源,只要透過核心來存取就可以了,一來可以減少程式設計師的負擔,二來可以提高系統資源的使用效率,三來可以避免惡意攻擊的傷害程度。
該怎麼升級
通常核心需要升級的原因,大多是因為加入硬體週邊的支援、運作效能的最佳化、減少核心的檔案大小,或是增加新的功能。
CentOS 7 預設的核心版本是 3.10.0-123,到 2016/03/09 為止,從官方套件庫能升級的最新版本是 3.10.0-327.10.1。
但是 The Linux Kernel Organization 目前釋出的穩定版 (Stable) 版號已經到了 4.4.4。
我們要升級到 4.x 的原因,最重要的一個就是在 科技新報 - 天網近了!linux 核心推出新版 4.0,以後更新不必重開機 所提到的,原本只有更新套件不必重新開機,之後連更新核心也不用重新開機了,這將可以進一步減少 Server 必須下線的時間。
那,到底要怎麼升級呢?
手動升級
詳細的說明請參閱 別偷懶了,好好認真的照規矩來編譯核心吧 的實作過程。
簡單來說,步驟大約是這樣子:
- 從 The Linux Kernel Organization 下載核心的原始碼。
- 將原始碼解壓縮。
- 清理無效的設定檔及目標檔。
- 選擇核心功能選項與相關模組。
- 進行編譯。
- 開始安裝。
- 重新開機。
- 選擇使用新版核心。
自動升級
手動編譯的工程實作太浩大,而且我們並沒有打算修改任何功能與模組,所以還是從套件庫安裝比較方便。
這次我們要利用 ELRepo Project 套件庫來升級核心。
先安裝套件庫設定檔。
sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
再安裝 GPG 金鑰。
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
接著就可以開始安裝新版的 Kernel,目前 CentOS 7.x 版只提供主線 (Mainline) 的版本。
sudo yum -y --enablerepo=elrepo-kernel install kernel-ml
安裝過程需要一些時間,可以去上個廁所再回來。
重新開機後,就可以在 GRUB 選單看到新版的核心了。
目前 ELRepo 提供的核心版號是 4.4.3-1 。
更換預設用來開機的版本
為了安全起見,也擔心相容性的問題,預設還是會留在前一個版號來開機。
sudo grub2-editenv list
如果我們就是想改成預設由最新的版本來開機的話,那就要修改 GRUB 預設開機選項從第 2 個改到第 1 個。
sudo grub2-set-default 0
重新產生 GRUB 的選單組態檔。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
這樣子就會改由 4.x 版來開機了。
參考資料
圖片來源
- Photo credit: chimothy27 via Visual hunt / CC BY
- 由 Victor Powell - 自己的作品,CC BY-SA 3.0,https://commons.wikimedia.org/w/index.php?curid=9517894
- Orelly - Linux Device Drivers, Third Edition
- 由 Krd - 自己的作品,CC BY-SA 4.0,https://commons.wikimedia.org/w/index.php?curid=36166670
更新紀錄
- 2016/03/09 撰文。
公公你好:
回覆刪除Centos7 要如何作到 更新kernel 之後,不用重新開機?
這個功能我是有聽說過,但是還沒親自實作看看,這邊有篇文章你可以參考一下。
刪除https://linux-audit.com/livepatch-linux-kernel-updates-without-rebooting/
或是用「updating kernel without reboot」的關鍵字去拜一下谷歌大神....
請問有沒有方法可以在安裝的時候更新kernel?
回覆刪除