操作系统之--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重启后如下图所示查看内核版本:如果看到版本号和之前自带的内核版本号高,那么就说明内核安装成功了!
相关文章推荐
- 编译linux内核步骤详解
- 编译U-boot和Linux内核的步骤和详解
- Linux操作系统的内核编译内幕详解
- Linux操作系统的内核编译内幕详解
- linux内核编译详解
- Linux操作系统内核编译详解[zt]
- Linux内核配置和编译过程详解
- Linux操作系统的内核编译内幕详解
- Linux操作系统的内核编译内幕详解
- Linux操作系统下JSP服务器配置步骤详解
- 编译Linux操作系统内核的步骤
- C/C++程序编译步骤详解|C,C++,程序,编译,详解-中国源码网
- Linux操作系统的内核编译内幕详解
- Linux内核编译过程详解
- 编译内核步骤详解
- C/C++程序编译步骤详解
- Linux内核编译详解
- Linux操作系统的内核编译详解
- Linux操作系统的内核编译内幕详解
- 详细讲解:编译Linux操作系统内核的步骤