为了正确的合理地设置内核编译配置选项,从而只编译系统须要的功能的代码,通常主要有下面四个考虑:
---本身定制编译的内核运行更快(具备更少的代码)
---系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)
---不须要的功能编译进入内核可能会增长被系统攻击者利用的漏洞
---将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些 html
1.得到最新内核linux
Linux内核版本发布的官方网站是< http://www.kernel.org/>,国内各大ftp上通常均可以找到某些版本的内核。新版本的内核的发布有两种形式,一种是完整的内核版本,另一种是patch文件,即补丁。完整的内核版本比较大,好比linux-2.4.0-test8.tar.bz2就有18M之多。完整内核版本通常是.tar.gz(.tgz)文件或者是.bz2文件,两者分别是使用gzip或者bzip2进行压缩的文件,使用时须要解压缩。patch文件则比较小,通常只有几十K到几百K,极少的会超过1M。可是patch文件是针对于特定的版本的,须要找到本身对应的版本才能使用。 vim
2.配置内核安全
内核的编译选项的个数很是多, v2.6.38的内核中就有 12 000 个左右的设置选项(这是包含全部arch的配置选项).
内核编译选项不只多, 有些编译选项之间还存在依赖关系, 因此手动设置编译选项几乎是不可能的.
值得庆幸的是, 只要知道本身须要设置的那些选项, 就可使用 make ***config 来进行设置, 它还会自动处理依赖关系.架构
配置方法:网站
若是这不是你第一次配置这个内核,那么请先运行:make mrproper(http://www.cnblogs.com/laojie4321/archive/2012/04/11/2442921.html)来清除之前的配置.ui
3.编译内核spa
输入以下命令,编译生成一个压缩内核:操作系统
$ make.net
开始编译内核模块:
$ make modules
4. 安装内核及模块
安装内核, bzImage文件是内核映像文件,是启动内核所必需的,咱们应当把它拷贝到/boot目录下。通常内核映像文件的命名方式为它更名为vmlinuz-2.6.12.
# make install (安装内核二进制映像, 生成并安装boot初始化文件系统映像文件)
该指令将会在/boot目录下安装以下三个文件:
System.map-2.6.25
config-2.6.25
vmlinuz-2.6.25
安装模块,对于内核来讲,每个内核版本有本身的模块目录,默认在/lib/modules/内核版本号这个目录下,make modules_install会建立对应的目录,并把对应的模块文件拷贝过去。注意,这一步必需要在编译过内核再作。
make modules_install (安装内核模块到 /lib/modules 下)
6.建立initrd.img文件
在终端输入以下代码:
# cd /boot
# mkinitrd -o initrd.img-2.6.25 2.6.25
initrd映像文件包含设备驱动,用来加载操做系统的其他部分。并非全部的电脑都须要initrd文件,不过建立一个是比较安全的作法。
7.修改grub配置文件
grub配置文件的位置在/boot/grub/menu.lst
使用vim或者vi打开文件:
# vi /boot/grub/menu.lst
title Debian GNU/Linux, kernel 2.6.25 Default
root (hd0,0)
kernel /boot/vmlinuz root=/dev/hdb1 ro
initrd /boot/initrd.img-2.6.25
savedefault
boot
记得,须要填写正确的 root=/dev/hdXX 。保存并关闭该文件。若是你以为所有手工输入有些麻烦,能够尝试输入update-grub命令:
# update-grub
参考:
http://www.360doc.com/content/13/0308/14/11722082_270168965.shtml
http://blog.chinaunix.net/uid-24782829-id-3211008.html
http://www.cnblogs.com/wang_yb/p/3899439.html
http://blog.chinaunix.net/uid-26404477-id-3126818.html
http://www.oschina.net/question/234345_42957