linux 内核 库 编译,Linux编译内核

查看内核:

#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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值