树莓派开始,玩转Linux12:Linux真身

我们经常用"Linux"来指代整个Linux操作系统。但对于不同人来说,"Linux"指代的含义又有所区别。说到托瓦兹写了Linux系统,意思是说他写了Linux的内核。而说到安装Linux系统,大多数时候是指安装了Linux的一个厂商版本。首先来区分描述Linux的几个关键名词:内核、GNU和厂商版本。

1.什么是内核:

Linux系统有狭义和广义两种定义。
狭义来说,Linux实际上指Linux内核(kernel)。
广义来说,Linux是指以内核为基础的,包括了各种应用软件在内的Linux发行版(Distribution)。如果不加区分地说Linux系统,就很容易造成混淆。
Linux系统可以简单地区分为内核程序和应用程序两个部分。

内核程序在Linux启动后就一直运行着。这个程序有权调配所有的计算机资源:运算资源、存储资源、接口资源等。内核会根据应用程序的需求,提供实现应用程序所需的资源。从这个角度看,内核就好像服侍应用程序的"大内总管"。当然,内核也不是一味迎合,它还有一套调配资源的规则。如应用程序提出无理需求,那么内核也会毫不犹豫地拒绝。托瓦兹编写的Linux系统,实际上只有Linux内核。他所开源的,也正是Linux内核的代码。

内核程序之外的就是应用程序。应用程序只有在内核启动后才会运行。大多数的应用程序必须经用户调用才可以启动。当然,用户不一定要手动调用。就拿开机时来说,内核启动后会运行一个初始化脚本,调用常用的应用程序,比如bash或图形化桌面。每个应用程序都能实现某用户需要的功能,比如作为网络浏览器的Firefox、作为邮件客户端的Thunderbird、作为多媒体播放器的VLC。一个运行中的Linux系统,往往同时运行着多个应用程序。内核管理着这些应用程序。内核会给每个应用程序独立的内存空间和运算时间,从而让应用程序可以同时运行。不同的应用程序有不同的权限,以便调用不同级别的内核功能。当多个应用程序调用同一个硬件设备,如打印机时,内核必须决定其优先级,以免出现多个应用程序同时打印在一张纸上的混乱情况。无论如何,没有任何应用程序可以像内核一样全面掌控计算机资源。

内核程序和应用程序的区分并非Linux独有的,大多数现代的操作系统都会有此结构。当然,我们也可以制作一个操作系统,允许应用程序直接调用计算机资源。这样还可以省去运行内核程序的开销,应用程序甚至可以达到更高的运行效率。很多功能简单的嵌入式系统,如智能手环等硬件设备,就是这么做的。
但在一个多用户多应用程序的复杂系统中,内核的缺失会带来很多问题。一个应用程序对计算机资源的调用很可能影响到其他的程序。缺了内核的中心调度,程序之间会相互干扰,整个系统混乱不堪。内核与应用程序的关系,如图1所示。

从软件开发的角度看,如果每个应用程序都要直接操纵底层硬件,那么编写应用程序的程序员就必须熟知硬件知识,这将大大增加程序开发的难度。要知道,即使是鼠标这样简单的外设,其编程也需要多位高级程序员的通力合作。而像CPU、内存这样复杂的硬件,相关文档的工作量更是惊人。光是一个处理器的规格书,就有数百页。
内核以上千万行代码为代价,提供了一套接口。
应用程序的开发人员只要熟知这一套接口,就能轻松地开始程序开发。以Linux为例,它提供的接口可以总结为300多个函数接口,其中常用的只有几十个。只要掌握了这一套接口,应用程序的程序员就足以发挥内核那千万行代码才能实现的功能。
此外,Linux的接口是按照POSIX(Portable Operating SystemInterface)标准制作的。由于其他UNIX系统同样遵从POSIX标准,所以Linux可以很容易地和其他UNIX系统互通。为Linux系统编写的应用程序,只要简单修改,就可以应用到其他的UNIX系统,比如Solaris、FreeBSD和基于FreeBSD的苹果公司的Mac OS。这样的通用性受益于内核程序和应用程序的分离。
因此,内核不但可以合理调配计算机资源,还简化了应用程序的开发

