Linux核心编译

  核心更新的目的

1. 原来的核心太臃肿,为了系统更加稳定,去掉不需要的功能

2. 新功能的需求

3. 为了适应更新的硬件,需要编译核心

4. 嵌入式系统的需要

核心的版本

本的组成–:[主].[次].[释出]-[修改]

版本位为奇数则说明此版本位测试版本(2.5.x),为偶数说明是稳定版本(2.6.x)。

同版本间升级要注意核心函数库的变更情况,如变动大不建议升级核心以免造成依赖的软件不可用

心释放的官方 站为:www.kernel.org

心patch的升级要连续版本升级,查看patch说明才能决定

核心源码的下载安装

1. 源码的解压缩位置

a) 一般位于/usr/src/kernels/

b) 命令为 tar -jxvf linux-2.6.30.3.tar.bz2 -C /usr/src/kernels/

arch :与硬体平台有关的项目,大部分指的是CPU 的类别,例如x86, x86_64, Xen 虚拟支援等;

block :与区块装置较相关的设定资料,区块资料通常指的是大量储存媒体!还包括类似ext3 等档案系统的支援是否允许等。

crypto :核心所支援的加密的技术,例如md5 或者是des 等等;

Documentation :与核心有关的一堆说明文件,若对核心有极大的兴趣,要瞧瞧这里!

drivers :一些硬体的驱动程式,例如显示卡、 路卡、PCI 相关硬体等等;

firmware :一些旧式硬体的微指令码(韧体) 资料;

fs :核心所支援的filesystems ,例如vfat, reiserfs, nfs 等等;

include :一些可让其他程序呼叫的标头(header) 定义资料;

init :一些核心初始化的定义功能,包括挂载与init 程式的呼叫等;

ipc :定义Linux 作业系统内各程序的沟通;

kernel :定义核心的程序、核心状态、执行绪、程序的排程(schedule)、程序的讯 (signle) 等

lib :一些函式库;

mm :与记忆体单元有关的各项资料,包括swap 与虚拟记忆体等;

net :与 路有关的各项协定资料,还有防火墙模组(net/ipv4/netfilter/*) 等等;

security :包括selinux 等在内的安全性设定;

sound :与音效有关的各项模组;

virt :与虚拟化机器有关的资讯,目前核心支援的是KVM (Kernel base Virtual Machine)

2. 源码下面的目录,以及用处

3. 核心编译前的处理和核心功能选择

a) 检测硬件

b) 核心功能需求

4. 编译前的做法

a) 保持干净的源码

· Make dep 保证所需要的文件都在相关位置

· make mrproper 将会删除所有的配置文件,包括之前编译过核心留下来的配置

· make clean 只删除编译中间产生的中间代码,保留之前配置的核心配置

b) 开始挑选核心功能

· Make menuconfig 用文本目录模式来挑选核心功能

· Make oldconfig 通过已存在的配置文件,来修改核心功能

· Make xconfig 以Qt为基础的图形界面来显示,需要用Qt设计的X Window,KDE可以使用

· Make gconfig 以ftk为基础的图形界面来显示,GNOME可以使用

· Make config 老是方法,文本问答模式,不可逆,不建议

c) 核心功能的细项解释

·

· 设置方式

1. 『左右方向键』:可以移动最底下的

2. 『上下方向键』:可以移动上面大框框部分的反白光柱,若该行有箭头(—>) 则表示该行内部还有其他细项需要来设定的意思;

3. 选定项目:以『上下键』选择好想要设定的项目之后,并以『左右键』选择

4. 可挑选之功能:在细部项目的设定当中,如果前面有[ ] 或 符 时,该项目才可以选择, 而选择可以使用『空白键』来选择;

5. 若为[*] 则表示编译进核心;若为 则表示编译成模组! 尽量在不知道该项目为何时,且有模组可以选,那么就可以直接选择为模组啰!

6. · 当在细项目选择 后,并按下Enter ,那么就可以离开该细部项目啰!

· 解释

1. General setup

与Linux 最相关的程序互动、核心版本说明、是否使用发展中程式码等资讯都在这里设定的。这里的项目主要都是针对核心与程式之间的相关性来设计的,基本上,保留预设值即可! 不要随便取消底下的任何一个项目,因为可能会造成某些程式无法被同时执行的困境喔! 不过底下有非常多新的功能,如果你有不清楚的地方,可以按 进入查阅,里面会有一些建议! 你可以依据Help 的建议来选择新功能的启动与否!

d) 编译命令:

· Make vmlinux 编译未经压缩的核心

· Make modules 编译内核模块

· Make bzImage 编译经过压缩后的核心

· Make all 进行以上三个动作

e) 安装核心以及核心模块

· 把生成的核心文件copy到boot目录

· Make modules_install 安装核心模块

1. mkinitrd -v /boot/initrd-2.6.30.3vbird.img 2.6.30.3vbird

· Mkinitrd –v 目标文件 核心版本 生成initrd文件

· 修改grub.conf文件,来引导新核心启动

f) 额外单一模块的编译

· 模块编译的准备工作

1. Make GCC 等编译工具

2. Kernel-devel软件

· 单一模块的编译

1. 核心中有的功能没有编译,需要核心源码编译

a) 源码所在目录下达make menuconfig讲选项设定没模块

b) 然后make fs/ntfs编译出所需要的模块

c) 将该模块复制到相关的目录里面

d) Depmod –a生成依赖性关系

2. 核心中没有的功能,需要第三方源码编译

a) 源码解压

b) 源码编译出目标文件

c) 安装模块

i. make install

ii. install -m 744 -c r8168.ko /lib/modules/2.6.30.3vbird/kernel/drivers/net/

d) 更新模块依赖性信息 depmod –a

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux25150 人正在系统学习中 相关资源:百度图片疯狂下载器-专业指导文档类资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2015年6月25日
下一篇 2015年6月25日

相关推荐