为什么要编译linux内核?
高洛峰
高洛峰 2017-04-17 14:29:54
0
5
740

鄙人新手,对一些概念不能很理解,总有人说自己编译了一下linux内核,这个具体什么意思呢?有什么好处?还有模块编译又是个啥?编译会不会导致原来的linux炸掉?原来的内核是不是就是被卸载了?或者推荐一些关于这方面的网站博客之类……我实在搜不到自己想要的……谢谢了

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(5)
刘奇

這類編譯的目的主要是透過編譯來了解Linux核心編譯的過程,熟悉核心的工作原理,甚至可以嘗試進行一些修改。

編譯只是將原始碼編譯成程序,不會替換目前的系統,也不會影響目前系統的運作。

伊谢尔伦

編譯核心和編譯其他軟體沒什麼本質區別。都是code到binary的過程。編譯內核稍微複雜一點而已。
編譯完成後你可以使用新核心啟動也可以選擇先前的核心啟動。
一般情況沒必要重新編譯內核,除非你需要對內核進行定制,例如:裁剪內核,或是打了新的patch,又或者你自己寫了個內核模組。

大家讲道理

他改了點東西於是感覺很好於是就說..我編譯了一下Linux內核
推薦《深入理解linux內核》

洪涛

編譯核心可能是出於某種需求,例如對核心大小有要求,去掉核心中某些用不到的部分,這種場景往往是嵌入式系統。
或自己修改了某部分內核程式碼,需要編譯後驗證功能。

模組編譯時將某些功能模組編譯成 .ko 可以在不重新編譯核心的情況下,insmod xxx.ko 到系統中使用編寫的程式碼功能。

編譯內核後不會取代目前內核,編譯後的新內核往往在類似下面的目錄下,名字大都是bzImage
/usr/src/kernels/3.xx.x-.x86_64/arch/ x86/boot/

然後可以編輯系統的 grub list 添加最新的核心來用它

迷茫

無編譯,1分鐘安裝Ubuntu官方建置的最新版Linux核心
新核心整合了新驅動,例如Intel核顯:

/lib/modules/`uname -r`/kernel/drivers/gpu/drm/i915/i915.ko

一個系統可以安裝多個核心,例如啟動檔案,新核心不會覆蓋舊核心:

/boot/vmlinuz-VERSION
/boot/initrd.img-VERSION

安裝新核心過程中,一些核心模組需要重新編譯,例如VirtualBox:

/lib/modules/`uname -r`/updates/dkms/vboxdrv.ko

如果新核心運作不正常,可以在開機GRUB引導裡選擇舊核心啟動。
也可以這樣改回原來使用的核心:

ln -sf /boot/vmlinuz-VERSION /vmlinuz
ln -sf /boot/initrd.img-VERSION /initrd.img

其中VERSION是原來核心的版本。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!