模块
没有模块,内核就没有多大用处。
模块有效地打开与硬件通信所需的驱动程序,而不会消耗所有系统内存。
模块还向内核添加功能,例如与外围设备通信、管理文件系统、安全性等。
使用以下命令在内核中列出、添加和删除模块:
- lsmod 列出所有当前加载的内核模块。
- insmod 将内核模块加载到正在运行的内核中。
- rmmod 从正在运行的内核中卸载模块。
在一些简单命令的帮助下,Linux 内核可以非常灵活。
当前内核
Linux 内核经常更新,但并非所有 Linux 发行版都包含最新内核。
我们可以从 kernel.org 免费下载不同版本的 Linux 内核并自行编译。
编译 Linux 内核的任务最好留给那些真正知道自己在做什么的人。
错误编译的内核可能导致系统无法启动。
因此,除非我们准备好深入研究在此级别上编译代码的挑战性任务,否则请使用随我们选择的发行版发布和更新的默认内核。
内核在哪里?
如果我们打开终端窗口并执行命令 ls /boot ,我们将看到一个名为 vmlinuz-VERSION 的文件(其中 VERSION 是版本名称或者编号)。
vmlinuz 文件是实际的可引导 Linux 内核,z 表示内核是压缩的——所以我们用 vmlinuz 代替了 vmlinux。
在该 /boot 目录中是其他重要的内核文件,例如 initrd.img-VERSION、system.map-VERSION 和 config-VERSION(其中 VERSION 是名称或者版本号)。
这些其他文件用于以下目的:
- initrd :用作提取和执行实际内核文件的小型 内存 磁盘。
- system.map :在内核加载之前用于内存管理。
- config :指示内核加载哪些选项和模块。
模式
在我们解释内核是什么之前,理解用户模式和内核模式这两个术语很重要。
用户模式是在执行代码时无法直接访问硬件或者参考内存。
要访问硬件和内存,在用户模式下运行的代码必须将指令委托给系统应用程序编程接口。
内核模式是指在执行代码时可以不受限制地访问所有硬件——它是为操作系统最受信任的功能保留的。
什么是内核?
每个操作系统都有一个内核。
Windows、macOS、iOS、Android、Chrome OS 和 Linux 都有一个低级系统,负责将所有应用程序与计算机的物理硬件连接起来。
没有内核,任何应用程序都无法使用物理计算机; Firefox、Chrome、LibreOffice 或者 Outlook 等应用程序将无法运行。
内核还负责允许进程使用所谓的进程间通信来交换信息。
有(一般来说)三种类型的内核:
- 单片内核:这些内核包括 CPU、内存、IPC、设备驱动程序、文件系统管理和系统服务器调用。
它还负责将可用的系统内存移交给应用程序。这些类型的内核通常更擅长访问硬件和多任务处理。
- 微内核:微内核采用极简主义的方法,只管理 CPU、内存和 IPC。
- 混合内核:混合内核能够决定在用户模式或者内核模式下运行什么。虽然这提供了两全其美的方法,但它需要硬件制造商提供更多的东西来创建驱动程序,以便在运行的代码和硬件之间建立接口。
Linux 使用开源的单体内核,而 macOS 和 Windows 都使用混合内核。
Linux 内核由 Linus Torvalds 于 1991 年构思。
直到今天,Torvalds 仍然是 Linux 内核的主要开发人员,而来自世界各地的开发人员为 Linux 内核做出了贡献。
事实上,据估计,自 2005 年开始跟踪以来,来自 1,000 多家的近 10,000 名开发人员为 Linux 内核做出了贡献。
内核充当硬件和软件之间的交通警察
对于普通用户和非铁杆粉丝来说,Linux 是一个操作系统。
然而,对于纯粹主义者来说,Linux 的名称是为驱动操作系统的内核保留的。
