Slackware Loongarch64 中文手册
  • 翻译说明
    • 贡献力量
  • 前言
    • 目标读者
    • 为什么会有一版新的 Slackware 手册?
    • 本书中使用的约定
    • 致谢
  • Slackware 介绍
    • 为何使用 Slackware?
    • 与其他 Linux 发行版的差异
    • 许可
  • 安装
    • 从安装介质启动
    • 分区
    • 安装程序
      • Help
      • Keymap
      • Addswap
      • Target
      • Source
      • Select
      • Install
      • Configure
  • 引导
    • mkinitrd
    • 引导器
      • LILO
      • GRUB2
    • 多重引导
      • 引导多个分区
      • 引导多个硬盘
  • 基本 Shell 命令
    • 系统文档
    • 处理文件和目录
      • 列出文件和目录内容
      • 在文件系统中移动
      • 文件和目录的创建与删除
    • 归档和压缩
      • zip、unzip
      • gzip
      • bzip2
      • XZ、LZMA
      • tar
    • 阅读文档
      • more
      • less
    • 链接
  • Bourne Again Shell
    • 什么是 Shell?
    • 环境变量
    • 通配符
    • TAB 键补全
    • 输入、输出重定向
    • 任务管理
    • 终端
    • 制定
  • 进程控制
    • ps
    • kill 和 killall
    • top
    • 计划任务
  • X 视窗系统
    • X 是什么?
    • 配置 X 服务器
    • 选择窗口管理器
    • 设置图形界面登陆
  • 打印
    • 选择打印程序
    • 获取驱动
    • 在 CUPS 中设置打印机
    • 从命令行打印
      • 打印格式化数据
  • 用户和组
    • 用户和组是什么?
    • 管理用户和组
    • 管理用户和组的其他工具
    • 手动管理用户和组
  • 文件系统权限
    • 权限概述
    • chmod、chown 和 chgrp
    • SUID、SGID 和粘滞位
  • 使用文件系统
    • 文件系统的层次
    • 本地文件系统类型
      • ext2
      • ext3
      • ext4
      • reiserfs
      • XFS
      • JFS
      • iso9660
      • vfat
      • swap
    • 使用 mount 指令
    • 网络文件系统
      • NFS
      • SMB
  • vi
    • vi 是什么?
    • vi 的不同模式
    • 打开、保存和退出
    • 移动光标
    • 编辑文本
    • vi 小纪
  • Emacs
    • Emacs 是什么?
    • 起步
    • 移动光标
    • 获得帮助
    • 调用函数
    • Emacs 小纪
  • 网络
    • netconfig
    • 手动配置
    • 使用 rc.inet1.conf 自动配置网络
  • 无线网络
    • iwconfig
    • 有线等(无)效保密
    • Wifi 登陆保护
      • 再看 rc.inet1.conf
    • wicd
  • 基本网络工具
    • 网络诊断工具
      • ping
      • traceroute
      • telnet
      • ssh
      • tcpdump
      • nmap
      • host
      • dig
      • finger
    • 网页浏览器
      • lynx
      • links
      • wget
    • 邮件客户端
      • pine
      • mutt
      • mailx
    • FTP 客户端
      • ftp
      • ncftp
      • lftp
    • rsync
  • 包管理
    • pkgtool
    • 软件包的安装、移除和升级
    • 软件包的压缩格式
      • slackpkg
      • rpm2tgz
  • 追踪系统更新
    • 稳定分支
    • 订阅安全更新邮件列表
    • 升级 Slackware 版本
  • Linux 内核
    • 内核是做什么的?
    • 设置内核模块
    • 编译以及为什么要编译内核
由 GitBook 提供支持
在本页
在GitHub上编辑
  1. Linux 内核

设置内核模块

现代 linux 内核的复杂度是惊人的。 内核源码在未压缩的情况下有将近 400MB 大小。有成千上万的开发者为内核贡献代码,内核中有数以百计编译的选项,如果把这些都编译到一起,仅内核的大小都将会很快超过 100MB。为了防止内核容量过大(同时也防止内核所占用的 RAM 过多),大多数内核选项是作为模块(modules)被构建的。你可以把这些模块看做设备驱动程序,它们可以从运行中的内核上被随意添加或移除。但事实上,它们中的许多根本不是驱动程序,但是却包含了诸如网络协议,安全措施,甚至对文件系统的支持等内容。总之,几乎 linux 内核中任何一个部分都可以被构建成一个可加载模块。

我们需要认识到 Slackware 将为您自动处理大多数模块的加载。当您的系统启动时,udevd 已经启动并开始查找您的系统硬件。对于找到的每个设备,它都会自动加载适当的内核模块并在 /dev 下创建一个设备节点(device node)。这通常意味着你将不需要自己手动加载任何模块就可以使用您的计算机,但是有时候手动加载也是必要的。

那么,我们该如何知道什么模块当前加载我们的计算机上以及我们如何加载和卸载它们?幸运的是我们拥有一套完整的处理这个问题的工具。正如你可能已经猜到的那样,列出模块的工具是 lsmod 。

root@slackwarecn:~# lsmod
Module                  Size  Used by
cfg80211              458399  0
8021q                  28415  0
garp                    9059  1 8021q
stp                     2997  1 garp
mrp                    11318  1 8021q
llc                     7021  2 stp,garp
rfkill                 27245  1 cfg80211
efivarfs               14057  1
... many more lines ommitted ...

除了向您展示哪些模块被加载外,它还展示了每个模块的大小并告诉你有哪些其他模块正在使用这个模块。

我们有两个负责加载模块的应用程序:insmod 和 modprobe 。它们两个都可以加载模块并且报告任何错误(例如加载了一个系统中不存在的设备的模块),但我们首选 modprobe,因为它可以加载任何模块的依赖关系。这两个应用程序中的任何一个都可以被直接使用。

root@slackwarecn:~# insmod /lib/modules/6.3.0/kernel/fs/fat/fat.ko
root@slackwarecn:~# modprobe vfat
root@slackwarecn:~# lsmod |grep fat
vfat                   13779  0
fat                    74203  1 vfat

移除一个模块是一个棘手的过程,这里我们也有两个工具来移除模块:rmmod 和 modprobe 。使用 modprobe 的 -r 参数可以移除一个模块。

root@slackwarecn:~# rmmod vfat
root@slackwarecn:~# modprobe -r fat
root@slackwarecn:~# lsmod |grep fat
上一页内核是做什么的?下一页编译以及为什么要编译内核

最后更新于1年前