之内核linux-3.15.6.tar.xz为例,在ubuntu14.04下进行。。linux
第一步:配置内核。ubuntu
1,对内核进行解压。vim
$tar -Jxvf linux-3.15.6.tar.xz (注意:J是大写的)
架构
获得文件夹linux-3.15.6ide
2,配置内核,因为内核源码是对多个计算机架构设计的,所以在编译以前要对内核的功能进行选择。spa
配置内核完成后会在linux-3.15.6文件夹下造成.config文件,这个文件就是内核功能列表文件,/boot/config-3.15.6就是根据这个.config来的。在linux-3.15.6(注意:本文的全部命令都是在此目录下进行)目录下经常使用的配置方法有:架构设计
(1),$make oldconfig
设计
这个命令使用存在的./.config的内容,使用该文件的内容做为默认,而后把新内核增长的功能列出来让用户选择,能够大大简化选择功能的过程。源码
(2),$make menuconfigit
(3),$make xconfig
(4),$make gconfig
(5),$make config
以上命令选择之一,具体怎样选择功能,看其它的资料吧(绝对是个复杂的过程)。。
第二步:编译内核
选择(1)$make vmlinux (获得的是未压缩的内核)
选项(2)$make bzImage (获得的是压缩的内核)
实际的编译内核经常使用的是:
$make clean
$make bzImage
上述两个命令可能花费不少时间(make -j4 bzImage能够节约不少时间,4指的是cpu的核数)。
编译完成后会在arch/x86/boot/bzImage发现内核该内核文件。。
第三步:编译模块
编译模块是由于 全部的功能若是都放在内核文件bzImage中就会致使内核比较大,因此把一些不经常使用的功能变成模块,须要使用的时候自动加载。哪些功能须要编译成模块仍是在内核中,在配置内核的阶段已经选择过了。
编译模块的命令:
$make modules
会花很长的时间。。
第四步:安装模块
模块文件是在/lib/modules/`uname -r` 下的,要把模块文件安装正确的位置,须要的命令
$make modules_install
就会在/lib/modules下找到3.15.6的文件夹。。说明模块成功安装了。。
第五步:安装内核
系统的内核是在/boot/下的,且文件名通常未vmlinz-版本(vmlinz-3.15.6),所以须要将内核复制到目的目录下:
$sudo cp /arch/x86/boot/bzImage /boot/vmlinz-3.15.6
这样内核就算安装好了。。
第六步:保存.config文件:
$sudo cp .config /boot/config-3.15.6
第七步:创建与修改相关文件
1,创建inintrd.p_w_picpath-3.15.6文件
$mkinitramfs -o initrd.p_w_picpath-3.15.6 3.15.6
$sudo cp initrd.p_w_picpath-3.15.6 /boot/
(注意:后面那个3.15.6是根据/boot/modules/下的模块文件夹3.15.6来的)
2,修改grub2,文件/boot/grub/grub.cfg
$sudo vim /boot/grub/grub.cfg
加入有关 vmlinz和initrd的信息,具体能够参照grub.cfg中的其它一些选项来写。。
注意:用make编译的时候能够加参数 例如 make -j4 bzImage;这样能够加快编译的速度。。