Linux 详解:最完整的入门指南

Linux 是当今最流行的操作系统,仅次于 Windows 和 MacOS。这个开源系统是免费的,在可靠性、安全性和灵活性方面有着悠久的历史。

由于Linux存在于许多设备中并带来了许多优势,因此了解它是什么以及它如何影响计算机行业是至关重要的。

本文将深入探讨 Linux 以及为什么它是当今最常用的技术之一。

Linux 详解:最完整的入门指南_第1张图片

Linux 定义

Linux 是一个内核,它有一个开源操作系统的生态系统。该系统基于 UNIX 操作系统,并围绕同一内核构建了许多发行版。

注:Linux 通常指的是内核和操作系统。Linux 内核是每个 Linux 发行版的核心。

Linux 以可靠、稳定、安全和灵活著称。它的特性使它成为运行超级计算机、服务器和台式计算机的热门选择。它也经常被用作嵌入式系统中的嵌入式应用程序(软件)。Linux 是许多日常设备的核心,例如电话、智能电视和可穿戴设备。 

Unix vs Linux

Unix 和 Linux 是两种截然不同的技术解决方案:

  • Linux 是一种类似 Unix 的操作系统,特别是一种受 Unix 内核版本启发的内核。
  • Unix 是一个具有许多不同内核版本的操作系统。

尽管这两种技术有一些相似之处,但每种解决方案都有独特的功能。下表提供了对这些差异的简要概述。

Unix Linux 操作系统
由贝尔实验室研究人员在 1960 年代和 1970 年代开发 由 Linus Torvalds 于 1991 年开发
原始许可证是私有的,源代码具有受限的分发和修改选项 源代码可免费分发和修改(开源)
多个内核版本 单个内核,多个发行版
具有不同特性和功能的多个商业版本 众多商业和社区创建的发行版
开发由供应商关闭和维护 发展是开放的,由社区驱动

Linux 是 Unix 的克隆,但它不是 Unix。内核借鉴了 Unix 的许多思想,例如使用 POSIX 标准编程api 的接口。尽管如此,该代码并不是Unix源代码的直接派生。 

Linux 操作系统历史

Linus Torvalds 于 1991 年开发了 Linux,当时他还是赫尔辛基大学的学生。最初的 Linux 内核是为使用英特尔 80386 微处理器的计算机设计的。

在那段时间里,Linus 使用 Minix,一个廉价的 Unix 作为学习平台。由于许可证限制了对源代码的修改,Linus 决定创建一个操作系统内核。这个项目最初是一个简单的终端模拟器,用于连接大学里的大型 Unix 系统,后来得到了进一步的开发和改进。

1991 年,第一个 Linux 版本出现在互联网上。项目变得协作,许多程序员参与到它的开发中。因此,该系统可以在许多不同的处理器版本上运行。新的公司开始专攻 Linux,比如红帽公司,而像英特尔这样的巨头则为嵌入式系统、桌面机器和服务器提供 Linux 解决方案。

Linux 最令人兴奋的特性之一是它不是一个商业产品。创建者维护内核,而一组连接的开发人员继续开发。该项目是通过互联网合作的结果。

Linux 架构

Linux 内核具有单一的开放体系结构。Linux 操作系统的基本架构由三层组成:

硬件:机器的物理组成部分,内存(RAM)和处理器(CPU)。
内核:内存软件和CPU控制器,内核充当硬件和进程之间的连接器。
进程:系统上由内核控制的运行程序,进程构成了内核之外的所有任务。

Linux 详解:最完整的入门指南_第2张图片

Linux 系统将虚拟内存分成两个不同的空间:

  • 内核空间:为运行系统内核、内核模块和大多数设备驱动程序而保留的虚拟内存段。
  • 用户空间(或用户区):为运行内核之外的所有代码而保留的虚拟内存段。 

内核在 Linux 操作系统中起着中心作用,并与许多不同的体系结构部分一起工作。下面是 Linux 主要组件的简要概述。

引导装载程序

引导加载程序是每次 Linux 系统启动或重新启动时运行的程序。引导加载程序的主要功能是将内核加载到内存中并启动引导过程。

除了定位和加载内核之外,该程序还为内核设置初始启动环境并提供所需的信息。

