本次实验平台为ubuntu14.04 内核版本为3.13.0-32-generic
1. http://www.kernel.org 下载核心源码。
2. 切换至超级用户,并且解压内核文件到/usr/src/
su root
tar xvJf linux-3.15.6.tar.xz -C /usr/src/
3. 内核解压后一般有一下几个重要目录:
arch :与硬件平台有关的项目,大部分指的是CPU 的类别,例如 x86,x86_64, Xen 虚拟支持等;
block :与成组训备较相关的设定数据,还包括类似是否允许ext3等文件系统支持等;
crypto :内核所支持的加密的技术,例如 md5 戒者是 des 等等;
Documentation:与内核有关的说明文件;
drivers :一些硬件的驱劢程序;
firmware :一些旧式硬件的微脚本数据;
fs :内核所支持的filesystems ,例如vfat, reiserfs, nfs 等等;
include :一些可以让其他过程调用的标头 (header) 定义数据;
init :一些内核初始化的功能,包括挂载与init程序的呼叫等;
ipc :定义Linux 操作系统内各程序的沟通;
kernel :定义内核的程序、内核状态、线程、程序的讯号(signle) 等;
lib :一些函数库;
mm :与内存单元有关的各项数据,包括swap 与虚拟内存等;
net :与网络有关的各项协议数据,还有防火墙模块(net/ipv4/netfilter/*) 等等;
security :包括 selinux 等在内的安全设定;
sound :与音效有关的各项模块;
virt :与虚拟机有关的信息。
4. 内核编译前处理
进入工作目录,恢复干净源码
cd /usr/src/linux-3.15.6
make mrproper (删除编译产生的目标文件和配置文件)
make clean (仅删除编译产生的目标文件)
5. 挑选内核功能
使用已存在的.config (/boot/config-3.13.0-32-generic) 为默认值,
叧将新版本核心内的新功能选项列出供用户选择。 (推荐方式)
make oldconfig (新功能一般选n就行了)
或者,图形界面下挑选核心功能
需要安装支持软件包(sudoapt-get install libncurses5-dev)
make menuconfig
经过这一步后可与可以发现源码目录下多出一个.config文件。
6. 编译核心与核心模块(时间较长,请耐心等待)
首先编译核心
make bzImage (编译好后的核心放在./arch/x86/boot/bzImage)
编译模块
make modules
7. 安装模块(模块放置在/lib/modules/)
make modules_install
安装好之后 /lib/modules/ 目录结构
8. 复制核心、配置文件到/boot
make install
9. 重新创建initrd文件(makeinstall创建的initrd不可用)
cp .config /boot/config-3.15.6
mkinitramfs -o /boot/initrd.img-3.15.6 -v 3.15.6
10. 编辑grub
update-grub
11. 重启计算机,查看系统信息
uname –a