1.7. 安装新内核
这一步将把新内核安装到运行中的系统。
要安装新内核,用rpm -ivh命令,不要带-U或--upgrade选项:
su -c "rpm -ivh --force $HOME/rpmbuild/RPMS/<arch>/kernel-<version>.<arch>.rpm"
如果您根据需要修改了内核的名字,您的固件和内核头文件将无法匹配。最简单的解决方法是用前面描述的方法建立新的固件,然后:
su -c "rpm -ivh $HOME/rpmbuild/RPMS/<arch>/kernel-<version>.<arch>.rpm \
$HOME/rpmbuild/RPMS/<arch>/kernel-firmware-<version>.<arch>.rpm \
$HOME/rpmbuild/RPMS/<arch>/kernel-headers-<version>.<arch>.rpm \
$HOME/rpmbuild/RPMS/<arch>/kernel-devel-<version>.<arch>.rpm"
这些命令会把您的内核安装到/boot目录,创建一个新的initramfs,并且自动把新内核添加到grub的“menu.list”中。然后,您就可以重启并使用您的新内核了。
2. 只建立内核模块(kernel modules)
本段需要更新和充实
这一段针对那些只想在内核模块上工作的用户,他们并不想建立一个完整的内核。只要就没必要下载和重新建立整个内核。要为当前运行的内核建立一个模块,只需要相匹配的kernel-devel包。运行下面命令安装kernel-devel包:
su -c 'yum install kernel-devel'
如果您用的是PAE内核,可能要安装“kernel-PAE-devel”。
只要您安装了相应版本的kernel或kernel-devel包,就可以建立任何内核版本。本段的其余部分假设您正在使用当前运行的内核。如果不是,用指定的版本号代替‘uname -r’。
kernel-doc包包含了官方的Kbuild文档。在Documentation/kbuild目录下查看,尤其是modules.txt文件。
一个简单的例子,从foo.c建立foo.ko模块,在foo.c所在的目录下创建下面这样的Makefile:
obj-m := foo.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
[TAB]$(MAKE) -C $(KDIR) M=$(PWD) modules
[TAB]表示makefile中包含命令的一行必须以一个tab字符开头。
然后,执行make命令建立foo.ko模块。
上面是是通过一个本地Makefile包装调用kbuild。通常您可以简单一点,想下面这样来建立那些目标。
# make -C /lib/modules/`uname -r`/build M=`pwd` modules
# make -C /lib/modules/`uname -r`/build M=`pwd` clean
# make -C /lib/modules/`uname -r`/build M=`pwd` modules_install