Linux 上最常见的两个引导加载程序是:

  • GRUB:大统一引导加载程序(GRUB)是各种 Linux 发行版中最常见的默认引导加载程序。该程序允许在多操作系统环境中选择操作系统、配置启动选项、运行 GRUB 拯救模式以及选择备用内核。
  • LILO:Linux LOader (LILO)是一种在某些 Linux 系统上不太常见但仍在使用的引导加载程序。与 GRUB 相比,该程序具有简单的设计和众多配置选项。

Linux 详解:最完整的入门指南_第3张图片

完成引导过程后,Linux 内核继续运行操作系统。

内核

内核是操作系统中最底层的软件。它充当硬件和应用程序之间的通信点。Linux 内核是单片的,用C 语言和汇编语言编写。它提供了运行系统所需的所有低级进程。

Linux 内核管理以下组件:

  • 设备驱动程序:内核充当硬件和进程之间的中介。
  • 内存:内核跟踪内存使用情况,包括存储的内容和位置。
  • 进程管理:调度来自进程的CPU请求,并相应地分配处理器时间。
  • 系统调用和安全:内核处理所有系统调用,并在内核空间中处理请求。

通过管理低级任务,内核在用户和硬件之间提供了一个抽象层,同时允许用户访问硬件信息。库的使用可以打开和关闭内核中的某些功能,使其非常可定制和灵活。
在抽象硬件的同时访问信息的额外灵活性提供了一个非常模块化的内核模型。

初始化系统

init 系统是由内核启动的 Linux 守护进程。init 系统的目的是在引导期间初始化用户空间,并在运行时期间管理系统进程。init系统任务包括:

  • 启动、停止和重启服务。
  • 管理其他守护进程。
  • 协调引导顺序。

最初的 Linux 初始化系统是基于 Unix SystemV (SysV) 初始化系统。SysV 依赖于 /etc/init.d 目录下中的脚本,根据运行级别顺序启动、停止和重启服务。

Linux 详解:最完整的入门指南_第4张图片

大多数主要的 Linux 发行版(Ubuntu、CentOS、Fedora、Debian)使用 systemd 实现 init 系统,它向后兼容 SysV。该系统提供更快的引导时间和更好的系统管理功能,例如通过 journalctl 进行详细的日志记录。 

有些 Linux 系统允许在安装过程中选择不同的初始化系统。这个选择很关键,会影响整个系统的行为。

守护进程

守护进程是在引导过程中启动的后台进程。并等待特定的事件或请求在没有用户干预的情况下发生。守护进程的一些例子包括:

  • systemd:负责管理其他守护进程的中心守护进程。
  • sshd:SSH服务器守护进程监听传入的SSH连接请求,启用到远程服务器的安全连接,并允许文件传输。
  • httpd:侦听HTTP请求并提供网页服务的web服务器守护进程。
  • cron:在请求时间执行cron表(crontab)中的计划任务或脚本的守护进程。

Linux 包含许多守护进程,每个进程都具有特定的功能。总的来说,守护进程确保程序在系统上顺利运行。

图形化服务

图形服务器是 Linux 上的一个基本框架,用于在监视器上显示图形。该组件实现了 X 窗口系统(X11或X),并支持窗口管理、键盘/鼠标输入和多显示支持。

X 窗口系统不提供用户界面。不同的程序处理用户与之交互的可视化界面的细节。

桌面环境

桌面环境提供实现图形用户界面(GUI)的软件。桌面环境提供了一种合乎逻辑且用户友好的方式来导航各种操作系统组件。

Linux 详解:最完整的入门指南_第5张图片

Linux 提供了几种不同的桌面环境可供选择,它们是独立于发行版的。
桌面环境包含几个内置的应用程序,如文本编辑器、配置程序、web 浏览器和其他实用程序。

应用程序

应用程序是 Linux 操作系统的最高层。大多数 Linux 发行版提供集中的应用程序商店环境来搜索和安装应用程序。

注意:对于迁移到 Linux 的 Windows 用户,Wine 等程序允许在 Linux 上运行 Windows 应用程序。

Linux 是如何工作的

Linux 管理硬件资源,并提供与系统资源交互的接口。内核是操作系统与硬件交互的核心组件。
围绕内核构建的支持 Linux 工作的关键组件将在以下部分中介绍。

Linux Shell

Linux 使用称为 shell 的命令行接口与内核通信。shell 使用户能够使用各种 Linux 命令而不是 GUI 与操作系统进行交互。有几种流行的 shel l类型,如 Bash、Zsh、Fish 等。

Linux 详解:最完整的入门指南_第6张图片

