如何给linux安装新内核

您所在的位置:网站首页 ko框架 如何给linux安装新内核

如何给linux安装新内核

#如何给linux安装新内核| 来源: 网络整理| 查看: 265

第二步:清除垃圾(这一步:一般是在就内核重新编译时使用,在编译新的内核是不需要);make clean及make mrproper;

第三步:进行内核裁减配置;

内核裁减配置的原则:

从实际出发。

如:根据支持的硬件设备来决定需要选择的驱动模块,根据需要选择所支持的文件系统格式等;

具体配置命令为:

make config :通过命令接口,依次要求你设定每个选项,如果.config文件存在,会根据该文件来设置默认值;

make menuconfig :显示以curses为基础的、终端式的配置菜单。

make xconfig :图形界面,显示以Tk为基础X Window配置菜单。

最常用的为:make menuconfig(注:需要ncurses的rpm包)。

说明:这一步中选择为M模式的,编译到/lib/modules/下相关目录文件中;选择为*模式的,编译到内核中即/boot/vmlinuz中,启动时加载到内核中。

具体内核裁减配置参阅其它资料。

第四步:生成依赖关系(make dep)

内核源码树中大多数文件都会与一些头文件有依存关系,要想编译内核顺利,在正式编译前必须让内核源码树中的各个Makefile文件知道这些依存关系。

依存关系建立期间会在内核源码树中每个子目录里产生一个隐藏的.depend文件,此文件内含子目录里各个文件所依存的头文件清单。

第五步:建立内核映像和模块

2.4内核:make bzImage :在arch/YOUR_ARCH/boot/中生成在在zImage内核映像文件;

make modules :在相应目录下生成内核模块(即驱动模块)

2.6内核:make :作用相当于make bzImage与make modules

第六步:安装模块(make modules_install)

让make modules或make 过程中产生的.o驱动模块拷入/lib/modules/下相应目录中;

第七步:安装内核

第一种情况:直接使用make install命令即可。

第二中情况:先采用cp arch/i386/boot/bzImage /boot/×××(×××表示自己随意的命名)

mkinitrd /boot/×××.img 2.6.12.6(内核版本号)

linux内核支持动态加载模块,内核模块以.ko为后缀,在Linux系统中,内核模块放在/lib/modulex/x.x.x目录中,其中x.x.x为linux版本号

加载模块

insmod xxx.ko

如果带参数 insmod xxx.ko a=1

卸载模块

rmmod xxx.ko

支持的数据类型

bool :布尔类型

invbool:颠倒了值的bool类型

charp :字符指针类型,内存为用户提供的字符串分配

int:整型

long :长整型

short :短整型

uint :无符号整型

ulong :无符号长整型

ushort :无符号短整型

内核模块源码Makefile编写格式和linux源码的格式一样

在OpenWrt系统中,内核模块编译和应用层的package编译类似

make package/模块名/compile V=s

比如:

make package/hello_kernel/compile V=s

编译完成后会生成.ko文件,目录文件在build_dir中,但和应用层的build目录有点区别,内核模块的package放在linux目录,如(X86平台):

build_dir/target-x86_64_musl/linux-x86_64/

将编译完成的ko文件传输到OpenWrt系统中,注意编译平台和开发板平台的系统架构要一致。

不同发行版和不同版本的Linux略有不同,以CentOS7为例,需要在/etc/sysconfig/modules/目录中增加一个脚本,在此脚本中加载所需的模块。注意该脚本文件的权限为755。

以uinput模块为例,脚本如下:

#!/bin/sh

if [ ! -c /dev/input/uinput ] then

exec /sbin/modprobe uinput /dev/null 21

fi

欢迎分享,转载请注明来源:内存溢出

原文地址:https://outofmemory.cn/yw/7342223.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3