linux-27 发行版以及跟内核的关系

    列出你所了解的linux发行版,并说明其跟Linux内核的关系。发行版和内核是什么关系?linux本身指的仅仅是一个操作系统的内核本身,而一个操作系统的组成是什么?内核、库、各种应用程序,shell是应用程序的其中之一,我们的linux仅提供了内核,那库和上层的其他应用程序是由谁来提供的?早期绝大多数都由我们的GNU组织来提供,那因此站在这个意义上来讲,一个完整意义上的linux是由GNU的各种软件和Linux内核一起组成的,叫做GNU linux,一定要记得这一点,但是无论是内核也好,是各种应用程序也好,是库也好,他们都以原代码的形式向我们提供,
凡是写过程序的同学都应该知道,源代码必须要经过编译以后才能运行,一个完整的过程可能通常包括编译、链接、运行,它实际上背后的处理过程是非常复杂的。那因此,对于绝大多数的用户来讲,他们可能没有本事,也没有能力去完成,自己去编译这些软件,而且让它组合起来去运行的。
所以就有了一些厂商或者一些组织专门负责去以一种统一的、通用的方式将这些源代码编译出来,而且给他们提供一个能够安装的光盘,那像这种,我们把它称叫发行版。

    当然,这里光盘只是一种说法,或者我们能够直接安装的一种载体,这就叫发行版。所以像redhat,它把内核编译一下,把各种软件编译一下,并加进去自己所用到的一些logo,而且更重要的是它还会提供一个程序,这个程序运行在光盘上,叫做安装程序,所以在它安装程序一步一步的引导下,我们就可以把系统装上去了,那同样的,还有其他组织也能干这事,将来我们自己也可以做,这也没什么困难的地方,像suse、debian,这是三大目前最主流的发行版。基于redhat还有很多二次发行版,比方说叫centos,fedora不是二次发行版,fedora是为redhat提供实验环境的,它主要用于桌面,而现在的redhat主要指的是的企业版,每一种不同的版本,它的着眼点不同,桌面版主要用于提高用户体验的,会把界面做的非常华丽,像现在无论是ubuntu还是fedora,它的3d桌面做的非常漂亮,而且各种桌面效果做的很炫,其实比Windows好看的多,当然,这前提是你的显卡驱动得正确安装才行。在这些企业版里头,其实界面最好看的当属suse,而且在欧洲那边的占有率应该是非常高的,所以将来我们要去一些大企业工作的话,比如像华为这些公司,因为他们的很多业务是遍布海外的,因此,咱们到欧洲的项目很可能就要用suse,到北美的项目用的可能是redhat,到南非那边用的很可能就是ubuntu了,也各不相同,但不管怎么讲,这些都是linux而已。
好基于suse的发行版不是特别的多,但是有个openSuse要知道,基于debian的呢?那就是我们ubuntu,是最著名的了,但是还有很多其他的,甚至基于ubuntu的还有个二次发行版,我们叫做mint,这个做的界面更漂亮,在这里做一下简单的拓展,其实无论是哪一种发行版,这个厂商如果在这里边动的手脚过多的话,都会导致这个软件在安装的时候有许许多多,我们压根就用不着的东西,它必须得装进去,使得整个系统变得非常的臃肿,比方说,像redhat的系统,像suse的系统都是这样的现状,所以在这三大主流发行版当中,当以debian这种最为最难用一点,但是做出的限制也最少,所以我们说过,高手一般用的是debain系统,但不是ubuntu,我指的就是原生的debian系统。尽管如此,这三种发行版提供给我们可以直接使用的,都是编译好的二进制程序,编译指的是什么?把源代码转换成可以在你的CPU上执行的二进制的过程,对不对?同样的道理,那来想象一下,如果张同一个应用程序,假如说是同一个使用c开发的应用程序,Tom拿着在一个AMD的CPU上进行编译,32位,而jerry拿着在一个酷睿双核的64位的CPU上进行编译,请问编译出来这两个程序的运行机制会不会相同?那因此各位应该明白,编译是干什么用的,将原程序转换成你对应平台可以执行的二进制格式的,所以它跟你的硬件是密切相关的。
    那因此,比如说我们提到过,或者官方提供给我们的,是已经编译好的二进制格式的操作系统,
