查看内核:
#uname [OPTION]
[OPTION]
-r 显示内核版本和release号。
用户空间访问、监控内核的方式:
/proc
/sys
伪文件系统:
/proc/sys 目录中很多文件是可读写的。
/sys 某些文件可写
设定内核参数值的方法:
临时生效,重启后失效:
#echo VALUE > /proc/sys/FILE
#sysctl -w DIR.FILE=VALUE
在/proc/sys目录下可以忽略/proc/sys,剩余路径用DIR.FILE表示。
例如:
#echo 1 > /proc/sys/vm/dorp_caches
#sysctl -w vm.dorp_caches=1
#sysctl -w kernel.hostname=test.com
#sysctl -w net.ipv4.ip_forward=1
永久有效,不立即生效:
修改/etc/sysctl.conf文件。修改后使用sysctl -p让系统重读文件,立即成效。
编辑格式如下:
DIR.FILE=VALUE
#sysctl [OPTION] DIR.FILE=VALUE
[OPTION]
-w 临时改变某参数的值。
-p FILE 从指定的FILE中加载系统参数,立即生效。如不指定即从/etc/sysctl.conf中加载。
-a 显示所有内核参数及其值。
内核模块管理:
#lsmod 列出当前内核中装载的模块和模块名称。
显示格式如下:
Module 模块名称
Size 大小
Used by 使用次数、被哪个文件调用等信息。
#modprobe [OPTION] MODNAME 装载名称为MODNAME的模块。会处理模块间的依赖关系。
[OPTION]
-r 卸载模块
#modinfo MODNAME 查看模块具体信息。
#insmod MODDIR 装载模块。
#rmmod MODNAME 卸载模块。
#depmod MODDIR 生成模块间依赖关系。并保存到该目录中。
例如:
#lsmod |grep floppy
#modproble -r floppy
#modinf mii
#insmod /lib/modules/KERNELVERSION/kernel/drivers/net/mii.ko
#rmmod mii
内核中的功能除了核心功能以外,在编译时,大多数功能都有3种选择:
1.不使用此功能。
2.编译成内核模块。
3.编译进内核。
编译内核:
0.安装开发库和工具:
#yum groupinstall "Development Tools" "Development Libaries"
1.内核下载完成后,解压存放在/usr/src下。可以创建软链接简化访问。
#tar -xf KERNELFILE -C /usr/src
/usr/src/KERNELVERSION
#cd /usr/src
#ln -s KERNELVERSION SIMPLENAME
2.将当前内核的配置文件复制为要编译的内核的.config文件。这样有效避免一定程度上自选功能生成的.config文件因为功能选择不当或依赖关系造成无法启动,重复进行多次编译。
#cp /boot/config-KERNEL_VERSION /usr/src/SIMPLENAME/.config
3.开始编译:
#cd SIMPLENAME
图形界面下:
需要安装图形界面开发库。
#make geconfig Gnome环境使用。GNOME Software Development
#make kconfig KDE环境使用。KDE Software Development
文本:
#make menuconfig
其中:
*:编译进内核。
M:编译成模块
空: 不使用此功能。
#make
#make modules_install 编译
内核模块至/lib/modules/KERNELVERSION。
#make install
4.编译initrd
#mkinitrd INITRDFILE KERNELVERSION 创建initrd文件。
编译内核的常见情况:
1.编译内核过程中中断:
使用screen工具。
2.编译后再次编译:
删除整个文件夹重新解压后编译。
或
如有必要先备份.config文件。
#make clean 清理此前编译好的二级制模块。
#make mrproper 清理此前编译进行的所有操作。
部分编译:
1.编译某子目录下的相关代码:
#make DIR/
例如:
#make arch/ 只编译跟硬件平台相关的内核核心。
#make drivers/net/ 只编译网络相关的驱动。
2.编译部分模块:
#make M=DIR
例如:
#make M=drivers/net/ 只编译网络相关的模块。
3.编译某一模块
#make DIR/MODULENAME
例如:
#make drivers/net/pcnet32.ko
4.将编译完成的结果放置在其他目录中:
#make O=DIR
例如:
#make O=/tmp/testkernel