标题:
从ARM编译Linux内核
[打印本页]
作者:
yuyang911220
时间:
2015-5-30 09:07
标题:
从ARM编译Linux内核
内核编译
这个文章告诉你怎样给在目标平台上的ARM的机器上面编译内核.
这里是一些说明帮助你理解本文中的相关的术语和约定:
* "bash$"和"bash#"是shell提示符号,不是键入的命令。
* "host"是你编译ARM内核的机器。
* "target"是使用你编译的ARM内核的机器。
1.决定在哪里编译你的内核
首先,你需要决定你要从那里编译你的ARM Linux内核。一个比较好的位置就是在你的home目录,我们在这篇文档中使用$HOME来表示它。如果你需要使用其他位置,那么就用相应的位置来替换$HOME变量。
然而,请注意,最好不要在/usr/src/linux中编译内核。
2.决定内核的版本号
首先,你需要决定你想要编译哪个版本的linux内核。大多数然想要编译最新版本的稳定内核。有一套表示版本号的机制,可以帮助你决定识别一个特定的发行版本。
对于任何的内核版本x.y.z,
* x -这个是主版本号
* y -这个是次版本号,这里:
偶数表示“稳定的”内核发行
奇数表示"开发"或者"beta"内核发行版本,相对来说不稳定。
* z -这是这个内核的补丁级别。
这个版本号表示了内核版本的主线。
写这个文档的时候,最新的稳定的ARM内核版本是2.6.6.
在ARM内核树中,你会发现这样的内核版本号后缀:-rmkN,或者-vrsN这里,'N'就是发行的补丁号。例如,2.4.26-vs1。这里表示应该使用的主要的ARM内核补丁版本号。(注意,比2.6.0-test2晚的内核不需要-rmk或者-vrs补丁,因为这时候已经有了ARM体系的支持)
其他的维护者,例如Nicolas Pitre,可能会提供额外的补丁,如果这样那么会增加额外的后缀来表示他们的版本号。Nicolas Pitre的补丁增加的是-nl后缀,例如2.4.21-rmk2-np1.
这里代表的意思是,2.4.21-rmk2-np1是基于2.4.21-rmk2的,而2.4.21-rmk2又基于2.4.21内核。因此,为了获得2.4.21-rmk2-np1内核的源代码,你需要2.4.21主线内核的源代码,2.4.21-rmk2补丁,以及2.4.21-rmk2-np1补丁。
因此,如果你需要从其他维护者那的额外的补丁,你需要仔细的选择合适的内核版本号。你可以首先定位维护者的补丁,然后根据版本号最终获得主线内核的版本。
3.下载指定维护者的补丁
在一些环境中,你需要使用指定的维护者的补丁来给内核打补丁。这些补丁增加了和具体机器相关的额外的特性或者设备驱动。(然而,一般来说,由于喜欢那些改变,维护者把他们的补丁跟踪前面的部分到-rmk或者-vrs中???。)
对于额外的补丁信息,请参考机器列表。
4.下载ARM补丁
(你的内核如果是在2.6.0-test2之前的版本,你才需要执行这一步,在后来的版本中没有-rmk或者-vrs补丁。)
你可能需要给某个特定的内核版本下载一个包含所有指定ARM特性的内核补丁。这些能够在
ftp://ftp.arm.linux.org.uk/pub/armlinux/source/kernel-patches/
中找到。内核的发行版本根据特定的主版本号和此版本号放到特定的目录中。
个别的文件被命名为:patch-x.y.z-rmkN.gz或者patch-x.y.z-vrsN.gz,这里'x','y','z'和'N'是前面提到的版本号。你应该选择和下载最新的内核补丁到主目录下面。这样会具有更多的特性以及更多的bug被修改。当下载主要的内核源代码之后,你稍后需要补丁的版本。
注意:一些文件被命名为类似pre-patch-x.y.z-rmkN.gz的。这些是alpha或者beta的补丁,他们对于测试一些新的想法和特性是很有用的,这样的补丁可能是不稳定的,所以除非你确定你要用这些补丁或者你不关心平台的稳定性,否则最好不要使用它们。
注意2:有些内核基于Alan Cox系列的内核。它们的名字类似:patch-x.y.z-acm-rmkN.gz,这里x.y.z就是Linus的版本号,m是Alan的版本号。在这种情况下,你需要获得Alan Cox的相应补丁,补丁的位置在kernel.org服务器的目录:/pub/linux/kernel/people/alan/linux-2.4/.
5.下载内核源代码主线
一个补丁文件本身并不包含任何可以编译的代码。它实际上就是描述了一系列文件之间的变化(在这里面指的是内核的源代码)。你需要获得主要的内核源代码树。
内核源代码能够在下面的kernel.org FTP站点找到。有许多的站点分散在世界各地。
*
ftp.uk.kernel.org
*
ftp.us.kernel.org
*
ftp.de.kernel.org
你还可以在主站点
www.kernel.org
上面找到这些站点的更多的信息。
一旦你选择了一个站点,你需要寻找内核的源代码。他们被存放在目录:/pub/linux/kernel.每个内核随着一些文件被发行:
* linux-x.y.z.tar.gz
* linux-x.y.z.tar.bz2
* patch-x.y.z.gz
* patch-x.y.z.bz2
你将要下载linux-x.y.z.tar.gz文件到你的主目录。并且,你应该查找匹配你前面获得的补丁的版本。这些文件比较大(14MB或者更多),所以可能会花费一些时间。
6.解压ARM内核源代码
使用下面的命令解压你前面下载的源代码:
bash$ cd $HOME
bash$ tar zxvf linux-x.y.z.tar.gz
这样将会在你的home目录下面建立一个叫做linux或者linux-x.y.z的目录,进入那个新建立的母爱,然后应用补丁,如下:
bash$ cd linux-2.4.26
bash$ zcat ../patch-2.4.26-vrs1.gz | patch -p1
这些补丁具层次结构,所以你需要用正确的次序来应用他们。一般来说具有更多扩展名的补丁依赖于较少扩展名的补丁,例如,应用的时候,-rmk补丁可能会在-rmk-np补丁之前。
然后就可以准备配置内核源代码树了。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0