我们所谓安装的过程就是把这个二进制程序给它展开到当前我们的磁盘就行了,给它按照我们指定的格式放到硬盘上就行,那所以它已经是编译好的,只不过他们所编译好的是用通用的风格编译好的,或者叫通用格式编译好的,这意味着,为了能够让我们的这个redhat在32位的平台上能运行,
它通常会把在一个比较古老的CPU上,比方说五年之前的32位的英特尔或者AMD的CPU上进行编译,编译完以后,在大多数主流的32位平台是不是都能跑起来?因为我们的CPU是向后兼容老的版本的,同样道理,我们拿着一个32位的版本编译好的版本去装到64位的CPU上能不能装?可以,64位是能兼容32位的?反过来行不行?不行,我们编译好的,只能在64位运行,你拿来在32位上跑是绝对不可以的。所以我们将来去下载一个版本的时候,一定要记清楚,要先看你的硬件平台版本和对方所编译好的那个所支持的平台的版本,所以不是说我随便下一个就能拿来直接装的,一定要记得这一点。就像我们的Windows,现在也有32位,64位,对不对?道理是一样的。我们为了能够保证它的通用格式,就在一个所谓的叫奔腾的cpu上进行编译,很古老的CPU,那现在我们酷睿的或者amd的各种平台是不是都能跑啊?但是酷睿这个CPU如果具有了一些新的特性,并且能够加速程序执行的话,请问我们编好这个程序能不能利用这种新特性?不能,因为编译器在编译的时候压根就不知道这个CPU的这种新特性对不对?虽然我能运行,但并不能很好的发挥这个CPU的特性,能理解了吗?因此,我们使用别人编译好的二进制的坏处就在这里了。别人编译好,我们不用再编译,所以安装部署起来都非常方便,但是它却无法很好的符合你的平台的需要,或者能够最好最大化的发挥你的系统硬件的性能。那说到这,我们要想能够让它最大化发挥起来该怎么办?就在那个平台上编译好以后,就让它在那个平台上运行,是不是这样子?而且编译的时候,我们指定很多的优化参数,针对这个平台做特定优化,而有些发行版就提供给我们的这种机制,比方说叫gentoo,这个系统非常独特安装的时候它提供给我的有安装程序,但是安装过程当中几乎很多的软件你都得自己手动编译,编译是很需要时间的,比方说我编译一个内核,很可能根据你的系统性能不同,20分钟,和你选择的内容不同,到两个小时都有可能,所以装一个系统下来,可能一天时间就过去了,但不管怎么讲,它给了我们编译的可能性,尽管如此,gentoo仍然属于一个发行版,所以这种发行对于菜鸟来讲更是玩不转的,但是对大家来讲,我们学到后面的时候,
大家一定要手动去操作一下gentoo。

    不但要求具有gentoo的能力,还有另外一个更让人抓狂的,叫做LFS,LFS的全称叫做linux from scratch,什么意思呢?scratch指的叫起跑线,那说白了,就是我们从零开始,从起跑线开始去构建一个linux,那所以站在这个角度来讲,LFS从严格意义上来讲,它不是一个发行版,它是一本书。如果要构建一个linux,应该到哪儿去下载内核,怎么去编译它,到哪去下载一个软件,怎么去编译它,而且编译出来以后,一凑一拼凑,一个完整意义上的linux形成了,所以他甚至连软件都没有提供给我们,完全让我们自己去网上下载各种软件的源代码,自己找一个宿主机,就是找一个已经装好的系统去编译linux,编译各种软件,最终把它拼凑在我们的目标主机上,而且能够启动并运行起来的。这就是我们的LFS,当然在我们的课程进行到一半的时候,就要求必须要做出LFS,
