Linux内核编译、安装流程

时间:2022-10-28 22:40:19

原文链接:https://blog.csdn.net/qq_28437139/article/details/83692907

此处只讲linux内核编译步骤至于安装虚拟机,安装ubuntu操作系统请自行百度

环境信息:

Linux操作系统:ubuntu16.04

内核版本:4.15.0-29-generic

需要编译和安装的内核源码版本:4.19

第一步:下载linux内核源码

官网地址地址:https://www.kernel.org/

Linux内核编译、安装流程

官网大致是这个样子,大家关注我标出的位置就OK了

第一列:

mainline当前在开发的内核新版本

stable 稳定的内核版本

longterm 长期维护的内核版本

第二列:

版本号以小数点分割

第一个位置主版本号一般有重大改变时会修改的版本号(具有里程碑意义)

第二个位置次版本号偶数代表稳定版本(可商用),奇数代表开发板不稳定(不可商用)

第三个位置这个号码代表当前版本修改次数(每次可能修改一些bug)

第三列:

当前版本最后一次修改代码时间

第四列:

tarball:完整的代码

pgp:验证签名

patch:基于上一个版本的补丁(一般商用的系统不会频繁的编译内核,所以可以打补丁上去方便)

在这里我们点击tarball下载完整代码

第二步:上传代码解压,安装软件

登录ubuntu16.04

切换到root权限:su - root

查看当前操作系统安装了哪些内核(注意:当前操作系统可以安装许多内核,但是当前运行的内核只能有一个)

dpkg --list | grep linux-image

查看当前运行的内核版本

uname –r

为了防止后面安装的时候报错首先执行下面命令安装软件

sudo apt-get install libncurses5-dev libssl-dev -y

sudo apt-get install build-essential openssl -y

sudo apt-get install zlibc minizip -y

sudo apt-get install libidn11-dev libidn11 -y

sudo apt-get install bison -y

sudo apt-get install flex -y

sudo apt-get install libelf-dev -y

sudo apt-get install libelf-devel -y

sudo apt-get install elfutils-libelf-devel –y

sudo apt-get install flex –y

sudo apt-get install bison -y

将内核源码解压到/usr/src/目录下

tar xvf 源码包

将解压后的源码包创建新链接

ln –s 解压后源码包名 linux

Linux内核编译、安装流程

第三步:配置编译选项开始编译安装内核

make mrproper   清空一些配置信息检查源码是否完整

make clean       清空一些编译信息

cd /usr/src/linux

make menuconfig

这里选择内核中哪些模块参与编译(简单的说就是哪些编译好的内核有哪些功能,具体的功能在下一节博客中会给大家详细介绍),这里打下按向右的箭头,选择退出,弹出对话框口选择yes,这里的意思是选择默认的配置。

在当前目录下执行

make(相当于make bzImage加make modules)另外make可以加-j 20  意思启动20个线程编译

make modules          生成相应的模块

make modules_install    将相应的模块拷贝到对应的目录下

make install            该命令的作用是将.config,vmlinuz,initrd.img,System.map文件到/boot/目录、更新grub。默认启动新内核

如何删除内核:

查看当前安装的内核

dpkg --get-selections | grep linux

Linux内核编译、安装流程

如上图所示,在该图列表中含image 部分是已经安装过的内核

执行apt-get remove linux-image-****-generic

或者

sudo apt-get purge linux-image-****-generic

(移除后启动选项中还会有卸载的内核选项)

update-grub  更新grub这样在系统启动的时候就不会有卸载掉的内核了这样就彻底的卸载了

问题

dpkg --get-selections|grep linux

有时候这个命令找不到刚才安装的内核

这个时候用一下方法

  1. 删除boot下面和要删除的内核版本相关的文件 rm –rf rm -f *3.19.8*
  2. 删除/usr/src/目录下的内核源码
  3. update-grub 更新grub

