内核相关知识点
内核知识点
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