内核是操作系统的一部分,负责协调硬件和软件组件之间的交互。在大多数系统中,它在启动时由引导加载程序加载,并处理I/O请求以及键盘、显示器、网络适配器和扬声器等外围设备。通常,内核负责内存管理、进程管理、设备管理、系统调用和安全。
应用程序使用系统调用机制向操作系统请求服务,大多数情况下,这个请求通过操作系统提供的库传递给内核,以调用相关的内核函数。当内核执行这些底层任务时,它驻留在内存的一个单独部分,称为受保护的内核空间,应用程序和系统的其他部分无法访问。相比之下,浏览器、文本编辑器、窗口管理器或音视频播放器等应用程序使用内存的另一个单独区域,即用户空间。这种分离防止用户数据和内核数据相互干扰并导致不稳定和速度变慢,同时也防止运行不正常的应用程序使整个操作系统崩溃。
由于管理系统调用和资源的方式不同,存在着不同的内核设计。例如,宏内核为了速度将所有操作系统指令运行在同一地址空间,而微内核为了模块化在不同的空间运行用户和内核服务。除此之外,还有混合内核、纳内核和外内核。混合内核架构基于结合微内核和宏内核的特点。
Linux内核是开源的、宏内核的、类Unix操作系统内核,用于Linux发行版、各种嵌入式系统(如路由器)以及所有基于Android的系统。Linus Torvalds于1991年构思并创建了Linux内核,至今仍有成千上万的开发者在开发它。它是自由开源软件的突出例子,也用于其他自由软件项目 ,尤其是GNU操作系统。
尽管基于Linux的操作系统主导了大部分计算领域,但它仍然存在一些在Linux早期就有争议的设计缺陷。例如,与其他类型的内核相比,它具有最大的占用空间和最高的复杂性。但这是宏内核固有的设计特征。这些设计问题促使开发者为Linux内核添加了其他内核没有的新功能和机制。
与标准宏内核不同,Linux内核也是模块化的,接受可加载内核模块(LKM),通常用于添加新硬件支持(作为设备驱动程序)和/或文件系统,或添加系统调用。由于LKM可以在运行时加载和卸载到系统中,它们具有无需重启和重新编译就能扩展内核的优势。因此,模块提供的内核功能在不使用时不会占用内存,相关模块可以卸载以释放内存和其他资源。
可加载内核模块位于Linux的/lib/modules目录下,扩展名为.ko(内核对象)。可以使用lsmod命令列出已加载的内核模块,使用modprobe或insmod/rmmod加载或卸载内核模块。insmod/rmmod用于独立于modprobe的模块,无需安装到/lib/modules/$(uname -r)。
以下是一个简单的Linux内核模块示例,在加载和卸载时打印消息。使用Makefile构建和安装模块的步骤如下。
make # 构建
sudo make install # 安装
sudo modprobe lkm_example # 加载
sudo modprobe -r lkm_example # 卸载
下面使用dmesg命令检索内核的消息缓冲区。
[16994.295552] [+] Example kernel module loaded.
[16996.325674] [-] Example kernel module unloaded.
kmon提供了一个基于文本的用户界面,用于管理Linux内核模块和监控内核活动。管理指的是加载、卸载、黑名单和显示模块信息。可以通过kmon的实时活动监视器跟踪内核模块的这些更新、硬件日志和其他内核消息。由于Linux中这些任务需要使用不同的工具,如dmesg和kmod,kmon旨在将它们集中在一个终端窗口中,尽可能简化使用,同时保持功能性。 kmon 使用 Rust 编写,并使用 Ratatui 和 termion 库实现其基于文本的用户界面。
如果已安装 Rust,可以使用 Cargo 从 crates.io 安装 kmon。
cargo install kmon
最低支持的 Rust 版本 (MSRV) 为 1.70.0。
可以从 Arch Linux 官方仓库 安装 kmon。
pacman -S kmon
AUR 上也有开发版本的软件包。使用你喜欢的 AUR 助手 进行安装。例如,
paru -S kmon-git
可以使用 Nix 包管理器 从 nixpkgs-unstable 频道安装 kmon。
nix-channel --add https://nixos.org/channels/nixpkgs-unstable
nix-channel --update nixpkgs
nix-env -iA nixpkgs.kmon
在 NixOS 上:
nix-channel --add https://nixos.org/channels/nixos-unstable
nix-channel --update nixos
nix-env -iA nixos.kmon
kmon 可用于 Alpine Edge。在启用 community 仓库 后,可以通过 apk 安装。
apk add kmon
docker run -it --cap-add syslog orhunp/kmon:标签名
docker build -t kmon .
docker run -it --cap-add syslog kmon
wget https://github.com/orhun/kmon/releases/download/v[版本]/kmon-[版本]-x86_64-unknown-linux-gnu.tar.gz
wget https://github.com/orhun/kmon/releases/download/v[版本]/kmon-[版本]-x86_64-unknown-linux-musl.tar.gz
tar -xvzf kmon-*.tar.gz
cd kmon-[版本]
./kmon
将二进制文件移动到 /usr/local/bin/,以便从终端使用 kmon 命令运行它。
手册页和 shell 补全在构建时生成于 target 目录中。
应安装 libxcb 以使用 X11 的复制/粘贴命令。
例如:对于 Debian/Ubuntu* 安装 libxcb1-dev 包,对于 Fedora/openSUSE/Void Linux 安装 libxcb-devel 包。
kmon [选项] [命令]
-a, --accent-color <颜色> 设置强调色,使用十六进制值或颜色名称 [默认: 白色]
-c, --color <颜色> 设置主色,使用十六进制值或颜色名称 [默认: 深灰色]
-t, --tickrate <毫秒> 设置终端刷新率 [默认: 250]
-r, --reverse 反转内核模块列表
-u, --unicode 使用Unicode符号显示区块标题
-h, --help 打印帮助信息
-V, --version 打印版本信息
sort 排序内核模块
kmon sort [选项]
选项:
-s, --size 按大小排序模块
-n, --name 按名称排序模块
-d, --dependent 按依赖模块数量排序模块
-h, --help 打印帮助信息
[?], F1 | 帮助 |
右/左, h/l | 在区块间切换 |
上/下, k/j, alt-k/j | 上下滚动 [选中的区块] |
pgup/pgdown | 上下滚动 [内核活动] |
</> | 上下滚动 [模块信息] |
alt-h/l | 左右滚动 [内核活动] |
ctrl-t/b, home/end | 滚动到顶部/底部 [模块列表] |
alt-e/s | 展开/收缩选中的区块 |
ctrl-x | 更改区块位置 |
ctrl-l/u, alt-c | 清除内核环形缓冲区 |
[d], alt-d | 显示依赖模块 |
[1]..[9] | 跳转到依赖模块 |
[\], tab, backtab | 显示下一个内核信息 |
[/], s, enter | 搜索内核模块 |
[+], i, insert | 加载内核模块 |
[-], u, backspace | 卸载内核模块 |
[x], b, delete | 将内核模块加入黑名单 |
ctrl-r, alt-r | 重新加载内核模块 |
m, o | 显示选项菜单 |
y/n | 执行/取消命令 |
c/v | 复制/粘贴 |
r, F5 | 刷新 |
q, ctrl-c/d, ESC | 退出 |
运行终端UI时按 '?' 键查看快捷键。

