kisshoz | 个人博客

2026-03-23

从0开始的linux生活

标签: linux.code 知识

我为什么要学linux

进入大学后,我一直认为我要学习计算机,这是这个时代最重要的通识课之一。除了通过在学校学习,我完全可以自学。
其实Windows完全可以满足我的电脑使用需求,但这是不能满足我的求知心的。准确来说,Windows让我不能刨根问底地学习计算机知识。
所以我在大一升大二的暑假把我的操作系统换成了Arch Linux。
如何安装linux不是这篇文章的重点,我想写的重点是什么是linux,如何学习linux。

前置知识

接下来我将快速介绍linux。

历史

先给出我个人总结的言论:Linux的父亲是Minix,而Minix的父亲是UNIX。

UNIX是上世纪六七十年代搞出来的多用户操作系统,那为什么我们现在用的不是UNIX呢?那是因为一开始UNIX大规模推广时期,价格低廉。但随着拥有者认识到了UNIX的商业价值之大,资本的贪婪与版权纠纷导致UNIX逐渐走向封闭与昂贵,变得只有那些大企业的主机才用得起。

接着我们来说Minix,因为UNIX实行核心代码闭源化,荷兰阿姆斯特丹自由大学计算机科学系的Prof. Andrew S. Tanenbaum自行开发了与UNIX兼容的操作系统MINIX(mini-UNIX)以供教学UNIX。这就是Minix。

芬兰大学生Linus Torvalds使用过Minix后,对Minix只允许在教育上使用很不满(在当时MINIX不允许被用作任何商业使用),于是他便开始写他自己的操作系统,并将其开源。这就是后来的Linux内核。

linux

所以在一开始linux指的是linux内核,如今我们我们所认知的linux系统应该叫GNU/Linux发行版。

为什么要加个GNU呢?这就要了解linux系统的构成了。

  • GNU 计划 (1983年起):由Richard Stallman发起,目标是创建一个完全自由的、类似Unix的操作系统。到了1990年代初,GNU已经完成了几乎所有核心组件:C 语言编译器 (GCC)、C 标准库 (glibc)、Shell (Bash) 以及核心工具包 (Coreutils)。但他们唯独缺少一个能用的内核(他们的内核项目GNU Hurd进展缓慢)。
  • Linux 内核 (1991年):芬兰大学生Linus Torvalds写出了一个统一操控电脑硬件的linux内核。但他只有内核,没有软件跑在上面。

答案显而易见了,linux内核与GNU计划的工具一拍即合这就形成了linux系统。

那为什么是发行版呢? GUN计划提供的工具加上linux内核所组成的操作系统,对于我们普通人来说使用起来很不友好。
这符合绝大数人对linux的刻板印象:卧槽,开机只有黑乎乎的命令行,我怎么用啊?
所以linux就分化出了不同的发行版,像Ubuntu,Debian,Arch Linux等等。
本质上是各大社区或厂商选择了不同的初始软件套件、包管理机制以及桌面环境,以适应不同的应用场景。

我如何学习linux

以前逛知乎,看过类似的问题:如何学习linux。
有一个回答让现在的我深感认同,那就是去用。
你可以像我一样直接梭哈linux,或者只是开个wsl2。
重要的是真的用起来,打开终端敲起命令。

发行版

我以前用过一段时间Ubuntu,但是因为他预装了桌面,让我感觉与用Windows并无两样,所以很快就抛弃了。
目前我使用的是Archlinux。
所以如何选择适合自己的linux发行版呢?
(我选择Archlinux,绝对不是因为有人说这是男梁标配,更不可能是想认识男梁)

