\begin{enumerate}
\item 模块版本。
- 为一个内核编译的模块将不会在被启动的不同版本内核上被加载,除非在内核中%
- 打 \cpp|CONFIG_MODVERSIONS| 选项。模块版本在本指南后面部分进行讨论。直%
- 到解决模块版本问题,如果运行一个打开模块版本选项的内核,本指南中的示例%
- 将不会正常工作。然而,大多数现有 Linux 发行版本的内核,都打开了模块版本%
- 选项。如果在加载模块时,由于版本错误提升了难度,考虑编译一个关闭模块版%
- 本选项的内核映像。
+ 为一个内核编译的一个模块,如编译时内核版本与已启动内核不同时,模块将不%
+ 能加载,除非在内核中打 \cpp|CONFIG_MODVERSIONS| 选项。模块版本在本指南%
+ 稍后进行讨论。直到解决模块版本问题,本指南中的示例,如果运行于一个打开%
+ 模块版本选项的内核上,可能不会正常工作。然而,大多数现有 Linux 发行版本%
+ 的内核,都打开了模块版本选项。如果在加载模块时,由于版本错误提升了难度,%
+ 考虑编译一个使用关闭模块版本选项的内核。
\item 使用 X Window 系统。
- 强ç\83\88æ\8e¨è\8d\90ä½ ä»\8eä¸\80个ç»\88端ä¸ï¼\8cè§£å\8e\8bï¼\8cç¼\96è¯\91ï¼\8cå¹¶å\8a è½½æ\89\80æ\9c\89å\9c¨æ\9c¬æ\8c\87å\8d\97ä¸è¢«è®¨è®ºç\9a\84示例。%
+ 强ç\83\88æ\8e¨è\8d\90ä»\8eä¸\80个ç»\88端ä¸è§£å\8e\8b缩ï¼\8cç¼\96è¯\91ï¼\8cå¹¶å\8a è½½æ\9c¬æ\8c\87å\8d\97ä¸è¢«è®¨è®ºç\9a\84æ\89\80æ\9c\89示例。%
不鼓励在 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''模块。
-
- 自然,另一种选择涉及复杂的过程,例如生成密钥,系统密钥安装和模块签名以%
- å®\9eç\8e°å\8a\9fè\83½ã\80\82ç\84¶è\80\8cï¼\8cè¿\99个å¤\8dæ\9d\82ç\9a\84è¿\87ç¨\8bä¸\8d太é\80\82å\90\88å\88\9då¦è\80\85ã\80\82å¦\82æ\9e\9cæ\9c\89å\85´è¶£ï¼\8cå\8f¯ä»¥æ\8e¢ç´¢å¹¶é\81µå¾ª%
- 更详细的 \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''%
+ 模块。自然,另一种选择涉及复杂的过程,例如生成密钥,系统密钥安装,以及%
+ 模块签名以实现功能。然而,这个复杂的过程不太适合初学者。如有兴趣,更多%
+ å\85³äº\8eç\9a\84 \href{https://wiki.debian.org/SecureBoot}{SecureBoot} ç»\86è\8a\82æ¥éª¤%
+ 可被探索与追踪。
\end{enumerate}
\chapter{头文件}