当前位置: 首页 > news >正文

1.Linux是什么与如何学习

第 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 发行版除了架构的严谨度与选择的套件内容外, 其实差异并不太大。大家可以选择自己喜好的发行版来安装即可。

  • FHS: http://www.pathname.com/fhs/
  • LSB: http://www.linuxbase.org/

事实上鸟哥认为发行版主要分为两大系统,一种是使用 RPM 方式安装软件的系统,包括 Red Hat, Fedora, SuSE 等都是这类; 一种则是使用 Debian 的 dpkg 方式安装软件的系统,包括 Debian, Ubuntu, B2D 等等。若是加上商业公司或社群单位的分类,那么我们可以简单的用下表来做个说明。

RPM 软件管理DPKG 软件管理其他未分类
商业公司RHEL(Red Hat 公司)、SuSE(Micro Focus)Ubuntu(Canonical Ltd.)
社群单位Fedora、CentOS、OpenSuSEDebian、B2DGentoo

下面列出几个主要的 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,好让他可以为你做更多的事情,而且这些基础知识是学习更深入的技巧的必备条件,因此建议:

  1. 计算机概论与硬件相关知识

    因为既然想要走 Linux 这门路,信息技术相关的基础技能也不能没有,所以先理解一下基础的硬件知识,不用一定要全懂。又不是真的要你去组计算机,但是至少要“听过、有概念”即可;

  2. 先从 Linux 的安装与指令学起

    没有 Linux 怎么学习 Linux 呢?所以好好的安装起一套你需要的 Linux 吧!虽然说 Linux 发行版很多,不过基本上架构都是大同小异的,差别在于接口的友好度与软件的选择不同罢了。选择一套你喜欢的就好了,倒是没有哪一套特别好一说。

  3. Linux 操作系统的基础技能

    这些包含了“用户、用户组的概念”、“权限的观念”,“程序的定义”等等,尤其是权限的概念, 由于不同的权限设置会妨碍你的使用者的便利性,但是太过于便利又会导致入侵的可能,所以这里需要了解一下你的系统。

  4. 务必学会 vi 文本编辑器

    Linux 的文本编辑器多到会让你数到生气,不过,vi 却是强烈建议要先学习的,这是因为 vi 会被很多软件所调用,加上所有的 UNIX-like 系统上面都有 vi,所以你一定要学会才好。

  5. Shell 与 Shell 脚本的学习

    其实鸟哥上面一直谈到的“命令行模式”说穿了就是一个名为 Shell 的软件。既然要玩命令行模式,当然就是要会使用 Shell 的意思。 但是 Shell 上面的知识太多了,包括“正则表达式”、“管道命令”与“数据流重定向”等等,真的需要了解比较好。 此外,为了帮助你未来的管理服务器的便利性,Shell 脚本也是挺重要的,要学!

  6. 一定要会软件管理

    因为玩 Linux 常常会面临得要自己安装驱动程序或者是安装额外软件的时候,尤其是嵌入式设备或者是学术研究单位等。 这个时候了解 Tarball、RPM、DPKG、YUM、APT 等软件管理员的安装方式,对你来说就非常重要。

  7. 网络基础的建立

    如果上面你都通过了,那么网络的基础就是下一阶段要接触的东西,这部份包含了“IP概念”、“路由概念”等。

  8. 如果连网络基础都通过了,那么网站的搭建对你来说,简直就是“太简单啦!”

在一些基础知识上,可能的话当然得去书店找书来读。 如果您想要由网络上面阅读的话,那么这里推荐一下由 Netman 大哥评论员的 Study-Area 里面的基础文章,相当的实用。

  • 计算机基础(http://www.study-area.org/compu/compu.htm)
  • 网络基础(http://www.study-area.org/network/network.htm)

相关文章:

  • 智能优化算法应用:基于人工兔算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 【三维目标检测】【自动驾驶】IA-BEV:基于结构先验和自增强学习的实例感知三维目标检测(AAAI 2024)
  • R语言使用scitb包10分钟快速绘制论文基线表
  • AndroidStudio无法新建aidl文件解决办法
  • 单例模式(C++实现)
  • C/C++常见面试题(四)
  • C/C++图形化编程(1)
  • Spring Boot国际化i18n配置指南
  • 华清远见嵌入式学习——ARM——作业3
  • 16.Redis 高级数据类型 + 网站数据统计
  • 关于“Python”的核心知识点整理大全34
  • 交通流预测 | Matlab基于KNN-BiLSTM的交通流预测(对比SVR、LSTM、GRU、KNN-LSTM)
  • 什么时候用多线程、为什么要设计多线程?
  • JVM高频面试题(2023最新版)
  • rocky linux9 安装go 即接下去
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • CSS盒模型深入
  • isset在php5.6-和php7.0+的一些差异
  • JAVA 学习IO流
  • laravel 用artisan创建自己的模板
  • leetcode讲解--894. All Possible Full Binary Trees
  • mongo索引构建
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 第2章 网络文档
  • 后端_MYSQL
  • 问题之ssh中Host key verification failed的解决
  • 用jquery写贪吃蛇
  • mysql面试题分组并合并列
  • #《AI中文版》V3 第 1 章 概述
  • #stm32整理(一)flash读写
  • $(function(){})与(function($){....})(jQuery)的区别
  • (03)光刻——半导体电路的绘制
  • (搬运以学习)flask 上下文的实现
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (力扣)1314.矩阵区域和
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转)人的集合论——移山之道
  • .libPaths()设置包加载目录
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET处理HTTP请求
  • .net快速开发框架源码分享
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @EnableAsync和@Async开始异步任务支持
  • [1]-基于图搜索的路径规划基础
  • [100天算法】-x 的平方根(day 61)
  • [C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改
  • [C# 网络编程系列]专题六:UDP编程
  • [C++]指针与结构体