Linux 学习总结
引子
笔者接触 Linux 已有 6 年之久。第一次接触的 Linux distro(下文称发行版)是Raspberry Pi OS
(以前叫Raspbian
),基于Debian Jessie
(也就是Debian 8
)。后来知识面扩展,又接触了Debian
、Ubuntu
、CentOS
、Arch Linux
等发行版。本文仅代表笔者粗浅的理解,如有错误还请读者给予斧正。
什么是 Linux?
Linux 一词在不同语境有不同的意思。如果一个人说"我在用 Linux",那么这一词应理解为"Linux 发行版"或者"Linux 系统";如果某个系统宣称"我们基于 Linux",应理解为"Linux 内核"。
那么,什么是 Linux 系统?Linux 发行版又是什么?Linux 内核又代表什么呢?
笔者先从最核心开始说起:Linux 内核。Linux 内核是整个"系统"的核心,由它来负责与下层硬件进行通信,调控 CPU,RAM,Bus 等系统资源;如果用汽车来打比方,那么 Linux 内核的地位就相当于发动机:没有发动机对传动轴等等部件进行驱动,那这辆车肯定是开不动的。(这个比方笔者感觉打的不好...)
然后,Linux 系统。笔者的理解是,Linux 内核+外围软件,就可以称之为 Linux 系统。还是那个汽车的比方:如果整车只有底盘和发动机,没有转速表、方向盘、刹车油门等等输入输出(I/O)设备,那这辆车一定开不起来。表现到 Linux 系统上,就是内核(kernel)、系统管理进程(init)、交互式人机界面(也叫外壳,shell)以及一些实用的程序组合在一起,就变成了一个可用的 Linux 系统。
最后,Linux 发行版。就像汽车可以改装一样,Linux 系统也可以改装:你可以往仪表盘上加一个转速表,也可以在 Linux 中安装一个htop
(一款 TUI 系统监视器软件);你可以改掉汽车的中控系统,也可以在 Linux 中把systemd
替换成sysvinit
;方向盘、座椅等等可以换成更好的,Linux 中也可以用zsh
来替换bash
...就是这样的自定义(customization)过程,催生出了各种各样的 Linux 发行版。
Linux 和 Windows 的区别在哪?
Linux 内核是由Linus Torvalds
开发的一款开源操作系统内核,而 Windows 由Microsoft
开发,是一款闭源且收费的操作系统。笔者不从技术角度出发,单纯比较两个系统在使用方面上的差异。
Windows 对于图形用户界面(GUI)的支持很好,而 Linux 在图形界面(X11/Wayland)上还有所欠缺。
Windows 对本地化(localization)的支持较好虽然有一部分能看出来是机翻,Linux 对本地化的支持相对较差(某些发行版支持还算过得去吧)。
Linux 比较依赖命令行(毕竟服务器用的多),而 Windows 可以通过图形界面操作大部分常用功能,较为简便。
Windows 支持 3A 大作,而 Linux 不支持(滑稽)。
技术方面就更多了:宏内核 vs 微内核、POSIX vs NT、可执行文件格式、架构支持...由于笔者水平有限,就不在这里妄加评论了。
架构支持
Linux 内核支持多种架构,具体可以去内核源码目录arch/
下查看。
比较常用的有这些:
架构 | 简介 |
---|---|
x86_64 | 英特尔/AMD 的 64 位处理器架构 |
arm | 32 位 arm 架构 |
arm64 | 64 位 arm 架构 |
i386 | 32 位英特尔架构 |
mips | MIPS 公司的架构,AR93xx/MT76xx 这类处理器很喜欢用 |
mips64 | 同上,但是 64 位 |
RISC-V | 开源 RISC 架构 |
其中笔者较为熟悉的 arm 架构还有各种变种: armv5,armv6,armv7,armv7l,armv8...
而且关系还比较混乱,armel,armhf,aarch64...
至于其它架构,笔者对其了解还不够,这里不再介绍。
常用发行版
这里列几个笔者用过的发行版:
发行版 | 胡言乱语 |
---|---|
Debian | 最喜欢的发行版 |
Ubuntu | 还行,装 NVIDIA 驱动很方便 |
Arch Linux | 大佬专用,有助于学习系统急救知识 |
CentOS | 老东西早该爆金币了 |
Fedora | 浅尝辄止 |
Windows | 呐呐,说的是 wsl 啦 |
烂尾
想到什么再写吧...