linux laught
linux梗图一张,哈哈哈
那就先说一说我为什么选择Archlinux吧。最初当然是在逛知乎时,被传教了~~悲
不过最终让我决定选择它的原因是,Arch Linux所宣称的arch哲学:Keep It Simple, Stupid。主要有以下几点:

  • 简洁:避免任何不必要的添加、修改和复杂化的增加;
  • 现代化:采用滚动更新的方式,尽全力使软件处于最新的稳定版本;
  • 实用性:仓库中既提供了开源、自由的软件,也提供了闭源软件。尽力避免意识形态之争;
  • 以用户为中心:本发行版是为了满足贡献者的需求,而不是为了吸引尽可能多的用户。Arch Linux 适用于乐于自己动手的用户,因为他们往往更愿意花时间阅读文档,解决自己的问题。
  • 通用性:提供官方仓库,同时还有一个用户仓库,用户可自行贡献软件包。目前支持 x86-64 架构。

所以吸引我的是第一点,这意味着我可以以最大的自由来选择自己的软件,来组成自己的操作系统。
这有利于我对linux本质的理解,,至少那时我是这样认为的。

我用过的linux只有三种Ubuntu,Debian,Arch Linux。
我认为初见一款linux发行版,需要了解包管理器,服务管理方式以及文件系统。
看过不少软件的linux下载方式默认都是直接apt install。
但是不同的linux发行版有不同的包管理器。
Debian / Ubuntu 系是apt,Red Hat / Fedora / CentOS 系是rpm,我使用的Arch Linux是pacman等等。
还需要了解如何管理后台服务,掌握systemctl命令。systemctl是systemd这个现代Linux初始化系统(init system)的核心控制命令
写到这,我突然觉得linux桌面至今无法大规模普及的原因之一就是分裂成了这么多的发行版。导致许多商业公司懒得为linux做软件适配,资本认为这是得不偿失的,这更加导致个人桌面端的使用的糟糕体验。
但与此同时,这也造就了一个百花齐放的局面,促生了许多优秀技术,优秀软件的产生。

linux文件系统

linux最大的特点就是,“一切皆文件”。
所以想要了解linux,就要明白这句话在说什么。
linux内核把所有的硬件设备、系统进程、网络连接,都抽象成了“文件”的接口。

linux file
我的linux根目录

以我的linux根目录来解释一些重要的文件夹:

  • usr(Unix System Resources):这是系统中最庞大的目录。通过包管理器安装的绝大多数软件都存放在这里。它被设计为只读的。
  • bin(Binaries):存放所有用户可执行的命令。比如我敲的 ls、pacman、vim 都在这里。
  • sbin:存放系统管理员使用的命令,通常需要 root 权限。
  • lib/lib64:存放系统和软件运行所需的动态链接库(Libraries,后缀为.so),需要C语言相关知识。
  • etc(Etcetera):系统级全局配置文件的所在地。
  • home:普通用户的家目录。所有个人文件、下载内容,以及用户级配置文件都在这里。
  • root:超级管理员(root)的家目录。
  • dev(Devices):硬件设备的映射。硬盘(/dev/nvme0n1)、显卡(/dev/nvidia0)都在这里。
  • proc(Processes):内核状态和进程信息的映射。查看CPU信息(/proc/cpuinfo)或进程状态。
  • sys(Sysfs):现代Linux管理硬件的接口。可以在这里读取硬件状态(如温度)或控制硬件(如屏幕亮度)。
  • opt(Optional):存放第三方、非官方仓库的庞大软件。
  • tmp(Temporary):存放临时文件。
  • srv(Service):存放本机提供的服务数据。一般是服务器linux才会用到。
  • 注:Arch Linux 是最早推进 /usr 合并的发行版之一。现在根目录下的 /bin/sbin/lib 其实都是指向 /usr 对应目录的快捷方式(软链接)。

总的来说,了解即可,日常使用时千万不要在这里操作哈哈哈。

我在linux.code写什么

我对linux很感兴趣,觉得是很优雅的操作系统。
linux内核又是用C语言写的,所以该分类就写一些我学习到的linux与C语言知识。

总结

草率地过了一遍linux知识,但linux远远并不是看起来那么简单。
其中蕴含的智慧,需要很长时间消化。希望自己能够继续探索下去吧。

参考网站