《嵌入式Linux基础教程(第2版)》——2.4 嵌入式Linux发行版

2.4 嵌入式Linux发行版

到底什么是Linux发行版? Linux内核完成系统引导后,它会找到并挂载一个根文件系统。一旦合适的根文件系统被成功挂载,启动脚本会启动很多系统需要的程序和实用工具。这些程序一般会调用其他程序来完成具体的任务,例如生成一个登录shell、初始化网络设备接口和运行用户的应用程序。每一个程序都有一些必须由系统中其他成员来满足的具体需求(一般称为依赖关系)。大多数的Linux应用程序都依赖一个或多个系统程序库。还有一些程序需要配置文件和日志文件,诸如此类。总的来说,即使一个小型的嵌入式Linux系统也需要很多文件,这些文件分布在根文件系统的合适的目录中。

完整的桌面Linux系统的根文件系统中包含数千个文件。这些文件来自软件包(package),而软件包通常按照功能来组合文件。软件包由一个包管理器负责安装和管理。红帽公司(Red Hat)的rpm就是一个流行的包管理器,它广泛用于Linux系统中安装、删除和更新软件包。如果你的工作站采用了红帽公司的Linux操作系统,包括Fedora系列,你可以使用命令rpm –qa来列出系统中已安装的所有软件包。如果你使用的是基于Debian的发行版,例如Ubuntu,使用命令dpkg –l即可获得同样的效果。

一个软件包可以包含很多文件,事实上,有的软件包中包含了数百个文件。一个完整的Linux发行版会包含几百个甚至几千个软件包。下面列出一些嵌入式Linux发行版中可能存在的软件包,并说明它们的功能。

  • initscripts包含了基本的系统启动和关闭脚本。
  • apache实现了流行的Apache web服务器。
  • telnet-server包含了实现远程登录服务器(telnet server)功能的必要文件,允许你远程登录到嵌入式目标上。
  • glibc实现了标准C程序库。
  • busybox包含了很多命令行工具的精简版本,这些工具都是UNIX/Linux系统中的常用工具。

这就是Linux发行版的作用。一个典型的Linux发行版包含好几张光盘的内容,其中装满了有用的应用程序、程序库、实用工具和文档等。当Linux发行版安装好之后,用户就可以使用功能完备的系统了,这个系统基于一组默认的配置合理的选项,这些选项也可以根据具体需要进行调整。你可能熟悉某个流行的桌面Linux发行版,比如Red Hat或Ubuntu。

针对嵌入式目标的Linux发行版与一般的桌面发行版之间有很多不同之处。首先,嵌入式发行版中的二进制可执行程序是不能在PC上运行的,它们是针对嵌入式系统所使用的硬件架构和处理器而开发的。(当然,如果你的嵌入式系统使用和PC一样的x86架构,情况可能会有所不同。)桌面Linux发行版通常包含很多面向普通桌面用户的图形用户界面(GUI)工具,例如花哨的图形时钟、计算器、个人时间管理工具和电子邮件客户端等。嵌入式Linux发行版往往会省略这类应用程序,而是更多地提供面向开发者的专用工具,如内存分析工具和远程调试工具等。

另外,嵌入式发行版中一般会包含交叉开发工具,而不是本地开发工具。例如gcc工具链,它运行于采用x86架构的桌面PC,但是会生成可以运行于目标系统的二进制代码,而这个目标系统的架构一般不是x86。这个工具链中的很多其他工具也都是按照类似的方式进行配置的:它们运行于开发主机(通常是一台x86架构的PC),但生成针对其他架构(例如ARM或Power)的目标文件。