Linux内核编译、安装流程的更多相关文章

  1. Linux内核编译安装

    1. .config 复制一份当前系统编译时的配置,在/usr/src目录下 $ ls /usr/src/ linux-headers-4.10.0-35 linux-headers-4.8.0-36 ...

  2. Linux内核编译与安装

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

  3. Linux下编译安装PCRE库

    备注:如果没有root权限,使用 --prefix 指定安装路径 ./configure --prefix=/home/work/tools/pcre-8.xx =================== ...

  4. 学习笔记之Linux内核编译过程

    准备工作 物理主机:win8(32位) 虚拟机工具:VirtualBox_4.3.16_Win32 虚拟主机:xubuntu-12.04.4 安装virtualBox功能增强包 设置好虚拟机与主机的共 ...

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

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

  6. Linux下编译安装qemu和libvirt

    目录 [hide] 1 安装qemu 1.1 qemu介绍 1.2 下载源文件 1.3 编译安装 2 安装libvirt 2.1 libvirt介绍 2.2 下载libvirt 2.3 编译安装 3  ...

  7. linux内核编译环境配置

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

  8. Linux下编译安装qemu和libvirt【转】

    转自:http://www.cnblogs.com/findumars/p/5679742.html 目录 [hide] 1 安装qemu 1.1 qemu介绍 1.2 下载源文件 1.3 编译安装 ...

  9. linux内核编译与开发

    一.Linux内核简介linux kernel map: linux 系统体系结构: linux kernel体系结构: arm有7种工作模式,x86也实现了4个不同级别RING0-RING3,RIN ...

随机推荐

  1. ref out

    http://zhidao.baidu.com/link?url=lff7FilmowvV8DW_jbJNgdauhsQTBOYnZdq1sgq349k6Uo1nTv7CZvdWR1hK7DBPnNi ...

  2. switch parser.p4源码

    /* Copyright 2013-present Barefoot Networks, Inc. Licensed under the Apache License, Version 2.0 (th ...

  3. C语言学习笔记--结构体

    结构体定义三种方式: #include<stdio.h> //第一种定义方法 struct point { int x; int y; }; struct point p1,p2; //第 ...

  4. python学习-day3

    今天是第三天学习,加油! 第一部分 集合 一.集合 1.什么是集合以及特性? 特性:无序的,不重复的序列,可嵌套. 2.创建集合 方法一:创建空集合 s1 = set() print(type(s1) ...

  5. qq客服问题

    angularJs会给ng-href的不正常跳转,会 添加unsafe的前缀.原因是angular对href是有安全检查的,只能生成它认为安全的链接.解决方法如下: 在config.js中注入 fun ...

  6. SpringBoot整合Netty并使用Protobuf进行数据传输&lpar;附工程&rpar;

    前言 本篇文章主要介绍的是SpringBoot整合Netty以及使用Protobuf进行数据传输的相关内容.Protobuf会简单的介绍下用法,至于Netty在之前的文章中已经简单的介绍过了,这里就不 ...

  7. angular select2 ng-model 取值 ng-change调用方法

    页面: 引入文件 '/select2.css', '/select2-bootstrap.css', '/select2.min.js', '/ui-select2.js' html: <div ...

  8. python之管道&comma; 事件&comma; 信号量&comma; 进程池

    管道:双向通信 2个进程之间相互通信 from multiprocessing import Process, Pipe def f1(conn): from_zjc_msg = conn.recv( ...

  9. 软件推荐-国内参数优化软件:1stOpt - First Optimizationg

    首页:http://www.7d-soft.com/index.htm 4.0新功能 (预定2010年8月6日): 1:支持复数拟合.复数方程组计算: 2:支持微分方程拟合求解: 3:通用全局优化求解 ...

  10. PHP快速入门 如何操作MySQL

    1 创建一个新的数据库,注意类型设置为utf8_general_ci 2 在数据库中创建一个新的表,比如叫做tg_user(先从左侧选择刚才创建的数据库) 3 创建第一个字段,自动编号.我们估计网站的 ...