Featured image of post Linux 概述:从 Unix 到开源革命

Linux 概述:从 Unix 到开源革命

深入了解 Linux 操作系统的历史、内核架构、发行版生态以及为什么每个开发者都应该学习 Linux

Linux 概述:从 Unix 到开源革命

引言

Linux 是现代技术世界中最重要的操作系统之一。从你手中的 Android 手机到运行互联网的服务器,从超级计算机到嵌入式设备,Linux 无处不在。这篇文章将带你深入了解 Linux 的前世今生。

Unix 的诞生(1969-1970s)

背景

在 1969 年,AT&T 贝尔实验室的 Ken Thompson、Dennis Ritchie 和其他研究人员开发出了一个名为 Unix 的操作系统。这个系统后来成为了现代操作系统的基石。

Unix 的核心设计哲学

  1. “一切皆文件”:文件、设备、进程间通信等都以文件形式表示
  2. 小而精的工具:每个程序只做一件事,并且做到极致
  3. 文本流:使用文本作为程序间的通用接口
  4. 可移植性:用 C 语言重写内核,实现了跨平台能力

Unix 的影响

  timeline
    title Unix/Linux 发展简史
    1969 : Unix 诞生于贝尔实验室
    1971 : Unix 用 C 语言重写
    1973 : Unix 开始商业化
    1983 : Richard Stallman 发起 GNU 项目
    1984 : AT&T 发布 System V
    1987 : Andrew Tanenbaum 开发 Minix
    1991 : Linus Torvalds 发布 Linux 0.01
    1992 : GNU GPL 许可证发布
    1998 : IBM、Oracle 等支持 Linux
    2000s : 服务器市场 Linux 成为主流
    2008 : Android 基于 Linux 发布
    2020s : Linux 统治云计算和容器时代

GNU 计划和自由软件运动(1983)

Richard Stallman 的愿景

1983 年,Richard Stallman(RMS)发起了 GNU(GNU’s Not Unix) 项目,目标是创建一个完全自由的 Unix-like 操作系统。

四大自由

自由软件运动定义了软件使用者的四大基本自由:

  1. 自由度 0:出于任何目的运行程序的自由
  2. 自由度 1:研究并修改程序的自由
  3. 自由度 2:重新分发副本的自由
  4. 自由度 3:改进程序并向公众发布的自由

Copyleft 和 GPL

Stallman 创建了 GPL(GNU General Public License) 许可证,引入了 Copyleft 概念:

  • Copyright:保留所有权利
  • Copyleft:保留所有权利,但要求衍生作品也以相同条款发布

这确保了自由软件始终保持自由。

Linus Torvalds 和 Linux 的诞生(1991)

背景故事

1991 年,芬兰赫尔辛基大学的学生 Linus Torvalds 对当时的教学操作系统 Minix 不满意。他想要一个能在他的 80386 计算机上运行的 Unix-like 系统。

历史性的 Usenet 帖子

1991 年 8 月 25 日,Linus 在 comp.os.minix 新闻组发布了这个著名的帖子:

“我正在做一个(免费的)操作系统(只是个爱好,不会像 GNU 那样大而专业)”

“I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu)”

事实证明,他严重低估了自己的项目。😄

Linux 0.01 版本

1991 年 9 月,Linux 0.01 版本发布,包含约 10,000 行代码。虽然功能有限,但它可以运行 bash shell 和 gcc 编译器。

  mindmap
  root((Linux 生态系统))
    内核
      Linus Torvalds维护
      开源社区贡献
      硬件抽象层
    GNU工具
      GCC编译器
      Bash shell
      Coreutils
      C库(glibc)
    桌面环境
      GNOME
      KDE
      XFCE
    发行版
      Debian系
      RedHat系
      Arch系
      独立发行版

Linux vs GNU/Linux

名称争议

严格来说,Linux 只是内核,而完整的操作系统应该称为 GNU/Linux,因为:

  • Linus 创造了 Linux 内核
  • GNU 项目提供了大部分用户空间工具

但在实际使用中,人们普遍使用 “Linux” 来指代整个操作系统。这也是可以理解的,因为 “GNU/Linux” 读起来确实比较拗口。

各司其职

    ┌─────────────────────────────────────┐
