什么是 Linux?
Linux 其实是一个操作系统内核,它是 Windows 和 macOS 的“第三种操作系统家族”。
不同组织和社区会在 Linux 内核的基础上做出各种“发行版”(distribution,简称 distro),比如:
- Ubuntu(最常见,适合初学者和服务器)
- Debian(Ubuntu 的“上游”,更稳定)
- Fedora、CentOS、RedHat(企业常用)
- Kali Linux(专门做渗透测试和安全研究的 Linux)
Linux 内核是什么?
- Linux 最原始的东西是 内核 (kernel),1991 年由 Linus Torvalds 发布。
- 内核负责操作系统最底层的功能:
- 管理硬件(CPU、内存、硬盘、网卡等)
- 提供系统调用给用户程序
- 负责进程调度、文件系统、网络等
内核本身并不是一个完整的操作系统,它只是一个核心程序。
为什么要有“发行版 (distribution)”?
如果你只给用户一个裸的内核,其实什么都干不了。
为了让人类方便使用,需要在内核外面打包一整套软件环境,比如:
- 基本命令行工具(ls, cp, mv, vim…)
- 包管理器(apt, yum, pacman…)
- 桌面环境(GNOME, KDE…)
- 驱动程序
- 系统配置
- 文档和更新机制
这些东西 + Linux 内核 组合起来,才是一个真正可用的 Linux 操作系统。而这些组合包就是 Linux 发行版(Linux distributions,简称 distro)。
为什么有这么多发行版?
因为 Linux 是开源的(GPL - general public license协议),任何人都可以在内核基础上定制一套自己的系统,满足不同需求:
- Ubuntu:适合桌面和服务器,简单易用
- Debian:强调稳定性
- RedHat / CentOS / Fedora:面向企业和服务器
- Kali:面向渗透测试和安全研究
- Arch Linux:极度自由,用户自己配置一切
这就像大家都拿到一块“发动机”(Linux 内核),然后不同厂商自己造车身、内饰,形成不同的车型(发行版)。
发行版的作者是谁?
Linux 内核:Linus Torvalds 发起,但现在是全球开发者社区一起维护(成千上万人贡献代码)。
发行版 (distro):是不同的组织或公司基于内核做的整合。比如:
- Ubuntu:由 Canonical 公司开发和维护
- Debian:由 Debian 社区维护(志愿者组织)
- Fedora/RedHat/CentOS:由 Red Hat 公司维护
- Kali Linux:由 Offensive Security 公司维护
- Arch Linux:由社区志愿者维护
它们都基于同一个 Linux 内核,但围绕内核打包了不同的软件组合和工具。
这些发行版源码开放吗?
- 内核本身:开源(GPL 协议)。
- 发行版的软件:大部分开源(GNU 工具链、桌面环境、驱动程序等),但有些可能打包了闭源组件(比如显卡驱动)。
- 所以,你可以自由下载源码,甚至自己组装一个属于自己的发行版(有个项目叫 Linux From Scratch 就是教你这么干)。
“原生的 Linux”可以直接用吗?
可以,但很难。
- 你可以从 kernel.org 下载最新的内核源码(就是 Linus 和内核社区维护的“原生 Linux”)。
- 但你需要自己手动编译、安装,还要配套加上所有常用软件,否则你只能得到一个“能启动但几乎没法用”的最小系统。
- 对一般用户和初学者来说,这太麻烦,所以才需要发行版。
Linux 内核开源代码在哪里?
- 官方网站:https://www.kernel.org
- Git 仓库(Linus 维护):https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
- GitHub 上也有镜像:https://github.com/torvalds/linux
你完全可以去看源码,甚至参与贡献。但要注意:那是内核源码,和 Ubuntu/Kali 这种“完整系统”不是一回事。
内核 vs 软件环境
你可以把操作系统分成两层:
- 内核 (kernel):最底层,直接跟硬件打交道(CPU/内存/硬盘/网络)。
- 用户空间 (user space):内核之上的环境,包括:
- Shell(命令解释器)
- 常用命令(ls, cp, mv, vim…)
- 包管理器(apt, yum…)
- 图形界面(GNOME, KDE)
区别在于:
- 内核是发动机,只能让机器“跑起来”。
- 用户空间是车身+驾驶舱,让你能“开车、坐车”。
OS 和 App 的区别
可以这么理解:
- OS (操作系统) = 内核 + 基础软件环境
- App (应用程序) = 用户额外安装的软件(浏览器、游戏、IDE…)
没有 App 的 OS:
- 你还能启动电脑,但只能在命令行输入指令。
- 就像一个新买的手机,只有系统自带的设置,没有微信/Instagram 之类的软件。
- 举例:刚装完最小化的 Ubuntu,你会看到黑屏终端,啥图形界面都没有,但能用命令
ls,cd来操作文件。
Shell 的历史
- 1969 Unix:最早的 Unix 系统,Ken Thompson 写了第一个 shell(Thompson Shell)。
- 1977 Bourne Shell (sh):Unix 的标准 shell,由 Steve Bourne 开发。
- 1989 Bash:GNU 项目写了一个兼容 Bourne Shell 的改进版,叫 Bourne Again SHell (bash),功能更强大,从此成为 Linux 默认 shell。
- 后来又有了很多其他 shell:
zsh(更炫酷),fish(交互更好),但 bash 仍然是教学和服务器上的默认标准。
BASH 是什么
- Bash (Bourne Again SHell):Linux/Unix 系统里最常见的 shell(命令行解释器)。
- Shell 的角色:人和内核之间的“翻译官”。
- 你输入
ls→ Shell 把它翻译成系统调用 → 内核执行 → 返回结果。
- 你输入
Windows 的 PowerShell 和 macOS 的 Terminal
- Windows PowerShell:Windows 提供的 shell(支持命令行+脚本),用的是 Windows API,而不是 Linux 内核。
- macOS Terminal:其实就是运行一个 Unix Shell(默认 zsh,之前是 bash)。因为 macOS 内核本身是基于 Unix 的 Darwin 内核,所以命令和 Linux 很像。
所以:
- Linux/Kali/Ubuntu → 默认 shell = bash/zsh
- macOS → 默认 shell = zsh(历史上是 bash)
- Windows → 默认 shell = PowerShell(但可以安装 WSL 用 bash)
- 内核 = OS 的核心,只管硬件和系统调用。
- 发行版 = 内核 + 软件环境(命令、桌面、工具),让 OS 可用。
- App = 你在 OS 上安装的额外程序。
- Shell = 人和 OS 的接口,Linux 常用 bash,Windows 用 PowerShell,macOS 默认 zsh。
- Bash 的地位就像英语里的“普通话版本”,大多数 Linux 教程都以它为准。