编译Linux内核
在源代码的目录下,有一个配置文件,.config文件,可以使用默认的,也可以使用
命令清除,然后重新配置内文配置文件,把/boot/下的配置文件拿来修改使用,或者在源代码下/arch/平台下
选择相应的配置文件,然后再这个基础上来配置自己的内核
1、make distclean 清除一些临时文件,也可以使用make clean和make mrproper
distclean是彻底的清除,就是清除的更彻底,其次是mrproper
2、make menuconfig 当然还有make config命令menuconfig是基于图形界面的配置
使用起来更方便
在配置里面选择CPU、文件系统、硬件模块等 内核的配置选项可以另外参考
配置项前面的选项,通过空格键选择为M和*或者 空 的不同
选择为M A.C会变成A.O ,源代码会有编译的阶段,但是不在向下连接,形成了模块文件
选择为* A.C会变成A.O 在生成A.O后还会继续连接等,最后形成zImag,e
选择为 空 A.C不会发生变化,源代码没有编译的阶段
在/boot目录下的config-2.6.18...文件时当前运行的系统的配置文件,我们可以参考
改文件来编译内核
当然内核源代码中也有配置参考文件,在arch/下相应的体系结构下面,我们可以看到config文件
我们可以拷贝他们到源代码目录下,然后参考配置
3、编译内核模块 make modules
编译完模块后,安装内核make modules_install,其实它的作用是把内核模块从内核源代码目录
copy到/lib/modules/下
4、制作init ramdisk
命令 makeinitrd initrd-2.6.18 2.6.18(后面的版本号根据具体自己内核的版本情况来写,是哪个版本的内核,就写那个)
完了后会在当前目录下生成initrd-2.6.18文件,这个就是ramdisk文件
5、安装内核版本
(1)把内核拷贝到/boot/目录下,
(2)把ramdisk文件拷贝到/boot目录下
(3)修改/etc/grub.conf文件,复制grub.conf文件最后几行,然后拷贝到最后几行
然后根据实际情况修改 title后面的信息,kenerl /***ro root=/....只能修改**中的位置
重启,我们发现grub下多了一个选择,第二个选择就是我们刚编译过的内核
只是不明白自己编译的新内核,为什么模块要copy到旧的文件系统/lib/module下?
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)