使用 方向键 在区块间导航和滚动。

某些内核消息可能太长而无法完全显示在内核活动区块中,因为它们没有自动换行。在这种情况下,可以使用 alt-h 和 alt-l 键水平滚动内核活动。垂直滚动机制与其他区块相同。

使用 alt-j 和 alt-k 键可以慢速滚动内核活动和模块信息区块。

m 和 o 键可用作内核管理操作的快捷键。按下时,将提供一个选项菜单用于管理当前选中的内核模块。

使用 alt-e 和 alt-s 键可以展开/收缩选中的区块。

使用 ctrl-x 键可以更改区块的位置。

使用 \, tab, backtab 键之一切换内核发行版、版本和平台信息。

选中时显示内核模块的状态。

使用 d, alt-d 键之一显示选中模块的所有依赖模块。

要从父模块跳转到依赖内核模块,可以使用 数字键 (1-9) 指定 Used By 列中模块的索引。

使用方向键或 /, s, enter 键之一切换到搜索区域,并输入模块名称的搜索查询。

要向Linux内核添加模块,使用 +, i, insert 键之一切换到加载模式,并提供要加载的模块名称。然后使用 y/n 确认/取消执行加载命令。

用于加载模块的命令:
modprobe <模块名称> || insmod <模块名称>.ko
使用 -, u, backspace 键之一从Linux内核中移除选中的模块。

