centos7內核源碼
1. CentOS簡介
CentOS操作系統作為一個穩定可靠,上手容易,操作簡單的linux伺服器系統,曾經一度成為中小企業運維、政企傳統行業用戶的首選。我是在2015年的冬天接觸的這個操作系統,記得那年的第一場雪比以往時候來得更晚一些,當時因為軍大衣漏棉花了需要賺點外快買點針線補一補過冬,所以跟著朋友一起做一個微信支付停車費的公眾號服務,在阿里雲最廉價ECS上選裝了免費的CentOS7,當時作為一個新手第一感覺就是上手沒有任何難度,無論安裝個服務,還是部署個項目,都是沒有任何障礙的,因為網路上有無數相關的資源可以支撐一個新手的入門。
以下摘自維基網路:
CentOS(Community Enterprise Operating System)是Linux發行版之一,它是來自於Red Hat Enterprise Linux(RHEL)依照開放源代碼規定發布的源代碼所編譯而成。由於出自同樣的源代碼,因此有些要求高度穩定性的伺服器以CentOS替代商業版的Red Hat Enterprise Linux使用。兩者的不同,在於CentOS並不包含封閉源代碼軟體。CentOS 對上游代碼的主要修改是為了移除不能自由使用的商標。[3]2014年,CentOS宣布與Red Hat合作[4],但CentOS將會在新的委員會下繼續運作,並不受RHEL的影響[5]。
CentOS和RHEL一樣,都可以使用Fedora EPEL來補足軟體。
Fedora Linux(第七版以前為Fedora Core)是較具知名度的Linux發行包之一,由Fedora項目社群開發、紅帽公司贊助,目標是創建一套新穎、多功能並且自由(開放源代碼)的操作系統。Fedora是商業化的Red Hat Enterprise Linux發行版的上游源碼。
Fedora對於用戶而言,是一套功能完備、更新快速的免費操作系統;而對贊助者Red Hat公司而言,它是許多新技術的測試平台,被認為可用的技術最終會加入到Red Hat Enterprise Linux中。[1]
Fedora大約每六個月發布新版本[2]。
截至2016年2月,Fedora大約有120萬用戶[3],這其中包括了Linux內核的作者林納斯·托瓦茲[4][5]。
上面的內容翻譯為人話就是CentOS系統帶有Red Hat的基因,並且解除了Red Hat不能自由使用的封印。總的來說就是任何人或任何機構都可以白嫖這個商用級穩如老狗的操作系統,無需付費,無需顧忌任何東西,拿來改一下UI變成某標麒麟也是很合理的事情。然而在2020年底發生了一件事情:CentOS8本來承諾的10年維護期突然變為2021年12月31日停止一切技術支持,未來將以CentOS Stream的形態領先於RHEL版本進行迭代,這讓無數運維狗閃瞎了老眼,感覺不會再愛了。
以下摘自linux中國:
紅帽公司根本沒有怎麼談論這方面的問題,但是紅帽公司 Linux 工程副總裁 Mike McGrath 在 ITPro Today 上接受 Christine Hall 的采訪時,卻把秘密泄露了出來。「我想說的是,對我們來說,最大的問題是 CentOS 本身其實並沒有給紅帽提供那麼大的用處。我們建立的大多數社區,比如 Fedora,確實有很多雙向的社區參與。不幸的是,CentOS 從來就不是這樣的。它一直是一個用戶社區,所以那種貢獻模式大多是單向的。」
讓我再重復一遍,「CentOS 本身其實並沒有給紅帽提供那麼大的用處。」 它從來沒有。而且,有很多紅帽的資深人士從第一天開始就知道這一點,他們一點也不喜歡它。
你知道誰在使用 CentOS 嗎?一份簡短的名單包括迪士尼、GoDaddy、Rackspace、豐田和 Verizon。此外,還有幾十家公司圍繞 CentOS 打造產品。這些公司包括 GE、Riverbed、F5、Juniper 和 Fortinet。紅帽從這些 CentOS 的「客戶」身上賺了多少錢?零!
在 CentOS 博客上,一位不滿的用戶說:「整個前提,也是唯一有人使用 CentOS 的原因,就是因為它重構了 RHEL。恭喜你破壞了這一點,笨蛋。」
沒錯,這也是 CentOS 要為 CentOS Stream 讓位的最大原因。
紅帽公司沒有人願意公開說這句話,但眾多紅帽公司的高管告訴我,情況就是這樣。
有一位說:「這與 IBM 幾乎無關。在 2018 年秋季收購的消息還沒有傳來之前,我們就在詳細地討論這個問題。有兩個內部原因。首先,工程和銷售部門無論如何也想不出如何在各自的產品組合中定位 CentOS。而且,把 CentOS 變成上游的想法始於 2014 年,當時 Jim Perrin [前紅帽開發人員和 CentOS 董事會成員,現為微軟首席項目經理]在 2014 年巴西的 Fórum Internacional de Software Livre(FISL)演講中談到了這種可能性。結果就出現了 CentOS 特別興趣小組(SIG),這是 CentOS Stream 之路的開始。」
一位前紅帽高管坦言:「CentOS 在挖銷售的牆角。客戶的看法是『它來自紅帽,是 RHEL 的克隆,所以它很好用! 』其實不然。它是一個二流的拷貝。」以他的立場看,「這 100% 是防守,以避免 CentOS 造成更多損失。」
還有一位前紅帽官員說。如果不是因為 CentOS,在紅帽成為十億美元的企業之前,紅帽就已經是一家百億美元的公司了。
而另一位紅帽員工指出:「看看 CentOS 的 FAQ,它就在那裡寫著 ——
CentOS Linux 不受 Red Hat 公司的任何支持。
CentOS Linux 不是 Red Hat Linux,不是 Fedora Linux,也不是 Red Hat Enterprise Linux,它不是 RHEL。CentOS Linux 不包含 Red Hat Linux、Fedora 或 Red Hat Enterprise Linux。
CentOS Linux 不是 Red Hat Enterprise Linux 的克隆。
CentOS Linux 是由 Red Hat, Inc 為 Red Hat Enterprise Linux 提供的公開源代碼,在一個完全不同的(CentOS 項目維護的)構建系統中構建的。
我們不欠你什麼。」
這可能會讓你們中的一些人對紅帽非常生氣。不過,在你們發火之前,讓我先問你們一些問題。CentOS 的「客戶」為 CentOS 貢獻了多少?我說的不是錢。我說的是代碼、文檔和支持。所有這些開源社區應該回饋的東西。答案是:幾乎沒有,接近於無。
在 CentOS 從事安全工作的 Dick Morrell 在推特上寫道:「社區[是]由合作和互動定義的。如果 @CentOSProject 是一個社區建設的住宅開發項目,它將享受那些受益和使用其設施的人所貢獻的擴建、樓層和功能。」 Morrell 繼續說道:「然而 @CentOSProject 一直是不斷給予的仁慈禮物,而現在那些抱怨的人從來沒有站出來用磚頭、水泥或玻璃來擴建這個物產。」
你真的能責怪紅帽做了一個企業應該做的事情嗎?賺錢的同時而為他們的付費社區服務?我明白為什麼人們對紅帽感到生氣。這是溝通不暢的問題。僅僅用一年的警告就切斷了對 CentOS 8 的支持,這理所當然地換來了很多人的不滿。 但如果你是那些現在對紅帽憤怒的人之一,在你太過自以為是之前,你可能要先自我反思一下,想想你對 CentOS 的回報有多少。
最後,如果你還是無法忍受紅帽對 CentOS 的做法,還有其他的 Linux 替代品。而且,至少有兩個「經典」的 CentOS 構建版本,CloudLinux 的 Project Lenix 和 Rocky Linux 可供你考慮。
綜上,CentOS Stream是Red Hat受夠了用戶的白嫖搞出來糊弄洋鬼子的四不像,傳統的CentOS到目前2022年可以支撐企業級應用的版本只剩CentOS7,它將被2024年巨蟹座的鉗子咔嚓一聲開啟「下面沒了」的篇章。
然而,CentOS並沒有失去它全部的價值,對於linux初學者、或者一些不追求企業級應用場景的用戶而言,它仍然是一個優秀的、穩定的、不容易折騰壞的免費操作系統,被喂過翔的傳統行業運維,應該都懂。
但是,相對於CentOS8上的諸多問題如containerd與docker-ce版本沖突、很多軟體廠商對其支持動力不足等問題,CentOS7在所剩無幾的官方維護期內仍然是受歡迎的一個選擇。
另外,如果是內網環境、docker用戶,又有什麼好顧慮?只要運行穩定,操作簡單易上手,好好做一個安靜的老狗,好像也沒什麼不好。
只是,CentOS7老舊的3.1默認內核,是很多服務沒法施展拳腳的阻礙,下一篇將詳細介紹CentOS7的安裝與內核升級等初始化操作,方便vps新手、運維新人做參考。
2. centos 7是什麼版本的內核
3.10.0內核。
CentOS 7於2014年7月7號正式發布,基於Red Hat紅帽免費公開的源代碼。
CentOS 7首個正式版的版本號為7.0.1406,主要更新內容如下:
1、內核更新至 3.10.0
2、支持 Linux 容器
3、Open VMware Tools 及 3D 圖像能即裝即用
4、OpenJDK-7作為預設 JDK
5、原地升級 6.5 至 7.0
(2)centos7內核源碼擴展閱讀
在一台主機或VPS上安裝Centos7後,首要的工作是加強它的安全性,主要有:
1、更改root 密碼
若果是自行安裝 CentoS7的話,安裝叢段程序會自行設定root的密碼。不過很多VPS服務商只會提供預先安裝好的CentoS7映像檔,這種情況下他們會透過主控界面告訴root的密碼,這個密碼的安全性誰也不知道。
2、新增一個普通帳號
這一步連同下一步,相當於為一個城市築起兩道城牆,既可加強防滲讓譽滑鏈衛,也建立了一道警報機制,當敵人(黑客)卒然來襲,第一道城牆被襲擊和破壞,還有第二道城牆阻延一下,有時間部署防衛甚至反擊。所以這是一個很多人忽略,但其實非常重要的步驟。
3、禁止root 使用ssh登入
CentOS7默認容許任何帳號透過ssh登入,包括root 和一般帳號,為了不讓root帳號被黑客暴力入侵,必須禁止root 帳號的ssh功能,事實上root也沒有必要ssh登入伺服器,因為只要使用su或sudo當然需要輸入root的密碼)普通帳號便可以擁有root的許可權。
3. CentOS 7 怎樣安裝或升級最新的內核
一、使用 elrepo 的rpm包升級
查看當前系統內核版本 uname -r
1. 導入key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2. 安裝 elrepo 的yum源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
3. 安裝內核
在yum的elrepo源中,有最新版本內核。直接yum安裝即可。
yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
5. 設置系統啟動順序
查看系統啟動項:
cat /boot/grub2/grub.cfg |grep menuentry
可以發現有最新版本的內核,此時可以設置最新版本內核為默認啟動:
grub2-set-default 'CentOS Linux (4.8.5-1.el7.elrepo.x86_64) 7 (Core)'
此時,查看默認啟動的系統版本grub2-editenv list:
顯示為'CentOS Linux (4.8.5-1.el7.elrepo.x86_64) 7 (Core)'
6. reboot,重啟之後再次查看 uname -r
二、使用源碼編譯安裝升級
1 下載內核源碼
下載網址為 https://www.kernel.org/
wget xxx
2 解壓並進入源碼目錄
3 更新系統並安裝依賴軟體
#yum update
#yum upgrade
#yum groups install Development Tools
#yum install ncurses-devel qt-devel hmaccalc zlib-devel binutils-devel elfutils-libelf-devel
4 將當前內核配置文件拷貝到當前目錄
本來是應該執行make menuconfig來自定義內核配置的,生成配置文件.config; 但是可以直接使用原來系統的內核配置,也就是拷貝/boot目錄下的配置文件到當前目錄。
cp /boot/config-2.6.32-431.11.2.el6.x86_64 .config
5 使用當前內核的配置
#sh -c 'yes "" | make oldconfig' #centos 6
#sh -c 'y "" | make oldconfig' #centos 7
6 編譯安裝
#make bzImage
#make moles
#make moles_install
#make install
7 設置系統啟動順序
查看系統啟動項:
cat /boot/grub2/grub.cfg |grep menuentry
可以發現有最新版本的內核,此時可以設置最新版本內核為默認啟動:
grub2-set-default 'CentOS Linux (4.8.5-1.el7.elrepo.x86_64) 7 (Core)'
此時,查看默認啟動的系統版本grub2-editenv list:
顯示為'CentOS Linux (4.8.5-1.el7.elrepo.x86_64) 7 (Core)'
8 reboot,重啟之後再次查看 uname -r
4. 如何在Ubuntu/CentOS上安裝Linux內核4.0
在Ubuntu 15.04上安裝Linux內核4.0
如果你正在使用Linux的發行版Ubuntu 15.04,你可以直接通過Ubuntu內核網站安裝。在你的Ubuntu15.04上安裝最新的Linux內核4.0,你需要在shell或終端中在root訪問許可權下運行以下命令。
在CentOS 7上安裝Linux內核4.0
我們可以用兩種簡單的方式在CentOS 7上安裝Linux內核4.0。
從Elrepo軟體倉庫安裝
從源代碼編譯安裝
我們首先用ElRepo安裝,這是最簡單的方式:
使用 Elrepo 安裝
1. 下載和安裝ELRepo
我們首先下載ELRepo的GPG密鑰並安裝relrepo-release安裝包。因為我們用的是CentOS 7,我們使用以下命令安裝elrepo-release-7.0-2.el7.elrepo.noarch.rpm。
注: 如果你啟用了secure boot,請查看這個網頁獲取更多信息。
添加 Elrepo 源
2. 升級Linux內核到4.0版本
現在,我們准備從ELRepo軟體倉庫安裝最新的穩定版內核4.0。安裝它我們需要在CentOS 7的shell或者終端中輸入以下命令。
# yum --enablerepo=elrepo-kernel install kernel-ml
從ELRepo安裝Linux內核4.0
上面的命令會自動安裝為CentOS 7構建的Linux內核4.0。
現在,下面的是另一種方式,通過編譯源代碼安裝最新的內核4.0。
從源代碼編譯安裝
1. 安裝依賴軟體
首先我們需要為編譯linux內核安裝依賴的軟體。要完成這些,我們需要在一個終端或者shell中運行以下命令。
# yum groupinstall "Development Tools"
# yum install gcc ncurses ncurses-devel
安裝內核依賴
然後,我們會升級我們的整個系統。
# yum update
2. 下載源代碼
現在我們通過wget命令從Linux內核的官方倉庫中下載最新發布的linux內核4.0的源代碼。你也可以使用你的瀏覽器直接從kernel.org網站下載內核。
# cd /tmp/
下載內核源碼
3. 解壓tar壓縮包
文件下載好後我們在/usr/src/文件夾下用以下命令解壓。
# tar -xf linux-4.0.tar.xz -C /usr/src/
# cd /usr/src/linux-4.0/
解壓內核tar壓縮包
4. 配置
配置Linux內核有兩種選擇的。我們可以創建一個新的自定義配置文件或者使用已有的配置文件來構建和安裝Linux內核。這都取決於你自己的需要。
配置新的內核
現在我們在shell或終端中運行make menuconfig命令來配置Linux內核。我們執行以下命令後會顯示一個包含所有菜單的彈出窗口。在這里我們可以選擇我們新的內核配置。如果你不熟悉這些菜單,那就敲擊ESC鍵兩次退出。
# make menuconfig
配置新內核
已有的配置
如果你想用已有的配置文件配置你最新的內核,那就輸入下面的命令。如果你對配置有任何調整,你可以選擇Y或者N,或者僅僅是按Enter鍵繼續。
# make oldconfig
5. 編譯Linux內核
下一步,我們會執行make命令來編譯內核4.0。取決於你的系統配置,編譯至少需要20-30分鍾。
註:如果編譯內核的時候出現bc command not found的錯誤,你可以用yum install bc命令安裝bc修復這個錯誤。
# make
Make 內核
6. 安裝Linux內核4.0
編譯完成後,我們終於要在你的Linux系統上安裝內核了。下面的命令會在/boot目錄下創建文件並且在Grub 菜單中新建一個內核條目。
# make moles_install install
7. 驗證內核
安裝完最新的內核4.0後我們希望能驗證它。做這些我們只需要在終端中輸入以下命令。如果所有都進展順利,我們會看到內核版本,例如4.0出現在輸出列表中。
# uname -r
結論
好了,我們成功地在我們的CentOS 7操作系統上安裝了最新的Linux內核版本4.0。通常並不需要升級linux內核,因為和之前版本運行良好的硬體可能並不適合新的版本。我們要確保它包括能使你的硬體正常工作的功能和配件。但大部分情況下,新的穩定版本內核能使你的硬體性能更好。
5. centos 7如何獲取完整內核源碼
1. 下載內核
內核官網獲得了(不讓加鏈接,搜索linux內核官網 )
tar.xz 是完整的內核包
pgp 是.tar.sign後綴的文件,用於校驗類似於MD5
patch 是補丁包
2. 解壓文件,現在一般採用 .tar.xz 的壓縮格式(壓縮率最高,但是壓縮時間較長)。
/usr/src 一般而言、我們製做linux內核的時候源碼一般放在這個路徑下,
可以使用 # tar -Jxvf linux-3.13.2.tar.xz -C /usr/src/ 把文件解壓到 /usr/src/ 中(在root用戶下才有效)
3. 如果是第一次編譯內核,並沒有上次的殘留文件可以可以跳過
# make mrproper
這個步驟
注意:make clean 刪除大多數的編譯生成文件, 但是會保留內核的配置文件.config, 還有足夠的編譯支持來建立擴展模塊
make mrproper 刪除所有的編譯生成文件, 還有內核配置文件, 再加上各種備份文件
make distclean mrproper刪除的文件, 加上編輯備份文件和一些補丁文件。
4. 接下來是 make config 。
具體參照 《make config 的幾種類型》
一般採用 # make menuconfig 的方式
此處需要兩個包,選擇最簡單的yum安裝
# yum -y install gcc 和
# yum install ncurses ncurses-devel。
具體選項的作用參考 《Linux-3.10-x86_64 內核配置選項簡介 》
對新的內核功能選擇,並生成一個 .config 的文件
5. 編譯內核
# make 和 # make moles_install (此處命令必須進入/usr/src/linux-x-x-x/才有效,否則會報錯)
注意:2.6內核作了優化,不必顯示的執行make dep 和make bzImage,只需要直接執行
make 就行,系統會自動完成make dep 和 make bzImage 所做的工作。
6. 安裝內核
# make install
7. 修改默認啟動的內核(把游標處的default值改成0,就為默認啟動,編譯成功後默認為1)
# vim /boot/grub/grub.conf
用 cat /boot/grub/grub.conf 驗證並測試
# cat /boot/grub/grub.conf
看是否添加成功
8. 重啟機器,查看效果
默認的內核就是剛才編譯成功的。。。
6. 如何升級centos7內核並且編譯
、使用 elrepo rpm包升級
查看前系統內核版本 uname -r
1. 導入key
rpm --import
2. 安裝 elrepo yum源
rpm -Uvh
3. 安裝內核
yumelrepo源新版本內核直接yum安裝即
yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
5. 設置系統啟順序
查看系統啟項:
cat /boot/grub2/grub.cfg |grep menuentry
發現新版本內核設置新版本內核默認啟:
grub2-set-default 'CentOS Linux (4.8.5-1.el7.elrepo.x86_64) 7 (Core)'
查看默認啟系統版本grub2-editenv list:
顯示'CentOS Linux (4.8.5-1.el7.elrepo.x86_64) 7 (Core)'
6. reboot重啟再查看 uname -r
二、使用源碼編譯安裝升級
1 載內核源碼
載網址
wget xxx
2 解壓並進入源碼目錄
3 更新系統並安裝依賴軟體
#yum update
#yum upgrade
#yum groups install Development Tools
#yum install ncurses-devel qt-devel hmaccalc zlib-devel binutils-devel elfutils-libelf-devel
4 前內核配置文件拷貝前目錄
本應該執行make menuconfig自定義內核配置配置文件.config; 直接使用原系統內核配置拷貝/boot目錄配置文件前目錄
cp /boot/config-2.6.32-431.11.2.el6.x86_64 .config
5 使用前內核配置
#sh -c 'yes "" | make oldconfig' #centos 6
#sh -c 'y "" | make oldconfig' #centos 7
6 編譯安裝
#make bzImage
#make moles
#make moles_install
#make install
7 設置系統啟順序
查看系統啟項:
cat /boot/grub2/grub.cfg |grep menuentry
發現新版本內核設置新版本內核默認啟:
grub2-set-default 'CentOS Linux (4.8.5-1.el7.elrepo.x86_64) 7 (Core)'
查看默認啟系統版本grub2-editenv list:
顯示'CentOS Linux (4.8.5-1.el7.elrepo.x86_64) 7 (Core)'
8 reboot重啟再查看 uname -r
-