嵌入式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/Linux环境C编程入门教程(5) Red Hat Enterprise Linux(RHEL)环境搭建

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

  4. Unix/Linux环境C编程新手教程(5) Red Hat Enterprise Linux(RHEL)环境搭建

    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. iframe跨域通信方案

    概述 JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦.这里把涉及到跨域的一些问题简单地整理一下: 首先什么 ...

  2. iOS 自定义各类bar的属性

    在iOS应用开发中,经常需要为导航栏和标签栏设置相同的主题,一个一个去设置的话,就太麻烦了,可以通过对应用中所有的导航栏和标签栏同意设置背景.字体等属性. 如:创建一个继承自“UINavigation ...

  3. <精华篇>:iOS视频大全-持续更新

    注意:新浪微博分享的资料和简书分享的资料,略有不同! 小码哥swift3.0版 斗鱼项目视频:点击下载  iOS开发25个项目实战:点击下载 2016PHP全套下载:点击下载  黑马刀哥iOS视频精选 ...

  4. SQLite For .Net 已经整合了32位和64位

    以前引用SQLite.DLL的时候,如果是winform等桌面程序,还要分32位和64位不一样的DLL,但最近已经整合为一个包了 打开vs的程序包管理器控制器,输入: install-package ...

  5. Android 开发笔记 “Sqlite Cursor 使用”

    使用过 SQLite 数据库的童鞋对 Cursor 应该不陌生,如果你是搞.net 开发你大可以把Cursor理解成 Ado.net 中的数据集合相当于dataReader.今天特地将它单独拿出来谈, ...

  6. Apache proxy中转设置

    参考http://sjsky.iteye.com/blog/1067119 打开http.conf  (macOS中 Apache配置文件在/etc/apache2/中   etc是隐藏的) 确保下面 ...

  7. android 子线程更新UI

    参考http://examples.javacodegeeks.com/android/core/os/handler/android-handler-example/package com.exam ...

  8. QWidget QMainWindow QDialog 之间的区别

    QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个原子:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己的表现.每一个窗口部件都是矩形,并且它们按Z轴顺序排列的.一个窗口部 ...

  9. Hello China操作系统STM32移植指南(二)

    移植步骤详解 下面就以MDK 4.72为开发环境,详细说明Hello China内核向STM32的移植过程.MDK 4.72评估版只支持32K代码的编译,这对Hello China的内核来说,裁剪掉一 ...

  10. 表格java代码的相关知识积累

    本文主要收集各大博客中的java表格 用JSP创建一个表格模板 . 项目中要用到一些展示信息的表格,表头不固定,表格内容是即时从后台取的:考虑到复用性,笔者用jsp编写了一个表格模板,可以从reque ...