从安装开始到结束,一般来讲,最快,第一遍也需要两天的时间,但不管怎么讲,我们是需要能够独立完成的。甚至有些公司可能还要求你玩这套,只不过,目前来讲,市面上能够玩转LFS的人还真不太多,所以各位要做好心理准备。当然了,如果LFS我们都能做了的话,其实linux到底是什么?就已经可以完全掌握了。linux以后可以成为你手中的面条,怎么捏它就怎么变?我们学习任何一个知识都必须要奔着这样的目标去,也就奔着这样的高度去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/950281.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一、二极管(应用篇)

1.5普通二极管应用 1.5.1钳位电路 利用二极管的固定的导通电压,在二极管处并联用电器,达到用电器的工作电压相对稳定。如果电源处有尖峰电压,则可以通过二极管导入到5v的电源内,防止此尖峰电压干扰用电器 ,起到对电路的…

Android Studio 安装配置(个人笔记)

Android studio安装的前提是必须保证安装了jdk1.8版本以上 一、查看是否安装jdk cmd打开命令行,输入java -version 最后是一个关键点 输入 javac ,看看有没有相关信息 没有就下载jdk Android studio安装的前提是必须保证安装了jdk1.8版本以上 可以到…

unity学习14:unity里的C#脚本的几个基本生命周期方法, 脚本次序order等

目录 1 初始的C# 脚本 1.1 初始的C# 脚本 1.2 创建时2个默认的方法 2 常用的几个生命周期方法 2.1 脚本的生命周期 2.1.1 其中FixedUpdate 方法 的时间间隔,是在这设置的 2.2 c#的基本语法别搞混 2.2.1 基本的语法 2.2.2 内置的方法名,要求更严…

node.js|浏览器插件|Open-Multiple-URLs的部署和使用,实现一键打开多个URL的强大工具

前言: 在整理各类资源的时候,可能会面临资源非常多的情况,这个时候我们就需要一款能够一键打开多个URL的浏览器插件了 说简单点,其实,迅雷就是这样的,但是迅雷是基于内置nginx浏览器实现的,并…

HTML 显示器纯色亮点检测工具

HTML 显示器纯色亮点检测工具 相关资源文件已经打包成html等文件,可双击直接运行程序,且文章末尾已附上相关源码,以供大家学习交流,博主主页还有更多Html相关程序案例,秉着开源精神的想法,望大家喜欢&#…

dbeaver导入导出数据库(sql文件形式)

目录 前言dbeaver导出数据库dbeaver导入数据库 前言 有时候我们需要复制一份数据库,可以使用dbeaver简单操作! dbeaver导出数据库 选中数据库右键->工具->转储数据库 dbeaver导入数据库 选中数据库右键->工具->执行脚本 mysql 默…

接口测试-postman(使用postman测试接口笔记)

一、设置全局变量 1. 点击右上角设置按钮-》打开管理环境窗口-》选择”全局“-》设置变量名称,初始值和当前值设置一样的,放host放拼接的url,key放鉴权那一串字符,然后保存-》去使用全局变量,用{{变量名称}}形式 二、…

enzymejest TDD与BDD开发实战

一、前端自动化测试需要测什么 1. 函数的执行逻辑,对于给定的输入,输出是否符合预期。 2. 用户行为的响应逻辑。 - 对于单元测试而言,测试粒度较细,需要测试内部状态的变更与相应函数是否成功被调用。 - 对于集成测试而言&a…

Flutter项目开发模版,开箱即用(Plus版本)

前言 当前案例 Flutter SDK版本:3.22.2 本文,是由这两篇文章 结合产出,所以非常建议大家,先看完这两篇: Flutter项目开发模版: 主要内容:MVVM设计模式及内存泄漏处理,涉及Model、…

Spring Boot - 日志功能深度解析与实践指南

文章目录 概述1. Spring Boot 日志功能概述2. 默认日志框架:LogbackLogback 的核心组件Logback 的配置文件 3. 日志级别及其配置配置日志级别3.1 配置文件3.2 环境变量3.3 命令行参数 4. 日志格式自定义自定义日志格式 5. 日志文件输出6. 日志归档与清理7. 自定义日…

