For upgrading present kernel to linux-next kernel, we need to follow below steps.

1. Check present kernel version:

Check which kernel you have, by running the following command. This should print the version of the kernel that you are using

uname -r

Saving present kernel version in present-version.txt

uname -r > present-version.txt

2. Install required packages:  like "git, make, tar, gcc, bc, patch, dos2unix, wget, xz"

Use below commands based on Linux distro.

zypper --non-interactive install git make tar gcc bc patch dos2unix wget xz

yum install -y git make tar gcc bc patch dos2unix wget xz

apt-get install -y git make tar gcc bc patch dos2unix wget

3. Download linux-next kernel from git.

git clone git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

It will download the code into linux-next directory.

cd linux-next/

4. Creating the .config file.

Creating new .config file based on a previous .config file

if you have an existing configuration from an older kernel, copy the old .config file in to linux-next directory as ".config"(recommended way)

cp /boot/config-`uname -r` .config

if old configuration file  not exists, you can create a .config file by running below command

yes "" | make oldconfig

5. Modifications in “.config” file:

a. Enabling HyperV support:

Recent changes to kernel requires setting “CONFIG_HYPERVISOR_GUEST” to enable all guest virtualization drivers. So we need to add CONFIG_HYPERVISOR_GUEST=y to .config file.

CONFIG_HYPERVISOR_GUEST=y

b. Enable Ext4 support:

Ext3 is enabled by default, but in some distros Ext4 is not enable by default.

CONFIG_EXT4_FS=y

6. Configure the kernel options:

This “oldconfig” process will carry over your previous settings, and prompt you if there are new features not covered by your earlier .config file

yes "" | make oldconfig

7. Build the kernel:

Now compile the actual kernel. This can take more than 20 minutes to complete

Based on the processor count, we can run make cmd

make -j`nproc` (running “nproc” processes at a time)

Check make command executed successfully or not.

8. Following changes are needed on OpenSUSE, other distributions may not need this step:

Removing any scsi_id references in /etc/default/grub and /etc/default/grub_installdevice files

and then run "grub2-mkconfig"

grub2-mkconfig

9. Building the kernel modules:

a. Make the modules: Modules are parts of the kernel that are loaded on the fly, as they are needed. They are stored in individual files

make modules

b. Install the modules: This will copy all the modules to a new directory, "/lib/modules/<kernel version>"

make modules_install

10. Installing the kernel:

Now install linux-next kernel using below command.

make install

11. Grub Modification:

Update grub.conf based on grub version, make new kernel as default kernel

For grub V1 files, change default value to 0

default=0

For grub V2 files, run below commands

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

grub2-set-default 0

12. Ensure eth0 is up and running

Sometimes eth0 will not run after reboot, so we need to add below command to either rc.local or after.local based on distro

ifup eth0 > /dev/null

13. Reboot the VM

Reboot the machine, you will be in the new kernel. Check the kernel using "uname -r"

reboot [or] init 6

uname -r

Note: Before reboot check new kernel position in the grub.cfg [or] grub2.cfg with older one and make it as default.

Issues we faced while installing new kernel:

1. Facing errors in crypto/signature/ksign-publickey.c file: For this issue try below procedure.

Run "make menuconfig", Disable "Module signature verification (EXPERIMENTAL)" in "Enable loadable module support" and

Disable "In-kernel signature checker (EXPERIMENTAL)" in "Cryptographic API" save and exit

Now build your kernel with the modified .config file

2. Facing errors Like "lib/locking-selftest.c:1546: error: implicit declaration of function ‘raw_spin_lock_nest_lock’"

You need to replace the raw_spin_lock_nest_lock with spin_lock_nest_lock in ww_test_spin_nest_unlocked function of lib/locking-selftest.c file

3. Facing disk space issues:

For this we need to make sure at least 20GB is available on disk.