2.4.1 商业Linux发行版
有好几个厂商提供商业嵌入式Linux发行版。嵌入式Linux的领导厂商已经在此行业经营多年了。获得关于这些厂商的信息还是相对容易些的。在互联网上快速搜索 “嵌入式Linux发行版”(embedded Linux distributions),就会获得不少这方面的信息。
2.4.2 打造自己的Linux发行版
你可以自己组装嵌入式项目所需的所有元件。但要知道这样做的风险,以及是否值得为此付出。如果你纯粹出于兴趣而专注于嵌入式Linux,比如参与一个兴趣小组或大学里的项目,自己做是个不错的选择。然而,如果是做项目你就需要斟酌了,将项目所需的所有工具和实用程序组装在一起,并保证它们之间能够兼容是需要花费大量时间的。

新手需要一个工具链。gcc和binutils都可以从www.fsf.org及遍布世界的镜像网站获得。在一个项目中,这两个工具都是编译内核和用户空间应用程序所必需的。这些工具主要是以源码的方式发布的,所以你必须自行编译,以适合特定的交叉开发环境。在获得这些实用程序的最新 “稳定版”源码后,你通常还需要对这些源码打补丁,特别是当这些程序用于非x86/IA32架构的系统时。这些补丁程序一般都和基本的软件包存放在同一位置。你所面对的挑战就是找到那些合适的补丁程序,以满足特定问题或架构的需要。

准备好工具链以后,你还需要下载和编译很多应用程序软件包,以及它们所依赖的软件包。这是一个不小的挑战,因为很多软件包即使发展到今天也不便于交叉编译。很多软件包都是在x86环境下开发的,如果转换到其他环境下,仍然会出现编译等类似问题。

挑战并未到此结束,你也许想搭建一个全能的开发环境,包含很多工具,比如图形化调试器、内存分析工具、系统跟踪和性能分析工具等。从这里的讨论你可以看到,搭建你自己的嵌入式Linux发行版是一项相当艰巨的任务。

时间: 2024-12-05 17:33:34

《嵌入式Linux基础教程(第2版)》——2.4 嵌入式Linux发行版的相关文章

《嵌入式Linux基础教程(第2版)》——导读

