Linux内核的配置编译与安装

发布于:2021-09-28 16:56:03

1、 内核源代码代码如何转化为烧写或安装到硬件*台中的系统映像文件?


三步骤:配置、编译、安装。


为什么要配置:硬件的需求;软件的需求。


2、 如何配置内核?


命令:make config(基于文本模式的交互式配置,需要一步一步的配置)


?????????? ?make menuconfig(基于菜单图形化的界面,高效,直观,推荐使用)


3、 make menuconfig的菜单选项与使用?


菜单项的分类:按功能的分类,常用的菜单项有:


选择处理器类型;网络协议;选择需要的驱动支持;文件系统的选择;


三种取值方式<*>:要经过编译的过程,然后连接压缩成内核影像文件iImage,会运行在内存中


:经过编译产生的内核模块,会安装到硬盘中去,当Linux需要的时候会动态的加载到内存中去,节省了内存空间。


? ? ? ? ? ? ? ? ? ? ? ? ? <>:不选择该功能。


然后保存配置,会自动保存在顶层目录下,ls ?l 查看,这个文件是隐藏文件。文件名是.config。可以修改.config,结果和make menuconfig配置是一样的。一般不会这么去配置,当熟练之后可以直接去修改.config效率会更高。


4、? 简化的配置方法与原则。


使用已有的配置结果文件,然后基于已有的修改成自己的。


配置修改原则:不清楚的配置项,不要去配置,保持默认。


在Linux系统的/boot/下有一个配置文件(X86*台的),其实在arch/arm/configs还有基于ARM*台的配置文件。把他拷贝当前的目录linux2.6.39下去,make menuconfig去配置。选择装载一个配置文件。


5、 内核的编译。


编译内核(其实就是编译<*>的文件,生成内核镜像)


编译内核模块(其实就是编译的文件)


制作ramdisk(就是把内核模块打包)


A、 编译内核


命令:make zImage(用于小于512k的内核,但是一般的内核都大于512k)


?????????? ?make bzImage(一般用这个命令)


?????????? 注意有一个编译选项make zImage V=1(显示编译过程的详细信息)


?? 编译完成后在最后一行会提示内核在什么位置。


B、 编译内核模块


命令:make modules (编译完成后存放在磁盘中去)


C、将编译好的内核模块,从内核源代码目录复制至/lib/modules下**,为打包做好准备


命令:make modules_install(只是把所有散落的*.ko内核模块移动到/lib/modules目录下)


C、 对内核模块打包


命令:mkinitrd initrd-$version $version(initrd-$version是要打包的名字(一般是版本名字),$version要打包文件所在的目录(一般版本名字))


?? 如mkinitrdinitrd-2.6.32 2.6.32


视屏中用的指令是:mkinitdir rd-2.6.39 2.6.39(第二个参数是要打包的目录,第一个是要生文件名)


6、? 内核安装


?


A、cp arch/x86/boot/bzImage /boot/vmlinuz-$version????????? (X86上面的安装方法,ARM上不是这个方法)????


B、cp initrd-$version /boot/


C、修改/etc/grub.conf


复制最后四行,修改内核名字,然后保存,到此完成内核的配置及修改,然后重新启动Linux系统,在倒计时的时候按下按键,选择要启动的内核。


?


7、更换Linux的内核为什么还是以前的老的东西?


Linux系统分为两个部分:内核(运行在内存中)和用户空间(硬盘/Flash),所以看到更新内核后的磁盘中的文件等没有发生变化。


8、怎样清理内核源代码?


在编译配置内核源代码的时候产的东西:配置产生了.config;文件编译产生了*.o文件,这些*.o文件又编程了bzimage和*.Ko文件;这些*.o文件称为中间文件。


清零指令:make clean(清理了*.o文件,没有清除掉.config文件)


??????????????????? ?make distclean(清理了.config文件,同时也可以清除掉*.o文件)


?


/**************到此完成*


思维导图如下:


?


相关推荐

最新更新

猜你喜欢