第 9 章 - Debian 与内核
9.1 可以不考虑 Debian 因素编译内核吗?
可以.
需要注意的是: Debian 的 C 库文件是在最新的 stable 发行版的 kernel headers 基础上构建的, 如果你碰巧需要使用比 stable 发行版的 kernel headers 更高版本编译一个程序, 那么要么升级包含headers的软件包(libc6-dev
), 要么从新版的 kernel 中解压出 headera 来使用, 如果 kernel 源文件在 /usr/src/linux
目录下, 那么编译时需要在命令行加入 -I/usr/src/linux/include/.
9.2 Debian 的编译内核工具
如果用户想(或必须)定制内核, 建议下载使用 kernel-package
软件包, 其包含构建 kernel软件包的脚本, 并提供了创建 Debian kernel-image 软件包, 在 kernel 源文件的最上层目录运行命令:
make-kpkg kernel_image
要获取帮助, 运行
make-kpkg --help
, 或者查询 make-kpkg(1)
.
如果没有现成的 kernel-source-version 软件包(这里 "version" 指 kernel 版本号), 则用户必须自己到 Linx 站点上下载新版的 kernel(或者需要的那个版本)..
在 /usr/share/doc/kernel-package/README.gz
处有 kernel-package
的详细使用说明. 主要步骤:
将 Kernel 源代码解包, 切换到新建目录.
用下面(任一)命令修改 kernel 配置:
make config (命令行界面).
make menuconfig (一个基于 ncurses 的菜单界面). 注意必须安装了
libncurses5-dev
软件包.
make xconfig (X11 界面). 需要安装相关的 X 和 Tcl/TK 软件包.
置完成后, 就会在 kernel 源文件的最上层目录生成一个 .config 文件.
执行命令: make-kpkg -rev Custom.N kernel_image, N 指用户指定的版本数字. 就会生成一个修正版为 Custom.1 的新 Debian 包, 例如 Linux 2.2.14 内核,就会是kernel-image-2.2.14_Custom.1_i386.deb.
安装生成的软件包.
运行 dpkg --install /usr/src/kernel-image-VVV_Custom.N.deb 安装内核. 安装脚本会:
运行启动加载程序, LILO(如果安装了的话),
安装放在 boot/vmlinuz_VVV-Custom.N 下定制的 kernel, 并生成相应的符号连接.
提示用户制作启动软盘, 启动盘仅包含基本内核. 见如何制作启动软盘?, 第 9.3 节.
如果使用第三方启动加载程序, 如
grub
或 loadlin, 把这个影像考到相应位置(如 /boot/grub 或 MS-DOS 分区).
9.3 如何制作启动软盘?
制作启动盘需要用到 Debian 的 boot-floppies
工具, 该软件包位于 Debian FTP 的 admin 目录下. 该软件包的脚本会生成一个 SYSLINUX 格式的启动盘, 对于那些使用 MS-DOS 格式化的软盘, 其主引导扇区的记录将被修改为直接引导 linxux(或在 syslinux.cfg 中定义的其它系统). 这个包中的其它脚本还可以制作应急盘, 甚至重建基本系统.
安装 boot-floppies
后可以在 /usr/doc/boot-floppies/README 中找到更详细信息..
9.4 Debian 下的模块管理?
Debian 的 modconf
软件包提供了一个 shell 脚本(/usr/sbin/modconf)用于完成模块的配置.该脚本使用菜单界面, 用户通过它给出系统中可挂载设备驱动的有关细节, 它再将这些细节信息生成 /etc/modules.conf 文件(其中列出了别名 aliases 和其它参数, 用于连接各种模块), 该配置文件用来加载 /etc/modutils/ 目录下和 /etc/modules(其中列出了需要在系统启动时加载的模块)目录的相关模块. package provides a shell script (/usr/sbin/modconf) which can be used to customize the configuration of modules. This script presents a menu-based interface, prompting the user for particulars on the loadable device drivers in his system. The responses are used to customize the file /etc/modules.conf (which lists aliases, and other arguments that must be used in conjunction with various modules) through files in /etc/modutils/, and /etc/modules (which lists the modules that must be loaded at boot time).
新版的配置帮助文件可为构造自定义内核提供帮助, 同样, modconf 软件包中也有一系列帮助文件(位于/usr/lib/modules_help/), 告诉你如何对模块设定合适的参数.
9.5 我可以删除旧内核吗, 如果可以, 怎么做?
是的. kernel-image-NNN.prerm 脚本检查当前运行 kernel 是否与你要删掉的相同. 因此用下边的命令删除你不想要的内核影像:
dpkg --purge --force-remove-essential kernel-image-NNN
("NNN" 当然要用你的内核版本和修订号替换)