**前言**虽然讲Linux的好书很多,但是本书汇集了专门针对嵌入式Linux开发人员的各方面信息和建议.实际上,有关Linux内核.Linux系统管理等方面的优秀书籍已经有很多了.本书也参考了我认为在同类书籍中最好的几本. 本书的很多内容来自实际的问题,有些问题是我作为嵌入式Linux顾问时一些开发工程师提出的,还有些问题是我直接参与商业嵌入式Linux开发时遇到的. 嵌入式Linux会给经验丰富的软件工程师带来一些独特的挑战.首先,那些有多年老式实时操作系统(Real Time Operat

《嵌入式Linux基础教程(第2版)》——2.2 剖析嵌入式系统

2.2 剖析嵌入式系统 图2-1是一个典型嵌入式系统的框图.这个例子很简单,描述了一个系统的高层硬件架构,无线接入点设备可能就是采用这种硬件构架.这个系统架构以一个32位的RISC处理器为中心,系统中的闪存用于存储非易失性程序和数据,主存储器是SDRAM(同步动态随机存储器),其容量可以从几兆至几百兆字节,视应用而定.一个通常由电池供电的实时时钟模块记录着当前时间(包括日期).这个例子里面包含以太网和USB接口,也包含串行端口,利用串行端口可基于RS-232标准访问控制台.802.11芯片组或模

《嵌入式Linux基础教程(第2版)》——1.4 标准及相关组织

1.4 标准及相关组织 在Linux不断获得桌面.企业和嵌入式等细分市场份额的同时,为推动用户使用和接受Linux,一些新标准和新组织也应运而生.本节介绍一些读者应该了解的标准. 1.4.1 Linux标准基础 对于一个Linux发行版的维护者来说,也许关系最紧密的标准莫过于Linux标准基础(Linux Standard Base,LSB).LSB的目标是建立一套设计良好的标准,以提升应用程序在不同Linux发行版之间的互操作性.目前,LSB的标准涵盖了好几种硬件架构,包括IA32/64.32

《嵌入式Linux基础教程(第2版)》——2.5 小结

2.5 小结 本章简要介绍了很多主题.现在,你可以以恰当的视角来审视后续内容了.在后面的章节中,这种认识会得到扩展,帮助你掌握必要的技能和知识,确保你在今后的嵌入式项目中获得成功. 嵌入式系统有一些共性.通常它们的资源有限,用户界面比较简单或者根本不存在,并且它们一般是为特定目的而设计的. 引导加载程序是嵌入式系统的一个重要组成部分.如果你的嵌入式系统采用的硬件是一块定制的板卡,你必须在设计中提供适合此硬件平台的引导加载程序.通常,这项工作是通过移植现有的引导加载程序来完成的. 成功引导一个定制

《嵌入式Linux基础教程(第2版)》——1.3 开源和GPL

1.3 开源和GPL Linux是开源软件,这是促使Linux广泛使用的一个重要因素.如果你想了解更多开源运动的历史和文化,请看Eric S. Raymod的书(见本章末尾),该书引人入胜且富有见地. Linux内核基于GNU GPL[1](General Public License,通用公共许可证)的条款进行授权,这导致了一个常见的误区:Linux是免费的.事实上,GNU GPL第3版[2]的第2段声明:"当我们谈论自由软件时,我们指的是自由,而不是指价格上的免费."大多数的职业开

《嵌入式Linux基础教程(第2版)》——1.2 嵌入式Linux现状

1.2 嵌入式Linux现状 Linux在嵌入式领域已经取得了长足的进步,这一点并不让人感到惊讶.实际上,阅读本书就已表明Linux已经影响了你的生活.嵌入式Linux的市场规模难以估量,因为很多公司仍然在继续打造它们自己的嵌入式Linux发行版. LinuxDevice.com是一个广受欢迎的新闻和资讯门户网站(它由Rick Lehrbaum创建,现在属于Ziff Davis),这个网站每年会开展一次嵌入式Linux的市场调查.其最近的调查报告显示,Linux已经成为占据主导地位的嵌入式操作系

Linux基础知识99问(二)_unix linux

    二. Linux大观:7问 13.RedHat Linux 6.5和Linux 2.4哪个版本高? 最近许多报刊.网站都介绍了Linux的最新版 2.4怎样,怎样?而许多Linux初学者正在使用的是RedHat Linux 6.5版.哪个版本更高? 其实,这两个版本号是不同的!RedHat Linux是将Linux内核与Linux的一些常用配套软件.应用软件捆绑在一起的发行版,6.5是这个发行版的版本号.而Linux 2.4则是指Linux内核的版本. Linux核心是由linus维护的

Linux基础知识99问(一)_unix linux

1.什么是Linux? Linux是一个诞生于网络.成长于网络且成熟于网络的奇特的操作系统.1991年,芬兰大学生Linus Torvalds萌发了开发一个自由的UNIX操作系统的想法,当年,Linux就诞生了, 为了不让这个羽翼未丰的操作系统夭折,Linus将自已的作品Linux通过Internet发布.从此一大批知名的.不知名的电脑黑客.编程人员加入到开发过程中来,Linux逐渐成长起来. Linux一开始是要求所有的源码必须公开,并且任何人均不得从Linux交易中获利.然而这种纯粹的自由软

《嵌入式Linux基础教程(第2版)》——第1章 入门 1.1为什么选择Linux

第1章 入门 很多老牌嵌入式操作系统公司纷纷抛弃专有嵌入式操作系统,而这一举动一般都会在公司内部引发不少争论.出于各方面的考虑,许多产品都采用Linux作为其操作系统,这些产品的种类繁多,超出了Linux占据传统优势的服务器领域.手机.DVD播放器.电子游戏机.数码相机.网络交换机和无线网络设备都在使用嵌入式系统.在你家里或汽车里多半也会有Linux的身影.Linux已经成为很多设备的嵌入式操作系统,包括机顶盒.高清电视.蓝光DVD播放器.汽车的信息娱乐中心和很多其他日常使用的电器. 1.1 为