centos7添加内核实践

1.您所需要拥有的环境

1.一个虚拟机环境,我本来的虚拟机环境的内核是3.10.1的,这个虚拟机最好是拥有比较多的软件,比如make,gcc这些工具是要有的,如果
  使用最小安装,会缺少一些工具,建议使用较全面的安装方法,我在安装的时候可以说是最大安装了;
  还要注意虚拟机的内存和核心最好都给好一些,我分配的是8G内存,8个核心,理论上来说,应该是配置
  越高编的越快.磁盘空间最好至少给30G.
2.需要下载一个想要替换的内核,官方网址https://www.kernel.org/(下载速度巨慢),推荐网址:
  http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/(推荐迅雷下载,速度还不错,会员体验更棒),下载您想要下载的那个版本,
  我下载的是linux-4.10.1.tar.gz这个包.

2.操作步骤

1.将Linux-4.10.1.tar.gz文件放到一个目录下,我放在/home/muten/kernel下;
2.解压下载的内核包
  gunzip Linux-4.10.1.tar.gz(得到linux-4.10.1.tar)
  tar xvf linux-4.10.1.tar
3.拷贝原来内核的配置文件到当前目录下,拷贝成一个隐藏文件(用ls -a可以看到),
   cp /boot/config-xxx ./.config
   cp -p /boot/config-3.10.0-957.el7.x86_64 ./.config(我此时所在目录是/home/muten/kernel/linux-4.10.1)
4.memuconfig(调出内核配置页面)
  出现内核配置页面如下图,选择save,然后退出.
5.开始编译下载的内核(此时我仍然在/home/muten/kernel/linux-4.10.1目录下)
  make -j8(-j8表示8个线程,可以让编译更快一些)
  编译会持续一段时间,我的环境大概编译了三十五分钟,然后在目录下面会出现各个模块.
  编译期间您可以用htop来查看机器的工作状态(如下图),
  如无此命令,在centos7下可以按照此种方式下载(因为有依赖关系,所以下面两步都执行才可成功):
  yum -y install  epel-release
  yum -y install  htop
6.切换成root用户;
7.安装模块,执行命令:make modules_install
  会在目录下生成vmlinux
8.生成内核镜像文件,执行命令,make bzImage 
  会在/home/muten/kernel/linux-4.10.1/arch/x86/boot生成bzImage
9.安装新编译的内核
$ cp arch/x86/boot/bzImage /boot/vmlinuz-4.10.1
$ cp .config /boot/config-4.10.1
$ make install(生成内核的镜像启动文件,dracut也生成该内核的启动文件,可用man dracut来查看dracut的用法)

10.测试用root用户reboot,发现此时已经刚刚编译的4.10.1的内核可供选择,
   或者用sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
   命令也可以查看可供选择内核.

至此,您已经完成了新内核的编译和安装.


另:
如果您想要更改启动项,可以修改配置文件/boot/grub2/grub.cfg;
在centos7下您可以使用grub2-mkconfig这个命令来生成启动项的配置,
如:grub2-mkconfig -o /boot/grub2/grub.cf.

如果您想要完全替换掉原有的内核,

如果您用的是unbuntu:
$ update-initramfs –c –k 4.10.1
$ update-grub
来完成内核的替换.

  

3.一些图片

 

 

 

4.一些需要了解的知识

1.内核的分类:
  官方内核(通常是内核开发人员用)和各大 Linux 发行版内核(一般用户常用)
2.各大 Linux 发行版内核:
  一般来说,只有从 kernel.org 下载并编译安装的内核才是官方内核(一些镜像当然也是)。 
大多数 Linux 发行版提供自行维护的内核,可以通过 yum 或 rpm 等包管理系统升级。这些内核可能不再和 Linux 内核官方开发维护人员有关系了.通过这个由各大Linux发行版支持的仓库升级内核,通常来说更简单可靠,但是可选择的内核版本也更少。
使用 uname -r 区分你用的是官方内核还是Linux发行版内核,横线后面有任何东西都表示这不是官方内核:
# uname -r
3.10.0-514.26.2.el7.x86_64
这个就不是官方的内核,但是其内嵌的内核版本是3.10.0,后面的-514.26.2.el7.x86_64给出了其他的信息;

3.uname的一些用法:
 打印指定的系统信息。不带参数时,默认使用 -s 参数。 
 参数: 
 -a, –all:按照下面的顺序打印所有信息,如果 -p 和 -i 未知时排除掉。 
 -s, –kernel-name:打印内核名字,一般就是 Linux。 
 -n, –nodename:打印网络节点的主机名。 
 -r, –kernel-release:打印内核发行版的版本。常用。3.10.0-514.26.2.el7.x86_64 
 -v, –kernel-version:打印内核的版本。#1 SMP Tue Jul 4 15:04:05 UTC 2017 
 -m, –machine:打印机器硬件名。 
 -p, –processor:打印处理器名字或“unknown”。 
 -i, –hardware-platform:打印硬件平台或“unknown”。 
 -o, –operating-system:打印操作系统。 
 –help:显示这个帮助并退出。 
 –version:显示这版本信息并退出。

4.cat /etc/redhat-release 查看红帽的发行版本.

5.rpm -qa | grep kernel 可看系统中所有的内核
l-tools-libs-3.10.0-957.el7.x86_64
kernel-3.10.0-957.el7.x86_64
abrt-addon-kerneloops-2.1.11-52.el7.centos.x86_64
kernel-headers-3.10.0-957.el7.x86_64
texlive-l3kernel-svn29409.SVN_4469-43.el7.noarch
kernel-tools-3.10.0-957.el7.x86_64
kernel-devel-3.10.0-957.el7.x86_64


6.查看系统中可用内核
[root@localhost boot]#  awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (4.10.1) 7 (Core)
1 : CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-95baf3f2db9b48c29e4bf7f493917fb2) 7 (Core)

7.设置 grub2
  7.1 将6中的0对应的内核版本CentOS Linux (4.10.1)设置成默认启用的内核版本有两种方法:
       (1)可执行:sudo grub2-set-default 0
       (2)vim /etc/default/grub添加一行配置:GRUB_DEFAULT=0
  7.2 生成 grub 配置文件并重启
      grub2-mkconfig -o /boot/grub2/grub.cfg
      reboot
  

8.内核界面上的那个rescue的是急救模式
第二个选项急救模式启动(系统出项问题不能正常启动时使用并修复系统)


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1、在CentOS下执行sudo  update-grub命令时候,找不到该命令,如下图:

[root@172 /]# sudo update-grub
sudo: update-grub: command not found
在Ubuntu下面经常使用update-grub来更新调整后的grub设置以生效,结果到了CentOS7下面居然找不到这个命令,可以用下边命令来代替: 


grub2-mkconfig -o /boot/grub2/grub.cfg

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值