以内核linux-3.15.6.tar.xz为例,在ubuntu14.04下进行。。
第一步:配置内核。
1,对内核进行解压。
$tar -Jxvf linux-3.15.6.tar.xz (注意:J是大写的)
得到文件夹linux-3.15.6
2,配置内核,由于内核源码是对多个计算机架构设计的,因此在编译之前要对内核的功能进行选择。
配置内核完成后会在linux-3.15.6文件夹下形成.config文件,这个文件就是内核功能列表文件,/boot/config-3.15.6就是根据这个.config来的。在linux-3.15.6(注意:本文的所有命令都是在此目录下进行)目录下常用的配置方法有:
(1),$make oldconfig
这个命令使用存在的./.config的内容,使用该文件的内容作为默认,然后把新内核增加的功能列出来让用户选择,可以大大简化选择功能的过程。
(2),$make menuconfig
(3),$make xconfig
(4),$make gconfig
(5),$make config
以上命令选择之一,于具体怎样选择功能,看其它的资料吧(绝对是个复杂的过程)。。
第二步:编译内核
选择(1)$make vmlinux (得到的是未压缩的内核)
选项(2)$make bzImage (得到的是压缩的内核)
实际的编译内核常用的是:
$make clean
$make bzImage
上述两个命令可能花费很多时间。
编译完成后会在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
这样内核就算安装好了。。
第六步:建立与修改相关文件
1,建立inintrd.image-3.15.6文件
$mkinitramfs initrd.image-3.15.6 3.15.6
$sudo cp initrd.image-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的信息。。
本文出自 “少年听雨歌楼上” 博客,请务必保留此出处http://iamokay.blog.51cto.com/6035878/1440633
原文地址:http://iamokay.blog.51cto.com/6035878/1440633