您的位置:首页 > 运维架构 > Linux

操作系统之--linux内核编译步骤详解

2017-04-15 18:11 316 查看

ORIGIN

作为自由软件,linux 内核版本不断更新,新内核会修订旧内核的 bug,并增加若干新特性,如支持更多的硬件、具备更好的系统管理能力、运行速度更快、更稳定等。用户若想要使用这些新特性,或希望根据自身系统需求定制一个更高效、更稳定的内核,就需要重新编译内核。下面以 linux 初学者喜欢使用的 ubuntu 系统为例,介绍内核编译步骤。

操作环境

硬件:macbook pro retina 2015年初期

Ubuntu 64 位:ubuntu-16.04-desktop-amd64.iso,待编译的新内核是 linux-4.10.10.tar.xz。

由于在内核编译过程中会生成较多的临时文件,如果磁盘空间预留太小,会出现磁盘空间不足的错误而导致内核编译失败;内存太小会影响编译速度,一般内核编译时间是 0.5h~1h。

下载内核源码

Linux内核源码是完全公开的,很多网站都有下载资源,这里使用linux的官方网站下载:http://www.kernel.org ,在这里可以下载所有内核版本:



解压缩内核源码文件

首先用sudo切换到root用户,将下载的新内核压缩文件复制到/usr/src下面:

sudo cp linux-4.10.10.tar.xz /usr/src


然后进入/usr/src子目录中,分两步解压缩:

sudo xz -d linux-4.10.10.tar.xz
sudo tar -xvf linux-4.10.10.tar


本机编译好后的/usr/src目录情况:



清除残留的.config与.o文件

我看的教程中说到要清除残留的这些配置文件,原因是编译出错或不是第一次编译都需要执行此命令清理编译历史。

先用这个命令进入解压好的源码包里:

cd linux-4.10.10


然后使用的清楚残留配置文件命令是:

make mrproper


这里可能会提醒安装ncurses安装包,在ubuntu中改库的名字是libncurses5-dev,所以安装命令是:

apt-get install libncurses5-dev


当然建议都执行一下这一步工序

配置内核

运行命令:

make menuconfig


运行该命令过程中可能会出现如下错误信息:



这是因为系统中缺少ncursesdevel套件,安装此套件即可。安装可执行此命令:

sudo apt-get install libncurses5-dev


之后再执行make menuconfig命令就正常了。

接下来会显示配置有关的一个对话框,用户对于一个选项可以设定Y或m或n,其中Y表示将相应特性的支持或设备程序编译进内核:m表示将相应的特性的支持或设备驱动程序编译成可加载模块,需要时用户可以添加。光标移动用方向键即可完成,其他相关解释在界面上方可以看到.

一般采用默认值即可,但要检查设备驱动配置情况:



进入scsi设备配置界面,如下图所示,下面几项要设置为’*’:





回到上一个界面,设置Fushion MPT device support,设置为’*’:





直接选择exit退出并按提示保存配置文件。

编译内核,生成启动映像文件

内核配置ok后编译内核,生成启动映像文件,执行命令:

sudo make bzImage


结果可能出现错误:



很明显是因为没有安装openssl,要先安装openssl:

sudo apt-get install libssl-dev


openssl玩成安装后再执行
make bzImage
即可,需要个把小时,编译完成后将在/usrsrclinux-4.10.10/arch/x86/boot目录下生成一个名为bzImage的文件。

这一步笔者用了大约20分钟:





这一步执行完后大约占了10g的空间。

编译模块

执行命令
make modules
即可进行编译:





可以看到这一步又花费了10G左右空间。

笔者在这一步大约花了1小时10分钟,期间吃了饭顺便把昨晚看的电影补完了。

安装内核

首先安装模块:

make modules_install




根据我参考的教程,下一步建立要载入 ramdisk 的映像文件:如果你的系统是跑在虚拟机里,那么这一步一

定需要:

mkinitramfs 4.10.10 -o /boot/initrd-4.10.10.img


其中 4.4.19 是/lib/modules 下的目录名称,即内核版本号;initrd-4.4.19.img 为所生成的

内核镜像文件名,可根据自己需要进行修改,上面命令也可以写成:

mkinitramfs -o /boot/initrd-4.10.10.img -v 4.10.10




最后,用
make install
安装内核即可。



配置grub引导程序

只需执行命令
update-grub2
即 可,该命令会自动修改grub。



重启后查看版本号

reboot重启后如下图所示查看内核版本:



如果看到版本号和之前自带的内核版本号高,那么就说明内核安装成功了!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  操作系统 ubuntu 内核