centos7修改內(nèi)核源碼

【步驟一】安裝centos7
下載ios(https://www.centos.org/download/)阿蝶,在虛擬機(jī)安裝惊暴。
【步驟二】更新源
centos7 修改yum源為阿里源穷劈,某下網(wǎng)絡(luò)下速度比較快 首先是到 yum源設(shè)置文件夾里
#cd /etc/yum.repos.d
#sudo mv CentOS-Base.repo CentOS-Base.repo.bak
#sudo wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#yum clean all
#yum makecache
【步驟三】安裝圖形界面和修改運(yùn)行級(jí)別
CentOS7系統(tǒng)如果用mini鏡像安裝或者服務(wù)器版本安裝,默認(rèn)是沒(méi)有安裝圖形界面的冤荆。如果需要額外去安裝圖形界面朴则,可以手動(dòng)來(lái)安裝CentOS Gnome GUI包。然后會(huì)總結(jié)一下钓简,在CentOS7系統(tǒng)中的系統(tǒng)運(yùn)行級(jí)別的設(shè)置以及如何切換乌妒。
命令行下安裝 Gnome 包
#yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
如果你想在系統(tǒng)下次啟動(dòng)的時(shí)候自動(dòng)進(jìn)入圖形界面,那么我們需要更改系統(tǒng)的運(yùn)行級(jí)別外邓,輸入下面的命令來(lái)啟用圖形界面撤蚊。
#ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target
順便總結(jié)下CentOS7下運(yùn)行級(jí)別的修改,systemd使用比sysvinit的運(yùn)行級(jí)別更為自由的target概念作為替代损话。比如侦啸,第三運(yùn)行級(jí)別multi-user.target槽唾,第五運(yùn)行級(jí)別graphical.target。兩種表示方式:
1光涂、runlevel3.target -> multi-user.target
2庞萍、runlevel5.target -> graphical.target
注:前者使用符號(hào)鏈接指向了后面的 target 切換運(yùn)行級(jí)別:
1、systemctl isolate multi-user.target
2顶捷、systemctl isolate runlevel3.target
3挂绰、systemctl isolate graphical.target
4屎篱、systemctl isolate runlevel5.target
修改開(kāi)機(jī)默認(rèn)運(yùn)行級(jí)別 systemd使用鏈接來(lái)指向默認(rèn)的運(yùn)行級(jí)別服赎,由/etc/systemd/system/default.target文件決定。 設(shè)置開(kāi)機(jī)運(yùn)行級(jí)別3
1交播、rm /etc/systemd/system/default.target
2重虑、ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
3、ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system /default.target
4秦士、sytemctl set-default multi-user.target
設(shè)置開(kāi)機(jī)運(yùn)行級(jí)別5
1缺厉、ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
2、ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target
3隧土、systemctl set-default graphical.target
查看當(dāng)前運(yùn)行級(jí)別:runlevel

【步驟四】下載源碼
1.或許你不需要整個(gè)內(nèi)核的源代碼
如果你需要編譯一個(gè)內(nèi)核的驅(qū)動(dòng)程序(模塊)提针,很可能你并不需要安裝整個(gè)內(nèi)核源代碼。也許你只需要安裝 kernel-devel 這個(gè)組件曹傀。然而辐脖,假若你肯定須要完整的源代碼目錄樹(shù),請(qǐng)遁從第二部份的指示皆愉。
CentOS-7 只有一個(gè) kernel-devel 組件:
kernel-devel(64 位元的結(jié)構(gòu))
CentOS-6 只有一個(gè) kernel-devel 組件:
kernel-devel(32 及 64 位元的結(jié)構(gòu))
你可以這樣安裝 kernel-devel 組件:
[root@host]# yum install kernel-devel
如果你的內(nèi)核因?yàn)閬?lái)自較舊的目錄樹(shù)而未被 yum 列出嗜价,你可以手動(dòng)式地從 CentOS Vault下載它。
CentOS-7:請(qǐng)?jiān)?7.N.YYMM/os/x86_64/Packages/ 或 7.N.YYMM/updates/x86_64/Packages/ 目錄內(nèi)找尋 kernel-devel-版本.x86_64.rpm幕庐。當(dāng)你安裝了合適的 kernel[-類(lèi)型]-devel-版本.結(jié)構(gòu).rpm 組件久锥,請(qǐng)嘗試編譯你的模塊。這樣做是應(yīng)該行得通的异剥。假若事實(shí)并非如此瑟由,請(qǐng)?zhí)峁┓答伣o模塊的開(kāi)發(fā)者,因?yàn)檫@是設(shè)計(jì)所有新內(nèi)核模塊時(shí)應(yīng)采用的編譯方式冤寿。

