Linux 系统编程概述
Linux 系统编程主要介绍 Linux 系统基础、Shell
编程、系统程序设计等内容,其以操作系统、计算机网络、数据结构算法和 C
语言为基础,最终向在生产环境中实现高效、稳定的系统程序的目标迈进。
Linux 系统介绍
Linux 是一种自由、开源的类 Unix 操作系统。Unix 系统最早由 AT&T 公司开发,后来被多家公司进行了改进和扩展,形成了多种不同的 Unix 系统。这一类 Unix 系统并不都是开源的(甚至绝大部分都是闭源的),因此对于 Unix 系统的学习和使用受到了很大的限制。1991 年,Linus Torvalds 出于个人兴趣开始编写一个类 Unix 的操作系统,并于当年写出了第一个版本的内核。从此,Linux 逐渐发展成为一个庞大的开源社区,吸引了全球的程序员参与其中,最终形成了今天的 Linux 系统。
一般的 Linux 系统实际上是指 GNU/Linux 系统,即 Linux 内核与 GNU 工具集合的组合。Linux 内核是 Linux 系统的核心,负责管理硬件资源、提供系统调用接口等。GNU 工具集合则提供了一系列的工具,如 bash
、gcc
、gdb
等,用于完成系统管理、软件开发等任务。另外,Linux 系统具体上还有很多不同的发行版,如 Ubuntu、CentOS、Debian 等,这些发行版在 Linux 内核和 GNU 工具集合的基础上进行了进一步的封装和定制,以适应不同的用户需求。
Linux 与其他操作系统相比最大的特点即是开源、自由。它在 GPL
协议(GNU General Public Licence
)下发布,任何人都可以查看、修改、复制、发布源代码,这使得 Linux 系统具有很高的灵活性和可定制性。
关于开源软件协议
开源软件协议是保护开源软件的法律基础,它规定了开源软件的使用、修改、复制、发布等行为。常见的开源软件协议有 GPL
、BSD
、MIT
等,这些协议在保护开源软件的基础上,又有着不同的约束和限制。
协议 | 衍生作品需开源? | 允许闭源商用? | 专利条款 | 典型项目 |
---|---|---|---|---|
MIT | ❌ | ✔️ | ❌ | React, Ruby on Rails |
GPL | ✔️ | ❌ | GPLv3 有 | Linux, GIMP |
Apache 2.0 | ❌(修改需标注) | ✔️ | ✔️ | Android, Kafka |
BSD 3-Clause | ❌ | ✔️ | ❌ | FreeBSD |
LGPL | 仅修改部分需开源 | ✔️(动态链接) | ❌ | GTK |
在项目中添加 LICENSE
文件并明确标注版权声明。若不确定,可参考 Choose a License 或咨询法律专家。
安装 Linux 系统
目前安装 Linux 系统一般较为简单,有较为丰富的图形化界面和向导,用户只需按照提示进行操作即可。这里着重介绍磁盘分区相关知识。
磁盘分区一般分为两种方式:MBR
和 GPT
。MBR
是传统的磁盘分区方式,最多支持 4 个主分区(主分区指可以引导启动的分区),每个主分区最多支持 2TB 的容量。由于磁盘的发展,GPT
逐渐取代了 MBR
,支持最多 128 个分区,每个分区最多支持 18EB 的容量。在安装 Linux 系统时,一般推荐使用 GPT
分区方式。
分区的目的是为了将磁盘划分为不同的区域,以便于存储不同类型的数据,提高数据的安全性和可靠性。不同分区还可以使用不同的文件系统,以适应不同的需求。Windows 的文件系统一般为 NTFS
、FAT32
等,Linux 的文件系统一般为 ext2/3/4
、xfs
等,macOS 的文件系统一般为 HFS+
、APFS
等。移动设备一般使用 exFAT
文件系统。
常见的 Linux 分区模式为:
/
:根分区,存放系统文件,一般为 20GB 左右。/boot
:启动分区,存放系统引导文件,一般为 200MB 左右。/home
:用户分区,存放用户数据,一般为剩余空间。/swap
:交换分区,用于系统内存不足时的数据交换,一般为内存的 2 倍。/var
:变量分区,存放系统日志、缓存等,一般为 10GB 左右。