│         应用程序层                   │
│    (Firefox, Vim, Git, etc.)        │
├─────────────────────────────────────┤
│         用户空间                     │
│   (GNU工具, Desktop Environment)    │
├─────────────────────────────────────┤
│      Linux 内核 (系统调用接口)       │
├─────────────────────────────────────┤
│            硬件                      │
└─────────────────────────────────────┘
  

Linux 内核的特点

单内核架构(Monolithic Kernel)

Linux 采用单内核架构,整个内核运行在一个单一的地址空间中:

优点

  • ✅ 高性能:系统调用和模块间通信开销小
  • ✅ 简单直观:代码组织清晰

缺点

  • ❌ 稳定性风险:一个模块崩溃可能导致整个系统崩溃
  • ❌ 难以扩展:添加新功能需要重新编译内核

但是! Linux 通过 可加载内核模块(LKM) 机制在保持单内核性能优势的同时,获得了微内核的灵活性。

内核子系统

Linux 内核包含以下主要子系统:

  1. 进程调度(SCHED):管理 CPU 时间片分配
  2. 内存管理(MM):虚拟内存、分页、交换
  3. 虚拟文件系统(VFS):统一的文件系统接口
  4. 网络协议栈(NET):TCP/IP 网络协议实现
  5. 进程间通信(IPC):管道、消息队列、共享内存等

Linux 发行版生态

Linux 内核 + GNU 工具 + 桌面环境 + 软件包管理器 = Linux 发行版

Debian 系

特点:稳定、社区驱动、APT 包管理器

  • Debian:最古老的社区发行版之一,以稳定性著称
  • Ubuntu:基于 Debian,用户友好,适合新手和桌面使用
  • Linux Mint:基于 Ubuntu,提供传统桌面体验
  • Kali Linux:专为渗透测试和安全审计设计
    # Debian/Ubuntu 包管理示例
sudo apt update           # 更新软件包列表
sudo apt upgrade          # 升级已安装的包
sudo apt install nginx    # 安装软件
sudo apt remove nginx     # 删除软件
  

Red Hat 系

特点:企业级、RPM 包管理器、商业支持

  • Red Hat Enterprise Linux (RHEL):企业级 Linux,提供商业支持
  • Fedora:RHEL 的上游,新技术试验场
  • CentOS:RHEL 的免费重建版(已被 Stream 替代)
  • Oracle Linux:Oracle 的 RHEL 兼容发行版
    # RHEL/Fedora 包管理示例
sudo dnf update           # 更新软件包
sudo dnf install nginx    # 安装软件
sudo dnf remove nginx     # 删除软件
  

Arch 系

特点:滚动更新、KISS 哲学、文档优秀

  • Arch Linux:轻量、灵活、滚动更新
  • Manjaro:基于 Arch,更友好的安装过程
  • EndeavourOS:Arch 的另一个友好分支
    # Arch 包管理示例
sudo pacman -Syu          # 同步并升级系统
sudo pacman -S nginx      # 安装软件
sudo pacman -R nginx      # 删除软件
  

独立发行版

  • Gentoo:源码发行版,高度可定制
  • openSUSE:SUSE 公司的社区发行版
  • Slackware:最古老的存活发行版,保持 Unix 传统

选择合适的发行版

  flowchart TD
    A[选择 Linux 发行版] --> B{使用目的?}

    B -->|服务器| C{稳定性 vs 新特性}
    B -->|桌面日常| D{新手 vs 老手}
    B -->|学习原理| E[Arch Linux]
    B -->|渗透测试| F[Kali Linux]

    C -->|企业生产| G[RHEL/CentOS]
    C -->|最新技术| H[Fedora]

    D -->|完全新手| I[Ubuntu/Linux Mint]
    D -->|有一定经验| J[Fedora/openSUSE]
    D -->|高级用户| K[Arch]

    style A fill:#e1f5ff
    style E fill:#fff3e0
    style F fill:#ffebee

为什么学习 Linux?

1. 服务器领域的绝对统治

根据 StatCounter 和 W3Techs 的统计:

  • 超级计算机:96%+ 运行 Linux
  • 公共云:90%+ 的云实例运行 Linux
  • Web 服务器:超过 70% 的网站使用 Linux
  • 移动设备:Android(基于 Linux)占据 70%+ 市场份额

