环境配置:在虚拟机Oracle VM Virtual中运行Ubuntu 12。
获取内核,可以在https://www.kernel.org/下载最新版本的内核,笔者下载的是linux-4.5.2.tar.xz。笔者使用共享文件功能在Windows系统和ubuntu系统间交换文件,在windows系统用迅雷下载Linux内核,下载完成之后,放入到共享文件中。(在虚拟机中添加共享文件功能可百度)。
打开终端,使用命令sudo su获得root权限,进入到共享文件目录下/media/sf_share_file(sf_share_file为自己定义的共享文件夹名字),使用mv linux-4.5.2.tar.xz /usr/src 命令将内核压缩包移动到usr/src目录下(.xz与/usr之间有一个空格),使用tar -Jxvf linux-4.5.2.tar.xz解压内核,注意不能在共享文件夹中解压内核,否则编译过程中会出现错误。
执行命令:apt-get install build-essential kernel-package libncurses5-dev fakeroot;apt-get install libssl-dev;安装编译内核所需的程序。
编译配置:make menuconfig;配置内核,可以选择默认的,然后退出,生成.config文件,可以用vim打开。若编译过多次,可执行make mrproper命令,清除之前编译产生的文件,首次编译则不需要。一般为了保证当前ubuntu系统
的正常使用,可以使用当前系统的 配置文件,配置文件在/boot目录下,配置文件名为config-3.13.0-32-generic,3.13.0-32为当前内核的版本号。在/boot目录下,执行命令cp config-3.13.0-32-generic /usr/src/.config 替换生成的.config文件。
或者执行make menuconfig ,点击load,删除.config,输入/boot/config-3.13-32-generic 替换生成的.config,保存并退出。
开始编译:make bzImage;编译启动映像
make modules;编译模块
这两个过程需花费两个小时左右。
安装内核:make modules_install;安装模块
make install;安装内核
更改启动grub:mkinitramfs 4.5.2 -o /boot/initrd.img-4.5.2;制作initrd.img
update-grub2;更改grub
重启系统,uname -a 查看内核版本号