2.如果你真的需要整個(gè)內(nèi)核的源代碼
如果你真的因?yàn)槟硞€(gè)原因需要整個(gè)內(nèi)核的源代碼歹苦,它是有被提供的。
以一個(gè)不是 root 用戶(hù)的戶(hù)口疚沐,創(chuàng)建一個(gè)以 ~/rpmbuild 為基礎(chǔ)的目錄樹(shù):
[user@host]$ mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
[user@host]$ echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

   我們強(qiáng)烈推薦你不要以root 的身份創(chuàng)建組件暂氯。(見(jiàn):Building Source RPM as non-root under CentOS) 

   要在 CentOS-7 安裝源代碼組件及工具: 
   以 root 的身份安裝 rpm-build、redhat-rpm-config亮蛔、asciidoc痴施、hmaccalc、perl-ExtUtils-Embed、pesign辣吃、xmlto动遭、audit-libs-devel、binutils-devel神得、elfutils-devel厘惦、elfutils-libelf-devel、ncurses-devel哩簿、newt-devel宵蕉、numactl-devel、pciutils-dedvel节榜、python-devel 及 zlib-devel 組件: 
   [root@host]# yum install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed pesign xmlto
   [root@host]# yum install audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel
   [root@host]# yum install ncurses-devel newt-devel numactl-devel pciutils-devel python-devel zlib-devel
   從這些地方找尋內(nèi)核的源代碼組件: 

? http://vault.centos.org/7.N.YYMM/os/Source/SPackages/
? http://vault.centos.org/7.N.YYMM/updates/Source/SPackages/
(請(qǐng)以相關(guān)的副版本編號(hào)羡玛、年度及月份取代 N.YYMM。)
以一個(gè)不是 root的普通戶(hù)口宗苍,執(zhí)行以下指令來(lái)安裝源代碼組件:
[user@host]$ rpm -i http://vault.centos.org/7.2.1511/updates/Source/SPackages/kernel-3.10.0-514.21.1.el7.src.rpm 2>&1 | grep -v exist(我安裝時(shí)候稼稿,最新的是這個(gè):http://vault.centos.org/7.3.1611/updates/Source/SPackages/kernel-3.10.0-514.21.2.el7.src.rpm

   現(xiàn)在源代碼組件已經(jīng)安裝了,請(qǐng)解壓及預(yù)備源代碼文件: 
   [user@host]$ cd ~/rpmbuild/SPECS
   [user@host SPECS]$ rpmbuild -bp --target=$(uname -m) kernel.spec
   $(uname -m) 這個(gè)值將目標(biāo)結(jié)構(gòu)設(shè)置為你的現(xiàn)有內(nèi)核的結(jié)構(gòu)讳窟。一般來(lái)說(shuō)這是可行的让歼,因?yàn)槎鄶?shù)人需要以 i686 或 x86_64 為目標(biāo)。 

現(xiàn)在內(nèi)核的源代碼目錄樹(shù)可以在 ~/rpmbuild/BUILD/kernel/linux/ 這個(gè)目錄內(nèi)找得到丽啡。