2. 开源社区的优势

  • 透明性:代码公开,可审计
  • 安全性:全球安全专家持续审查
  • 创新性:社区驱动,快速迭代
  • 免费性:大多数发行版免费使用

3. 开发者必备技能

  • 云计算:AWS、GCP、Azure 等平台主要使用 Linux
  • 容器技术:Docker、Kubernetes 基于 Linux
  • DevOps:CI/CD 工具链主要运行在 Linux 上
  • 后端开发:大多数生产环境是 Linux

4. 深入理解计算机科学

学习 Linux 让你能够:

  • 🧠 理解操作系统原理
  • 🔧 掌握系统级编程
  • 🚀 优化应用性能
  • 🐛 高效调试问题

5. 职业发展

  • 系统管理员:Linux/Unix 系统管理
  • DevOps 工程师:自动化和部署
  • 后端工程师:服务器端开发
  • 嵌入式开发:Linux 嵌入式系统
  • 安全研究员:系统安全和渗透测试

Linux 的学习路径

  flowchart LR
    A[基础命令行] --> B[Shell 脚本编程]
    B --> C[系统管理]
    C --> D[网络基础]
    D --> E[服务部署]
    E --> F[性能优化]

    style A fill:#e8f5e9
    style B fill:#c8e6c9
    style C fill:#a5d6a7
    style D fill:#81c784
    style E fill:#66bb6a
    style F fill:#4caf50

推荐学习顺序

  1. 第一阶段:基础命令

    • 文件和目录操作
    • 权限管理
    • 文本处理工具
  2. 第二阶段:Shell 脚本

    • Bash 基础
    • 变量和函数
    • 流程控制
  3. 第三阶段:系统管理

    • 进程管理
    • 软件包管理
    • 系统服务
  4. 第四阶段:高级主题

    • 网络配置
    • 安全设置
    • 性能调优

实践建议

1. 虚拟机实践

    # 推荐使用 VirtualBox 或 VMware
# 初学者推荐发行版:
- Ubuntu Desktop(图形界面,易上手)
- Ubuntu Server(命令行,更接近生产环境)
  

2. 在线练习平台

  • OverTheWire:https://overthewire.org/wargames/
  • Linux Journey:https://linuxjourney.com/
  • 实验楼:https://www.lanqiao.cn/

3. 阅读资料

  • 《鸟哥的Linux私房菜》:经典入门教材
  • 《Linux就该这么学》:适合初学者
  • 《UNIX环境高级编程》(APUE):进阶必读
  • 《深入理解Linux内核》:内核开发参考

总结

Linux 不仅仅是一个操作系统,它代表了一种开放、协作、共享的精神。从 Linus 的个人项目到统治现代计算世界的操作系统,Linux 的成功证明了开源模式的力量。

核心要点

  1. 历史传承:Linux 继承了 Unix 的设计哲学
  2. 社区力量:GNU 项目和全球开发者共同构建了生态系统
  3. 技术优势:单内核 + 模块化设计 = 高性能 + 灵活性
  4. 广泛应用:从嵌入式到超级计算机,无处不在
  5. 学习价值:理解 Linux = 理解现代计算基础

下一步

在这个系列中,我们将深入探索:

  • Linux 内核架构
  • 进程和内存管理
  • 文件系统
  • 设备驱动
  • 网络栈
  • Shell 编程
  • 系统管理
  • 性能优化

“Talk is cheap. Show me the code.” — Linus Torvalds

让我们一起深入 Linux 的世界,探索它的奥秘!🚀

系列文章导航

本系列深入探讨 Linux 操作系统的各个方面:

  1. Linux 概述:从 Unix 到开源革命 (当前文章)
  2. Linux 内核架构:操作系统的核心 - 用户空间与内核空间、系统调用、五大子系统
  3. 进程管理:Linux 的生命线 - 进程生命周期、CFS 调度器、进程监控
  4. 文件系统:数据的管理者 - VFS、Ext4、文件权限与管理
  5. Shell 和命令行:Linux 的控制台 - Bash 基础、管道重定向、脚本编程
  6. 日志与监控:系统的体检报告 - 系统日志、性能监控、故障排查
  7. 软件包管理:应用的生态圈 - APT/DNF/Pacman、软件源、依赖管理

参考资源

A winner is just a loser who tried one more time.
Robust AI
使用 Hugo 构建
主题 StackJimmy 设计