内核相关知识点

内核知识点

Linux内核官网: www.kernel.org

内核相关知识点

内核相关知识点

上图2.6.17中:

2:主版本号

6:次版本号,此版本号为奇数,表示测试版 ;为偶数,表示稳定版

17:修订号

分成了两个分支,测试版(增加一些新的功能)和稳定版(修复一些bug)

用户空间访问和监控内核的方式:

1、/proc目录

    /proc/sys目录下大多数是可读写的

内核相关知识点

2、/sys目录

设定内核参数的方法:

1、echo value > /proc/sys/somfile

内核相关知识点

内核相关知识点

echo 1 > /proc/sys/net/ipv4/ip_forward  开启路由转发的功能

2、sysctl 命令

sysctl -w kernel.hostname = "magadu.com"

sysctl -w vm.drop_caches = 1

重启后会失效,因为修改是保存在内存中的,所以能立即生效,但不会永久有效

永久有效:

vim /etc/sysctl.conf

sysctl -p    #通知内核,立即生效

sysctl -a   #显示所有内核参数及其值

内核相关知识点

内核模块管理

lsmod:列出当前内核装载的内核模块

内核相关知识点

modprobe MODE_NAME        装载模块

modprobe -r MODE_NAME     卸载模块

modinfo MODE_NAME           查看模块的具体信息

内核相关知识点

 

insmod /path/to/MODE_NAME 必须带有模块路径

rmmod MODE_NAME

lsmod | grep floppy 过滤装载模块

depmod     生成模块间的依赖关系

内核模块间存在依赖关系

内核模块和内核的版本必须完全一致

内核中的功能除了核心功能外,在编译时,大多功能都有三种选择:

1.不使用此功能

2.编译成内核模块

3.编译进内核

手动编译内核

首先准备编译工具和编译环境

1、下载内核(下载地址:www.kernel.org)

tar xf linux-2.6. 28.10.tar.gz -C /usr/src 解压内核源码,通常放在/usr/src目录下

ln -sv linux-2.6. 28.10 linux

cd linux

ls

内核相关知识点

2、make menuconfig   #打开文本菜单,窗口不能太小,否则会报错.编译完成后会生成.config隐藏文件

内核相关知识点

解决方法:

 yum install -y ncurses-devel 

内核相关知识点

进入到该图形界面后,进行内核配置。配置时,大部分都是使用其默认选项,小部分才根据需要进行选择。

其中,每一个配置选项有三种选择,它们的含义如下:

<*>或[*]:表示将该功能编译进内核

[ ]:表示不将该功能编译进内核

[M]:表示将该功能编译成在需要时动态插入到内核的模块

用户根据需要进行配置。
3、编译内核

make 

编译时为了加快编译速度,可以使用make -j#

用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。在多核CPU上,适当的进行并行编译还是可以明显提高编译速度的。但并行的任务不宜太多,一般是以CPU的核心数目的两倍为宜。

make modules_install  #编译模块

make install

在编译时,会存在很多问题,可复制已经编译好的文件,再执行make menuconfig

cp /boot/config-2.6.32-431.el6.x86_64 /usr/src/linux/.config

make menuconfig

make

make modules_install

make install

二次编译时清理:

make clean 清理此前编译好的模块

make mrproper 会把.config也清理掉,如果需要,请备份配置文件.config

参考文档:https://blog.csdn.net/a_little_a_day/article/details/78251928