建立一个定制Linux内核(4)

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/21905.html