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

时间:2022-10-23 00:08:07

嵌入式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发行版的时候就能够看到这些问题了。

Embedded Linux Primer----嵌入式Linux基础教程--2.4节--嵌入式Linux发行版的更多相关文章

  1. Linux下配置Squid基础教程

    Linux下配置Squid基础教程 本视频高清下载地址:http://down.51cto.com/data/437529 本文出自 "李晨光原创技术博客" 博客,请务必保留此出处 ...

  2. 嵌入式系统基础知识(一): 系统结构和嵌入式Linux

    目录 一. 嵌入式体系结构 二. 开发过程中的分工 三. 嵌入式软件体系结构 四. 嵌入式Linux 一. 嵌入式体系结构 <嵌入式系统设计师教程>这本书的前三章脉络很清晰, 按照嵌入式系 ...

  3. Unix&sol;Linux环境C编程入门教程&lpar;5&rpar; Red Hat Enterprise Linux&lpar;RHEL&rpar;环境搭建

    Unix/Linux版本众多,我们推荐Unix/Linux初学者选用几款典型的Unix/Linux操作系统进行学习. 通过./a.out ./Y.out执行出结果,证明C++程序编译成功,也就说明li ...

  4. Unix&sol;Linux环境C编程新手教程&lpar;5&rpar; Red Hat Enterprise Linux&lpar;RHEL&rpar;环境搭建

    Unix/Linux版本号众多,我们推荐Unix/Linux刚開始学习的人选用几款典型的Unix/Linux操作系统进行学习. 通过./a.out ./Y.out运行出结果,证明C++程序编译成功.也 ...

  5. 2016 最佳 Linux 发行版排行榜

    2015年,不管在企业市场还是个人消费市场都是 Linux非常重要的一年.作为一个自2005年起就开始使用 Linux的 Linuxer ,我门见证了 Linux在过去十年的成长.2016 Linux ...

  6. 全球最受欢迎的十大Linux发行版(图)

    帮助新的Linux用户在越来越多的Linux发行版中选择最合适的操作系统,是创建这个网页的原因.它列出了迄今为止最流行的10个Linux发行版(另外增加的是FreeBSD,到目前为止最为流行的BSD系 ...

  7. 2016年如何选择 Linux 发行版

    不管是在企业级应用还是在消费者领域,2015 对于 Linux 来说都是极其重要的一年.作为一个从 2005 年就开始使用 Linux 的老用户,我有幸见证了 Linux 过去这 10 年里的重大发展 ...

  8. 版本 ------- 2017年最受开发者欢迎的10个Linux发行版

    1.Arch Linux Arch Linux在安装过程中提供了强大的可定制选择,支持你下载和安装自己所需的程序包.虽然这个选择对新手来说没有多大的帮助,但是它确实能够帮助那些使用Arch构建系统和存 ...

  9. 2016 最佳 Linux 发行版排行榜【转】

    转自:http://www.linuxstory.org/the-best-linux-distros-of-2016/?utm_source=tuicool&utm_medium=refer ...

随机推荐

  1. Poj The xor-longest Path 经典题 Trie求n个数中任意两个异或最大值

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5646   Accepted: 1226 Description In an ...

  2. Python &plus; OpenCV2 系列:3 - python 字符串,类,编码规范

    首先,强烈推荐<<简明 Python 教程>> Swaroop, C. H. 著 沈洁元 译 其实,这本书里已经把python的最基本的用法,编码等等介绍的很好,这里把我用到的 ...

  3. css笔记11:选择器练习

    1. (1)exam1.css文件: .s1 { font-size: 50px; color: blue; } .s2 { backgoround:gray; font-style: italic; ...

  4. Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载五)Linux系统的对话方式

    本篇是Linux小白最佳实践第5篇,目的就是让白菜们了解Linux进程之间是如何对话的.之前连载的几篇,在微信上引起了很多的反响,有人也反映图多文字少,感觉没有干货.本篇选了大部分是实战讲解的&quo ...

  5. 嵌入式系统烧写uboot&sol;bootloader&sol;kernel的一般方法

    嵌入式系统烧写uboot/bootloader/kernel的一般方法   本文介绍了在嵌入式系统中烧写uboot/bootloader/kernel 的一般方法,以及如果uboot或者内核出现错误, ...

  6. js 分割循环

    var str ='1,2,3'; var arr = str.split(","); var array1 =[]; var array2 =[]; for(i=0,l=arr. ...

  7. curl几个选项

    1.--cacert  选项请看https://curl.haxx.se/docs/sslcerts.html 2.CURL库怎样验证服务器证书 [复制链接] 中提到:你是客户端, 你希望的是: 你拿 ...

  8. 基于WCF的RESTFul WebAPI如何对传输内容实现压缩

    前言 WCF作为通迅框架可以很容易地实现对消息的压缩,且方法不止一种,主要解决方法主要有以下四种: 1.通过自定义MessageEncoder和MessageEncodingBindingElemen ...

  9. List转换成JSON对象报错(三)

    List转换成JSON对象 1.具体错误如下 Exception in thread "main" java.lang.NoClassDefFoundError: net/sf/e ...

  10. API创建员工

    DECLARE lc_employee_number PER_ALL_PEOPLE_F.EMPLOYEE_NUMBER%TYPE := 'PRAJ_01'; ln_person_id PER_ALL_ ...