Linux kernel编译以及grub2引导

初学Linux Kernel部分,第一步就是先自己玩玩如何下载kernel源代码进行编译并将新内核跑起来

centos 7使用grub2取代之前的grub,网上在介绍linux kernel引导的时候大多以grub为例,所以我在第一次引导kernel的时候出现了挺多的问题,如果有遇到grub2引导问题的小伙伴,希望这篇文章可以帮到你

本次系统为为VirtualBox新安装的CentOS-7-x86_64-DVD-1611.iso(最小化安装),Kernel版本号为3.10.0-514.el7.x86_64

编译Kernel

1.下载Kernel source code,下载地址为https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.14.14.tar.xz

使用如下命令可下载:wget -P /usr/src/ https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.14.14.tar.xz

2.解压文件

 xz -d linux-4.14.14.tar.xz得到linux-4.14.14.tar

因为在官网上没有找到该kernel的md5文件,所以我自己做了一个linux-4.14.14.tar文件的md5:6c6b88cd2cb13ba453804af658d4438e(我下载了两次kernel code,两个tar包的md5均一样)

tar -xvflinux-4.14.14.tar,将打包的文件拆出来,该过程结束后可发现在/usr/src目录底下多了一个linux-4.14.14目录,该目录中即存放着新kernel的源代码

3.编译内核前的准备工作

 安装gcc [root@localhost ~]#yum -y install gcc

 安装openssl [root@localhost ~]#yum -y install openssl

 安装openssl-devel [root@localhost ~]#yum -y install openssl-devel

 安装ncurses-devel [root@localhost ~]#yum -y install ncurses-devel

 安装bc [root@localhost ~]#yum -y install bc

 安装elfutils-libelf-devel [root@localhost ~]#yum -y install elfutils-libelf-devel

 安装perl [root@localhost ~]# yum -y install perl

 需要安装的软件可在内核/modules编译的错误提示中查看,原则是缺什么装什么

4.开始编译内核

 进入linux-4.14.14目录 [root@localhost ~]#cd /usr/src/linux-4.14.14

 配置kernel的功能选项 [root@localhost linux-4.14.14]#make menuconfig


 Select:选择

 Exit:退出

 Help:查看帮助

 Save:对配置的结果进行保存

 Load:从现有的.config文件导入配置选项

 配置好之后按Save>>ok>>Exit>>Exit,此时退回到/usr/src/linux-4.14.14目录

 编译内核 [root@localhost linux-4.14.14]#make bzImage

 编译模块[root@localhost linux-4.14.14]#make modules

 安装模块[root@localhost linux-4.14.14]#make modules_install

引导Kernel

1.将编译好的kernel放置到/boot目录下并且规范其名称

编译好的内核存放在/usr/src/linux-4.14.14/arch/x86_64/boot/目录中,将其拷贝到/boot路径下并且重新命名

[root@localhost boot]# cp bzImage /boot/vmlinuz-4.14.14.x86_64

2.制作kernel引导文件

 进入/boot目录[root@localhost boot]# cd /boot

 制作kernel引导文件[root@localhost boot]# mkinitrd initramfs-4.14.14.x86_64.img 4.14.14(注意,此处的4.14.14为/lib/modules目录下的新kernel创建的目录,两者要一直)

3.编辑/boot/grub2/grub.cfg文件

 复制menuentry部分,粘贴到缘由menuentry的下面,并对新粘贴的menuentry做部分修改


修改后为


4.重新编译grub.cfg文件

 [root@localhost linux-4.14.14]# grub2-mkconfig -o /boot/grub2/grub.cfg

5.磁盘回写并重启

 [root@localhost linux-4.14.14]# sync;sync;sync;reboot

检查

在开机界面选择新安装的menu启动


启动之后查看kernel的版本号发现已经变成4.14.14,至此,kernel的编译以及引导工作成功完成





 













猜你喜欢

转载自blog.csdn.net/maty_wang/article/details/79128459