1,安装源码,编译驱动
https://wiki.centos.org/HowTos/I_need_the_Kernel_Source
2,在这里可以找到你要的kernel 源代码
http://vault.centos.org/7.0.1406/os/Source/SPackages/
3,安装必要的工具
yum install rng-tools
yum install rpm-build redhat-rpm-config unifdef
- 1
- 2
- 3
4,安装源码
rpm -i http://vault.centos.org/6.7/updates/Source/SPackages/kernel-2.6.32-573.8.1.el6.src.rpm 2>&1 | grep -v exist
- 1
5,编译工具
yum install rpm-build redhat-rpm-config asciidoc bison hmaccalc patchutils perl-ExtUtils-Embed xmlto
yum install audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel
yum install newt-devel python-devel zlib-devel
yum install gcc bc bison
- 1
- 2
- 3
- 4
- 5
- 6
- 7
6,编译
cd ~/rpmbuild/SPECS
rpmbuild -bp --target=$(uname -m) kernel.spec
设置内核编译选项
命令如下:
1 2 |
cp /boot/config-`uname -r` .config make menuconfig |
执行该命令需要ncurses库,如果执行出错则执行如下命令安装ncurses:
1 |
yum install ncurses-devel |
编译内核压缩镜像
1 |
make bzImage |
编译会生成bzImage文件,对应于/boot目录下的vmlinuz文件,是压缩过的内核文件。启动加载时将该文件解压缩到内存中之后才能执行操作系统。
编译内核模块
1 |
make modules |
内核在运行过程中,除需要内核文件之外,还需要加载一些外围模块(例如驱动程序)等才能运行。
安装内核模块
1 |
make modules_install |
安装上一步中编译的内核模块,一般都会安装到/lib/modules目录下。
安装内核
1 |
make install |
这句命令很简单,它会在/boot目录下生成vmlinux/System.map两个文件,并且在/boot/grub目录中生成menu.lst文件。有关menu.lst文件的修改方法请Google一下。
注:要是遇到找不到内核模块的错误,执行以下两个命令
cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.29.1
cp System.map /boot/System.map-2.6.29.1
启动新的内核
修改/boot/grub/menu.lst文件,将新生成的默认启动项修改为刚生成的启动项,重启即可