From: Felix Lee Date: Thu, 14 Sep 2023 13:11:14 +0000 (+0800) Subject: revised all for chapter intruction X-Git-Url: https://www.ivnss.com/gitweb/?a=commitdiff_plain;h=740ee8510c95b3dfaa684c4e49deddc6ebdef920;p=lkmpgcn revised all for chapter intruction --- diff --git a/lkmpg_cn.tex b/lkmpg_cn.tex index 7eeab36..88f4905 100644 --- a/lkmpg_cn.tex +++ b/lkmpg_cn.tex @@ -218,39 +218,38 @@ sudo lsmod | grep fat \begin{enumerate} \item 模块版本。 - 为一个内核编译的模块将不会在被启动的不同版本内核上被加载,除非在内核中% - 打 \cpp|CONFIG_MODVERSIONS| 选项。模块版本在本指南后面部分进行讨论。直% - 到解决模块版本问题,如果运行一个打开模块版本选项的内核,本指南中的示例% - 将不会正常工作。然而,大多数现有 Linux 发行版本的内核,都打开了模块版本% - 选项。如果在加载模块时,由于版本错误提升了难度,考虑编译一个关闭模块版% - 本选项的内核映像。 + 为一个内核编译的一个模块,如编译时内核版本与已启动内核不同时,模块将不% + 能加载,除非在内核中打 \cpp|CONFIG_MODVERSIONS| 选项。模块版本在本指南% + 稍后进行讨论。直到解决模块版本问题,本指南中的示例,如果运行于一个打开% + 模块版本选项的内核上,可能不会正常工作。然而,大多数现有 Linux 发行版本% + 的内核,都打开了模块版本选项。如果在加载模块时,由于版本错误提升了难度,% + 考虑编译一个使用关闭模块版本选项的内核。 \item 使用 X Window 系统。 - 强烈推荐你从一个终端中,解压,编译,并加载所有在本指南中被讨论的示例。% + 强烈推荐从一个终端中解压缩,编译,并加载本指南中被讨论的所有示例。% 不鼓励在 X Window 系统内执行这些任务。 模块不能象 \cpp|printf()| 那样直接打印消息到屏幕,但它们可以通过日志来% 记录信息与警告,这些消息事实上最终可显示在屏幕上,但需指定一个终端来实% - 现。 - 如果一个模块被从 \sh|xterm| 中加载,信息与警告将被日志记录,但仅在 systemd % - 中的 journal 服务中被记录。这些日志消息将不可见,除非使用 \sh|journalctl|。% - 参考 \ref{sec:helloworld} 以了解更多信息。 - 为了即时访问此信息,它建议从控制终端中执行所有任务。 + 现。如果一个模块被从 \sh|xterm| 中加载,信息与警告将被日志记录,但仅在 % + systemd 中的 journal 服务中被记录。这些日志消息将不可见,除非使用 \sh|journalctl|。% + 参考 \ref{sec:helloworld} 以了解更多信息。为了即时访问此信息,它建议从控% + 制终端中执行所有任务。 \item SecureBoot。 - 许多现代计算机都预先配置了 UEFI 启动 SecureBoot---确保以独占方式启动,由% - 最初设备制造商背书的通过安全标准认证的可信任软件。有些 Linux 发行版甚至% - 附带默配置,以支持 SecureBoot。在这些情况下,内核模块需要签名的安全密钥。 - - 如果失败,尝试插入第一个``hello world''模块,将产生消息 ``\emph{ERROR:% - could not insert module}''。 - 如果在命令 \sh|dmesg| 中产生是这个消息 \emph{Lockdown: insmod: unsigned % - module loading is restricted; see man kernel lockdown.7},最简单的解决方% - 法是在你的 PC 或笔记本电脑上的启动菜单中,关闭 UEFI SecureBoot 选项,这% - 会允许你成功插入``hello world''模块。 - - 自然,另一种选择涉及复杂的过程,例如生成密钥,系统密钥安装和模块签名以% - 实现功能。然而,这个复杂的过程不太适合初学者。如果有兴趣,可以探索并遵循% - 更详细的 \href{https://wiki.debian.org/SecureBoot}{SecureBoot} 步骤。 + 许多现代计算机都预先配置开启了 UEFI SecureBoot,一个事实上的安全标准确% + 保由最初设备制造商背书的,被信息软件,以独占方式启动,有些 Linux 发行版甚% + 至附带默认内核配置,以支持 SecureBoot。在这种情况下,内核模块需要一个被% + 签名的安全密钥。 + + 如果失败,尝试插入你第一个``hello world''模块,这将产生消息 ``\emph{ERROR:% + could not insert module}''。如果在命令 \sh|dmesg| 中产生是这个消息 % + \emph{Lockdown: insmod: unsigned module loading is restricted; see man % + kernel lockdown.7},解决问题最简单的方法,是在你的 PC 或笔记本电脑上的启% + 动菜单中,关闭 UEFI SecureBoot 选项,这会允许你成功插入``hello world''% + 模块。自然,另一种选择涉及复杂的过程,例如生成密钥,系统密钥安装,以及% + 模块签名以实现功能。然而,这个复杂的过程不太适合初学者。如有兴趣,更多% + 关于的 \href{https://wiki.debian.org/SecureBoot}{SecureBoot} 细节步骤% + 可被探索与追踪。 \end{enumerate} \chapter{头文件}