linux内核的编译

2016-01-29 19:17 4 1 收藏

linux内核的编译,linux内核的编译

【 tulaoshi.com - Linux 】

  1. 要怎麽进行核心的配置?
1.1. 取得原始程序码
你可以经由 ftp 从 ftp.funet.fi 或是 mirror in /pub/OS/Linux/PEOPLE/Linus 取
得原始程序码。也可以到这个节点的 mirror 或其他节点去拿。档案名称一般是以标记
成 linux-x.x.x.tar.gz 为代表,其中的 x.x.x 是版本编号。较新的(更好的?)版
本以及修补档一般是放在类似”v1.1 ”以及”v1.2”这样的子目录下。
强烈建议你去找 mirror 的 ftp 节点,而不要直接到 ftp.funet.fi 去!底下是一些
mirrors 以及其他节点的简要列表
( ftp.funet.fi 的 mirror 节点:)
Germany:        ftp.Germany.EU.net
UK:             doc.ic.ac.uk
Australia:      kirk.bu.oz.au
( 其它有摆放核心档案的节点:)
USA:            tsx-11.mit.edu
USA:            sunsite.unc.edu
Germany:        ftp.dfv.rwth-aachen.de
如果你没有办法上 ftp ,有个存放 linux 的 BBS 系统列表会定期刊登在
comp.os.linux.announce 上,试著到那边去找点帮助。
1.2. 解开原始程序码的包装
确定你是以″ root ″的身份签入,然後 cd 到 /usr/src 。如果你的 linux 是从其
它任何可能的地方取得的,在这个目录底下应该已经存在一个叫做” linux ”的子目
录。这是旧版的 linux 原始程序码。如果你还有磁碟空间而且想要玩得安全一点,那
麽你会想要保留这个子目录的。有个好主意是根据你目前使用的核心版本来修改这个子
目录的名称。″ uname -r ″这个指令将会告诉你新的版本。
所以,如果″ uname -r ″显示″ 1.1.47,″你就可以把″ linux ″改名为
″ Linux-1.1.47 。″如果你是个鲁莽型的人,那就直接把这个子目录清除掉。无论是
哪一种情况,反正只要确定在解开全部的原始程序码之前, /usr/src 目录下没有
”linux ”这个子目录就对了。
在 /usr/src 目录下,用″zcat linux.x.x.tar.gz | tar xvf- ″来解开原始程序码
的包装(你也可以用更简单的″ tar zxvf linux.x.x.x.tar.gz″;如果你拿到的是
..tar 的档案(後面没有加上  gz ),那就用” tar xvf linux.x.x.x.tar ”)。你
将会看到原始程序的内容飞逝而过。当它完成以後,将会出现一个新的″ linux ”子
目录。
″ cd ″到 linux 目录下然後查看 README 档,里面应该会有一段标题为
″INSTALLING the kernel″ 或类似的文字。如果适当的话,先执行说明里的指示 —
建立该有的符号链结,移除过时的 .o 档案等等等诸如此类的工作。
1.3. 配置核心
注意:这部份内容有些是重覆 Linus 的 README 档案中的相应章节或加以修订。
在 /usr/src/linux 下执行″ make config ″ 这个命令将会启始一个指令稿,而这个
指令稿会问你各种问题。它需要 bash ,所以要确定 bash 是 /bin/bash,/bin/sh 或
$BASH 。
你现在该准备好回答这些问题,通常用″ y ″或″ n ″就可以了。有一些很明显或是
不重要的选项将不会在此加以说明。
1.3.1. Kernel math emulation (核心的浮点运算模拟)
如果你没有数学辅助运算处理机(ie,你只有一台单纯的 386 或 486SX ),那麽你在
这里要回答″ y ″。如果你已经有数学辅助运算处理机却还回答″ y ″,那也不必太
担心 — linux 还是会去使用它而忽略掉核心的模拟程序。唯一的影响是编译出来的核
心变大了。
1.3.2. Normal harddisk support (标准硬碟支援)
你在这里差不多都得回答″ y ″。它代表的意思是核心将会支援标准的 PC 磁碟,例
如大多数人使用的 IDE 界面硬碟。这不包括 SCSI 设备的支援。
1.3.3. Networking support (网络支援)

来源:http://www.tulaoshi.com/n/20160129/1508952.html

延伸阅读
1.1内核模块的编译文件 一个内核模块不是一个可以独立执行的文件,而是需要在运行时刻连接入内核的目标文 件。所以,它们需要用-c选项进行编译。而且,所有的内核模块都必须包含特定的标志: ? __KERNEL__——这个标志告诉头文件此代码将在内核模块中运行,而不是作为用户进 程。 ? MODULE——这个标志告...
  解决复杂性的所有方法都基于一个基本原理:问题分解和各个击破。也就是说,都是把大 型的、难以解决的问题(或系统)分解成一定数量的复杂度较低的子问题(或子系统), 再根据需要重复这一过程直到每一部分都小到可以解决为止,而各种方法只是这种原理的 一些不同运用而已。 计算机科学中有三种经典的方法比较适合于构建大型系统(...
标签: 服务器
linux内核驱动-内核初涉   一、为什么要学习内核? 有些人要学习内核,而有些人则可以不学习它。你如果以后要从事系统研发或驱动开发的话,就要学习内核。 刚刚接触内核,主要学习内核的接口函数。不要深入的去读内核,因为你读也读不懂,内核代码庞大如野兽一般不可驾驭。 学习内核主要掌握层次学习法,即从头开始学习...
驱动程序的使用可以按照两种方式编译,一种是静态编译进内核,另一种是编译成模块以供动态加载。由于uClinux不支持模块动态加载,而且嵌入式Linux不能够象桌面Linux那样灵活的使用insmod/rmmod加载卸载设备驱动程序,因而这里只介绍将设备驱动程序静态编译进uClinux内核的方法。 下面以uClinux为例,介绍在一个以模块方式出现的驱动程...
在最新的版本中,windows环境与linux环境下使用一套代码。比如mysql-6.0.4-alpha版本中的INSTALL-WIN-SOURCE文件的描述: TobuildMySQLonWindowsfromsource,youmustsatisfythe followingsystem,compiler,andresourcerequirements: *Windows2000,WindowsXP,ornewerversion.WindowsVistais notsupporteduntilMicrosoftcert...

经验教程

842

收藏

85
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部