Linux:内核、发行版、终端、包管理一次讲透
<font size="5">前言</font><br><br><div class="quote"><blockquote><font size="4">很多初学者刚接触 Linux,很容易混淆<b>Linux 内核、Linux 发行版</b>两个概念。我们日常见到的 Ubuntu、Debian、CentOS,并不是内核本身,而是把内核、工具软件、桌面环境整合在一起的完整操作系统。</font><br><font size="4">Linux 广泛应用于服务器、嵌入式设备、路由器、安卓手机,而不同的发行版,在界面、软件、更新策略上差异巨大。本文把内核、发行版、终端 Shell、桌面环境、包管理器这些基础概念通俗讲清楚,帮新手建立完整认知。</font><br><blockquote><font size="4">提示:本文属于操作系统科普,不构成生产环境部署建议。</font><br></blockquote></blockquote></div><br><font size="5">一、Linux 内核:操作系统的心脏</font><br><br>1991 年,林纳斯・托瓦兹(Linus Torvalds)开发出 Linux 内核,它是整套系统最底层的核心程序,开源开放,任何人都可以阅读、修改、分发源代码。<br><b>内核能干什么:</b><br><ul><li>管理 CPU,调度各个程序的运行;</li><li>管理内存,分配内存空间,做内存保护;</li><li>通过驱动程序对接硬盘、网卡、外设硬件;</li><li>文件系统管理、网络协议栈;</li><li>提供系统调用接口,给上层软件使用。<br></li></ul>⚠️重点:<b>单纯的内核,并不是完整可用的操作系统</b>。它就像汽车的发动机,光有发动机,没有方向盘、轮胎、车身,你是没法直接开的。还需要大量基础工具、命令程序,普通人才可以操作电脑。<br><font size="5">二、Linux 发行版:内核加上全套软件</font><br><br><b>Linux 发行版(Distribution) = Linux 内核 + 基础命令工具库 + 安装程序 + 软件仓库 +(可选)图形桌面环境 + 更新维护机制</b>腾讯云。<br>不同组织、公司,把内核和各类软件进行打包、定制,就诞生了不同发行版:<br><ul><li>Ubuntu、Debian:适合桌面开发,服务器也大量使用;</li><li>Rocky Linux、RHEL(红帽):企业服务器、生产环境;</li><li>OpenWrt:路由器、嵌入式设备专用;</li><li>Android:手机系统,底层同样使用 Linux 内核,在之上构建了手机专属运行框架、APP 体系,但它并不兼容普通 Linux 桌面软件。<br></li></ul><blockquote>形象比喻:内核 = 发动机;各个发行版 = 不同品牌整车,同样发动机,有的是家用轿车,有的是货车,有的是越野车。<br></blockquote>同一个内核,可以搭配完全不一样的软件集合,所以同样叫 Linux,服务器可以完全没有图形界面,而桌面版可以像 Windows 一样鼠标点点操作。<br><font size="5">三、两种交互方式:图形桌面环境 vs 终端 Shell</font><br><br>Linux 有两套人机交互方式,两者运行在同一套内核之上。<br><font size="4">1、图形桌面环境</font><br><br>GNOME、KDE Plasma、XFCE 这些就是桌面环境,提供窗口、图标、文件管理器,鼠标点击操作,和 Windows/macOS 体验类似。同一个发行版,还可以更换多种桌面环境。服务器版本为了节省资源,通常不安装桌面,完全靠命令行操作。<br><font size="4">2、终端 + Shell(命令行)</font><br><br>终端是输入输出的窗口,<b>Shell 是解析执行命令的程序</b>,最常见默认是 Bash。举个例子,打开终端输入cat note.txt:<br><ul type="1" class="litype_1"><li>Shell 识别你输入的命令,启动 cat 程序;</li><li>cat 向 Linux 内核发起请求读取文件;</li><li>内核访问硬盘拿到数据,交还给程序;</li><li>终端把文字输出显示在屏幕上。<br></li></ul>你既可以在图形界面双击编辑器打开笔记文件,也可以终端命令读取,底层都是调用内核完成硬件读写。Shell 还支持把多条命令写进脚本,批量自动执行任务,运维自动化大量依靠 Shell 脚本。<br><blockquote>小误区:终端不等于 Shell。终端是窗口载体,Shell 是负责解析命令的程序。<br></blockquote><font size="5">四、包管理器:Linux 的 “应用商店”</font><br><br>Windows 习惯下载 exe 安装包,双击安装。Linux 绝大多数情况,依靠<b>软件仓库 + 包管理器</b>管理软件。<br>软件仓库是服务器上的软件集合,包管理器负责查询、下载、安装、卸载软件,同时自动处理软件依赖:一个软件运行需要其他库文件,包管理器会一并安装依赖,不用用户手动到处找。<br>不同系列发行版,包管理器完全不一样,不能混用:<br><br><table class="t_table"><tbody><tr><td>发行版系列</td><td>包管理器</td><td>示例命令</td></tr><tr><td>Debian / Ubuntu</td><td>APT</td><td>apt install xxx</td></tr><tr><td>Rocky / RHEL / Fedora</td><td>DNF(YUM)</td><td>dnf install xxx</td></tr><tr><td>Arch Linux</td><td>Pacman</td><td>pacman -S xxx</td></tr></tbody></table><blockquote>举个现实场景:Ubuntu 想用一个编辑器,不需要网上到处找安装包,直接apt install vim,系统自动从官方仓库下载程序以及它依赖的库。同时包管理器记录软件版本,统一升级、卸载。<br></blockquote>⚠️注意:不要跨系列混用包管理命令,Ubuntu 不能执行 dnf,会直接报错。<br><font size="5">五、不同场景的 Linux</font><br><br><ul type="1" class="litype_1"><li><b>服务器 Linux</b>:去掉图形桌面,只保留内核、命令行、服务组件,用来跑网站、数据库、容器,我们访问的绝大多数互联网后端,都运行 Linux;</li><li><b>桌面 Linux(Ubuntu 等)</b>:带图形界面,可以写代码、办公上网,适合开发者;</li><li><b>嵌入式 Linux</b>:OpenWrt 路由器、智能硬件,裁剪内核,只保留需要的功能;</li><li><b>Android 手机</b>:底层是 Linux 内核,上层是谷歌设计的 ART 运行时、安卓框架,安卓 APP 不能直接在普通 Linux 桌面运行,两者软件生态互相独立Android De...。<br></li></ul><font size="5">六、新手常见认知误区澄清</font><br><br>误区 1:Linux=Ubuntu。纠正:Ubuntu 只是众多发行版的其中一种,内核才是真正的 Linux 本体。<br>误区 2:服务器 Linux 没有图形界面 = 内核不一样。纠正:内核是同一个,只是没有安装桌面环境组件,可以后期手动安装桌面。<br>误区 3:Android 就是普通 Linux,可以直接跑 Linux 桌面软件。纠正:Android 虽然基于 Linux 内核,但是上层运行环境完全不同,软件二进制互不兼容。<br>误区 4:包管理器只是下载工具,软件安装全靠网上下载二进制包。纠正:Linux 设计哲学优先使用官方仓库包管理器,外部二进制包只是补充。<br>误区 5:命令行 Shell 就是终端。纠正:终端是显示窗口,Shell 是解析执行命令的程序,Bash、Zsh 都属于 Shell。<br><font size="5">结语</font><br><br>理解 Linux,分清楚四层就通透了:<br><ul type="1" class="litype_1"><li><b>Linux 内核</b>:管理硬件资源的底层心脏;</li><li><b>发行版</b>:内核搭配工具、软件、仓库,组成完整操作系统;</li><li><b>交互层</b>:图形桌面 或者 终端 + Shell 命令行;</li><li><b>包管理器</b>:统一安装、卸载、升级软件,自动处理依赖。<br></li></ul>不管是做后端运维、嵌入式开发,还是个人桌面体验,搞懂这套分层逻辑,就不会被五花八门的发行版名词搞混淆。<br><br>
页:
[1]