编译linux内核时 make modules有啥用?

我知道是编译驱动模块 但是会对之前生成的 zImage.bin有改变吗?不是最终下到板子里面的是zImage.bin文件吗?和make modules有啥关系呢?

make modules是编译模块,很多驱动还有功能在选的时候选成M的都是modules,不过直接make,不加任何参数,就是make all,包含make modules。不用额外加此make,但是在安装的时候make install只是安装bzimage,Systemmap。没有把modules安装好,还要额外的make modules_install,把模块放到/lib/modules文件夹一个和内核名一样的文件夹下,并且运行depmod生成模块依赖关系文件,系统启动时加载模块就是从dep里面读取信息加载模块。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-04-25

下载到板子启动的内核zImage
选择(*)编译到zImage里面,开机加载
选择(M)则不会编译到zImage,编译成模块后(make modules)需要的时候,insmod module_name

make modules是编译模块,很多驱动还有功能在选的时候选成M的都是modules,不过直接make,不加任何参数,就是make all,包含make modules。不用额外加此make,但是在安装的时候make install只是安装bzimage,Systemmap。没有把modules安装好,还要额外的make modules_install,把模块放到/lib/modules文件夹一个和内核名一样的文件夹下,并且运行depmod生成模块依赖关系文件,系统启动时加载模块就是从dep里面读取信息加载模块。

本回答被网友采纳
第2个回答  2011-05-25
不放以前的系统里放什么地方?另一台计算机里?之后你这个机器启动时自己跑到那台计算机上要数据启动完后,在自己跑回来?
initrd 是内核启动的一个虚拟的磁盘。作用是在 Linux 内核启动时,不直接进入硬盘上的 root 分区,而是进入内存里面的虚拟的 root 分区。
这个用意是当内核不能直接读取硬盘时(比如用了内核没有自带的驱动的硬盘、分区。或者 root 分区在网络上)。那么就可以用 initrd 里面的驱动来过渡进入正确的 root ,或者干脆就停在 initrd 模拟的内存盘里面。

PS:我编译内核都是 make xconfig ; make ; make modules_install ; make install
前3个不解释,最好一个其实就是吧编译好的内核复制到 /boot 里面。并且根据这个目录里面的某些特点。进行一些操作。

第3个回答  2011-05-20
下载到板子启动的内核zImage
选择(*)编译到zImage里面,开机加载
选择(M)则不会编译到zImage,编译成模块后(make modules)需要的时候,insmod module_name本回答被提问者采纳
相似回答