首頁  >  問答  >  主體

为什么要编译linux内核?

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

高洛峰高洛峰2742 天前745

全部回覆(5)我來回復

  • 怪我咯

    怪我咯2017-04-17 14:31:54

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

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

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 14:31:54

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

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-17 14:31:54

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

    回覆
    0
  • PHP中文网

    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 添加最新的核心來用它

    回覆
    0
  • 迷茫

    迷茫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是原來核心的版本。

    回覆
    0
  • 取消回覆