用于移除模块的命令:
modprobe -r <模块名称> || rmmod <模块名称>
列入黑名单是一种阻止内核模块加载的机制。要将所选模块列入黑名单,请使用 x、b、delete 键之一并确认执行。

用于将模块列 入黑名单的命令:
if ! grep -q <模块名称> /etc/modprobe.d/blacklist.conf; then
echo 'blacklist <模块名称>' >> /etc/modprobe.d/blacklist.conf
echo 'install <模块名称> /bin/false' >> /etc/modprobe.d/blacklist.conf
fi
使用 ctrl-r 或 alt-r 键重新加载所选模块。

用于重新加载模块的命令:
modprobe -r <模块名称> || rmmod <模块名称> && modprobe <模块名称> || insmod <模块名称>.ko
可以使用 ctrl-l/u、alt-c 键之一清除内核环形缓冲区。

dmesg --clear
c/v 键用于复制/粘贴操作。

在输入模式下使用 ctrl-c/ctrl-v 进行复制和粘贴。
可以使用 sort 子命令按名称、大小或依赖模块对内核模块进行排序。
kmon sort --name
kmon sort --size
kmon sort --dependent

同时,-r, --reverse 标志用于反转内核模块列表。
kmon --reverse

kmon 默认使用终端的颜色, 但可以通过 -c, --color 选项指定高亮颜色。另外,可以通过 -a, --accent-color 选项设置默认文本颜色。
支持的终端颜色有 黑色、红色、绿色、黄色、蓝色、洋红色、青色、灰色、深灰色、浅红色、浅绿色、浅黄色、浅蓝色、浅洋红色、浅青色、白色。
kmon --color red

提供要使用的颜色的十六进制值。
kmon --color 19683a

在某些具有透明度的主题上,默认文本颜色可能会导致可读性问题。可以使用 -a, --accent-color 选项,类似于 -c, --color 选项,来解决此问题。
kmon --color 6f849c --accent-color e35760

使用 -u, --unicode 标志显示块标题的 Unicode 符号。
kmon --unicode

-t, --tickrate 选项可用于以毫秒为单位设置终端 UI 的刷新间隔。

kmon 的目标是成为一个标准的 Linux 内核管理工具,同时支持大多数 Linux 发行版。
为实现此目标,kmon 应该可以从不同的包管理器(如 Snap* 和 RPM)访问。
系统需要有如 dmesg 和 kmod 等基本工具,以便 kmon 能按预期工作。因此,下一步将是仅使用系统资源来实现这些功能。
kmon 应该能够执行有关 Linux 内核的管理操作,以最大限度地减少对命令行和其他工具的依赖。
应在不同的架构上测试和报告 kmon,以进一步开发和支持。
| Fedora 31 | Debian 10 | Manjaro 19 |
|---|---|---|
![]() | ![]() | ![]() |
| Ubuntu 18.04 | openSUSE | Void Linux |
|---|---|---|
![]() | ![]() | ![]() |
通过在GitHub赞助上支持我来支持我项目的开发。
GNU通用公共许可证(3.0)
版权所有 © 2020-2024,Orhun Parmaksız


AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频


实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。


选题、配图、成文,一站式创作,让内容运营更高效