使用基于文本的命令可以访问各种 Linux 实用程序和工具。shell 支持文件管理、管理任务和配置系统设置。 

Linux 文件系统

Linux 文件系统决定了文件和目录在 SSD 或 HDD 上的存储方式。Linux 支持各种文件系统类型,最常见的是扩展文件系统(ext)。

Linux上常见的文件系统包括:
ext2:在许多早期的 Linux 系统上,不包括日志记录。
ext3:是 ext2 的扩展,增加了日志记录功能来跟踪文件系统的更改。
ext4:是大多数现代Linux发行版的默认设置。文件系统支持大文件系统,具有更好的性能和可扩展性。
Btrfs: (B-tree文件系统)提供高级特性,如 RAID 支持和自修复。
XFS:是一种健壮的高性能文件系统,适用于大型文件系统和文件。

文件系统的选择取决于具体的需要、需求和用例。

Linux进程

Linux中的进程是操作系统中的单个工作单元。正在运行的命令或程序的任何实例都是具有唯一标识符(进程ID或PID)的进程。

进程有几种不同的状态,例如:

  • Running:当前在CPU中执行的进程的状态。
  • Sleeping:进程正在等待资源或特定事件的状态。
  • Zombie:僵尸进程被停止并且没有被彻底清理。
  • Stopped:进程未运行并准备恢复或终止的状态。
  • Orphaned:父进程结束的进程。

Linux提供了各种实用程序和工具来管理进程:

  • 有几个不同的命令列出正在运行的进程,包括 top 和 ps 命令。
  • 终止(杀死)进程的命令。
  • 进程控制命令,如 exec() 和 fork(),支持并发执行或多任务处理。

Linux 详解:最完整的入门指南_第7张图片

处理进程对于 Linux 来说是必不可少的。了解如何管理进程有助于解决软件问题,优化性能,并直接管理系统资源。 

Linux 用户权限

Linux 采用文件系统的权限模式。该模型基于三个不同的级别分配不同的权限:

  • User(u):文件或目录的用户。
  • Group(g):具有相似权限的多个用户。
  • Others(o):既不是组的所有者也不是组的成员的所有其他用户。

用户权限允许对文件和目录执行不同的任务。可用的用户权限包括:

  • Read(r):允许指定的用户查看目录中的文件或文件名。
  • Write(w):允许用户修改或删除文件内容。具有写权限的用户可以创建、移动和删除目录。
  • Execute(e):赋予用户执行脚本/程序文件、访问和遍历目录的权限。

需要查看文件或目录的权限,使用带-l选项的 ls 命令。输出显示了用户、组和其他用户的权限。例如:

-rw-r--r-- 1 user group 2028 Aug 19 2:00 file.txt

Linux 详解:最完整的入门指南_第8张图片

Linux 中的包管理

包是在 Linux 发行版上发布软件的一种标准化方式。包是包含安装某些软件所需的所有数据的压缩归档文件。

Linux 操作系统使用软件包管理系统来安装、删除和更新软件包。包管理器解析依赖关系并更新包存储库以保持一致性。

Linux 发行版为软件安装和维护提供了一个现成的包管理系统。流行的包管理器包括:

  • APT(高级软件包工具):APT包管理器是在基于Debian的发行版(如Ubuntu)中使用的Debian包管理器。包格式使用在包存储库中找到并维护的.deb文件。apt或apt-get等命令有助于安装、更新、删除包,并自动解析依赖项。
  • RPM (Red Hat Package Manager):RPM包管理器出现在基于Red hat的发行版中,比如Fedora和CentOS。rpm和yum等命令有助于管理.rpm格式的包。RPM解决了大多数包依赖关系,但在特定情况下需要人工干预。
  • Pacman:Pacman包管理器出现在Arch Linux和类似的发行版中。轻量级包管理器与.pkg.tar一起工作。Xz文件格式,并自动处理所有依赖项。pacman命令允许从终端管理包。

Linux 发行版还提供了更高级的解决方案,通过 GUI 作为一种用户友好的方法来管理包。

Linux 网络

Linux 包含一个健壮的网络管理、监视和故障排除工具栈。Linux 中的网络选项是高度可定制的,并且支持许多网络协议。

Linux 详解:最完整的入门指南_第9张图片

