构建小型嵌入式Linux系统.doc
构建小型嵌入式Linux系统
焦 扬
2008.6.20
目录
1 编译linux最小内核3
1.1 准备内核源码3
1.2 配置内核4
1.3 内核配置结果14
1.4 内核配置总结15
2 用busybox 制作linux根文件系统16
2.1配置编译busybox17
2.2 创建rootfs 文件23
2.3 构建rootfs总结27
3 总结28
系统要求:
(1)qemu模拟 X86体系 shell界面 支持网络 系统越小越好
(2)Linux内核+rootfs(使用busybox)
基本步骤:
编译linux最小内核得到arch/i386/boot/bzImage文件
用busybox制作linux根文件系统rootfs
1 编译linux最小内核
——选用linux-2.6.23内核
在编译linux内核之前,首先要确定自己的需求,需要让内核支持什么硬件,支持多少种分区类型和文件系统,支持哪些网卡,支持哪些网络协议Linux的最主要的特点就——可裁剪。
由系统要求所知:所需要的硬件为X86体系,shell界面,支持网络等,那么我们就进入linux内核的编译过程中去。
现在手头上只有linux-2.6.23.tar.gz(如果没有或需要其他版本需自行下载),这已经足够了。
1.1 准备内核源码
# tar –zvxf linux-2.6.23.tar.gz
在当前目录下会出现一个linux-2.6.23目录。如果打算把linux-2.6.23.tar.gz解压到指定目录下。比如在主目录下建一个文件夹为workplace,那么 # tar zvxf linux-2.6.23.tar.bz –C /home/rtos/workplace。那么就把它解压到指定的文件夹workplace里了。
1.2 配置内核
cd linux-2.6.23 //进入linux-2.6.23目录
make allnoconfig //这一步的目的是把内核配置的所有选项都不选择
make menuconfig //选择系统所需要的最小配置
make //编译内核
在配置选项时则需要使用空格键进行选取。在每一个选项前都有个括号, 但有的是中括号有的是尖括号,还有一种圆括号。 用空格键选择时可以发现,中括号里要么是空,要么是“*”,而尖括号里可以是空,“*”“M”这表示前者对应的项要么不要,要么编译到内核里;后者则多一样选择,可以编译成模块。而圆括号的内容是可以在所提供的几个选项中选择一项。选择相应的配置时,有三种选择,它们分别代表的含义如下:
Y——将该功能编译进内核
N——不将该功能编译进内核
M——将该功能编译成可以在需要时动态插入到内核中的模块
在编译内核的过程中,最烦杂的事情就是这步配置工作了,有些甚至都不清楚到底该如何对这些选项进行取舍。实际上在配置时,大部分选项可以使用其缺省值或者不选,只有小部分需要根据用户不同的需要选择。选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。
make allnoconfig这一步把内核配置的所有选项都不选择。如图1可以看到所有的选项都没有被选中。
图 1
下面就要开始具体的配置内核选项,make menuconfig后出来配置界面。如图2所示:
图 2
General setup --->
这里面什么都没有选择,具体选项内容就不再赘述
Enable loadable module support --->
这个选项可以让内核支持模块,模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。在运行时可以加载它到内核中去,在不需要时还可以移除它。同样都没有选择。
Enable the block layer --->
这个选项也是什么都没有选
Processor type and features --->
主要进行以下两项的选择:
Subarchitecture Type (PC-compatible) --->
这是一个比较新的特性,主要的目的是使Linux可以支持多种PC标准,一般我们使用的PC机是遵循所谓IBM兼容结构(pc/at)。这个选项可以让你选择一些其它架构。我们一般选择PC-compatible就可以了。如图3所示: