Linux kernel编译以及grub2引导
初学Linux Kernel部分,第一步就是先自己玩玩如何下载kernel源代码进行编译并将新内核跑起来centos 7使用grub2取代之前的grub,网上在介绍linux kernel引导的时候大多以grub为例,所以我在第一次引导kernel的时候出现了挺多的问题,如果有遇到grub2引导问题的小伙伴,希望这篇文章可以帮到你本次系统为为VirtualBox新安装的CentOS-7-x
初学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的编译以及引导工作成功完成
更多推荐
所有评论(0)