简介
Linux内核的体积结构是单内核的,但充分借鉴了微内核设计体系的优点,为内核引入模块化机制,使得虽然是单内核、但工作在模块化的方式下、并且这个模块可以动态装载或卸载;Linux负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。如是我们在了解Linux内核的基础上根据自己的需要、量身定制一个更高效,更稳定的内核,就需要我们手动去编译和配置内核里的各项相关的参数和信息。
一 编译内核之前的准备
前提:
1.获取当前内核版本信息,我这里的内核版本是2.6.32-573.el6.x86_64
2.获取内核源代码,建议直接去官方网站(www.kernel.org)下载. 我这里准备的是linux-3.10.96.tar.xz的版本,尽量不要直接编译最新版本的内核,可能会造成不兼容等问题。
3.准备好开发环境,包组(CentOS 6): Server Platform Development 和 Development Tools
yum groupinstall -y Server Platform Development Development Tools
4.配置内核之前可以查看当前系统的设备信息,了解系统详细配置
查看CPU信息:
cat /proc/cpuinfo
x86info #此工具需手动安装,yum -y install x86info
lscpu
查看PCI信息:
lspci #可用选项-v查看详细信息
查看USB信息:
lsusb #可用选项-v查看详细信息
查看块设备信息:
lsblk
5.建议使用现有的模板编译安装,我这里的现有的模板在 /boot/config-2.6.32-573.el6.x86_64 (备注:这个模板文件适用在2.6.32 版本的,在3.0 内核以 上版本有可能出现不兼容的情况)
二 编译内核
1.把下载的内核源码包解压,一般把源码解压到/usr/src目录下,解压完成后会在该目录下生成一个与源码包版本号一致的目录,为了方便起见,我们可将它做一个链接,链接为linux目录。
tar xf linux-3.10.96.tar.xz -C /usr/src/
cd /usr/src/
ln -sv linux-3.10.96 linux
2.把内核模板文件复制放进/usr/src/linux
cp /boot/config-2.6.32-573.el6.x86_64 .config
3.配置内核,这步配置内核的方法有多种,每一个make就是一种方法,我们只在选一种就可以了.
支持“更新”模式进行配置:
(a) make config:基于命令行以遍历的方式去配置内核中可配置的每个选项;
(b) make menuconfig:基于curses的文本窗口界面,这个命令需要打开的窗口大于80字符的宽度,打开后就可以在里面选择要编译的项了,用此命令需安装gcc和ncurses-devel
(c) make gconfig:基于GTK开发环境的窗口界面;
(d) make xconfig:基于Qt开发环境的窗口界面;
支持“全新配置”模式进行配置:
(a) make defconfig:基于内核为目标平台提供的“默认”配置进行配置;
(b) make allnoconfig: 所有选项均回答为"no";
内核功能选项:
[*] #编译进内核本体
[M] #编译成内核模块
[ ] #不选择使用
使用make menuconfig开启菜单选项,手动选择内核功能
make menuconfig #打开了刚才的.config 的模板配置文件
配置完成后,配置信息会存储于名为.config的隐藏文件
4.开始编译内核安装
注意:编译时如果是远程连接,一旦断开连接,编译就会出问题。所以我们使用一个叫screen这个命令来操作,没安装自己Yum安装上就是了,可以在一个窗口上启 动n个虚拟的桌面,即使退出了也会保留之前的内容,切换进screen就可以看到窗口标题栏上的screen标志了:
screen #开启窗口
Ctrl+a d #隐藏窗口
screen -ls #查看运行的窗口
screen -r SCREEN_ID #返回窗口
开始编译
make
安装模块
make modules_install
这步完了之后你可以查看一下/lib/modules/目录下就会生成一个以同版本号命名的一个文件模块了
安装内核
安装完成后会在/boot目录下生成几个新内核的文件
查看grub.conf配置文件,会发现新内核的信息已经写入了
5.重启启动系统,以新内核启动系统
查看内核版本
补充:
如何在已经执行过编译操作的内核源码树做重新编译:
事先清理操作:
1. make clean:清理大多数编译生成的文件,但会保留config文件等;
2. make mrproper: 清理所有编译生成的文件、config及某些备份文件;
3. make distclean:完全清理
如何加速编译
make [-j #] #为cup核心数
如何只编译内核中的一部分功能:
(a) 只编译某子目录中的相关代码:
# cd /usr/src/linux
# make dir/
(b) 只编译一个特定的模块:
# cd /usr/src/linux
# make dir/file.ko
三 总结编译安装步骤
1.获取内核源码,解压至/usr/src ,做个软链接
tar xf linux-3.10.96.tar.xz -C /usr/src/
cd /usr/src/
ln -sv linux-3.10.96 linux
cp /boot/config-2.6.32-573.el6.x86_64 .config
2.配置内核特性
make menuconfig
3.编译内核
make
4.安装内核模块
make modules_install
5.安装内核
make install
6.查看grub.conf配置文件,确认新编译的内核版本信息,重启启动测试
cat /boot/grub/grub.conf
reboot
原创文章,作者:liangkai,如若转载,请注明出处:http://www.178linux.com/11697