《精通Linux设备驱动程序开发》——1.5 Linux发行版

1.5 Linux发行版

一个GNU/Linux系统除了内核以外,还包括大量的实用程序、程序、库和工具,因此,获得和正确安装所有的组件是一项艰巨的任务。而Linux发行版有序地将这些组件进行了分类,并捆绑成相应的包,从而分担了这一艰巨任务。一个常见的发行版包含数以千计的捆绑好的包。这使得用户无需担心下载不到正确版本的程序,也无需关心程序间的依赖问题。

因为打包是GNU许可证范围内的一种有效的赚钱方式,因此,目前的市场上诞生了数个Linux发行版。其中,Red Hat/Fedora、Debian、SuSE、Slackware、Gentoo、Ubuntu和Mandriva这些发行版面向桌面用户,而MontaVista、TimeSys和Wind River发行版则面向嵌入式系统开发。嵌入式Linux的发行版还包括一套可动态配置的紧凑的应用程序集,以便针对资源的限制为系统进行量体裁衣。

除了打包以外,发行版还为内核的开发提供了增值服务。因此,许多项目都开始于发行版提供的内核而非kernel.org发布的官方内核,这样做的理由如下。

  • 遵守设备行业领域标准的Linux发行版更适合作为开发的起点。特殊兴趣组(SIG)已经成立,其目的是促进Linux在各个领域的应用。消费电子产品Linux论坛主要讨论消费类电子领域的Linux应用。CELF标准定义了一些功能的支持等级,如可扩展性、快速启动、片上执行以及电源管理等。开源开发实验室则致力于讨论电信级设备。OSDL的电信级Linux(CGL)标准包含了对可靠性、高可用性、运行时补丁、增强的错误恢复能力的诠释,这些问题在电信领域非常重要。
  • 主线内核版本可能并未包含对用户所选择的嵌入式控制器的充分支持,即使用户的系统建立在内核所支持的CPU核心之上。但是,一个Linux的发行版则可能包含了控制器内所有外围设备模块的设备驱动程序。
  • 在内核开发过程中你计划使用的调试工具可能不包含在主线内核中。例如,内核并不包含内嵌的调试器支持。如果想在内核开发过程中使用内嵌的调试器,用户必须下载并打上相应的补丁。如果针对用户内核版本的补丁并不齐备,用户将必须忍受更多的麻烦。而发行版则包装了很多有用的调试功能,所以你可以立即开始使用它们。
  • 一些发行版提供了法律保护,让你的公司无须为任何由于内核bug所引发的诉讼承担责任。
  • 发行版往往会对它们发布的内核进行较多的测试[3]。
  • 用户可以从内核发行版的供应商处购买它们提供的服务以及软件包支持。
时间: 2024-11-01 05:39:54

《精通Linux设备驱动程序开发》——1.5 Linux发行版的相关文章

《精通Linux设备驱动程序开发》——1.9 整装待发

1.9 整装待发 Linux已经涉及的领域十分广泛,代表着最新的技术水平,所以可以基于它来学习操作系统的概念.处理器体系架构,甚至了解各种行业领域.在学习某一设备驱动程序子系统用到的技术时,不妨在更深层次上探索其背后的设计动机. 在没有明确指明的情况下,本书默认的都是32位x86架构.但是,本书也考虑到你更有可能要为嵌入式设备而非传统的PC兼容的系统编写驱动程序.因此,第6章讲解了两种设备:一个PC衍生器件上的触摸控制器和一个手机上的UART.第8章则讲解了PC系统中的EEPROM和嵌入式设备中

《精通Linux设备驱动程序开发》——1.4 邮件列表和论坛

1.4 邮件列表和论坛 LKML(Linux Kernel Mailing List,内核邮件列表)是开发人员就开发问题进行辩论并决定Linux未来要包含哪些功能的论坛.Linux内核目前包含世界各地的成千上万的开发人员贡献的数百万行代码,正是LKML将这些开发人员联结在一起. LKML的定位不在于解答一般的Linux问题,其基本规则是只能张贴以前没有被回答过并且在众所周知的文档中没有提及的内核问题.如果你编译Linux应用程序的时候C编译器崩溃了,你应该去其他地方张贴这样的问题. LKML中的