一些关键的 Linux 网络元素包括: 

  • IP 地址:IP地址是 Linux 网络中设备的唯一标识符,由四个字节组成(例如192.168.1.1)。标识符对于路由网络中的网络流量至关重要。地址可以手动分配,也可以通过 DHCP 等协议自动分配。
  • 接口:Linux 支持多种组网接口,如 Wi-Fi、以太网、虚拟接口等。每个网络接口都有一个唯一的名称,例如 eth0、lo (loopback) 或 wlan0。ip 或 ifconfig 等命令提供概述和配置网络接口。
  • 配置文件:Linux 使用配置文件定义各种网络设置。例如,基于 debian 的系统使用 /etc/network/ 接口进行网络任务,而基于 Red hat 的系统将配置文件存储在 /etc/sysconfig/network-scripts/ 中。
  • DNS:DNS (Domain Name System)将人类可读的地址转换为 IP 地址。Linux 在 /etc/resolv.conf 文件中手动或动态定义解析。
  • 路由:Linux 支持路由,并存储路由表来定义网关和网络流量。ip route 等命令用于维护和管理路由表。
  • 服务:各种网络服务为设备和用户提供网络功能。例如 web服务器、邮件服务器、DNS服务器、FTP服务器和 SSH服务器。
  • 工具:Linux 有许多用于故障排除和管理网络任务的网络工具,例如 ping 和 traceroute。

可用的程序、工具和定制使 Linux 受到网络管理员的欢迎。

驱动

驱动程序使操作系统能够与连接的硬件进行交互。usb、图形卡、声卡和网络适配器等设备需要驱动程序正常工作。

驱动程序通常在 Linux 上作为内核模块工作。

注: 查看 modprobe 命令如何添加和删除内核模块

Linux 的优缺点

在研究 Linux 时,需要考虑许多优点和缺点。大多数优点和缺点取决于个人的喜好和要求。

下面概述了Linux的主要优点和缺点。

Linux 优点

作为当今最流行的操作系统之一,Linux 有很多优点。Linux 的一些重要的积极特性是:

  • 开源:作为一个开源系统,Linux 可以自由使用、修改和分发。开发是透明和协作的。开放系统鼓励学习技术和创新。
  • 稳定性:Linux 被称为稳定可靠的系统。它适用于关键系统、服务器和实时应用程序。Linux 可以长时间运行,无需重新启动。
  • 安全性:有限的恶意软件暴露,强大的系统权限,并通过补丁快速解决漏洞。
  • 定制:操作系统体验是完全可配置的。在各种桌面环境、软件包和窗口管理器之间进行选择。
  • 软件可用性:尽管商业软件选项较少,但开源软件解决方案和替代品不断增加。

Linux 缺点

Linux 有几个缺点,特别是对于不熟悉环境的用户。Linux 的一些缺点包括:

  • 学习曲线:Linux 以具有更陡峭的学习曲线而闻名,尤其是对于从 Windows 迁移的用户。对于新用户来说,学习新命令、文件系统的工作原理和整体配置是一项挑战。
  • 兼容性:软件兼容性是迁移到 Linux 之前要考虑的关键因素。尽管存在许多开源替代方案,但某些专有软件不适用于 Linux。
  • 游戏:尽管 Linux 上的游戏正在增长并变得越来越流行,但该系统仍然需要赶上 Windows 的游戏支持和兼容性。
  • 技术支持:Linux 专注于拥有可靠的在线社区存在和广泛的文档。很难找到专门的技术支持来排除故障和协助解决特定问题。

Linux 和开源

Linux 内核是免费软件,这意味着它是使用 GNU 通用公共许可证的开源代码。用户可以下载并更改原始源代码。唯一的义务是更改的分发需要具有相同的开源许可证和可用的源代码。

Linux 的开源方面在系统的广泛成功和实现中起着至关重要的作用。开源原则在很多方面影响着 Linux,用自由软件创建了一个协作和创造性的社区。

Linux操作系统用途

