鄙人新手,对一些概念不能很理解,总有人说自己编译了一下linux内核,这个具体什么意思呢?有什么好处?还有模块编译又是个啥?编译会不会导致原来的linux炸掉?原来的内核是不是就是被卸载了?或者推荐一些关于这方面的网站博客之类……我实在搜不到自己想要的……谢谢了
怪我咯2017-04-17 14:31:54
這類編譯的目的主要是透過編譯來了解Linux核心編譯的過程,熟悉核心的工作原理,甚至可以嘗試進行一些修改。
編譯只是將原始碼編譯成程序,不會替換目前的系統,也不會影響目前系統的運作。
伊谢尔伦2017-04-17 14:31:54
編譯核心和編譯其他軟體沒什麼本質區別。都是code到binary的過程。編譯內核稍微複雜一點而已。
編譯完成後你可以使用新核心啟動也可以選擇先前的核心啟動。
一般情況沒必要重新編譯內核,除非你需要對內核進行定制,例如:裁剪內核,或是打了新的patch,又或者你自己寫了個內核模組。
PHP中文网2017-04-17 14:31:54
編譯核心可能是出於某種需求,例如對核心大小有要求,去掉核心中某些用不到的部分,這種場景往往是嵌入式系統。
或自己修改了某部分內核程式碼,需要編譯後驗證功能。
模組編譯時將某些功能模組編譯成 .ko 可以在不重新編譯核心的情況下,insmod xxx.ko 到系統中使用編寫的程式碼功能。
編譯內核後不會取代目前內核,編譯後的新內核往往在類似下面的目錄下,名字大都是bzImage
/usr/src/kernels/3.xx.x-.x86_64/arch/ x86/boot/
然後可以編輯系統的 grub list 添加最新的核心來用它
迷茫2017-04-17 14:31:54
無編譯,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是原來核心的版本。