3.什么是GNU软件:

Linux程序的最初流行,与一套名为GNU的应用软件密不可分。如果说Linux是开源运动的明星,那么GNU算得上是开源运动的鼻祖。早在1983年,GNU项目就已经诞生。GNU是"GNU’s Not UNIX"的缩写。
这个名称是对传统商用UNIX系统的宣战。GNU项目旨在创造一套自由免费的UNIX系统。GNU标志如图所示。


按照创始人理查德·斯托曼(Richard Stallman)的计划,GNU系统应该包括内核和应用程序。当托瓦兹写出Linux内核时,GNU已经孵化了很多好用的开源应用程序,并且已经在多个UNIX平台上得到广泛使用。这些应用程序包括了C语言编译器gcc、作为Shell的bash、文本编辑器nano等。因为这些应用程序都是按照UNIX接口编写的,所以很容易移植到Linux系统上。因此,托瓦兹在发布Linux内核时,也在Linux环境下编译了GNU的应用软件,来提高Linux系统的可用性。在绝大多数Linux系统上,GNU软件都成了一个必不可少的组成部分。
另一方面,Linux内核的迅速流行,也让GNU放弃了自己的内核开发计划。不过,尽管Linux内核和GNU关系密切,但两者并没有真正合为一体。
因为主导内核开发的Linux基金会,和主导GNU开发的自由软件基金会,是两个独立的组织。Linux内核和GNU对开源软件的态度,也有不小的差异。不少GNU阵营的程序员认为,GNU软件对Linux贡献巨大,因此Linux应改名为GNU/Linux。但托瓦兹认为,内核程序和GNU应用程序是两个不同层面上的独立产物,没有必要混为一谈。
但这种闹哄哄的吵嚷并不影响Linux内核和GNU程序在用户那里实质性的共存。
这也正是开源运动的魅力所在。尽管整个开源运动分裂为数不清的软件项目,
但用户总可以根据自己的需要来组合使用。

3.Linux的发行版本:

即使有了内核和GNU软件,Linux的安装和编译并不是简单的工作此外,对于商用的Linux来说,后期维护也让人头疼。所谓的厂商就是一些Linux服务商。
他们提供Linux运行所需的额外服务,从而让客户可以更容易地使用Linux系统。
Linux操作系统在很多专业领域应用广泛,这些厂商基于其提供的服务可以赚取丰厚的利润。
Linux厂商一般都提供咨询和维护服务。
咨询服务可以帮你分析Linux是否适合你的业务和应用,以及如何更好地在你的工作流程中使
用Linux。
维护服务则包括了安装、故障排查、升级等,从而让Linux系统可以长期稳定运行。为了便于服务这些厂商会在Linux内核和GNU的基础上,开发自己的软件并调整配置,以便更好地进行客户支持。
最终,厂商会把软件和配置整合在一起,形成发行版。
大部分用户使用的都是厂商提供的发行版。这些发行版极大地提高了系统的易用性。
Linux服务市场有不少大玩家。
红帽早已是上市公司。IBM是Linux设备最大的供应商,同时它的咨询业务很大一部分也来源于提供Linux相关的支持。
我们所熟知的Android操作系统是Google提供的一个发行版。
树莓派的Raspbian,也是由树莓派官方提供的一个发行版。

这里主要介绍在PC上比较流行的Linux发行版。首先是三大家族。
1.红帽家族
红帽公司自20世纪90年代创立以来一直是最重要的Linux厂商之一。1999年,红帽公司上市,成为Linux的著名商业案例。直到今天,红帽依然是Linux厂商中规模最大的一家。
· Red Hat Linux:大名鼎鼎的红帽Linux,现在已经完结,其后的几个Linux版本都以此为基础。
· Red Hat Enterprise:企业级的红帽Linux,主要面向服务器。作为商业版,它有比较好的配套软件和技术支持。它的教材也堪称经典。
· Fedora:由社区维护,去除了一些商业软件。红帽实际上赞助了这个项目,以便以此作为技术测试平台。
· CentOS:这个版本虽然不来自红帽公司,但它由红帽公司公开的源码组成。CentOS是免费版本,由社区维护,和红帽完全兼容。
CentOS版本升级较慢,所以适合不愿意频繁升级的情况。因此,
CentOS在多用户服务器上应用较广。

