精华内容
下载资源
问答
  • 韦东山嵌入式Linux第一期视频

    万人学习 2014-11-29 12:20:18
    熟悉裸板程序的结构,给你一个Bootloader就能分析它的初始化部分、内存使用情况、链接地址、重定位、程序的相对跳转/绝对跳转等;掌握Bootloader启动内核的原理,能完全自己写出一个Bootloader。
  • IBM和Novell宣布推出第一个按刀片服务器机箱收费的Linux版本.pdf
  • 下载linux版的vscode ,并且安装 我用的板子是nxp的imx6ull,下载nxp的的arm交叉编译工具链和他们的内核(也可以下载官方版本的...创建一个helloworld的文件夹mkdir helloworld ,创建一个c文件:touch helloworld.c 用vscod
  • Linux内核版本02. Linux内核官方网站03. Linux发行版本04. Linux发行版本介绍4.1 Ubuntu4.2 RedHat4.3 Debian4.4 Gentoo4.5 CentOS4.6. Fedora4.7 Kali Linux4.8 Arch Linux4.9 OpenSuse4.10 Damn Vulnerable Linux...

    00. 目录

    01. Linux内核版本

    Linux最早是由芬兰 Linus Torvalds为尝试在英特尔x86架构上提供自由免费的类Unix操作系统而开发的。该计划开始于1991年,在计划的早期有一些Minix 黑客提供了协助,而今天全球无数程序员正在为该计划无偿提供帮助。

    Linux内核使用三种不同的版本编号方式。
    第一种方式用于1.0版本之前(包括1.0)。第一个版本是0.01,紧接着是0.02、0.03、0.10、0.11、0.12、0.95、0.96、0.97、0.98、0.99和之后的1.0。

    第二种方式用于1.0之后到2.6,数字由三部分“A.B.C”,A代表主版本号,B代表次主版本号,C代表较小的末版本号。只有在内核发生很大变化时(历史上只发生过两次,1994年的1.0,1996年的2.0),A才变化。可以通过数字B来判断Linux是否稳定,偶数的B代表稳定版,奇数的B代表开发版。C代表一些bug修复,安全更新,新特性和驱动的次数。以版本2.4.0为例,2代表主版本号,4代表次版本号,0代表改动较小的末版本号。在版本号中,序号的第二位为偶数的版本表明这是一个可以使用的稳定版本,如2.2.5,而序号的第二位为奇数的版本一般有一些新的东西加入,是个不一定很稳定的测试版本,如2.3.1。这样稳定版本来源于上一个测试版升级版本号,而一个稳定版本发展到完全成熟后就不再发展。

    第三种方式从2004年2.6.0版本开始,使用一种“time-based”的方式。3.0版本之前,是一种“A.B.C.D”的格式。七年里,前两个数字A.B即“2.6”保持不变,C随着新版本的发布而增加,D代表一些bug修复,安全更新,添加新特性和驱动的次数。3.0版本之后是“A.B.C”格式,B随着新版本的发布而增加,C代表一些bug修复,安全更新,新特性和驱动的次数。第三种方式中不再使用偶数代表稳定版,奇数代表开发版这样的命名方式。举个例子:3.7.0代表的不是开发版,而是稳定版! [2]

    举例描述:

    Linux内核版本号由3组数字组成:第一个组数字.第二组数字.第三组数字

    第一个组数字:目前发布的内核主版本。
    第二个组数字:偶数表示稳定版本;奇数表示开发中版本。
    第三个组数字:错误修补的次数。
    例1: 2.6.18-128.ELsmp ,

    第一个组数字: 2 , 主版本号
    第二个组数字: 6 , 次版本号,表示稳定版本(因为有偶数)
    第三个组数字 18 , 修订版本号 ,表示修改的次数。
    头两个数字合在一齐可以描述内核系列。
    如稳定版的2.6.0,它是2.6版内核系列。128: 表示这个当前版本的第5次微调patch, 而ELsmp指出了当前内核是为ELsmp特别调校的 EL : Enterprise Linux ; smp : 表示支持多处理器 , 表示该内核版本支持多处理器。

    02. Linux内核官方网站

    官方网站:https://www.kernel.org/

    03. Linux发行版本

    Linux只是操作系统的核心,负责控制硬件、管理文件系统、程序进程等,并不给用户提供各种工具和应用软件。所谓工欲善其事,被必先利其器,一套在优秀的操作系统核心,若没有强大的应用软件可以使用,如C/C++编译器、C/C++库、系统管理工具、网络工具、办公软件、多媒体软件、绘图软件等,也无法发挥它强大的功能,用户也无法仅仅使用这个系统核心进行工作,因此人们以Linux核心为中心,再集成搭配各种各样的系统管理软件或应用工具软件组成一套完整的操作系统,如此的组合便称为Linux发行版。

    Linux的发行版本可以大体分为两类:

    一类是商业公司维护的发行版本
    一类是社区组织维护的发行版本

    前者以著名的RedHat(RHEL)为代表,后者以Debian为代

    04. Linux发行版本介绍

    4.1 Ubuntu

    Ubuntu是Debian的一款衍生版,也是当今最受欢迎的免费操作系统。Ubuntu侧重于它在这个市场的应用,在服务器、云计算、甚至一些运行Ubuntu Linux的移动设备上很常见。作为Debian Gnu Linux的一款衍生版,Ubuntu的进程、外观和感觉大多数仍然与Debian一样。它使用apt软件管理工具来安装和更新软件。它也是如今市面上用起来最容易的发行版之一。Ubuntu使用基于apt的程序包管理器。

    Ubuntu是新手用户肯定爱不释手的一款操作系统。

    4.2 RedHat

    Redhat(小红帽),应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多 的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非 常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管 理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用, 但是Fedora Core的稳定性较差,最好只用于桌面应用。

    4.3 Debian

    Debian运行起来极其稳定,这使得它非常适合用于服务器。Debian平时维护三套正式的软件库和一套非免费软件库,这给另外几款发行版(比如Ubuntu和Kali等)带来了灵感。Debian这款操作系统派生出了多个Linux发行版。它有37500多个软件包,这方面唯一胜过Debian的其他发行版只有Gentoo。Debian使用apt或aptitude来安装和更新软件。

    Debian这款操作系统无疑并不适合新手用户,而是适合系统管理员和高级用户。Debian支持如今的大多数架构(处理器)。

    下载Debian ISO映像文件:http://www.debian.org/distrib/

    4.4 Gentoo

    与Debian一样,Gentoo这款操作系统也包含数量众多的软件包。Gentoo并非以预编译的形式出现,而是每次需要针对每个系统进行编译。连Gentoo社区都觉得Gentoo安装和使用起来很困难;不过它被认为是最佳学习对象,可以进而了解Linux操作系统的内部运作原理。提到Gentoo总有人这么说:"如果你要学用Linux发行版,那就学用该发行版吧;如果你学会了Gentoo,也就学会了Linux。"Gentoo使用portage来安装和更新软件。

    Gentoo这款操作系统适合对Linux已经完全驾轻就熟的那些用户。

    下载和安装Gentoo:http://www.gentoo.org/main/en/where.xml

    4.5 CentOS

    CentOS是一款企业级Linux发行版,它使用红帽企业级Linux中的免费源代码重新构建而成。这款重构版完全去掉了注册商标以及Binary程序包方面一个非常细微的变化。有些人不想支付一大笔钱,又能领略红帽企业级Linux;对他们来说,CentOS值得一试。此外,CentOS的外观和行为似乎与母发行版红帽企业级Linux如出一辙。 CentOS使用YUM来管理软件包。

    非常稳定的程序包;谁要是想在桌面端测试一下服务器的运作原理,都应该试试这款操作系统。

    下载CentOS 6.4 DVD ISO映像文件:http://wiki.centos.org/Download

    4.6. Fedora

    小巧的Fedora适合那些人:想尝试最先进的技术,等不及程序的稳定版出来。其实,Fedora就是红帽公司的一个测试平台;产品在成为企业级发行版之前,在该平台上进行开发和测试。Fedora是一款非常好的发行版,有庞大的用户论坛,软件库中还有为数不少的软件包。Fedora同样使用YUM来管理软件包。

    下载Fedora 18(Spherical Cow)DVD ISO映像文件:http://fedoraproject.org/en/get-fedora

    4.7 Kali Linux

    Kali Linux是Debian的一款衍生版。Kali旨在用于渗透测试。它大概在三个月前才发行。Kali的前身是Backtrack。用于Debian的所有Binary软件包都可以安装到Kali Linux上,而Kali的魅力或威力就来自于此。此外,支持Debian的用户论坛为Kali加分不少。Kali随带许多的渗透测试工具,无论是Wifi、数据库还是其他任何工具,都设计成立马可以使用。Kali使用APT来管理软件包。

    毫无疑问,Kali Linux是一款渗透测试工具,或者是文明黑客(我不想谈论恶意黑客)青睐的操作系统。

    4.8 Arch Linux

    Arch是一款采用滚动发行方式的操作系统:只要安装一次就够了;每当发行了某个新版本,就可以升级发行版,不需要重新安装。Pacman是Arch Linux的软件包管理器。Arch Linux既支持X86处理器架构,又支持X86_64架构,安装程序可以从光盘或U盘来运行。Arch旨在从开发者的角度而不是从用户的角度做到力求简单。Arch配置和安装起来超容易。它真是一款面向高手的发行版,让你可以了解Linux系统的每一个细枝末节。

    下载Arch Linux ISO映像文件:https://www.archlinux.org/download/

    4.9 OpenSuse

    OpenSuse这款Linux发行版是免费的,并不供商业用途使用,仍然供个人使用。OpenSuse的真正竞争对手是红帽企业级Linux。它使用Yast来管理软件包。有了Yast,使用和管理服务器应用程序就非常容易。此外,Yast安装向导程序可以配置电子邮件服务器、LDAP服务器、文件服务器或Web服务器,没有任何不必要的麻烦。它随带snapper快照管理工具,因而可以恢复或使用旧版的文件、更新和配置。由于让滚动发行版本成为可能的Tumbleweed,可将已安装的操作系统更新到最新版本,不需要任何的新发行版。

    SUSE在管理员当中的名气更大,因为它有Yast以及让系统管理员能够自动管理任务的其他此类应用程序,同样水准的其他发行版没有这项功能。

    下载OpenSuse 12.3 DVD ISO映像文件:http://software.opensuse.org/123/en

    4.10 Damn Vulnerable Linux

    当然,大多数人可能对这款发行版前所未闻,不过该发行版在本文中还是占有一席之地。那么,它有何过人之处呢? Damn Vulnerable Linux恰如其名:其字面意思就是"该死的易受攻击的Linux"。Vulnerable Linux(DVL)根本不是一般意义上的优秀的Linux发行版。它有意捆绑了坏的、配置不当的、过时的、很容易被不法分子攻击的软件。

    它的目的在于借机训练Linux管理员。还有什么比给Linux管理员一款坏的发行版去排解问题来得更管用的吗?面对Apache、MySQL、PHP、FTP和SSH等比较旧或破的版本,接受训练的管理员够有得忙了。

    Damn Vulnerable Linux堪称旨在训练管理员的实验室。

    参考:【Linux】一步一步学Linux系列教程汇总

    参考网址:https://www.cnblogs.com/liangxiaofeng/p/5353458.html

    参考:百度百科

    展开全文
  • 1.5 Linux内核版本 Linux内核有两种:稳定版本和处于开发中的版本。稳定的内核具有工业级的强度,可以广泛地应用和部署。新推出的稳定内核大部分都只是修正了一些Bug或是加入了一些新的设备驱动程序。另方面处于...

    1.5 Linux内核版本

            Linux内核有两种:稳定版本和处于开发中的版本。稳定的内核具有工业级的强度,可以广泛地应用和部署。新推出的稳定内核大部分都只是修正了一些Bug或是加入了一些新的设备驱动程序。另一方面处于开发中的内核中许多东西变化得都很快。而且由于开发者不断试验新的解决方案,内核常常发生剧烈的变化。

            Linux通过一个简单的命名机制来区分稳定的和处于开发中的内核,参见图1-2。


            这种机制使用三个或者四个用“.”分割的数字来代表不同的内核版本。第一个数字是主版本号,第二个数字是从版本号,第三个数字是修订版本号,第四个是可选的数字为稳定版本号。从副版本号可以反映出该内核是一个稳定版本还是一个开发版本:该数字如果是偶数,那么是稳定版本;如果是奇数,那么是开发版本。例如,版本号为2.6.30.1的内核,是一个稳定版本,这个内核的主版本号是2,从版本号是6,修订版本号是30,稳定版本号是1。

    展开全文
  • Linux基础】Linux版本

    2013-06-05 09:29:04
    Linux有两种版本种是内核版本,另种是发行版本1.内核版本 内核版本指的是Linux的内核,是由linus等人在不断地开发和推出新的内核。其版本号命令是由三部分数字组成: x.y.z x为主版本号。 y次版本号,...
    Linnux版本
    Linux有两种版本,一种是内核版本,另一种是发行版本。
    1.内核版本
    内核版本指的是Linux的内核,是由linus等人在不断地开发和推出新的内核。其版本号命令是由三部分数字组成:
    x.y.z
    x为主版本号。
    y次版本号,偶数代表稳定版本,奇数代表是测试版本。
    z对前版本的修改次数。
    例如:2.6.12表示对核心版本的第12次修改。
    2.发行版本
    发行版本指的是将Linux内核与各种应用软件和文档包装起来,并提供一些安装界面和系统设置与管理工具的软件包。目前常见的Linux发行版本如下:
    (1)RadHat
    RadHat是目世界上最资深的Linux和开放源代 码提供商,同时也是最获认可的Linux品牌之一。RadHat支持多硬件平台,拥有优秀的安装界面,独特的RPM升级方式。Redhat 自9.0以后,不再发布桌面版。
    (2)Debian
    Debian最早由Ian Murdock于1993年创建。它的开发模式与Linux及其它开放性源代码操作系统的精神一样,都是由超过800位志愿者通过互连网合作开发而成的。一直以来,Debian被认为是最正宗的Linux发行版本,而且它是完全免费的、高质量的与unix兼容的操作系统。Debian系统分为3个版本:stable\testing和unstable.其中stable是稳定版,testing是测试版、unstable是不稳定版。
    (3)Ubuntu
    Ubuntu是一个相对较新的发行版。但是,它的出现改变了许多潜在用户对Linux安装和使用困难的看法,ubuntu的安装方便、简单。Ubuntu被称为对硬件支持最好、最全面的Linux发行版之一,许多在其它发行版上无法使用或者默认配置时无法使用的硬件在ubuntu上都可以使用。
    (4)Gentoo
    Gentoo首个稳定版本发布于2002年。Gentoo的主要特别是其可以高度的自定制:它是一个基于源代码的发行版。尽管安装时可以选择预先编译好的软件包,但是大部分使用gentto的用户都选择自已手动编译。
    (5)red flag
    red flag是由中科红旗软件技术有限公司开发研制,在中国Linux用户中占有一定的比例。Red flag有红旗桌面版本和红旗服务器版本。


    展开全文
  • Linux kernel版本开发过程

    千次阅读 2013-10-27 18:12:23
    来源:百度质量部 前言 Linux基金会在4月3日公布了Linux开发年报,向我们展示了linux kernel作为世上最大开源合作项目之的...目前在Linus Torvalds的监督之下,Linux核心约2到3月发布一个新的稳定版本,每次更

    来源:百度质量部

    前言

    Linux基金会在4月3日公布了Linux开发年报,向我们展示了linux kernel作为世上最大开源合作项目之一的魅力。自2005年以来,共有800家公司7800名开发人员参与Linux kernel开发,最近一年也有200家公司共1000名开发人员参与。目前在Linus Torvalds的监督之下,Linux核心约2到3个月发布一个新的稳定版本,每次更新大约包含8000到12000项修改,平均每小时有提交6.88次修改。内核所有文件代码已超过1500万行,大约以每年10%的代码量在增长。

    规模组织如此巨大,开发又活跃,且对质量有非常高要求的项目,不禁好奇它是如何做好质量保证的,于是查阅了网上较多资料,探索Linux kernel的质量保证之道。

    名词解释

    Linux Kernel和GNU/Linux。Linux kernel作为系统的最底层,是负责管理硬件、执行任务调度、维护整体安全和完整性的系统软件。一个内核不是一套完整的操作系统,人们将 Linux 内核和 GNU 系统组成完整的自由系统:基于 Linux 的 GNU 系统(或简称为 GNU/Linux 系统)。咱们平时所说的Linux系统多是指GNU/Linux。

    Patch。升级内核时,不必要每次都下载或提交整个的源码文件,而是使用patch,或者叫做补丁或升级包。很多不同版本的内核源代码是以一组补丁(补丁集)甚至是若干独立补丁的形式存在的。这些补丁应该应用在特定版本的内核树上。

    内核树。树的意思是“包含内核源代码的目录的内容”。另外一层意思是“内核源码的开发分支”。不同的分支命名也不一样,比较流行的分支(树)有-next树(前身是Andrew Morton维护的-mm树),-rt 树(实时树,包含把linux转换为实时系统的补丁)。

    -next 树,由Stephen Rothwell维护,是一些其他树以及各种独立的实验性补丁,它集合了主线和多种内核子系统(子系统树)维护人所使用的树,子系统树中含有被认为是实验性的和还没准备好合并到主线中的各种补丁。换句话说,-next树的每个版本都是带有额外修改和一些bug的主线的未来快照。Bug尽可能在这些补丁合并到主线之前得到修正。

    开发流程

    要了解测试,先得看看整个项目的开发过程。

    Linux kernel开发流程是基于一个松散的、定时发布的滚动模型,每2-3个月发布一个新稳定版本。2-3个月被认为是一个合适的时间周期,能加快开发速度的同时,也减少发行商需要处理的外部修改,更短则导致测试时间太少,新内核测试不充分;更长则导致发布版本之间会堆积太多工作。此模型从2005年正式确认,尽早将新功能融入内核主线,将发布给用户的延期降至最低。

    在准备提交Linux kernel代码前,开发者将升级拆分为一个个小的互相独立的单元,叫做补丁(patch)。每个补丁通常只做一件事情,并且应当保证系统在打上此补丁之后是依然能正常编译和工作的。这导致每个补丁都可以做代码质量和正确性评审,同时也导致每个版本提交的补丁数较大。

    提交的补丁并不是直接进入到内核主线,参考图一的代码流动过程,只有一个人能将补丁放入到内核主线:Linus Torvalds。但是随着越来越多的补丁加入到内核,大约只有2%的补丁是Linux直接选入的。内核代码从逻辑上是拆分成一系列的子系统集合。每个子系统负责内核的一部分(比如网络、SCSI驱动、特定架构支持、内存管理、视频设备等),并且拥有指定的维护者,维护者对该子系统的代码总体负责。当前有过超过100个子系统。补丁先是进入到一个子系统树,子系统维护者接受修改时,补丁就会附加“由谁签收通过” 的一行签字。该信息表明此补丁可以合入到内核。


    图一 代码流动过程

    Linux-next树本意是在Linus合并代码前将各子系统的代码整合到一起,并进行测试,挑选出可能存在的冲突和跨子系统问题。

    实际例子

    一个新版本2.6.20的发布过程如下图二。在每一个版本开始时,Linus会打开合并窗口(merge window),从那时起,被认为是可靠稳定的代码会被合并到内核主线,新的功能或驱动等得以加入进来,合并窗口会开启两周,然后Linus会宣布窗口关闭,并发布第一个rc版本,如下图2.6.20-rc1。此-rc1版本的发布意味着新功能的加入已经完成,以后再加入的补丁只能是修复问题,以确保此版本的稳定,但也有即少数包含新功能的补丁会被认为是不友好的。问题修复的代码不断进入主线,Linus接下来大约每周发布一个新的rc版本,通常会在6-9个rc版本后认为此版本已经稳定并且最终发布2.6.20版本,再进入下一个三位版本的迭代。发布之后,此2.6.x版本就移交给稳定组(stable team),稳定组时而会再发布2.6.x.y版本,每个四位版本的发布会有两个条件:(1)修复重大的bug;(2)该补丁也已被融入到下个三位版本开发的主线中了。稳定组通常维护一个稳定版本6个月左右,之后就由使用该版内核的发行版发行商负责。


    图二 一个版本的发布过程

    测试

    对Linux kernel测试面临的挑战巨大:如前面的数据所显示,(1)其快速活跃的开发;(2)经常性的版本发布,每次发布都包含大量修改,以及内核本身支持配置的灵活性、可扩展性,待测点太多(3)需要覆盖各种平台,Linux已支持二十多种平台体系,是支持平台最广的系统;(4)过时的case需要维护以及大量遗留代码。

    与松散的开发流程相对应,没有看到正式的测试流程,开源软件很大一部分的测试执行是依靠用户实际运行使用。如下图三所示。

    图三 开源测试的大体流程

    测试项目简介

    Linux kernel与测试相关较出名的开源项目有:

    LTP:Linux Test Project http://ltp.sourceforge.net/。

    Autotest:http://autotest.github.com/

    CrackerJack Project:http://ossipedia.ipa.go.jp/crackerjack/index.html。

    LTP是一个联合项目主要验证Linux系统的可靠性、健壮性和稳定性,最先由SGI™启动,并由IBM®负责维护。2012年4月发布的最新稳定版本已拥有3000+的case(case增长并不多,06年时就有2900+的case),用于测试Linux kernel以及相关功能。使用的编程语言主要是ANSI-C(占94%),以及Bash脚本(占5%),还有Perl(占0.62%)。它也有一套使用ANSI-C和Bash写case的模板。

    Autotest是后启之秀,最早被用于Linux kernel自动化测试的框架,使用python语言,现在也被多个其它项目所应用。新case能较容易添加,ANSI-C或者Bash写的case也能较方便地融入此框架。针对Linux kernel的测试项目地址是http://test.kernel.org,用于交流、共享和分析测试数据。Autotest框架分服务端和客户端,在监听到有新版本发布(三位版本、四位版本、-rc版本、-git版本)时,会自动触发执行自动化,执行过程见下图四。


    图四 Autotest自动化执行流程

    CrackerJack 是一个主要负责linux kernel兼容性测试的项目,找出不同内核版本系统调用的diff情况,已支持317个系统调用。它也是使用Autotest框架执行,diff结果是个矩阵可见下图五或者网址http://ossipedia.ipa.go.jp/crackerjack/compare_results.html。Diff比较是智能的,并非单独地比较输出结果,比如time时间调用每次系统返回都是不一样的,比较时就是检查两次调用之间的时间差。

    图五 CrackerJack diff结果

    测试方式

    测试手段是多样的:单测、集成测试、功能测试、性能测试、压力测试、回归测试等,但没有一种手段在任意时候都合适。质量保证是多方面的,除了要求开发者写出高质量代码外,静态代码检查、还要有频繁且严格的code review,下面列举一些针对Linux kernel特点的测试。

    1. 开发者测试。鼓励开发者写单元测试,但很多时候有太多的依赖假设,单测等是很难的,比如要测试U盘在读写过程中被拔掉,再插上的情况,只有实际运行执行才能验证程序是否正确。无论开发人员使用何种方式,都需要保证负责的代码是经过测试了的。不需要在所有版本上运行,但需要确保代码质量,不能假定的字节序、字节长度,都应该使用标准接口。有些时候是修复别人报的bug,而开发人员又没有复现该bug的环境,此时修改也需要由bug提交者确认在其环境测试通过或者在其它能复现该bug的环境验证通过。对修改代码的质量保证方法还包括交由其它人评审通过或测试通过。编译器的报警也是需要修复的。

    2. 社区测试。社区开发模式,也强调社区测试,鼓励大家在做好数据备份前提下使用最新发布的版本,类似软件正式发布前的试用版本,以确保在不同的机器不同的平台上能实际正常运行。对此类版本的使用是有风险的,有可能导致系统崩溃。通常在系统安装后,启动时也会比较小心,逐项加载启动,以检查每步都是正常的。还会做一些非常规的操作,也就是异常测试。

    3. 配置测试。Linux kernel的配置也较复杂,以支持较好的灵活性和可扩展性,测试需要尽量地覆盖不同的配置组合条件。有的做法是随机配置,再编译运行启动,7*24小时重复不间断地做,以找出可能存在的问题。做的过程中也有优化,比如关闭一些不必要的选项,减少编译的时间。

    有些配置项是有助于测试执行时监控问题和分析问题的,比如打印出debug日志,或者在出错时打印尽可能多的信息,kernel在某些设置下自身也会做一些运行过程中的检查,如CONFIG_DETECT_SOFTLOCKUP能检查出内核部分是否在内核模式中循环超过60秒的bug,这类配置通常会在测试时打开。

    4. 硬件测试。验证kernel对不同平台的支持时,会使用些不常用的硬件,以及不常用的硬件组合,不同的体系架构。

    5. 对待变化。由于Linux kernel经常变化,不可能每次变动都同等对待。针对-rc候选发布版本,需要严格地测试,因为它们一旦被认为是稳定的之后就会正式发布,并很可能由发行商选中到发行版中。而针对-next树或者以前的-mm树,因为它们太容易变化了,没有时间和资源运行全量测试,通常只执行最基本的测试。

    6. 工具。Linux测试工具众多,可见http://ltp.sourceforge.net/tooltable.php,覆盖率、安全性、调试、网络、性能等方方面面工具都应有尽有。

    7. 性能测试。Linux kernel对性能要求也比较高,性能测试通常要注意的几点:(1)最好是利用benchmark,以取得可信数据;(2)避免I/O缓存因素,缓存对性能影响较大;(3)确保测量环境的稳定性,特别是比较前后版本时。Autotest中也包含性能测试自动化,一次升级导致的性能问题和修复如下图六所示,2.6.14-rc2-mm1版本与2.6.14-rc1-mm1版本相比执行时间由101增加到了111,性能降低了10%,直到2.6.16-rc1-mm4版本才修复。

    图六 Autotest性能测试执行结果图

    8. 可测性。Linux kernel在可测性方面也有较好支持。

    (1)内核模块化。启动内核模块支持后,内核的某些部分就可以在需要的时候才装载到内存中,使内核变得更小,运行更快。模块化的内核部分可以在系统运行期间装载或者卸载。

    (2)内核hacking 选项,编译一个测试用的内核,有助有内核特定功能的调试,也需要注意有部分选项会导致性能降低。

    (3)Magic SysRq键,神奇的键盘快捷键,可以利用快捷键直接向内核传递特定的指定。

    (4)多种信息收集方式,内核的bug不一定是导致系统崩溃,一些严重的错误通过日志等表现出来,信息收集就变得犹为重要了。可以通过Syslog, console, dmesg等方式dump和显示日志,除此之外,还可以通过串口和网络控制台远程收集信息。

    (5)kexec快速重启系统,使用 kexec可以直接重新启动到另一个内核,不再必须通过固件和引导装载程序阶段,能为测试节省大量时间。

    (6)使用biselect追查问题,当发现一个bug却不知道是由哪个补丁引入时,使用二分查找,代码管理系统git以及补丁管理工具quilt都支持二分查找。

    9. 覆盖率。关于Linux kernel的测试覆盖率,没有看到最新的统计,不过以前数据多是在20%左右的分支覆盖率。

    虽然说自动化测试越来越重要,但是将内核部分测试自动化却是非常困难的,自动化只涵盖了一少部分功能,性能的自动化看起来做得更多些。质量更多还是由开发人员以及社区测试来保证。另外一方面看,Linux kernel本身的架构应该也有较高的容错性和可扩展性,以支持如此大量又频繁的修改。

    说明

    写本文时,我还并没有实际参与过Linux kernel的开发或测试,只是对其有兴趣,于是在网上查阅了大量文档,有些信息可能已经过时或者与实际情况不符,仅供参考。

    引用说明

    网上链接

    Crackerjack Project http://ossipedia.ipa.go.jp/crackerjack/index.html

    Linux命名争议 http://en.wikipedia.org/wiki/GNU/Linux_naming_controversy

    Linux Test Project,测试Linux kernel以及相关功能 http://ltp.sourceforge.net/

    Linux测试工具 http://ltp.sourceforge.net/tooltable.php

    Linux 维基百科 http://en.wikipedia.org/wiki/Linux

    Linux Kernel维基百科 http://en.wikipedia.org/wiki/Linux_kernel

    开发流程 http://linuxwireless.org/en/developers/process

    Autotest项目http://autotest.github.com/

    Greg Kroah Hartman on the Linux Kernel视频http://www.youtube.com/watch?v=L2SED6sewRw

    http://stackoverflow.com/questions/3177338/how-is-linux-kernel-tested

    kernel官网 http://www.kernel.org

    Linux kernel邮件列表FQA http://ftp.osuosl.org/pub/linux/docs/lkml/

    Pdf电子书

    《Best Practices in Linux Kernel Testing》

    《Linux Kernel Tester’s Guide》version 0.3,中文版《Linux 内核测试指南》

    《How to Participate in the Linux Community》2008.8

    《Linux Kernel Development:How Fast it is Going, Who is Doing It, What They are Doing, and Who is Sponsoring It》2012.3

    展开全文
  • 第一个嵌入式QT应用程序 在成功安装 Qt Creator 开发环境后,我们通过一简单的嵌入式Qt应用程序,来说明一下如何构建和编译一Qt界面应用程序。 关于如何安装并构建 Qt Creator 开发环境,请参考以下帖子: ...
  • Linux下C++的编程——开发环境搭建与第一个程序

    万次阅读 多人点赞 2015-12-06 20:40:05
    篇文章Linux下C++的编程——开偏介绍中我们已经介绍了GUN、GCC、G++等...Linux内核片:2.6.32-573.3.1.el6.i686一般Linux安装完之后默认就已经安装了GCC(GNU Compiler Collection),你可以查看一下gcc和g++的版本
  • LinuxLinux版本介绍(内核版本和发行版本

    万次阅读 多人点赞 2018-06-18 21:27:18
    Linux内核版本号由3组数字组成:第一个组数字.第二组数字.第三组数字 第一个组数字:目前发布的内核主版本。 第二组数字:偶数表示稳定版本;奇数表示开发版本。 第三组数字:错误修补的次数。 例1: ...
  • Linux高级开发Linux高级开发Linux高级开发Linux高级开发Linux高级开发Linux高级开发Linux高级开发Linux高级开发Linux高级开发
  • Linux11主要发行版本

    千次阅读 2018-11-21 21:30:33
    Ubuntu,Linux Mint和...另方面,Slackware Linux,Arch Linux和FreeBSD是更激进的发行版,更新比较频繁,所以需要有一定的基础。不然,哪天搞崩了都不知道问题所在。 openSUSE,Fedora,Debian GNU/Linux和...
  • linux版本

    2007-10-17 12:10:00
    linux发行版本介绍2007-06-19 17:39 总结各个资料的介绍,列一个表吧,linux版本(包括商用发行版以外的各组织维护的linux套件版本)主要有以下几种: 任何一个软件都有版本号,例如微软的Windows 95,POffice 97
  •  1、major:表示主版本号,有结构性变化时才变更。  2、minor:表示次版本号,新增功能时才发生变化;一般奇数表示测试版,偶数表示生产版。  3、patch:表示对次版本的修订次数或补丁包数。  4、build:表示...
  • Linux 10主流发行版本

    千次阅读 2019-10-23 23:07:43
    Linux Mint 二、Ubuntu 三、Debian GNU/Linux 四、Mageia 五、Fedora 六、openSUSE 七、Arch Linux 八、CentOS 九、PCLinuxOS 十、Slackware Linux 十一、FreeBSD 这里只表示做记录。其实相关的...
  • 初学嵌入式linux,对于整个环境的认知,以及整个环境的操作非常重要。平时编程都是在集成开发环境下进行...又是怎样一个过程?集成开发环境确实方便,直接通过按钮的点点就完成了想要的操作,但隐藏了内在的运行逻辑。
  • 常见Linux版本

    千次阅读 2016-06-23 22:40:02
    常见Linux版本
  • linux内核版本介绍

    千次阅读 2021-01-29 16:13:32
    Linux内核版本号由3组数字组成:第一个组数字.第二组数字.第三组数字 第一个组数字:目前发布的内核主版本。 第二组数字:偶数表示稳定版本;奇数表示开发版本。 第三组数字:错误修补的次数。 可以使
  • 程序员开发Linux版本选择

    千次阅读 2016-11-04 10:41:17
     是基于deb包管理系统,debian,ubuntu,linuxmint,deepin  二是基于rpm包管理系统的,redhat,centos,fedora    其余的像suse enterprise,之类的都有自己的包,但是都兼容rpm  如果以后要用linux做...
  • 本资源来源于互联网,包括c语言入门的三本书,linux c 宋劲彬编写的,侵删。
  • 本课程是linux驱动开发第一个课程,主要介绍linux驱动的概念、模块化设计理念、分类、安全性要求,后讲解了linux驱动课程的整体学习方法。学习本课程主要是为后续正式学习linux驱动打基础。
  • 研究和测试了两三天终于把windows和linux个版本的sdk通过maven打包成jar包并集成到公司的springboot项目中。通过这篇博客记录一下集成的过程(顺便吐槽一下海康的sdk),可以给其他人做个参考...
  • 第一个linux驱动程序,hello

    千次阅读 2018-12-09 15:59:30
    前面已经把学习linux开发环境搭建好了,现在逐步开始学习开发过程。先从内核驱动开始,写一个网上已经被写烂的实列程序。先把它编译好,放进linux系统运行,看看是什么样子。 创建文件夹hello,在文件夹下面创建...
  • 嵌入式Linux开发第一步:虚拟机安装Ubuntu
  • 本书是本介绍Linux设备驱动开发理论、框架与实例的书,以Linux 2.6版本内核为蓝本,详细介绍自旋锁、信号量、完成量、中断顶/底半部、定时器、内存和I/O映射以及异步通知、阻塞I/O、非阻塞I/O等Linux设备驱动...
  • 技巧1——怎样查看linux发行版本名称和版本号?

    万次阅读 多人点赞 2019-05-23 16:54:09
    假如我们加入了一家新公司,需要为开发团队安装所需要的软件并且重启服务 首先要弄清楚它们运行在什么发行版本上以及在哪个版本的系统上,才能正确的...如果不知道使用的是哪一个发行版本的系统,在软件包安装的时...
  • 第一个GO程序HelloWorld(Linux

    千次阅读 2019-08-29 18:11:52
    注:本文开发/运行环境为Linux-Ubuntu18.04.2 LTS ▲新建Coding工作目录 ▲新建文件HelloWorld.go ▲编写如下代码 packagemain import"fmt" funcmain(){ fmt.Println("Hello,World!") } ▲运行文件:...
  • Linux版本

    2010-05-25 15:21:00
    Linux内核版本有两种:稳定版和开发版.稳定的内核具有工业级的强度,可以广泛地应用和部署....这两种版本是相互关联,相互循环的.Linux内核的命名机制: num.num.num 其中第一个数字是主版本号,第二数字是次版本号,
  • Platform for Network Equipment是Wind River公司第一个完全具备Linux文件系统的平台产品,内置了丰富的网络中间件和应用组件。风河的用户已经为1000个开发席位发放了许可证并开始与风河一道对他们基于Linux的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 605,904
精华内容 242,361
关键字:

linux第一个版本谁开发的

linux 订阅