>  Q&A  >  본문

为什么要编译linux内核?

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

高洛峰高洛峰2742일 전741

모든 응답(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
  • 취소회신하다