2.SUSE家族
SUSE由德国公司SUSE Linux推出。由于最初服务于德国市场,所以SUSE在欧洲比较流行。SUSE系列比较有特色的是YaST2软件。YaST2有图形化界面,主要用于设置和管理SUSE系统,对初级的Linux用户来说比较方便。
· SUSE Linux Enterprise:商业版本,和红帽商业版类似。
· openSUSE:SUSE的免费版本。以前SUSE不是很重视这个免费版本,支持不好。现在SUSE官方对该版本的态度大大转变,支持力度增加了很多。但就笔者个人的使用体验来说,还是觉得社区支持不足。
3.Debian家族
Debian是最早的Linux发行版本之一。这个家族的Linux版本都以社区维护为基础,具有非盈利的倾向。其中的Ubuntu等已经开始了一些商业尝试,但并没有因此影响到免费用户的体验。
· Debian:完全免费,社区维护的Linux版本,有很大的用户群,所以遇到问题,基本都可以找到社区用户的支持。
· Ubuntu:由一个基金提供支持的免费Linux版本。它继承自Debian,界面友好。对于初次在PC上安装Linux的用户来说,这是最适于安装的版本。
· Mint:基于Ubuntu。它提供了更加丰富的预装应用,以减少用户搜索并安装应用的麻烦。其使用的应用版本比较新,可能不是很稳定。
· Raspbian:和Ubuntu一样,Raspbian继承自Debian。它是由树莓派官方推出的发行版,对树莓派有很好的支持。
除了上面提到的三大家族外,Linux还有如下版本。
· Gentoo:基于源码的版本,给用户很大的自由度。为用户提供大量应用程序的源码,可以在用户的系统上重新编译建造,需要一定的系统配置知识。
· ArchLinux:推崇简洁,避免不必要和复杂的修改,是一个轻便灵活的版本,其配置文件有良好的注释。
· Mandriva:一个很方便用户使用的版本,其目标是使新用户更容易使用Linux。
· Slackware:它的特点是稳定。它只包含稳定版本的应用程序,对于初级用户不是很友好。
· TurboLinux:在亚洲比较流行。它是商业版本,提供技术支持和咨询服务。
Linux发行版本数目众多,这里介绍的只是市面上常见的版本。如果想了解更多,可以在DistroWatch网上查询。该网站不但提供了各个发行版的介绍,还会发布它们的最新消息。
本章区分了Linux经常与混用的几个名词:内核、GNU和发行版本。尽管人们有时不加区分地把它们统称为Linux,但这三者的含义差别很大。了解了三者的区别,才能听明白别人说的是哪一个Linux。