Linux - 升级+编译kernel的更多相关文章

  1. 【转载】Linux升级NTPD服务器-编译安装ntp-4.2.8p12与配置

    [转载]Linux升级NTPD服务器-编译安装ntp-4.2.8p12与配置 1. 系统与软件版本 1.1 系统版本 rhel6.4(Red Hat Enterprise Linux Server r ...

  2. Linux内核编译完整过程

    Linux内核编译完整过程 通过网上的资料我自己的实际内核编译,我把对Linux内核编译的过程写在这里,也许对其他的Linux爱好者的编译学习有些帮助,其中很大部分是网上的资料,另外就是我在实际编译过 ...

  3. linux下编译出现空间不足解决办法

    linux下编译出现空间不足解决办法 编译内核出现问题: AS      .tmp_kallsyms1.o .tmp_kallsyms1.S:2: fatal error: when writing ...

  4. 运行在TQ2440开发板上以及X86平台上的linux内核编译

    一.运行在TQ2440开发板上的linux内核编译 1.获取源码并解压 直接使用天嵌移植好的“linux-2.6.30.4_20100531.tar.bz2”源码包. 解压(天嵌默认解压到/opt/E ...

  5. linux下编译原理分析

    linux下编译hello.c 程序,使用gcc hello.c,然后./a.out就能够执行:在这个简单的命令后面隐藏了很多复杂的过程,这个过程包含了以下的步骤: ================= ...

  6. linux内核编译环境配置

    linux内核编译环境配置 如果不是编译内核,只需要安装与内核相匹配的kernel-devel开发包即可.即是/lib/modules/`uname -r`/build -> /usr/src/ ...

  7. linux下编译运行驱动

    linux下编译运行驱动 嵌入式linux下设备驱动的运行和linux x86 pc下运行设备驱动是类似的,由于手头没有嵌入式linux设备,先在vmware上的linux上学习驱动开发. 按照如下方 ...

  8. hi3531 SDK 编译 kernel, 修改 参数

    开发环境用户指南上这么写的 3.1 内核源代码 成功安装Hi3531 SDK后,内核源代码已存放于SDK目录下的osdrv/目录中,用户可 直接进入目录进行相关操作. 3.2 配置内核 如果对内核和H ...

  9. Linux内核编译与安装

    2013-04-16    Linux内核介绍  Linux内核是一个用C语言写成的,符合POSIX标准的类Unix操作系统.内核是操作系统中最基本的一部分,提供了众多应用程序访问计算机硬件的机制.L ...

随机推荐

  1. linux中crontab和at

    1. Red Hat的发行版本中,通常还可以使用工具ntsysv设置服务的自启动状态. #类似chkonfig 服务名 on|off 2.系统服务脚本目录:/etc/init.d 3.ps: -a:显 ...

  2. PL/SQL在win7X 64下安装

    oracle11g怎么安装在此不作说明,网上到处都是,主要针对PL/SQL的安装配置 下载地址: PLSQL Developer: http://pan.baidu.com/s/1nt7G4cD X6 ...

  3. Flex前台和后台WCF服务之间数据的接收与传输

    1.首先在flex程序中通过添加webservice,方式是主菜单Data->Connect to WebService,然后输入wsdl文档的地址.如果输入地址后始终添加不进了,或者报错,一般 ...

  4. Objective-C 【Category-非正式协议-延展】

    -------------------------------------------  类别(Category)的声明和实现 实质:类别又叫类目,它其实是对类的一个拓展!但是他不同于继承后的拓展! ...

  5. C#颜色 转换

    C#Winform 使用16进制颜色 var color = ColorTranslator.FromHtml("#eeeeee");

  6. Java中toArray的用法探究(java数组与list转换)

    转载原文地址: http://blog.csdn.net/guopengzhang/article/details/5497875 一.             Incident import jav ...

  7. 9款完美体验的HTML5/jQuery应用

    1.jQuery动画图标菜单导航 仿苹果样式 这次要分享的这款jQuery插件非常酷,它是一款带有动画按钮的jQuery菜单插件.而且从菜单的外观上来看,有点苹果菜单风格的味道.当我们将鼠标滑过菜单项 ...

  8. Java web的读取Excel简单Demo

    目录结构: Data.xls数据:   后台页面: GetExcelData.java       public void doGet(HttpServletRequest request, Http ...

  9. 解析XML文档之二:使用PULL解析

    第一步:解析文档为一下文档 <?xml version="1.0" encoding="UTF-8"?> <students> < ...

  10. 使用 CocoStudio UI 编辑器实现《乱斗堂》设置界面

    由于是引用别人的,所以直接贴上地址了.http://www.cocoachina.com/bbs/read.php?tid=164820&fpage=7 1 游戏中必不可少的 UI 元素    ...