《嵌入式Linux基础教程(第2版)》——2.4 嵌入式Linux发行版-阿里云开发者社区

开发者社区> 异步社区> 正文

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

简介: 到底什么是Linux发行版? Linux内核完成系统引导后,它会找到并挂载一个根文件系统。一旦合适的根文件系统被成功挂载,启动脚本会启动很多系统需要的程序和实用工具。这些程序一般会调用其他程序来完成具体的任务,例如生成一个登录shell、初始化网络设备接口和运行用户的应用程序。
+关注继续查看

本节书摘来自异步社区《嵌入式Linux基础教程(第2版)》一书中的第2章,第2.4节,作者:【美】Christopher Hallinan(克里斯托弗 哈利南)著,更多章节内容可以访问云栖社区“异步社区”公众号查看

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发行版是一项相当艰巨的任务。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
嵌入式Linux系统运行流程图
/************************************************************************ * 嵌入式Linux系统运行流程图 * 说明: * 本文主要记录梳理嵌入式系统硬件、软件运行流程。
676 0
嵌入式linux、QT、ARM、android研发学习交流,软考嵌入式系统设计师交流群,欢迎大家加入,群号95388240
 嵌入式linux、QT、ARM、android研发学习交流,软考嵌入式系统设计师交流群,欢迎大家加入,群号95388240
900 0
嵌入式,linux内存管理
所有段的基地址均为0,由此可以得出,每个段的逻辑地址空间范围为0-4GB。因为每个段的基地址为0,因此,逻辑地址与线性地址保持一致 linux页式管理有四级: 1. 页全局目录 (Page Global Directory):即pgd,是多级页表的抽象最高层。
496 0
结合AliOS Things谈嵌入式系统通用问题定位方法(2):内核相关基础
内核提供的任务创建接口,会存在参数指定当前任务创建完立即运行还是需要显示调用start运行,需要注意。如果在创建任务时指定了立即执行,而在创建任务后去设置任务参数,可能是不生效的。(尤其posix的pthread接口经常遇到这种问题)
83 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
12049
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载