树莓派开始,玩转Linux12:Linux真身相关推荐

  1. 刚闪电入门了树莓派:斩获不止Python,Linux,goLang,还有架构,格局...

    刚闪电入门了树莓派:斩获不止Python,Linux,goLang,还有架构,格局... 引子 如何以闪电的速度入门树莓派 获得了一个自己可掌控的Python程序 goLang说,我是来打酱油的! 我 ...

  2. 《树莓派学习指南(基于Linux)》——第 2 章 开始探索 2.1 欢迎使用LXDE

    本节书摘来自异步社区<树莓派学习指南(基于Linux)>一书中的第2章,第2.1节,作者[英]Peter Membrey ,[澳]David Hows ,译者 张志博,孙峻文,更多章节内容 ...

  3. 树莓派4直接运行linux,树莓派4最小化安装Linux

    树莓派4最小化安装Linux toc 1.本文目的 Raspberry Pi 4 Model B发布了半年了,其强大的性能与低廉的价格使得其非常的热门. 下面来看一下主要的功能 1.5GHz 4核心6 ...

  4. 《树莓派学习指南(基于Linux)》——1.4 将Raspbian烧录到SD卡

    本节书摘来异步社区<树莓派学习指南(基于Linux)>一书中的第1章,第1.4节,作者:[英]Peter Membrey ,[澳]David Hows ,更多章节内容可以访问云栖社区&qu ...

  5. 树莓派4B Raspbian系统常用Linux 命令及快捷键

    2021SC@SDUSC 命令在哪里输入? 通过 SSH 客户端登录你的树莓派,或者进入树莓派的桌面运行终端程序,接下来就可以输入命令了. 什么是 sudo 命令? 在一行命令之前加上 sudo,表示 ...

  6. 玩客云 Linux系统emmc直刷恢复

    玩客云 Linux系统emmc直刷恢复 关键词:玩客云 网心云 N1 S805 S905 晶晨 更新于2022年3月10日晚11:47 转载请注明出处,谢谢! 代号:Lightsummer Q:328 ...

  7. 【树莓派】搭建LAMP(Linux Apache Mysql PHP)服务器

    基于树莓派搭建LAMP(Linux Apache Mysql PHP)服务器 配置树莓派 树莓派 连接WIFI 配置SSH 连接SSH 修改密码并解锁root用户 固定IP 调整服务器性能 Apach ...

  8. 树莓派开始玩转linux pdf_用树莓派构建 Kubernetes 集群 | Linux 中国

    将 Kubernetes 安装在多个树莓派上,实现自己的"家庭私有云"容器服务. • 来源:linux.cn • 作者:Chris Collins • 译者:Xingyu.Wang ...

  9. 树莓派可以玩linux游戏吗,如何在树莓派上玩经典PC游戏

    Raspberry Pi提供了令人难以置信的游戏和其他软件库.您可能知道它为模拟其他平台奠定了良好的基础,但是您知道它可以运行复古的PC软件吗? 在Windows之前,就有MS-DOS.可以通过几种不 ...

最新文章

  1. 如何配置FastReport.Net环境
  2. threadlocal使用场景_深入剖析ThreadLocal
  3. 用局部条件图集建模三维曲面流形
  4. 【转】Spring 4.x实现Restful web service
  5. Spring的事务管理1
  6. 国内外NLP领域学术界和工业界的牛人和团队
  7. spring mvc 实现单文件 || 多文件上传
  8. “稳拿高薪”三个专业?实际市场竞争压力大,就业困难!
  9. sharepoint项目部署
  10. 企业为什么要上智能仓储系统?
  11. 七层网络协议详细解释
  12. 一、Scrapy爬虫概述
  13. 极客时间和极客学院_极客需要告诉我们的父母有关安全可靠地在线购物的信息
  14. 13、Nepxion Discovery 之 全链路调用链监控
  15. 昆石网络 VOS3000虚拟运营支撑系统任意文件读取漏洞
  16. vue的侦听器,过滤器和过度动画的了解
  17. 【Spring】Spring MVC原理及配置详解
  18. springboot毕设项目高校体育器材管理信息系统5us4g(java+VUE+Mybatis+Maven+Mysql)
  19. Pytorch的自定义拓展:torch.nn.Module和torch.autograd.Function
  20. 【leetcode题解——动态规划之完全背包】518.零钱兑换II(python版本详解+表格+dp五部曲)

热门文章

  1. CSDN社区专家库Beta版发布 打造“社区+人才”全新网络招聘模式
  2. 说说心情短语_开心心情短语日志
  3. 设计模式的艺术 行为型模式之备忘录模式
  4. 从程序与数据库的角度看魔兽世界
  5. java计算机毕业设计健身房信息管理系统MyBatis+系统+LW文档+源码+调试部署
  6. 作为rate-based的TCP BBR
  7. Linux 设置欢迎语
  8. 从输入 url 开始能做哪些优化
  9. 《快速掌握PyQt5》第三十一章 绘图与打印
  10. 树莓派 + openwrt + dogcom = 网络自由(哆点校园网免登陆)