《精通Linux设备驱动程序开发》——1.8 可加载的模块

bash> cd /usr/src/linux-X.Y.Z/ bash> make modules 运行如下命令安装编译生成的模块: bash> make modules_install此命令将在/lib/modules/X.Y.Z/kernel/目录下构造一个内核源代码目录结构,并将可加载的模块放入其中.它也将激活depmod实用程序,以便生成模块依赖文件/lib/modules/X.Y.Z/modules.dep. 如下工具可用于操纵模块:insmod.rmmod.lsmod.mod

《精通Linux设备驱动程序开发》——1.7 编译内核

1.7 编译内核 了解了内核源码树布局后,现在我们来对代码稍做修改,并编译和运行它.进入位于顶层的init/目录,对初始化文件main.c做一项小的修改,即在start_kernel()函数的开头加上一行打印信息,宣布你对北极熊的喜爱: asmlinkage void __init start_kernel(void) { char *command_line; extern struct kernel_param __start___param[], __stop___param[]; + p

《精通Linux设备驱动程序开发》——1.6 查看源代码

1.6 查看源代码 在研究内核源代码之前,让我们先下载Linux源代码,学会打补丁,并查看内核源码树的布局. 首先,请到www.kernel.org 下载最新的稳定的源代码[源代码以gzip(.zip)和bzip2 (.bz2)两种压缩格式提供],之后请进行解压缩.在下列命令中,请用最新的内核版本号(譬如)代替X.Y.Z: bash> cd /usr/src bash> wget www.kernel.org/pub/linux/kernel/vX.Y/linux-X.Y.Z.tar.bz2

《精通Linux设备驱动程序开发》——第1章 引言 1.1演进

第1章 引言 Linux具有诱人的魅力,它是一个由全世界不同民族.不同信仰.不同性别的人共同参与和协作的国际性项目.Linux免费提供源代码,并且具有与Unix类似的为人们所熟悉的应用程序编程环境,这一切造就了它今天的巨大成功.通过互联网从专家处即时获得的高质量的免费支持也发挥了重要作用,它促成了一个庞大的Linux社区. 在技术方面,开发人员可以获得所有源码,并由此得出一些创新方案,他们因此感到无比振奋.譬如,你可以修改(hack)[1] Linux的源码,并做定制,让设备在几秒钟之内启动,而

《精通Linux设备驱动程序开发》——1.3 kernel.org

1.3 kernel.org Linux内核源代码主要存放在www.kernel.org.该网站包含所有已经发布的内核版本,世界各地有大量的kernel.org镜像网站. 除了已经发布的内核以外,kernel.org还包含了由一线开发人员提供的补丁,这些补丁可以作为未来稳定版本的试验平台.补丁是一种文本文件,包含了新开发版本和开发之初制订的原始版本之间的源码差异.由Linux内核第一维护人Andrew Morton定期提供的-mm补丁是一种很受欢迎的补丁.在该补丁中,我们可以找到在主线源代码树中

《精通Linux设备驱动程序开发》——1.2 GNU Copyleft

1.2 GNU Copyleft GNU工程比Linux更早诞生,发起它的目标是定制一个免费的类Unix操作系统(GNU是GNU's Not Unix的递归缩写,意为"GNU不是Unix".一个完整的GNU操作系统基于Linux内核构建,但也包含一些其他组件,如库.编译器和实用程序(utility).因此,基于Linux的计算机的更准确称呼应该是GNU/Linux系统.GNU/Linux系统的所有组成部分都建立在免费软件之上. 免费软件有许多种,其中的一种是公共领域(public do

驱动开发-linux字符驱动程序开发

问题描述 linux字符驱动程序开发 编写一个linux应用程序A和一个linux字符设备驱动程序B.A能够向B发出多种指令,令B扫描系统当前相关进程的任务描述符和内存描述符,并按A的要求将这些描述符的相关信息传送给A.A最终负责这些信息在标准终端上的显示. 例如A支持的命令: (1) processtree命令:遍历系统当前所有进程的任务描述符,并按进程父子关系将这些描述符所对应的进程id(PID)组织成树形结构显示: (2) threadgroup命令:遍历系统当前所有进程的任务描述符,并按