Embedded Linux Primer----嵌入式Linux基础教程--2.4节--嵌入式Linux发行版

嵌入式Linux发行版

究竟什么是Linux发行版?在Linux内核引导之后,它期望找到并挂载根文件系统。当一个匹配的根文件系统已经挂载上,启动脚本开始运行大量程序和系统要求的工具。这些程序经常调用其他的程序做一些特定的任务,例如产生一个登录shell,初始化网络接口,启动用户程序。这些程序都有特定的要求(经常称为依赖)就是适用于系统中的其它组件。绝大多数Linux应用程序依赖于一个或者多个系统库。其它一些程序需要配置和日志文件,等等。总之,甚至于一个小型的嵌入式Linux系统都需要根文件系统目录结构中的大量文件。

成熟的桌面系统的根文件系统中有数以千计的文件。这些文件来自于按功能分组的包(packages)。这些包通过包管理器来安装和管理。红帽的包管理器(rpm)就是一个很好的例子,并且被广泛使用。如果你的Linux工作站是基于红帽的,包括Fedora系列,都通过在命令中输入rpm –qa来安装包。如果你使用一个Debain发行版本,例如Ubuntu,你可以输入dpkg –l得到相同的结果。

一个包通常包含许多文;甚至一些包包含几百个文件。一个完整的Linux发行版包含几百个甚至上千包。下面这些包都有可能在你的嵌入式Linux发行版中找到:

·initscripts包含基本的系统启动和关闭脚本。

·apache实现了流行的Apache网站服务。

·telnet-server包含实现telnet服务功能的必要文件,允许你和开发板之间简历telnet会话。

·glibc实现了标准C库。

·busybox包含了许多UNIX/Linux系统上的流行命令行工具集的精简版本。

一个典型的Linux发行版本伴随着带有大量有用的程序,库,工具,使用工具集和文档的的CD-ROM一起发行。一个典型的发行版能够提供一系列配置选项满足用户的定制需求。你可能熟悉一些流行的桌面Linux发行版本,例如Red Hat(红帽)或者Ubuntu。

嵌入式的Linux发行版与一般的Linux发行版有几点不同。第一点,嵌入式发行版的可执行的二进制目标代码不是在你的PC运行,而是针对于你的嵌入式系统的处理器架构。(当然,如果你的嵌入式Linux是x86架构的话,这就不是必须的了。)一个桌面Linux发行版针对典型的桌面用户有很多GUI工具,例如漂亮的图形时钟,计算器,个人时钟管理工具,e-mail客户端,等等。一个嵌入式Linux发行版只含有开发者需要的一些工具,例如内存分析工具,远程调试工具这些等等,而忽略了图形化组件。

桌面Linux发行版与嵌入式Linux发行版的其它一些显著的区别就是嵌入式发行版包括交叉工具,例如gcc工具链。其它的一些工具链都有相似的配置:他们运行在开发主机上(通常是x86的PC),设计用来操作其它体系结构的目标,比如ARM或者Power Architecture。

商业Linux发行版

有许多商业嵌入式Linux发行版存在。主要的嵌入式Linux生产厂商已经发行嵌入式Linux版本很多年了。你快速搜索“嵌入式发行版”可以找到很多关于嵌入式Linux生产厂商的信息。一个很重要的链接是http://elinux.org/Embedded_Linux_Distributions

制作属于你自己的Linux发行版

你可以选择你的嵌入式工程里面的所有需要的组件。你必须对此所产生的风险做好准备。如果做这一工作完全是为了兴趣,例如爱好或者大学项目,这个方法可能很适合你。然而,你必须花费大量的时间收集你项目中必须的所有的工具和工具集,并且确保都能使用。

对于刚接触的人来说,你需要工具链。gcc和binutils可以从www.fsf.org获得。两者都要求为你的额项目编译内核以及用户空间程序。这些在源码格式(source code form)中被首要分配并且你必须为你的交叉编译环境编译这些工具。这些工具集的稳定源码树(recent “stable”source trees)都要求打补丁,尤其是你使用x86/IA32架构的机器。这些补丁通常都可以在基础包的目录中找到。找到可以解决特殊问题和架构的补丁包是一项有挑战的工作。

只要你的工具链正在工作,你就需要下载并编译伴随着依赖项的应用程序包。这是一个令人生畏的挑战,由于许多包不允许交叉编译。当它们在本地的x86环境就已经建立好了。

要解决这些挑战,你可能需要足够强大的开发环境,包括工具(例如图形化的调试器),内存分析工具,系统追踪和剖析工具等等。当你在建立你自己的嵌入式Linux发行版的时候就能够看到这些问题了。
Chapter 1. Introduction Section 1.1. Why Linux? Section 1.2. Embedded Linux Today Section 1.3. Open Source and the GPL Section 1.4. Standards and Relevant Bodies Section 1.5. Chapter Summary Chapter 2. Your First Embedded Experience Section 2.1. Embedded or Not? Section 2.2. Anatomy of an Embedded System Section 2.3. Storage Considerations Section 2.4. Embedded Linux Distributions Section 2.5. Chapter Summary Chapter 3. Processor Basics Section 3.1. Stand-alone Processors Section 3.2. Integrated Processors: Systems on Chip Section 3.3. Hardware Platforms Section 3.4. Chapter Summary Chapter 4. The Linux KernelA Different Perspective Section 4.1. Background Section 4.2. Linux Kernel Construction Section 4.3. Kernel Build System Section 4.4. Obtaining a Linux Kernel Section 4.5. Chapter Summary Chapter 5. Kernel Initialization Section 5.1. Composite Kernel Image: Piggy and Friends Section 5.2. Initialization Flow of Control Section 5.3. Kernel Command Line Processing Section 5.4. Subsystem Initialization Section 5.5. The init Thread Section 5.6. Chapter Summary Chapter 6. System Initialization Section 6.1. Root File System Section 6.2. Kernel's Last Boot Steps Section 6.3. The Init Process Section 6.4. Initial RAM Disk Section 6.5. Using initramfs Section 6.6. Shutdown Section 6.7. Chapter Summary Chapter 7. Bootloaders Section 7.1. Role of a Bootloader Section 7.2. Bootloader Challenges Section 7.3. A Universal Bootloader: Das U-Boot Section 7.4. Porting U-Boot Section 7.5. Other Bootloaders Section 7.6. Chapter Summary Chapter 8. Device Driver Basics Section 8.1. Device Driver Concepts Section 8.2. Module Utilities Section 8.3. Driver Methods Section 8.4. Bringing It All Together Section 8.5. Device Drivers and the GPL Section 8.6. Chapter Summary Chapter 9. File Systems Section 9.1. Linux File System Concepts Section 9.2. ext2 Section 9.3. ext3 Section 9.4. ReiserFS Section 9.5. JFFS2 Section 9.6. cramfs Section 9.7. Network File System Section 9.8. Pseudo File Sys
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值