由于其多功能性,Linux 操作系统出现在许多上下文中。Linux 操作系统的一些常见用途包括:

  • 服务器:Linux 是一种广泛使用的操作系统,适用于 Web 服务器、数据库服务器、文件服务器等。稳定性、安全性和可扩展性使 Linux 成为支持不同服务器类型的绝佳选择。
  • 云计算和虚拟化:云服务通常依靠基于 Linux 的操作系统来提供可靠且可扩展的基础架构。虚拟化平台还经常使用 Linux 作为虚拟化平台(如 Docker)中的主机操作系统。
  • 台式电脑:Linux 为台式计算机和笔记本电脑提供了几种不同的桌面环境和发行版,它们提供了所有必要的桌面实用程序和应用程序。
  • 移动设备:Linux 内核是 Android 的核心,Android 是最流行的移动操作系统之一。该操作系统适用于智能手机、平板电脑、智能电视和其他设备。
  • 嵌入式系统:路由器、智能家电、物联网设备和汽车系统主要使用 Linux。
  • 科学研究:生物信息学、计算模拟、数据分析和高性能计算(HPC) 等领域由于稳定性、性能和软件可用性而使用 Linux。
  • 开发:Linux 提供了广泛的开发工具。开发人员通常更喜欢 Linux,因为它具有强大的命令行功能、脚本和开发库的可用性。
  • 教育:Linux 是教授计算机科学和其他 IT 相关科目的一种经济高效的方式。该操作系统可根据特定要求进行定制,并且有几个发行版是专门为教育目的而设计的。

Linux 发行版

Linux 发行版(发行版)是 Linux 操作系统的不同变体。每个发行版都将 Linux 内核与软件、工具、库和桌面环境相结合,以服务于特定的用例。

以下是最流行的 Linux 发行版列表:

  • Ubuntu:Ubuntu 是最常用和最知名的 Linux 发行版。该发行版专注于用户友好,安装过程简单,并具有出色的桌面体验。
  • Debian的:Debian 是一个稳定的发行版,也是许多 Linux 发行版(如 Ubuntu)的基础。该发行版支持多种架构和各种软件包。
  • Mint。Mint 是一个基于 Ubuntu 的用户友好型 Linux 发行版。该发行版具有多个桌面环境,适合新的 Linux 用户。
  • 红帽企业 Linux (RHEL)。RHEL 是一个商业开源发行版,以对企业系统的可靠支持和稳定性而闻名。由于长期支持以及与软件和硬件供应商的广泛联系,该发行版用于关键任务系统。
  • Fedora。Fedora 是一个由 Red Hat 赞助的基于社区的发行版。该发行版旨在提供最新的软件解决方案和创新,同时坚持开源原则。
  • CentOS 操作系统。CentOS 是基于 RHEL 源代码的广泛发行版。由于对企业友好,服务器部署通常依赖于 CentOS。最新版本的 CentOS 已达到 EOL,但有许多 CentOS 替代品可供考虑。
  • Arch。Arch Linux 是一个最小的、高度可定制的发行版,采用 DIY 方法。基本安装很轻,允许用户构建定制的 Linux 体验。
  • Kali。Kali Linux 是用于渗透测试网络安全审计的专用发行版。该发行版带有各种安全工具,在黑客和安全专家中很受欢迎。

如何选择 Linux 发行版?

选择正确的 Linux 发行版取决于许多因素。最好的方法是尝试不同的发行版,最好使用虚拟化程序,如 Virtualbox 和 VMware

选择 Linux 发行版时要考虑的一些关键事项包括:

  • 目的:确定在计算机上使用 Linux 的目的,以确定要求。不同的发行版更适合作为服务器操作系统,而其他发行版则面向桌面体验。许多专用的 Linux 发行版通过设计来处理特定任务。
  • 可用性:要考虑的一个关键因素是以前使用 Linux 的经验。某些发行版(例如 Ubuntu、Fedora 或 Mint)更适合新用户。熟悉 Linux 并喜欢自定义体验的用户可以选择加入 Gentoo 或 Arch。
  • 硬件要求:检查发行版是否支持您的硬件设置。某些发行版需要额外的配置和驱动程序,而其他发行版则提供即时支持。通过官方论坛和文档仔细检查是否存在任何兼容性问题。
  • 社区支持:无论您是 Linux 新用户还是尝试新发行版的有经验的用户,社区支持都是必不可少的。大型社区提供更多资源、指南和帮助。一个活跃的社区是具有频繁更新的健康分布的良好指标。
  • 偏好:归根结底,在坚持使用 Linux 发行版时,个人偏好至关重要。有各种包管理系统、桌面环境、理念,每个发行版的整体体验都是独一无二的。

结论

本文章解释了 Linux 是什么、它的基础设施以及它是如何工作的。这个多功能且功能强大的系统是计算世界不可或缺的一部分,并通过开源原则继续培养一个富有创造力、创新性和协作性的社区。

你可能感兴趣的:(OS,linux)