IWOA-GRU和GRU时间序列预测(改进的鲸鱼算法优化门控循环单元)

时序预测 | MATLAB实现IWOA-GRU和GRU时间序列预测(改进的鲸鱼算法优化门控循环单元) 目录 时序预测 | MATLAB实现IWOA-GRU和GRU时间序列预测(改进的鲸鱼算法优化门控循环单元)预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现IWOA-GRU和GRU时间序列预测…

【SpringBoot】日志处理-异常日志(Logback)

文章目录 异常日志(Logback)1、将 logback-spring.xml 文件放入项目的 src/main/resources 目录下2、配置 application.yml 文件3、使用 Logback 记录日志 异常日志(Logback) 使用 Logback 作为日志框架时,可以通过配…

【RK3568笔记】Android修改开机动画

概述 Android 的开机动画是由一系列连续的 PNG 图片作为帧组成的动画形式,不是一张 GIF 图片。将各帧 PNG 图片以压缩方式进行保存(压缩方式要求是存储压缩),并将保存的文件名命名为 bootanimation.zip,这个 bootanim…

复合机器人助力手机壳cnc加工向自动化升级

在当今竞争激烈的制造业领域,如何提高生产效率、降低成本、提升产品质量,成为众多企业面临的关键挑战。尤其是在手机壳 CNC 加工这一细分行业,随着市场需求的持续增长,对生产效能的要求愈发严苛。而复合机器人的出现,正…

HTML——75. 内联框架

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>内联框架</title><style type"text/css">iframe{width: 100%;height: 500px;}</style></head><body><!--iframe元素会创建包含…

(七)人工智能进阶之人脸识别:从刷脸支付到智能安防的奥秘,小白都可以入手的MTCNN+Arcface网络

零、开篇趣谈 还记得第一次用支付宝"刷脸"时的新奇感吗&#xff1f;或者被抖音的人脸特效逗乐的瞬间&#xff1f;这些有趣的应用背后&#xff0c;其实藏着一个精妙的AI世界。今天&#xff0c;就让我们开启一段奇妙的人脸识别技术探索之旅吧&#xff01; 一、人脸识…

1. 使用springboot做一个音乐播放器软件项目【前期规划】

背景&#xff1a; 现在大部分音乐软件都是要冲会员才可以无限常听的。对于喜欢听音乐的小伙伴&#xff0c;资金又比较紧张&#xff0c;是那么的不友好。作为程序员的我&#xff0c;也是喜欢听着歌&#xff0c;敲着代码。 最近就想做一个音乐播放器的软件&#xff0c;在内网中使…

STM32-笔记37-吸烟室管控系统项目

一、项目需求 1. 使用 mq-2 获取环境烟雾值&#xff0c;并显示在 LCD1602 上&#xff1b; 2. 按键修改阈值&#xff0c;并显示在 LCD1602 上&#xff1b; 3. 烟雾值超过阈值时&#xff0c;蜂鸣器长响&#xff0c;风扇打开&#xff1b;烟雾值小于阈值时&#xff0c;蜂鸣器不响…

【Linux】记录一下考RHCE的学习过程(七)

年底了&#xff0c;公司接的北京地铁轨道交通的项目做不完了&#xff0c;一百多列地铁的设备都得调&#xff0c;派我出差了几周&#xff0c;这几天才回来&#xff0c;出差累死了实在是没办法更新。&#xff08;YOASOBI的二开票还没抢到ToT&#xff0c;哭死&#xff0c;看看回滚…

[读书日志]从零开始学习Chisel 第六篇:Scala面向对象编程——特质(敏捷硬件开发语言Chisel与数字系统设计)

3.4特质 3.4.1什么是特质 特质使用trait开头&#xff0c;它与单例对象很像&#xff0c;两者都不能有输入参数&#xff0c;但单例对象是具体的&#xff0c;特质是抽象的。两者都不能用new实例化&#xff0c;类&#xff0c;单例对象&#xff0c;特质三者内部都可以包含字段和方…