⑴ 谁能说一下,再编译linux内核时,分开编译的内核和模块之间有什么联系和区别
编到内核里面就那不出来了,模块可以随时删掉。
⑵ linux为什么要编译内核
Linux内核版本是不断更新的,通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、 更稳定,并且一般会修复老版本中发现的许多漏洞等。而已安装好的Linux系统如果不是滚动升级的,或者没有内核更新选择的话,如果用户想要使用这些新特性,或想根据自己的硬件平台定制一个更高效,更稳定,更快速的内核,就需要重新编译内核。
下载源码编译内核,如果不做相关优化,直接编译,结果就跟现在正在使用的系统没什么区别。
学习linux驱动,必须要有实践的平台环境吧,至于需不需要购置平台,要看你的学习目的了。
⑶ 什么叫做内核编译,为什么要进行内核编译呢
对开源操作系统(主要是指Linux)的内核源代码在本机进行有针对性的编译,就叫做内核编译。
编译内核的目的主要是改变内核的默认选项,比如内核原来不支持某硬件,原因是内核的相应选项默认状态是disactivated,需要改变。
当然,也有人把新版的linux装在旧机子上。这样,许多在内核里activated的硬件,他没有,将来也不需要。那么,就可以在内核里去掉。以及一些服务、特殊的功能等等,如果用不着,比如机子是服务器的话,最好在内核里关掉,"精兵简政"。这是以系统安全和提高效率为目的。
有专门的工具对其进行编译。这个问题不是几句话能说明白的。看你的提问就知道你是刚刚学习这些内容,建议不要好高骛远,先把c语言学好,然后再研究这些东西。
欢迎访问我的论坛:)
http://www.chinesebloger.com
期待您的支持:)
⑷ 编译内核和编译内核模块有什么区别(linux)
LINUX 的内核编译
1.编译内核指的时通常的内核
2.应为内核可以将驱动和功能模块动态的载入内核,所以在需要的时间把功能模块
动态载入,所以就有了,内核模块的编译
⑸ linux的编译内核和编译内核模块有什么区别
当然需要。。。
第一点,就是源码树中有相应的头文件和函数的实现,没有源码树,你哪调用去呢?(PC上编译的时候内核有导出符号,系统中有头文件,这样就可以引用内核给你的接口了,但是只能编译你PC上版本的内核可加载的模块)。
第二个,内核模块中会记录版本号的部分,需要记录版本号的原因是不同的内核版本之间,那些接口和调用可能会有比较大的差异,因此必须要保证你的代码和某个特定的内核对应,这样编译出来的模块就可以(也是只能)在运行这个内核版本的Linux系统中加载,否则一个很简单的异常就会导致内核崩溃,或者你的代码根本无法编译通过(接口名变了)。
我上面说的是编译模块的情况,当然如果是把模块直接编译到内核当中去的话,那就不用说了,没有内核源码,你无法编译内核。
⑹ linux内核编译的几点疑惑
(1)编译内核于升级内核没有直接关联。如果编译的内核的版本比现在系统使用的版本新,那么使用编译后的内核可以看成是内核升级。但是有时候是因为需要而编译内核,比如某些模块需要重新编译,打开某些原来内核没打开的选项,这时候可以是同版本内核重新编译,这就不能说是升级内核。
(2)新内核编译好后,还需要安装。也就是make install(把bzimage移动到boot,重命名为vmlinuz) ,make moles install(把模块全部放到/lib/moles/(内核名)文件夹内);然后depmod,在/lib/moles/(内核名)建好新的***.dep文件,这样启动时系统就能通过读取***.dep文件信息来加载模块。还要在boot下新建一个于内核名一样的.img文件,如vmlinuz,那么就是vmlinuz.img,至于系统使用哪个内核,那是在grub.cfg里面写的配置文件决定的。指定哪个就从哪个启动,写两个entry就可以选择启动到哪一个。老内核当然还可以继续使用。
(3)新内核主要是一些新的特性,驱动更改什么的,我不是很清楚,比如2.6.34以上的内核就支持通过echo OFF>/sys/kernel/debug/vgaswitchroo/switch关闭某个显卡,也就是双显卡切换支持,又比如2.6.38中加入了所谓的autogroup在某些情况下提升桌面性能的特性,还有一些对系统某些情况的处理方式的变化等。但是从用户层来说一般感觉不到明显变化。对于程序什么的使用不影响(绝大多数)。
⑺ 为什么要配置内核为何要重新编译内核
为什么要配置内核?
编译前当然要配置一下内核啊,make menuconfig ,生成默认配置文件 .config ,这个文件是设置 cpu 体系,及很多驱动选项的,你没配置这个,怎么可能编译那
新下载的内核都是没有默认 .config 需要你找到一个默认的config 文件,比如 arch/arm/configs/ 下是 arm cpu 很多的默认配置,当然你也可以把你以前的 config 文件拷贝到新内核目录下。
.config 是配置编译内核的最初步骤,你要编译驱动程序,就必须要了解这个,多上网查下资料
然后重新编译
为何要重新编译内核?
Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。
新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译Linux内核。
通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、 更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容。
为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:
(1)自己定制编译的内核运行更快(具有更少的代码)
(2)系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)
(3)不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞
(4) 将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些
这样就了解为什么要编译Linux内核了。
⑻ linux编译好了内核,也编译好了内核模块,最后内核放在fllash中,内核模块放哪里
问题补充:如题了,linux模块编程为什么要编译内核源码树。以及为什么内核版本当然需要。。。 第一点,就是源码树中有相应的头文件和函数的实现,没有