【步驟五】修改和打補(bǔ)丁編譯
在使用rpmbuild 自動(dòng)構(gòu)建內(nèi)核rpm包時(shí),首先讀取SEPCS目錄下的kernel.spec 配置文件谋右,解壓SOURCES 目錄中的內(nèi)核源碼包,并打上對(duì)應(yīng)的patch 文件, 配置后進(jìn)行編譯生成rpm包, 因此修改內(nèi)核源碼有2種方式。
1碌上、直接解壓內(nèi)核tar.xz包,修改編輯完成后直接打包覆蓋原有的tar.zx包倚评,執(zhí)行rpmbuild命令構(gòu)建。
2馏予、解壓內(nèi)核tar.zx包,備份需要修改的源文件,修改后對(duì)比源文件生成patch補(bǔ)丁,并在kernel.spec配置中指定補(bǔ)丁文件,執(zhí)行rpmbuild構(gòu)建天梧。
第一種方式解壓打包比較繁瑣,不如制作patch補(bǔ)丁來(lái)的方便,在大版本不變的情況下只需要引入patch文件即可,通用性更好.推薦使用霞丧。
[root@localhost ~]# cd rpmbuild/SOURCES/
[root@localhost SOURCES]# tar -xf linux-3.10.0-327.36.3.el7.tar.xz -C /tmp
解壓內(nèi)核源碼包到/tmp下呢岗,這里以修改TCP參數(shù)頭文件tcp.h為例。
[root@localhost ~]# cd /tmp/linux-3.10.0-327.36.3.el7/include/net
[root@localhost net]# cp tcp.h tcp_orig.h
進(jìn)入需要修改的文件目錄,備份源文件為tcp_orig.h蛹尝,此時(shí)可對(duì)tcp.h 進(jìn)行參數(shù)修改,完成后后豫,在內(nèi)核源碼包根路徑下,使用diff生成patch補(bǔ)丁文件突那。
[root@localhost ~]# cd /tmp/linux-3.10.0-327.36.3.el7/
[root@localhost linux-3.10.0-327.36.3.el7]# diff -up include/net/tcp_orig.h include/net/tcp.h >> /tmp/custom.patch
生成patch文件, 第一個(gè)參數(shù)為原始文件,第二個(gè)為修改后的文件挫酿,如需要對(duì)文件夾下大量文件修改,可以先備份目錄后修改,使用以下命令生成批量文件補(bǔ)丁愕难,將patch補(bǔ)丁復(fù)制到rpmbuild源碼包目錄早龟。
[root@localhost ~]diff -uprN include_orig/net include/net >> /tmp/custom.patch
[root@localhost ~] cp /tmp/custom.patch /root/rpmbuild/SOURCES/
[root@localhost ~] vim /root/rpmbuild/SPECS/kernel.spec
編輯spec配置文件惫霸,查找ApplyOptionPatch開(kāi)頭的行,新增一行自定義補(bǔ)丁
ApplyOptionalPatch linux-kernel-test.patch
ApplyOptionalPatch debrand-single-cpu.patch
ApplyOptionalPatch debrand-rh_taint.patch
ApplyOptionalPatch debrand-rh-i686-cpu.patch
ApplyOptionalPatch custom.patch //新增加行
繼續(xù)查找Patch1開(kāi)頭的行,增加一行自定義補(bǔ)丁,Patch后面的數(shù)字為優(yōu)先級(jí),可以自定義葱弟。
# empty final patch to facilitate testing of kernel patches
Patch999999: linux-kernel-test.patch
Patch1000: debrand-single-cpu.patch
Patch1001: debrand-rh_taint.patch
Patch1002: debrand-rh-i686-cpu.patch
Patch4000: custom.patch //新增加行
完成后壹店,可以將custom.patch 和 kernel.spec 文件保留作備用。
[root@localhost ~] cd ~/rpmbuild/SPECS
[root@localhost rpmbuild] rpmbuild -bb --target=$(uname -m) SPECS/kernel.spec
使用rpmbuild -bb 命令直接構(gòu)建二進(jìn)制rpm安裝包芝加,會(huì)自動(dòng)解壓內(nèi)核至BUILDS文件夾硅卢,并根據(jù)kernel.spec配置打補(bǔ)丁等操作,等待結(jié)束藏杖,會(huì)在RPMS目錄中生成修改完成后的RPM包将塑,將包復(fù)制到目標(biāo)服務(wù)器執(zhí)行。
rpm -Uvh kernel-3.10.0-327.36.3.el7.x86_64.rpm 重啟并進(jìn)行驗(yàn)證.
硬件配置對(duì)內(nèi)核編譯時(shí)間影響較大制市,從幾十分鐘甚至幾個(gè)小時(shí)抬旺,建議使用i7級(jí)別以上的多核CPU提高效率弊予。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末祥楣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子汉柒,更是在濱河造成了極大的恐慌误褪,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碾褂,死亡現(xiàn)場(chǎng)離奇詭異兽间,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)正塌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)嘀略,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人乓诽,你說(shuō)我怎么就攤上這事帜羊。” “怎么了鸠天?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵讼育,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我稠集,道長(zhǎng)奶段,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任剥纷,我火速辦了婚禮痹籍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘晦鞋。我一直安慰自己蹲缠,他們只是感情好刺洒,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著吼砂,像睡著了一般逆航。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上渔肩,一...
    開(kāi)封第一講書(shū)人閱讀 52,158評(píng)論 1 308
  • 那天因俐,我揣著相機(jī)與錄音,去河邊找鬼周偎。 笑死抹剩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蓉坎。 我是一名探鬼主播澳眷,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蛉艾!你這毒婦竟也來(lái)了钳踊?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤勿侯,失蹤者是張志新(化名)和其女友劉穎拓瞪,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體助琐,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡祭埂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了兵钮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛆橡。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖掘譬,靈堂內(nèi)的尸體忽然破棺而出泰演,到底是詐尸還是另有隱情,我是刑警寧澤屁药,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布粥血,位于F島的核電站,受9級(jí)特大地震影響酿箭,放射性物質(zhì)發(fā)生泄漏复亏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一缭嫡、第九天 我趴在偏房一處隱蔽的房頂上張望缔御。 院中可真熱鬧,春花似錦妇蛀、人聲如沸耕突。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)眷茁。三九已至炕泳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間上祈,已是汗流浹背培遵。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留登刺,地道東北人籽腕。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像纸俭,于是被迫代替她去往敵國(guó)和親皇耗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 背景: 閱讀新聞 12C CDB模式下RMAN備份與恢復(fù) [日期:2016-11-29] 來(lái)源:Linux社區(qū) 作...
    陽(yáng)屯okyepd閱讀 3,474評(píng)論 0 7
  • 我們說(shuō)的Linux其實(shí)指的就是 內(nèi)核(kernel)而已揍很。這個(gè)內(nèi)核控制你主機(jī)的所有硬件并提供系統(tǒng)所有的功能郎楼,所以它...
    Zhang21閱讀 7,423評(píng)論 0 18
  • 通過(guò)源碼的方式替換 1.獲取內(nèi)核源碼 獲取內(nèi)核源碼的路徑:https://www.kernel.org/pub/l...
    jony456123閱讀 2,580評(píng)論 0 1
  • 樣樣得意閱讀 241評(píng)論 0 0
  • 故鄉(xiāng)是長(zhǎng)江中游的一個(gè)濱江小城。我在小城里度過(guò)了六年的中學(xué)生涯女轿,在小城購(gòu)物箭启、娛樂(lè)、和朋友相聚蛉迹、拜訪親友。小城見(jiàn)證了我...
    瀏如閱讀 392評(píng)論 0 4