第 1 章 Linux 是什么与如何学习
历史部分略过。
1.2.5 Linux的内核版本
Linux的内核版本编号有点类似如下的样子:
3.10.0-123.el7.x86_64
主版本.次版本.发布版本-修改版本
虽然编号就是如上的方式来编的,不过依据 Linux 内核的发展期程,内核版本的定义有点不太相同
-
奇数、偶数版本分类
在 2.6.x 版本以前,Torvalds 将内核的发展方向分为两类,并根据这两类内核的发展分别给予不同的内核编号,那就是:
-
主、次版本为奇数:开发中版本(development)
如 2.5.xx,这种内核版本主要用在测试与发展新功能,所以通常这种版本仅有内核开发工程师会使用。 如果有新增的内核程序代码,会加到这种版本当中,等到众多工程师测试没问题后,才加入下一版的稳定内核中;
-
主、次版本为偶数:稳定版本(stable)
如 2.6.xx,等到内核功能发展成熟后会加到这类的版本中,主要用在一般家用计算机以及企业版本中。 重点在于提供使用者一个相对稳定的 Linux 作业环境平台。
至于发布版本则是在主、次版本架构不变的情况下,新增的功能累积到一定的程度后所新发布的内核版本。 而由于 Linux 内核是使用 GPL 的授权,因此大家都能够进行内核程序码的修改。因此,如果你有针对某个版本的内核修改过部分的程序码, 那么那个被修改过的新的内核版本就可以加上所谓的修改版本了。
-
-
主线版本、长期维护版本(longterm version)
不过,这种奇数、偶数的编号格式在 3.0 推出之后就失效了。从 3.0 版开始,内核主要依据主线版本 (MainLine) 来开发,开发完毕后会往下一个主线版本进行。 例如 3.10 就是在 3.9 的架构下继续开发出来的新的主线版本。通常新一版的主线版本大约在 2~3 个月会被提出,之所以会有新的主线版本,是因为有加入新功能之故。现在 (2016/08) 最新的主线版本已经是 4.7 版了。
而旧的版本在新的主线版本出现之后,会有两种机制来处理,一种机制为结束开发 (End of Live, EOL),亦即该程序码已经结束,不会有继续维护的状态。 另外一种机制为保持该版本的持续维护,亦即为长期维护版本 (Longterm)。例如 3.10 即为一个长期维护版本,这个版本的程序码会被持续维护,若程序码有 bug 或其他问题, 内核维护者会持续进行程序码的更新维护。
所以,如果你想要使用 Linux 内核来开发你的系统,那么当然要选择长期支持的版本才行。要判断你的 Linux 内核是否为长期支持的版本, 可以使用“ uname -r ” 来查阅内核版本,然后对照下列链接来了解其对应值。
-
Linux 内核版本与 Linux 发布商版本
Linux 内核版本与发行版(distribution)的版本并不相同,很多朋友常常上网问到:“我的 Linux 是 7.x 版,请问…”之类的留言, 这是不对的提问方式,因为所谓的 Linux 版本指的应该是内核版本, 而目前最新的内核版本应该是 4.7.2(2016/08) 才对,并不会有 7.x 的版本出现的。
你常用的 Linux 系统则应该说明为发行版。因此,如果以 CentOS 这个发行版来说, 你应该说:“我用的 Linux 是 CentOS 这个发行版,版本为 7.x ,请问…”才对。
1.2.6 Linux 发行版
各大 Linux 发行版的主要异同:支持标准
不过,由于发展 Linux 发行版的社群与公司实在太多了,例如有名的 Red Hat, SuSE, Ubuntu, Fedora, Debian 等等,所以很多人都很担心,如此一来每个发行版是否都不相同呢? 这就不需要担心了,因为每个 Linux 发行版使用的内核都是由 http://www.kernel.org 网站所发布,而他们所选择的软件,几乎都是目前很知名的软件,重复性相当的高, 例如网页服务器的 Apache,电子邮件服务器的 Postfix/sendmail,文件服务器的 Samba 等等。
此外,为了让所有的Linux 发行版开发不致于差异太大,且让这些开发商在开发的时候有所依据,还有 Linux Standard Base (LSB)等标准来规范开发者,以及目录架构的 File system Hierarchy Standard(FHS)标准规范。唯一差别的,可能就是该开发者自家所开发出来的管理工具,以及套件管理的模式。 所以说,基本上,每个 Linux 发行版除了架构的严谨度与选择的套件内容外, 其实差异并不太大。大家可以选择自己喜好的发行版来安装即可。
事实上鸟哥认为发行版主要分为两大系统,一种是使用 RPM 方式安装软件的系统,包括 Red Hat, Fedora, SuSE 等都是这类; 一种则是使用 Debian 的 dpkg 方式安装软件的系统,包括 Debian, Ubuntu, B2D 等等。若是加上商业公司或社群单位的分类,那么我们可以简单的用下表来做个说明。
RPM 软件管理 | DPKG 软件管理 | 其他未分类 | |
---|---|---|---|
商业公司 | RHEL(Red Hat 公司)、SuSE(Micro Focus) | Ubuntu(Canonical Ltd.) | |
社群单位 | Fedora、CentOS、OpenSuSE | Debian、B2D | Gentoo |
下面列出几个主要的 Linux 发行版官网:
- 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.4.1 从头学习 Linux 基础
所以,鸟哥希望大家能够更了解 Linux,好让他可以为你做更多的事情,而且这些基础知识是学习更深入的技巧的必备条件,因此建议:
-
计算机概论与硬件相关知识:
因为既然想要走 Linux 这门路,信息技术相关的基础技能也不能没有,所以先理解一下基础的硬件知识,不用一定要全懂。又不是真的要你去组计算机,但是至少要“听过、有概念”即可;
-
先从 Linux 的安装与指令学起:
没有 Linux 怎么学习 Linux 呢?所以好好的安装起一套你需要的 Linux 吧!虽然说 Linux 发行版很多,不过基本上架构都是大同小异的,差别在于接口的友好度与软件的选择不同罢了。选择一套你喜欢的就好了,倒是没有哪一套特别好一说。
-
Linux 操作系统的基础技能:
这些包含了“用户、用户组的概念”、“权限的观念”,“程序的定义”等等,尤其是权限的概念, 由于不同的权限设置会妨碍你的使用者的便利性,但是太过于便利又会导致入侵的可能,所以这里需要了解一下你的系统。
-
务必学会 vi 文本编辑器:
Linux 的文本编辑器多到会让你数到生气,不过,vi 却是强烈建议要先学习的,这是因为 vi 会被很多软件所调用,加上所有的 UNIX-like 系统上面都有 vi,所以你一定要学会才好。
-
Shell 与 Shell 脚本的学习:
其实鸟哥上面一直谈到的“命令行模式”说穿了就是一个名为 Shell 的软件。既然要玩命令行模式,当然就是要会使用 Shell 的意思。 但是 Shell 上面的知识太多了,包括“正则表达式”、“管道命令”与“数据流重定向”等等,真的需要了解比较好。 此外,为了帮助你未来的管理服务器的便利性,Shell 脚本也是挺重要的,要学!
-
一定要会软件管理:
因为玩 Linux 常常会面临得要自己安装驱动程序或者是安装额外软件的时候,尤其是嵌入式设备或者是学术研究单位等。 这个时候了解 Tarball、RPM、DPKG、YUM、APT 等软件管理员的安装方式,对你来说就非常重要。
-
网络基础的建立:
如果上面你都通过了,那么网络的基础就是下一阶段要接触的东西,这部份包含了“IP概念”、“路由概念”等。
-
如果连网络基础都通过了,那么网站的搭建对你来说,简直就是“太简单啦!”
在一些基础知识上,可能的话当然得去书店找书来读。 如果您想要由网络上面阅读的话,那么这里推荐一下由 Netman 大哥评论员的 Study-Area 里面的基础文章,相当的实用。