Linux(Linux is not Unix.http://www.kernel.org)是一套遵循POSIX标准,支持多用户多任务的类Unix操作系统。

多用户(Multiuser)是指Linux允许多个用户同时登录并使用系统资源。用户之间不会相互影响,每个登录用户都可以获取自己独立的使用环境;
多任务(Multitask)是指linux可以同时运行多个进程,进程之间互不干扰,资源在多个进程间合理分配!

linux吉祥物

linux采用GNU GPL授权模式发布,主要由C语言以及平台相关的汇编代码写成,任何人均可获得并修改内核程序及其源代码。 目前的Linux同时支持32位和64位硬件。
POSIX标准规范unix操作系统内核提供给应用程序的编程API接口。凡遵守POSIX标准的操作系统内核,都可以运行符合POSIX标准的应用程序。
linux内核完全遵循POSIX标准,继承了Unix的优良特性,可以直接运行之前在Unix上开发的应用程序、工具软件和网络协议。大大降低软件移植的复杂度,为linux的广泛应用奠定了技术基础。
linux同时继承了unix网络内核的设计思想,是一个性能稳定的多用户网络操作系统。

相比于具有商业版权的unix系统,Linux具有开放源码、免费使用无版权纠纷、技术社区活跃、应用广泛等优势。
除了继承unix的优良特性之外,linux最大的特点的就是开源免费自由。
linux的开源特性使得用户可以了解内核的实现机制,也可以根据自身的需求修改配置内核,自由裁剪,灵活性高,功能强大,成本低。

1991年,鉴于unix操作系统的商业版权问题,芬兰赫尔辛基大学学生Linus Torvalds(林纳斯·托瓦兹)希望可以在intel x86上运行自由版本的类UNIX操作系统。 出于个人爱好编写了linux(读音['lɪnəks])操作系统内核,并将其发布到internet。

Linus Torvalds

随着互联网的快速发展,Linux得到了来自全世界软件爱好者、组织以及公司的广泛支持。
Linux凭借优秀的设计,不凡的性能,加上IBM、INTEL、CA、CORE、ORACLE等国际知名企业的大力支持,逐渐成为主流操作系统。
在服务器、个人电脑、嵌入式系统等领域得到了广泛的应用。

linux应用领域和发展前景

回到顶部

你可能很难想象,linux早已深入到我们生活的方方面面了!
linux因其安全、稳定、开源、免费、自由、简单等特点,得到了广泛的应用。
作为运行个人桌面、服务器和嵌入式系统的首选平台,linux是最安全可靠的操作系统之一。
从智能手机到智能家居,从个人电脑到企业服务器、超级计算机,linux无处不在。

1.网络服务和集群

回到顶部

linux继承了Unix高效稳定的优良传统,具有强大的网络功能! 网络服务器正是Linux最擅长的应用领域。
常见的网络服务有www服务器、邮件服务器、文件服务器、数据库服务器、DNS服务器等。
常用的服务器组合有 LAMP(Linux + Apache + MySQL + PHP) 和 LNMP(Linux + Nginx+ MySQL + PHP)。
以下为常见的网络服务器软件:

1.www服务:apache、nginx;
2.远程连接服务:ssh、vnc、xrdp、xdmcp;
3.文件服务器:NFS、FTP、SAMBA;
4.数据库服务:mysql; 5.邮件服务器:postfix;
6.账号管理:NIS;
7.时间服务器:NTP;
8.域名解析:DNS;
9.网络参数管理:DHCP;
此外linux在企业的关键领域也有着广泛的应用,例如金融数据库,大型企业网络管理等。
在企业应用中,Linux既可以作为服务器,也可以作为网络防火墙使用。内核防火墙组件性能高效、配置简单,保证了系统的安全运行。
linux系统中内嵌网络协议栈,经过适当的配置就可实现路由器的功能。这些特点使得Linux成为开发路由器等交换设备的理想开发平台。
为了加强系统的整体性能,提高并行运算能力,linux在系统集群(Cluster)方面也得到了广泛的应用。 并行运算指的是将原本需要很长时间运算的工作分成多份,交给多部主机去运算,最后将结果汇总起来的一种运算方式。大大提高运算效率。
目前服务器厂商广泛支持的linux发行版有Red Hat和SuSU!国内企业使用的比较多的服务器发行版为centos。

2.虚拟化和云计算

回到顶部

Linux的传统应用可分为企业应用与个人应用两方面,近几年逐渐流行的云计算,也让linux的发展如虎添翼!
随着个人计算机CPU核数越来越多,主机的运算能力越来越强大,硬件资源经常闲置,从而产生了虚拟化技术!
虚拟化指的是在一部物理宿主机上仿真出多个逻辑上完全独立的虚拟主机,这些虚拟主机也可以安装完整的linux操作系统!
通过虚拟化技术,一部物理主机可以同时运行多个操作系统(不同于多重引导),从而最大化利用硬件资源。
早期的计算机系统由一个大型主机连接多个终端设备,运算资源集中在大型主机中。云计算和早期的这种计算机模式有点类似。
通过云计算,用户只需通过终端设备连接到云主机即可获得计算机资源, 云计算底层技术就是linux内核和kvm虚拟化技术。
可以将云计算技术理解为在linux系统主机中通过kvm等虚拟化技术虚拟出多个linux主机,这些虚拟化出来的linux主机也叫云主机,可以通过远程终端设备进行远程连接。
企业为了资源的集中管理,需要搭建内部私有云,远程办公的兴起也促进了公有云计算的快速发展!
目前主流的云计算厂商有阿里云计算、亚马逊云、腾讯云、华为云等。
本站www.initroot.com就是搭建在阿里云主机上。
目前远程终端设备也越来越多样化,任何具备网络连接的设备都可以称为终端设备,包括各种嵌入式系统设备, 近年来逐渐流行的开源硬件终端设备例如树莓派(Raspberry Pi)和香蕉派(Banana Pi)等都是可以进行远程连接的云计算终端设备! 而这些设备大多也都运行着linux操作系统!

3.嵌入式和智能设备

回到顶部

Linux kernel小巧精致,可以在低功耗及较低硬件资源的环境下运行。
在平时接触的智能电子产品中,大部分都搭载着unix/linux操作系统!
目前流行的android智能手机,其系统也是基于linux内核研发,可以将android系统简单的理解为在linux内核上运行java虚拟机程序!
绝大多数Android手机可以通过设置->关于手机->软件信息,查看到Android版本信息,点选更多就可以看到linux内核的版本信息了,类似3.4.10-xxx!
而苹果公司的iphone手机ios系统内部则为unix操作系统内核!
智能手机(android)、汽车导航、冰箱、互联网电视、路由器、防火墙、IP分享器、交换器、网络存储器NAS、机器人控制芯片、智能家电设备、数码相机等等 几乎所有你能想到的智能设备都是基于linux内核研发的。上面提到的这些智能设备也称为嵌入式系统设备,都是计算机系统。
嵌入式系统开发必须熟悉linux内核和驱动程序的开发,关于这方面的信息可以参考本站的嵌入式专栏: 嵌入式linux

4.个人桌面办公

回到顶部

Linux的各种distributions整合了非常多优秀的软件(包括专利软件和自由软件), 因此也非常适合个人计算机使用! 个人桌面最重要的就是图形界面了,早期linux只有命令行界面,对普通用户不太友好,随着X Window System的出现, 在个人桌面办公领域,linux也越来越受欢迎,甚至可以直接取代windows操作系统!
X Window System和众多的自由软件一样,也是运行在Linux内核上的一个应用程序, 并没有作为内核的一部分! 这样的好处是即使X Window意外崩溃了,也不会对linux内核的运行造成影响! 更多关于X window system的详细信息参考这里linux X window
linux主流的桌面环境有KDE和GNOME,各种桌面系统也越来越美观和人性化,针对图形界面的软件也越来越丰富, windows系统上的软件几乎都能在linux下找到对应的替代品。 linux下有丰富的办公娱乐套件,可以满足人们绝大多数的办公和娱乐需求,完全可以用linux替代windows办公。 下面是一些常用的办公娱乐套件,应付日常的企业办公可以说是绰绰有余:

网页浏览器:Firefox、chrome等;
Office办公软件:libreoffice、OpenOffice;
下载工具:uGet;
电子邮件:thunderbird mail,类似微软的 Outlook Express;
图片处理:GIMP;
即时聊天通讯:QQ、FB、Line、dropbox、Pidgin;
影音:qqmusic、media player、rhythmbox;

5.学术研究与软件研发

回到顶部

在学术研究和软件研发领域,linux也得到了广泛应用!
linux本身就是一个强大的软件开发平台,各种开发编译工具应有尽有,例如gcc、gdb等。
linux高效强大的运算能力,被越来越多的用在数学建模研究、娱乐特效制作等领域!
许多好莱坞大片都是在linux平台上制作!
得益于GNU计划的GPL授权模式,越来越多的自由软件在Linux上开发应用。

目前 Linux 不仅在家庭与企业中使用,并且在政府中也很受欢迎。
巴西联邦政府由于支持 Linux 而世界闻名。
有新闻报道俄罗斯军队自己制造的 Linux 发布版的,做为 G.H.ost 项目已经取得成果。
印度的 Kerala 联邦计划在向全联邦的高中推广使用 Linux。
中华人民共和国为取得技术独立,在龙芯处理器中排他性地使用 Linux。
在西班牙的一些地区开发了自己的 Linux 发布版,并且在政府与教育领域广泛使用,如 Extremadura 地区的 gnuLinEx 和 Andalusia 地区的 Guadalinex。
葡萄牙同样使用自己的 Linux 发布版 Caixa Mágica,用于 Magalh?es 笔记本电脑和 e-escola 政府软件。
法国和德国同样开始逐步采用 Linux。

linux操作系统基本原理和组成架构

回到顶部

计算机系统由硬件和软件组成,软硬件互相依赖,不可分割。 计算机硬件由cpu、内存、硬盘以及各种外围设备组成,只有硬件是无法正常工作的,还需要软件系统的控制。
操作系统是一种软件,用来管理计算机的软硬件资源。操作系统是和硬件打交道并为用户应用程序提供有限服务(api)的底层系统软件。
Linux就是一套操作系统,各组成部分如下图所示,: 操作系统的角色 严格意义上来讲,Linux是指内核与系统调用这两层。linux实际指的是linux内核,应用程序不属于内核部分,内核和其上运行的应用程序共同组成了linux操作系统!
linux操作系统由bootloader、kernel内核、init进程(守护进程)、daemons守护进程、graphical server(守护进程)、桌面环境、应用软件等组成。
按照linux操作系统的启动流程,linux操作系统包括下面的几个部分:
1.bootloader
管理计算机的启动过程,bootloader用于引导和加载操作系统内核.在pc领域常见的有grub;在嵌入式领域常见的有uboot;
2.kernel内核
我们平时所说的linux就是指linux内核,内核管理着cpu、内存以及各种外设;
Linux内核主要由以下几个模块(组件)组成:存储管理、CPU和进程管理、文件系统、设备驱动管理、网络通信,系统调用以及系统的引导初始化等。
3.init系统
用于引导用户空间应用程序的启动,在linux中表现为init进程,是系统中启动的第一个用户空间进程,主要用来启动各种守护进程,将linux引导到合适的用户环境。 目前应用最广泛的init系统就是systemd了。
4.daemons守护进程
系统守护进程,也就是linux的各种后台服务,包括打印、声音、调度等,一般在系统引导启动期间,由init进程启动,也可在登录系统后手动启动;
5.graphical server
图形服务,在监视器上显示图形的子系统,属于daemon守护进程,通常是指X服务;
6.桌面环境
用户通过桌面环境和linux打交道,目前有很多种桌面环境可供用户选择,比较流行的有GNOME, Cinnamon, Mate, Pantheon, Enlightenment, KDE,Xfce等。每种桌面环境都包含不同的内置应用软件,包括文件管理器、配置工具、web浏览器和一些游戏。 桌面环境和应用软件的不同组合,形成了各种不同的linux发行版。
7.应用软件
就像windows和macOS一样,linux桌面环境也不提供所有的应用软件。需要我们下载并安装需要的应用软件。linux为用户提供了成千上万的高质量软件, 这些软件可以很容易找到并安装。大部分现代linux发行版都提供了类似app store的工具,用于集中和简化应用程序的安装。 例如在Ubuntu中我们可以通过Ubuntu Software Center轻松找到需要的应用程序并下载安装。
我们平时所说的linux即是专指linux内核,linux内核外各组成部分的不同,形成了各种不同的linux发行版。 基于linux内核而构建的各种linux发行版,统称linux操作系统。

扩展阅读

操作系统(Operation System)负责管理与驱动硬件,至少要具备以下功能: (1)input/output control, (2)device control, (3)process management, (4)file management!
硬件是由内核来控制的,每种操作系统都有自己的内核。内核与硬件的关系非常紧密,Torvalds在1991年写出Linux内核的时候,内核仅支持386硬件, 内核也仅仅只是让386计算机开始运作,并且等待用户指令输入而已,当时能够在Linux上面运行的软件还很少! 很多工程师在安装了Linux内核之后,还需要再安装所需的软件,甚至许多软件都需要自己开发。
Linux提供了一个完整操作系统最底层的硬件控制与资源管理的完整架构, 这个架构继承了Unix稳定而强大的优良传统! 很多的软件开发者渐渐的将他们的工作重心移转到这个架构上,可运行在linux操作系统上的应用软件也就越来越多!
不同的cpu硬件平台接口都不一样,例如IBM的Power CPU与Intel的x86架构并不一样,同一套linux操作系统无法在不同的硬件平台上运作! 如果想让x86上面运行的操作系统也能够在Power CPU上运行, 就需要根据不同的硬件接口平台,修改linux内核的程序代码,才能将内核移植到相应的硬件平台!
由于Linux内核的开源特性, 内核代码可以顺利的被修改移植到各种硬件平台上运行!
微软的windows操作系统和苹果的MAC操作系统就没有这种灵活的可移植性! 2006年以前,苹果公司的硬件是由IBM开发的Power CPU,最早的苹果操作系统MAC也只能支持Power CPU。 Windows操作系统则是针对个人计算机x86架构开发设计的操作系统, 所以理论上Windows是没有办法安装运行到苹果计算机上的。
2006年以后,苹果计算机才将硬件平台转到x86系统,所以理论上在安装windows操作系统的电脑上也可以安装苹果操作系统MAC。

1.linux操作系统的组成

回到顶部

linux操作系统由bootloader、kernel、init进程(systemd守护进程)、daemons守护进程、graphical server(守护进程)、桌面环境、应用软件、说明文档Documentations等组成。
人们已经习惯了用Linux来表示整个基于Linux内核的操作系统,但严格来讲,Linux本身只表示Linux内核。
linux的启动流程可以简单的描述为:
bios->bootloader->linux kernel->init->daemons->login、shell、desktop->app
计算器上电启动后,bios加载bootloader,bootloader加载kernel。内核加载成功后,bootloader从内存退出,内核则驻留在内存中。 内核随后启动init进程,目前主流发行版的init进程已由systemd进程替代,init进程启动各个守护进程(常驻内存),并开启login、shell、桌面环境等。
至此一个完整的操作系统就启动完成了,用户可以启动自己的应用程序。
bios和bootloader在linux内核启动后就退出内存了,内存中的内核运行在内核空间,称为内核层;
剩下的init、daemons、login、shell、desktop、app等都运行在用户空间,统称为应用层。
此外用户空间的应用程序在运行的过程需要大量依赖各种函数库。

linux发行版

回到顶部

使用lsb_release -a查看linux的发行版本:

                [initroot@study ~]$ lsb_release -a
                No LSB modules are available.
                Distributor ID: LinuxMint
                Description: Linux Mint 19.1 Tessa
                Release: 19.1
                Codename: tessa
              

2.什么是linux发行版

回到顶部

以上这些和本文的主题有什么关系呢?除了BIOS由计算机硬件厂商提供并固化到ROM中外,以上启动流程中涉及到的各个环节都有不同的软件可供选择。

1.常见的bootloader有grub、lilo、u-boot等;
2.虽然只有一种linux内核,但是也有多种内核版本可供选择;
3.init有传统的基于System V的sysinit和目前主流的systemd;
4.daemons是各种不同守护进程的统称,这里涉及的软件成千上万;
5.常见的shell有bash、dash、C shell、tcsh、Korn shell等;
6.主流的桌面环境有KDE、GNOME、MATE、Cinnamon、Unity等;
7.而app就更是成千上万了,包括各种gnu工具链,比如软件开发编译工具gcc、make等,软件包管理工具apt、yum等, 办公软件libreoffice,图像处理GIMP等,音视频播放软件mediaplayer,以及各种行业领域相关软件等等;
8.以上应用程序运行所依赖的各种函数库有glibc等;
以上大部分软件工具来自GNU计划。软件的多样化,给了用户极大的选择空间。不同的linux厂商在发行自己的操作系统的过程中, 就会选择不同的软件组合,或者集成自己开发的软件,从而产生了不同的linux发行版。
个人也可以根据需要组装自己的linux发行版,例如您可以使用这样的组合方式制作自己的linux发行版:grub+linux+systemd+daemons+bash+GNOME+apt

3.linux发行版目的

回到顶部

Linux内核由顶级黑客工程师开发维护,用户大多是研发领域的工程师。
对普通用户并不友好,例如软件的安装需要从源码编译安装,对于普通用户可能并不是很容易理解。
为了让linux的使用更加简单方便和人性化,很多商业公司、非营利性组织和社区团体等, 将Linux内核与应用软件以及自己开发的工具程序整合在一起发布给用户使用。
Linux发行版(Linux distribution,也叫GNU/Linux发行版)就是为了方便一般用户安装使用而预先集成好各种应用软件的Linux操作系统。 除了一些定制软件 (如安装和配置工具),发行版通常只是将特定的应用软件安装在一堆函数库和内核上,以满足特定用户的需求。
用户不需要重新编译,直接安装后只需适当设置就可以使用。
Linux发行版通常包含了软件包管理工具、桌面环境(基于X Window)、办公套件、媒体播放器、数据库等应用软件,以及大量来自GNU计划的函数库。
有些发行版考虑到容量大小而没有预装X Window,并且使用更加轻量级的软件和函数库,如:busybox, uclibc或dietlibc。

4.linux发行版种类

回到顶部

由于大多数软件都是自由开源软件,Linux发行版的形式多种多样——从功能齐全的桌面系统、服务器系统到小型嵌入式系统。
开发Linux distributions的社区和商业公司非常多,比较有名的有Red Hat, SuSE, Ubuntu, Fedora, Debian等. 目前有超过300个活跃的Linux发行版(Linux发行版列表https://distrowatch.com/),
流行的Linux发行版 各大厂商发布的linux发行版都可以从各自的官方网站免费下载安装,GNU GPL授权可以从事商业活动, 所以用户也可以从linux厂商购买linux发行版获得更多的服务支持。
下面是几个主流Linux distributions的官网网址:

Red Hat: http://www.redhat.com
SuSE: https://www.suse.com
Fedora: https://getfedora.org
CentOS: http://www.centos.org
Debian: http://www.debian.org
Ubuntu: http://www.ubuntu.com
Gentoo: http://www.gentoo.org
忽略图形界面的差异,各个发行版之间最大的不同就是软件安装方式的不同了。
相同:
(1)都使用 http://www.kernel.org发布的linux内核;
(2)支持同样的标准,如FHS、LSB等;
(3)使用几乎相同的自由软件,例如GNU里面的 gcc/glibc/vi/apache/bind/sendmail... ;
(4)几乎相同的交互操作接口,例如bash/KDE/GNOME等。
不同:
(1)kernel与各软件的版本可能会不同;
(2)各开发商加入的应用工具不同,使用的套件管理模式不同(dpkg与RPM)
Linux发行版族谱 根据软件包安装管理方式的不同,linux发行版主要分为两大阵营:
一种是以Red Hat为代表的RPM管理方式,包括Red Hat,Fedora, SuSE等;
一种是以Debian为代表的dpkg管理方式,包括Debian, Ubuntu, B2D等;
根据商业性质可以分为商业发行版和社区发行版。
商业发行版中的软件都是经过长时间测试的稳定版本,更适合企业生产环境使用,商业版也可以提供更优质的技术支持服务,降低企业风险!
商业发行版有Ubuntu(Canonical公司)、Fedora(Red Hat)、openSUSE(Novell)和Mandriva Linux等
社区发行版由自由软件社区提供支持,如Debian和Gentoo;
社区发布版通常会加入最新的软件,这些软件可能没有经过充分的测试,存在一些bug。 例如Fedora发布的软件集合经过一段时间的测试维护,足够稳定后才会被添加到Red Hat的发行版中。Fedora的软件经常更新,Red Hat的软件就较少更新。
也有发行版既不是商业发行版也不是社区发行版,如Slackware。

5.linux发行版的选择

回到顶部

这么多的发行版,到底该选择哪个呢?他们都有哪些区别呢? 是不是学习完一个发行版还需要在重新学习另一个呢? 虽然Linux发行版众多,每个发行版也都有自己与众不同的特色,但总的来说不同发行版配套的软件都大同小异。
首先,所有的linux发行版内核都是http://www.kernel.org官网提供的。各个发行版之间都会互相借鉴对方优秀的特色。 此外每个linux发行版都会遵循相应的标准规范,例如Linux Standard Base (LSB)标准、目录结构File system Hierarchy Standard(FHS)标准规范等。
FHS: http://www.pathname.com/fhs/
LSB: http://www.linuxbase.org/
每个发行版所整合的软件也几乎都是业界知名软件,例如网页服务Apache、电子邮件服务Postfix/sendmail、文件服务Samba等。 所以基本上只要掌握了一种发行版,也会很快上手其他的发行版。
各主流发行版之间最大的不同其实就是软件安装方式的不同,以及图形界面的布局设计以及美观程度。只需要根据自己的喜好选择自己喜欢的linux发行版即可。

资深发烧友级别玩家可以从linux内核一步一步构建起linux操作系统! 关于这方面的内容可以参考LFS(Linux From Scratch)文档:http://www.linuxfromscratch.org/lfs/
这并不适合绝大部分的企业或个人环境,普遍的做法是选择一款主流的linux发行版!
如果将Linux主机定位为服务器的话,可以选择Red Hat Enterprise Linux和SuSE Enterprise Linux。
企业强调的是稳定的生产环境,如果财力预算充足,建议选择商业发型版,例如Red Hat的RHEL或者SuSE等。
对于财力有限的企业或个人,可以选择社区发行但完全兼容商业版RHEL的CentOS。 CentOS是由RHEL发布的源代码编译而来,理论上和商业版的RHEL没有任何区别。国内企业用的最多的发行版就是centos了。
个人用户选择的空间就很大了,不过个人用户往往财力有限,所以还是建议选择社区发布的linux发行版,例如Fedora, Ubuntu, OpenSuSE等。 如果不想要安装Linux,很多发行版也提供了Live CD版本,不需要安装就可以直接体验linux!(KNOPPIX?)
对于没有额外的硬盘或者是没有额外的主机的朋友来说,只需要下载Live CD版镜像文件,刻录成为CD,放入主机的光驱, 并在BIOS内设定光盘为第一个开机选项,就可以使用Linux系统了!
先学习以RPM套件管理为主的RHEL/Fedora/SuSE/CentOS等。如果已经接触过Linux, 想要深入探讨更严谨的Linux版本,可以考虑Debian。
如果优先考虑效能,或许Gentoo是不错的选择!
本站讨论的linux技术并不会限制在某个发行版,所讲解的命令都在linux mint和centos这两个发行版中测试通过! 总之,只要熟练掌握一种发行版的使用,就可以非常顺利的使用其他的发行版了。最终到底选择哪个发行版,那就看自己的口味了!
本站选择目前主流的两个linux发行版进行介绍,一个是centos,另一个是linux mint。 CentOS完全兼容RHEL, 你可以选择到 CentOS 的官方网站去下载最新的版本. CentOS 官方网站:http://mirror.centos.org/centos/7/isos/
CentOS 7.x有提供完整版本(everything)以及大部分安装软件的DVD1版本,如果你的网络速度够快,下载everything版本即可, 如果你得要使用光驱来安装的话,直接下载DVD版本然后刻录到DVD光盘即可安装。
如果不想要安装,只想看看linux是什么样子的, 可以下载LiveCD/LiveGNOME/LiveKDE等版本测试!
Everything包括所有软件的版本。如果仅仅是用来学习,可以选择安装最小安装光盘版(Minimal)!
下载的文件名会是CentOS-7-x86_64-Everything-1503-01.iso这样的格式,从CentOS 7之后,版本命名和发布的日期有关!
CentOS-7表示centos 7.x版本,x86_64指的是64位操作系统,1503指的是2015年3月发表, 01与CentOS-7搭配,就是指CentOS7.1版的意思!
文件扩展名是.iso,表示光盘镜像image文件。
image文件是由光盘直接刻录成文件的, 文件非常的大, 建议使用FTP等支持断点续传的客户端程序下载,例如Filezilla (http://filezilla-project.org/download.php)等,不需要担心网络连接中断的问题.
此外,映像文件不能以数据格式刻录成光盘DVD!必须使用刻录程序以映像文件格式刻录成为光盘或DVD!切记不要使用刻录数据文件格式来刻录!

6.主流的linux发行版

回到顶部

下表列出了当前比较主流的linux发行版分类:

linux主流发行版分类
linux主流发行版分类
软件包管理方式 社区团体 商业公司
RPM Fedora,是Red Hat的社区版,会经常引入新特性进行测试。
PCLinuxOS,Mandriva的派生版本,由社区维护的非常流行的发行版。
CentOS,从Red Hat发展而来的发行版,由志愿者维护,旨在提供开源的,并与Red Hat 100%兼容的系统。
Mageia,从Mandriva发展而来的发行版。
OpenSuSE?
RHEL(Red Hat Enterprise Linux),Fedora的商业版,由Red Hat维护和提供技术支持。
Mandriva,最初为Red Hat的派生版,现在由法国一个同名的公司维护。
openSUSE,最初由Slackware分离出来,现在由Novell维护。
SUSE Enterprise Linux(Micro Focus)
DPKG Debian,一个强烈信奉自由软件,并由志愿者维护的系统。
Kubuntu, 使用KDE桌面的Ubuntu。
Linux Mint,从Ubuntu派生并与Ubuntu兼容的系统。
Knoppix,第一个Live CD发行版,可以从可移动介质运行,Debian的派生版。
OpenGEU,Ubuntu的派生版。
Elementary OS:基于Ubuntu,接口酷似Mac OS X。
manjaro
antergos
solus
gOS和其他上网本用的系统。
B2D
Ubuntu,流行的桌面发行版,由Canonical Ltd.维护
其他管理方式 ArchLinux,一个基于KISS(Keep It Simple and Stupid)的滚动更新的操作系统。
Chakra,一个从ArchLinux派生出来,只使用KDE桌面的半滚动更新发行版。
Gentoo,一个面向高级用户的发行版,所有软件的源代码需要自行编译。
Slackware,最早的发行版之一,1993年创建,由Patrick J. Volkerding维护。
更多linux发行版排行榜可参考https://distrowatch.com

linux内核开发模式

回到顶部

尽管linux非常优秀,但只靠Linus Torvalds一个人的力量,还是很难发展起来的。
Linus Torvalds将Linux内核源码放在FTP服务器上供用户下载,用户再将问题反馈给Linus Torvalds. 这些问题都会得到Linus及时的解决,但并不是所有问题都是Linus Torvalds可以解决的。 例如linus手头没有的硬件,就很难开发相应的驱动程序。 正好手头有这个硬件的开发者就可以根据Linux的开源设计架构,开发出对应的驱动程序或者软件。 开发者将新开发的内核驱动程序提交给Linus Torvalds,Linus Torvalds再将驱动程序或软件合并进内核并加以测试。

内核是一组软件程序,每次加入新的功能都得重新编译并发布,为此,Linux内核逐渐发展出模块机制! 新的硬件驱动程序或者其他协议的程序就可以开发为模块, 在需要的时候才加载到内核中。 这样原本的内核程序不需要改动,这大大增加了内核的可维护性,同时也有利于内核的分工开发。

Linux无穷的魅力吸引了世界各地优秀的开发者,他们自愿为linux内核贡献源码,这些分布在世界各地的开发者通过网络组成了虚拟网络开发团队
例如Alan Cox和Stephen Tweedie就是其中的杰出代表,他们会将来自开发者们提交的程序代码进行测试, 并将结果上传给Linus Torvalds,由Linus Torvalds决定是否加入内核! 这种分工合作让Linux的开发更加容易!
为了团队的沟通交流,Linux搭建了内核网站: http://www.kernel.org! 这些素未谋面的内核开发者,通过互联网,在1994年完成了内核的正式版version 1.0。 这一版同时加入了X Window System的支持! 后于1996年完成了2.0版、2011年发布了3.0版,2015年4月发布了4.0版!
2.0版推出时,大家让Linus想一个吉祥物,因为小时候去动物园被企鹅咬了一口, Linus就将这个念念不忘的企鹅当成了Linux的吉祥物.
最初Linux是针对386开发的,1994年以后,Linux便被开发到不同的硬件上面去了! 除了x86之外,IBM、HP等公司出的硬件也都被Linux所支持! 甚至于小型单板计算机树莓派、香蕉派等手持设备,智能手机、平板计算机的ARM架构系统,大都运行着Linux内核!

Linux内核版本

回到顶部

使用uname -a、uname -r或者cat /proc/version查看当前系统的内核版本:

                [initroot@study ~]$ uname -r
                5.15.0-137-generic
                [initroot@study ~]$ uname -a
                Linux www.initroot.com 5.15.0-137-generic #141-Ubuntu SMP Fri Feb 19 13:46:27 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
                [initroot@study ~]$ cat /proc/version
                Linux version 5.15.0-137-generic (buildd@lcy01-amd64-011) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #141-Ubuntu SMP Fri Feb 19 13:46:27 UTC 2021
              
Linux内核版本编号示例如下:
5.15.0-137-generic
主版本.次版本.发布版本-修改版本
上面5为主版本号,15为次版本号,0为发布版本号,137-generic为修改版本

3.0版本之后的主线版本、长期维护版本(longterm version)

回到顶部

内核从3.0以后去掉了之前通过奇偶数区分稳定版和开发测试版的方式,主要依据主线版本(MainLine)开发,主线版即可认为是稳定版, 主线版本开发完毕后会继续开发下一个主线版本。
例如3.10就是在3.9版本的基础上继续开发出来的新的主线版本。新的主线版本通常在2~3个月会被提出!
在新主线版本发布之后,旧版本会有两种机制来处理,一种机制为结束开发(End of Live, EOL),不再继续维护。
另外一种机制为保持该版本的持续维护,即为长期维护版本(Longterm)!

选择linux内核应尽量选择长期维护版本,而不是最新的主线版本。
例如目前的最新主线版本为5.0,而3.10为最近的长期维护版本,在选择内核的时候尽量选择3.10这个版本!
可通过https://www.kernel.org/releases.html查看主线版本和最新的长期支持版本。 要判断自己的Linux内核是否为长期支持的版本,可以使用uname -r来查阅内核版本,然后到内核官网对比一下版本号即可!

2.6.x版之前

回到顶部

2.6.x版本之前,Linus Torvalds将内核分为两个版本:
主、次版本为奇数:开发测试版本(development)
如2.5.xx.开发测试版主要用于测试与开发新功能,通常只有内核开发工程师会使用。
如果有新增的内核程序代码,会加到开发测试版本中,测试没问题后,才会并入下一个稳定版本;

主、次版本为偶数:稳定版本(stable)
如2.6.xx.稳定版本提供相对稳定的Linux内核环境。用于实际生产环境,我们平时使用的各种linux发行版就是使用的稳定版本内核。

至于发布版本则是在主、次版本的基础上,新增的功能累积到一定的程度后所新发布的内核版本。
Linux内核使用GPL授权,用户可以对内核程序代码进行修改。
如果你有针对某个版本的内核修改过部分的程序代码, 被修改过的内核版本就可以加上所谓的修改版本。

发行版本和内核版本

回到顶部

关于linux发行版概念查看这里linux发行版
使用lsb_release -a查看linux的发行版本:

                [initroot@study ~]$ lsb_release -a
                No LSB modules are available.
                Distributor ID: LinuxMint
                Description: Linux Mint 19.1 Tessa
                Release: 19.1
                Codename: tessa
              
不同的发行版使用不同的Linux内核版本。
例如centos 7.x使用的linux内核版本为4.15.0-88-generic。7.x为centos的发行版本,而4.15.0-88-generic为linux内核版本。
很多时候遇到问题,提供发行版的版本信息,可能比直接提供linux的内核版本信息要更快的找到解决问题的答案。

Linux内核版本发布时间表

回到顶部
Linux内核版本发布时间
版本号 时间 发展史
0.00 1991.2-4 两个进程分别显示AAABBB
0.01 1991.9 第一个正式向外公布的Linux内核版本
0.02 1991.10.5 Linux的第一个稳定的工作版本
0.03 1991.10.5
0.10 1991.10
0.11 1991.12.8 基本可以正常运行的内核版本
0.12 1992.1.15 主要加入对数学协处理器的软件模拟程序
0.95(0.13) 1992.3.8 开始加入虚拟文件系统思想的内核版本
0.96 1992.5.12 开始加入网络支持和虚拟文件系统
0.97 1992.8.1
0.98 1992.9.29
0.99 1992.12.13
1.0 1994.3.14 linux系统的核心开发队伍也建起来了
1.2 1995.3.7
2.0 1996.2.9
2.2 1999.1.26
2.4 2001.1.4
2.6 2003.12.17 支持多处理器配置和64位计算, 它还支持实现高效率线程处理的本机POSIX线程库(NPTL)。 实际上,性能、安全性和驱动程序的改进是整个2.6.x内核的关键
2.6.15 2006 改进对IPv6的支持
2.6.30 2009.6 改善了文件系统、加入了完整性检验补丁、 TOMOYOLinux安全模块、 可靠的数据报套接字(datagramsocket)协议支持、 对象存储设备支持、FS-Cache文件系统缓存层、nilfs文件系统、线程中断处理支持等等。
2.6.32 2009.12 增添了虚拟化内存de-duplicacion、重写了writeback代码、 改进了Btrfs文件系统、 添加了ATIR600/R7003D和KMS支持、 CFQ低传输延迟时间模式、perftimechart工具、内存控制器支持softlimits、支持S+Core架构、 支持IntelMoorestown及其新的固件接口、支持运行时电源管理、以及新的驱动
2.6.34 2010.5 添加了Ceph和LogFS两个新的文件系统,其中前者为分布式的文件系统,后者是适用于Flash设备的文件系统。 LinuxKernel2.6.34的其他特性包括新的Vhostnet、改进了Btrfs文件系统、对Kprobesjump进行了优化、新的perf功能、RCUlockdep、 GeneralizedTTLSecurityMechanism(RFC5082)及privateVLANproxyarp(RFC3069)支持、asynchronous挂起恢复等
2.6.35 2010.8.1 在系统的多个CPU之间分配网络处理负载, Btrfs文件系统加入直接I/O支持,大量新的驱动等
2.6.36 2010.10 Tilera处理器架构支持、新的文件通知接口fanotify、Intel显卡上实现KMS和KDB的整合、并行管理工作队列、 Inteli3/5平台上内置显卡和CPU的智能电源管理、CIFS文件系统本地缓存、改善虚拟内存的层级结构,提升桌面操作响应速度、改善虚拟内存溢出终结器的算法、 整合了AppArmor安全模型(注:与SELinux基于文件的标注不同,AppArmor是基于路径的)
2.6.37 2011.1
2.6.38 2011.3.15 文件操作性能得以提高许多,提高了Wi-Fi的性能等等
2.6.39 2011.5 加入了IPset框架,提高规则匹配速度,更新媒体控制系统等
3.0 2011.7.21
3.0.1 2011.8.5
3.1.1 2011.11
3.2 2012.1 三星Exynos处理器驱动、VMware显卡驱动脱离 staging tree以及后者的大量变动、 Intel/Radeon/Nouveau/DRM大量更新、 Btrfs文件系统改进,等等
3.3 2012.3
3.4 2012.5
3.5 2012.7 EXT4文件系统元数据校验,TCP连接的检查与修复
3.6 2012.10
3.7 2012.10
3.8 2013.2
3.9 2013.4
3.10 2013.7
3.11 2013.9
3.12.6 2013.12
3.13 2014.1
3.14 2014.4
3.15 2014.6
3.16.2
3.14.18
3.10.54 2014.9
3.17 2014.10.5
3.18.11 2015.4
3.19 2015.2 为多种触控板增加多点触控支持
3.19.8 2015.5.11 在动态电源管理风扇控制、Flash友好文件系统启动时间、多重触摸等方面做了改进

相关阅读:
unix和linux的发展历史
initroot编辑整理,转载请注明www.initroot.com技术交流群:59909790