码迷,mamicode.com
首页 > 系统相关 > 详细

Linux编译内核

时间:2015-02-20 00:13:16      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:linux   kernel   initrd   

查看内核:

#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/KERNEL_VERSION/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 安装内核模块。

#make install


4.编译initrd

#mkinitrd INITRDFILE KERNELVERSION 创建initrd文件。


编译内核的常见情况:


1.编译内核过程中中断:

使用screen工具。


2.编译后再次编译:

删除整个文件夹重新解压后编译。


如有必要先备份.config文件。

#make clean 清理此前编译好的二级制模块。

#make mrproper 清理此前编译进行的所有操作。


本文出自 “小私的blog” 博客,请务必保留此出处http://ggvylf.blog.51cto.com/784661/1614900

Linux编译内核

标签:linux   kernel   initrd   

原文地址:http://ggvylf.blog.51cto.com/784661/1614900

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!