/proc目录:内核把自己内部状态信息及统计信息,以及可配置参数通过proc为文件系统加以输出
/proc/sys设置
sysctl -w path.to.parameter=value 查看或设定此目录中诸多参数,如sysctl -w kernel.hostname=mail.magedu.com临时生效
默认配置文件:/etc/sysctl.conf 及以下文件
/run/sysctl.d/*.conf
/etc/sysctl.d/*.conf
/usr/local/lib/sysctl.d/*.conf
/usr/lib/sysctl.d/*.conf
/lib/sysctl.d/*.conf
/etc/sysctl.conf
echo命令通过重定向方式也可以修改大多数参数的值
echo "VALUE" > /proc/sys/path/to/parameter
echo “websrv” > /proc/sys/kernel/hostname
sysctl命令:
(1) 临时设置某参数 sysctl -w path.to.parameter=VALUE
(2) 通过读取配置文件设置参数 sysctl -p [/path/to/conf_file],配置文件是永久生效
(3) 查看所有生效参数 sysctl -a
常用的内核参数:
net.ipv4.ip_forward
net.ipv4.icmp_echo_ignore_all
net.ipv4.ip_nonlocal_bind #允许应用程序可以监听本地不存在的IPvm.drop_caches
fs.file-max = 1020000
/sys目录:使用sysfs文件系统,为用户使用的伪文件系统,输出内核识别出的各硬件设备的相关属性信息,也有内核对硬件特性的设定信息,有些参数是可以修改的,用于调整硬件的工作特性
内核模块管理及编译
kernel:内核核心,一遍为bzimage通常在/boot目录下 名称为vmlinuz-version-release
kernel object:内核对象,一般放置于 /lib/modules/version-release/
辅助文件:ramdisk
initd centos5之前版本 initdramfs centos6之后版本
内核版本
uname命令 -n显示节点名称 -r显示版本信息 -a显示所有信息
内核模块命令
lsmod
显示由核心已经装载的内核模块
显示的内容来自于:/proc/modules文件
显示:名称、大小,使用次数,被哪些模块依赖
modinfo命令:管理内核模块
配置文件:/etc/modprobe.conf /etc/modprobe.d/*.conf
显示模块的详细描述信息
-n:只显示模块文件路径
-p:显示模块参数
-a:作者
-d:描述
modprobe 装载卸载内核模块 -r卸载
modprobe [ -C config-file ] [ modulename ] [ module parame-ters... ]
modprobe [ -r ] modulename…
depmod命令:内核模块依赖关系文件及系统信息映射文件的生成工具
insmod命令:可以安装模块,需要指定模块文件路径,并且不自动解决依赖模块
insmod [ filename ] [ module options... ]
insmod [ filename ] [ module options... ]
rmmod [ modulename ]
编译内核
下载源码-准备/boot/config-uname -r
配置文件--make menuconfig配置内核选项,相当于./configure--make [-j #](make -j # bzImage make -j # modules)--make modeules_install安装模块-安装内核相关文件:make install(vmlinuz-version-release、生成initramfs文件、编辑grub配置文件
解压源码
执行make menuconfig报错,解决相依的依赖包关系即可且#修改下面两行,CentOS7无需修改# CONFIG_MODULE_SIG is not set CONFIG_SYSTEM_TRUSTED_KEYS=""
执行make -j 2 实现生成bzimgae和安装modules (make允许2个编译命令同时只需,从而充分利用CPU的能力,提高编译速度,特别是在多核CPU上。当然,具体多少个任务同时执行为佳,还需要根据具体的机器配置,任务数太多,反而效果不好。)
安装模块:make modules_install
安装内核相关文件:make install
安装bzImage为 /boot/vmlinuz-VERSION-RELEASE
生成initramfs文件
编辑grub的配置文件
内核编译说明
支持“更新”模式进行配置:make help标签:文件,sysctl,54,make,编译,内核,conf,内核模块 From: https://blog.51cto.com/gavenlee/5951876
(a) make config:基于命令行以遍历的方式配置内核中可配置的每个选项
(b) make menuconfig:基于curses的文本窗口界面
(c) make gconfig:基于GTK (GNOME)环境窗口界面
(d) make xconfig:基于QT(KDE)环境的窗口界面
(a) make defconfig:基于内核为目标平台提供的“默认”配置进行配置
(b) make allyesconfig: 所有选项均回答为“yes“
(c) make allnoconfig: 所有选项均回答为“no“
make -j 全编译
cd /usr/src/linux; make dir/ 只编译dir/目录中的代码
cd /usr/src/linux; make dir/file.k 只编译目录dir/file.ko文件,如make drivers/net/ethernet/intel/e1000/e1000.ko
make ARCH=arch_name 编译其他架构平台
重新编译需要事先清理操作
make clean:清理大多数编译生成的文件,但会保留.config文件等
make mrproper: 清理所有编译生成的文件、config及某些备份文件
make distclean:包含 make mrproper,并清理patches以及编辑器备份文件
卸载内核
删除/usr/src/linux/目录下不需要的内核源码
删除/lib/modules/目录下不需要的内核库文件
删除/boot目录下启动的内核和内核映像文件
更改grub的配置文件,删除不需要的内核启动列表 grub2-mkconfig -o /boot/grub2/grub.cfg
CentOS 8 还需要删除 /boot/loader/entries/5b85fc7444b240a992c42ce2a9f65db5-新内核版本.conf