Linux 内核模块安装 HOWTO | ||
---|---|---|
上一页 |
内核可以重新配置为使用模块来处理除作为根目录挂载的文件系统(在大多数情况下,这是 ext2 文件系统)之外的所有内容。
然而,有些项目似乎难以作为模块正确设置,因此我建议将以下项目编译到内核中
以太网硬件驱动程序。
SCSI CD-ROM 驱动程序。
另一方面,有些驱动程序组合只能作为模块工作,尤其是以下组中两个或多个的组合
并行打印机,
并行端口驱动器,例如 IOMEGA ZipDrive 或 JazzDrive,或 BackPack CD-ROM 驱动器,以及
PLIP 守护进程。
您需要决定将哪些内容编译到内核中,哪些作为模块,但应考虑以上几点。实际的选择是在编译期间做出的,通过以下指令序列的第二个指令
cd /usr/src/linux make menuconfig make dep clean modules modules_install zImage |
完成此操作后,需要映射出模块依赖项。这可以使用以下命令完成
depmod -a |
现在需要将新内核插入到引导链中。我假设读者正在使用 LILO 来实现此目的,因为这是我唯一有经验的引导加载程序。
我建议不要自动将新编译的内核作为默认 Linux 内核插入,因为如果它失败,那么在不进行完全重新安装的情况下恢复 Linux 设置将非常困难,这是不推荐的。因此,我在我的/etc/lilo.conf文件中包含以下条目
image=/usr/src/linux/arch/i386/boot/zImage label=new alias=n read-only vga=ask optional |
此条目表示存在一个可选的引导选项(如果相关镜像不存在,则将被忽略),该选项引导文件/boot/newlinux如果被选中,并允许您选择要引导的视频模式。
假设在/etc/lilo.conf中存在上述条目,则修订后的内核已在编译结束时正确放置,并且可以通过以下命令安装
lilo |
完成此操作后,读者需要按照与其选择的发行版相关的后续步骤进行操作,如下所示
在执行此处列出的步骤之前,假定已执行 “为模块重新编译内核” 中列出的步骤。
Debian 和 RedHat 发行版具有相同的引导过程,因此也具有相同的模块配置过程。
以 root 用户身份登录后,使用您最喜欢的文本编辑器创建一个名为/etc/rc.d/init.d/modules.init的新文件,其中包含以下内容
# Modules initialisation. # # Start up the module auto-loading daemon. /sbin/kerneld # Mount all currently unmounted auto-mounted partitions. /sbin/mount -a |
创建上述文件后,以 root 用户身份登录时执行以下步骤
cd /etc/rc.d chmod 755 init.d/* cd rc3.d ln -s ../init.d/modules.init 05modules.init |
现在可以重新启动系统,这样做后,将发现模块已完全实现
在执行此处列出的步骤之前,假定已执行 “为模块重新编译内核” 中列出的步骤。
文件/etc/rc.d/rc.M需要按如下方式编辑
在第 18 行左右,有一个部分内容如下
# Screen blanks after 15 minutes idle time. /bin/setterm -blank 15 |
紧随其后,插入以下段落,并在其两侧留出通常的空行
# Load the kernel module auto-loader. /sbin/kerneld |
大约 12 行之后是以下内容
# if there is no /etc/HOSTNAME, fall back on this default: |
紧靠其前,插入以下段落,同样在其两侧留出通常的空行
# Mount remaining unmounted auto-mount drives. /sbin/mount -a |
完成这些更改后,保存文件。
Slackware 不需要进一步修改。
在执行此处列出的步骤之前,假定已执行 “为模块重新编译内核” 中列出的步骤。
其他发行版的精确过程尚未确定,但可能与上述之一相同。要确定是哪一种,请显示/etc/rc.d目录的内容目录,如下所示
cd /etc/rc.d ls -l *.d rc.* |
从这个结果显示中,您可以选择以下三个选项之一
如果此列表包含名为init.d的目录和一些名称与rc?.d匹配的目录,其中问号被单个数字替换,并且不包含名为rc.M的文件,则可以通过按照标题 “为模块配置 Debian 或 RedHat” 下列出的步骤为该发行版配置模块。
如果此列表不包含名为init.d但包含名为rc.M的文件,则可以通过按照标题 “为模块配置 Slackware” 下列出的步骤为该发行版配置模块。
如果此列表与上述任何条件都不匹配,则该发行版具有本文档未涵盖的引导脚本。在这种情况下,欢迎您联系本文档的作者以寻求建议。