您的位置:首页 > 运维架构 > Linux

Linux之基础篇-编译核心

2014-07-29 20:11 183 查看
一、什么情况下,需要对核心重新编译?
1. 针对特定的CPU类型优化核心;
2. 提供对没有编译到标准核心文件中的硬件驱动的支持;
3. 支持特殊的硬件;
4. Bug修复或增加新特征所需要的驱动更新;
5. 使用新核心中的新特征;
6. 为了优化内存而删除不再使用的驱动和特征。
二、准备源码
1. 获取源码

A, 从www.kernel.org上下载Linus标准核心
B, 使用厂商提供的核心源码软件包

2. 解包
扩展名为tar.gz的源码包
A, tar xzvf linux-2.6.9.tar.gz
-x:从存档展开文件

-z:用 gzip 对存档压缩或解压
-v:详细显示处理的文件
-f:指定存档或设备

B, gzip -dc linux-2.6.9.tar.gz|tar -xvf-
-d:解压缩
-c:标准输出

C, zcat linux-2.6.9.tar.gz|tar -xvf -
扩展名为tar.bz2的源码包
bunzip2(或bzip2) -dc linux-2.4.29.tar.bz2|tar
-xvf -
bzcat linux-2.4.29.tar.bz2|tar -xvf -
3.如果用户只从不同版本之间修改核心,就不用下载整个核心,只下载补丁即可
解包后运行patch -p0 -N -E -s patch-2.2.14
-pnumpatch文件内容中定义的文件和被patch的文件的相对路径决定的
-N:忽略那些看起来被颠倒的或已经应用过的补丁
-E:在应用补丁后删除空的文件
-s:安静模式
这样可以把/usr/src/linux下的源码从2.2.13版本更新到2.2.14版本
三、整理源码
a.运行命令make mrproper
b.目的是清除原先此目录下残留的.config和.o(object文件),如果我们是刚下载的源码,那么这一步就可以省了,但是如果已经编译过多次内核的话,这一步可是一定要的
四、配置核心
1.配置核心的四种方法
make config
基于文本的最为传统的配置界面
缺陷是一旦选择了某种操作,不可能再回去更改,要重新运行该命令来修改。
make menuconfig
基于文本选单的配置界面,推荐使用
运行该命令需要ncurse库,ncurse是字符模式的全屏幕编程类库,

一般的终端都支持
make xconfig
基于图形窗口模式的配置界面
需要启动X Server,需要Tcl/tk的支持
make oldconfig
如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦
2.进行配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。例如,如果需要内核支持DOS分区的文件系统,则要在文件系统部分选择FAT或DOS系统支持;系统如果配有网卡、PCMCIA卡等,需要在网络配置中选择相应卡的类型。
3.选择相应的配置时,有三种选择,它们分别代表的含义如下:

Y”- 将该功能编译进内核

N”- 不将该功能编译进内核

M”- 将该功能编译成可以在需要时动态插入到内核中的模块。
4.将与核心其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响。许多功能都可以这样处理,例如像上面提到的网卡的支持、对FAT等文件系统的支持。
5.编译内核最关键的地方就是配置内核
五、编译
make dep (确保关键文件在正确的位置)
2.5.*-2.6.0都不需要了。其实2.4.*某些内核也不需要了
make clean (确保所有有关文件都处于最新版本状态)
make zImage (编译压缩形式的内核)
在需要内核支持较多的外设和功能时,内核可能变得很大,此时可以编译大内核:

make bzImage(现在的内核一般都超过1MB,所以应该使用该命令)
注意:2.6以后的版本没有make
dep,在配置完核心后,运行make install即可,其实2.4.21后的版本也可以这样做。
六、安装
1.LILO

cp ./arch/i386/boot/zImage /boot/vmlinuz-$VERSION
cd /boot
rm vmlinuz
ln –s
vmlinuz-$VERSION vmlinuz
lilo –v
为了避免新编译的内核有问题而无法启动,上面所做的中间
三步改为直接修改/etc/lilo.conf

image=/boot/vmlinuz

label=linux

initrd=/boot/initrd

read-only

root=/dev/hda3

vga=769

image=/boot/vmlinuz-2.4.29

label=linux-2.4.29

initrd=/boot/initrd

read-only

root=/dev/hda3

vga=769

image=/boot/vmlinuz

label=linux-SafeMode

initrd=/boot/initrd

read-only

root=/dev/hda3

中间部分为新核心

按上图修改lilo.conf,这样即使在新的核心无法启动时,也可以用旧核心启动系统。
2.Loadlin
把zImage或bzImage文件拷贝到相应的DOS分区内重启系统
3.Boot软盘
运行make zdisk来创建启动软盘
http://blog.chinaunix.net/uid-49097-id-78093.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: