Linux内核编译安装笔记

内核版本与下载

  1. 版本号 4.9.16
  2. 下载地址

预备知识

  • menuconfig与Makefile

    • Linux内核根目录下的scripts文件夹
      scripts文件夹存放的是跟make menuconfig配置界面的图形绘制相关的文件

    • arch/$ARCH/Kconfig文件、各层目录下的Kconfig文件
      用于不同硬件平台生成整个配置界面选项(Kconfig是整个linux配置机制的核心)

    • Linux内核根目录下的的.config文件、arch/$ARCH/configs/下的文件
      通过读取arch/$ARCH/configs/下的一个预定义的配置文件生成界面,在手动配置后生成根目录下的.config文件,用于最终的编译配置

    • Linux内核根目录下的 include/generated/autoconf.h 文件
      当配置保存退出后,会根据.config的信息生成一些make时需要的宏信息,这些宏信息就保存在include/generated/autoconf.h中,用于预编译。

    • Linux内核根目录下的makefile文件、各层目录下的makefile文件
      当我们增加一个功能模块时,在生成include/generated/autoconf.h中的预编译信息的同时,还需要生成编译该功能模块的makefile,并修改它的上层makefile文件。

准备工作

  • 安装make
  • 安装gcc
  • 安装ncurses

编译内核

  • 清理源代码树
    执行make mrproper命令清理源代码树,包括过去曾经配置的内核配置文件.config都将被清除。即进行新的编译工作时将原来老的配置文件给删除,以免影响新的内核编译。(但是一般情况也可以不执行这条命令,因为内核编译是增量编译,清除之后又要从头开始编译,浪费时间).

  • 配置内核
    执行make menuconfig以图形界面配置内核。
    second extended fs suppor为例,使用上下方向键移动光标,拍打空格进行编译进内核模块不选择进行功能制定,对应的图标变化为*M、(空格)。进入界面中移动光标选中file system项目,回车进入其中,上下移动光标到second extended fs suppor,使用空格将*改成M,使用左右键去选择保存,。。。退出。

  • 生成依赖关系
    执行make dep

  • 开始编译
    执行make -j4

安装模块和内核

  • 安装模块
    执行make -j4 modules_install。此过程是将模块文件复制到文件系统中相应的目录下。

  • 安装内核
    执行make install。此过程将在目录/boot下生成

    • 内核引导镜像文件vmlinuz,该文件就是对应版本的内核系统,由vmlinux压缩而来。
    • 初始RAM磁盘镜像文件initrd,该文件是一个临时根文件系统,用来支持灵活正确的加载真正的内核系统vmlinuz

修改默认启动版本

  1. 列出当前启动版本
    grub2-editenv list
  2. 列出所有的启动版本
    grep ^menuentry /boot/grub2/grub.cfg | cut -d "'" -f2
  3. 修改启动版本
    grub2-set-default "CentOS Linux ... 7 (Core)"

遇到的问题

CentOS中使用yum install [xxx]安装

  1. 需要bc的程序,尚且不知道那个功能模块需要。
  2. 需要openssl-devel开发库,过滤.config文件后,尚且不知道哪个功能模块需要。

内核编程入门——编译内核相关推荐

  1. 由尚德linux内核编程进阶教材,由尚德老师Linux内核编程入门视频教程

    由尚德老师讲解的Linux内核编程教程入门课程,此课程学完后可以接着学进阶篇,下载地址:http://blog.csdn.net/congxue/archive/2009/05/17/4194112. ...

  2. 编译linux内核分区,Ubuntu编译内核及grub的一些笔记

    最近心态不稳定,不怎么想发表文章,但看了看之前写了的笔记,想想还是整理出来吧,其实我写文章,也有一部分原因是为了心里的慰藉--当年游戏打不过别人,关注点便转向其它方面.这里整理的是以前编译内核.引导启 ...

  3. 内核管理 之 编译内核操作流程 ──为新手指南

    作者:北南南北 来自:LinuxSir.Org 提要: 编译内核主要是通过内核实现某些功能,比如iptables 需要内支持:所有的硬件的支持也是通过内核实现的:本文只是简单的给初学者讲一下编译内核的 ...

  4. [奔跑吧 Linux内核][学习记录]编译内核-实验1-2-[环境以及参考]

    1.下载的版本 VMware  workstation player v16.2.4 Ubuntu v22.04.1 Linux kernel v5.19 2.参考的文章 环境安装 [干货]win10 ...

  5. linux内核编程(一)

    这些天在学习linux内核编程,就在这里小小的show以下. 首先编写如下的linux代码.并命名为hello.c 这里你应该注意亮点: 第一.linux内核编程,不同于普通的用户态下的编程:有一个入 ...

  6. 【linux内核-源码编译之centos7】

    linux内核-源码编译之centos7 一. 为什么要编译内核 二.疑难杂症 三.演示环境 四.下载源码 4.1.两者源码区别 4.2.将获取到的源码放在/usr/src/kernels/ 下 五. ...

  7. 如何在编译内核时添加缺少的固件(以intel wireless 5100 AGN的 iwlwifi 为例)

    不知大家在笔记本使用 Linux 时编译内核后无线wifi 能不能用,我的本本是"联想 Y450"一款足够老的本本,配的无线网卡是: $ lspci | grep Wireless ...

  8. 一文带你Linux系统编程入门

    文件和文件系统 文件是linux系统中最重要的抽象,大多数情况下你可以把linux系统中的任何东西都理解为文件,很多的交互操作其实都是通过文件的读写来实现的. 文件描述符 在linux内核中,文件是用 ...

  9. deepin编译Linux内核,为Deepin编译Linux 5.10内核的悲伤故事经历:从入门到卸载

    简介 目的 解决Linux Deepin在更新内核到5.10后无法使用蓝牙的问题. 硬件:联想小新13 Pro 2020 AMD R5 4600U OS: win 10 + deepin 20 原因 ...

最新文章

  1. GitHub 官方终于出 App 了!
  2. 11.3 人工合成数据-机器学习笔记-斯坦福吴恩达教授
  3. 不用卷积也能生成清晰图像,用两个Transformer构建一个GAN
  4. 小程序 wx.getBackgroundAudioManager() 手机黑屏后,让控制音频停止
  5. xfce4截图的快捷键设置
  6. Java:集合for高级循环遍历
  7. 逻辑回归 - sklearn (LR、LRCV、MLP、RLR)- Python代码实现
  8. 计算机c盘丢失,电脑C盘丢失的视频文件怎么恢复?方法讲解,轻松搞定
  9. Adobe illustrator 设置字体和微调 - 连载 10
  10. .NET 5中的EF Core 5数据迁移:在单独的库中并自动部署
  11. php pager,fleaphp常用方法分页之Pager使用方法
  12. AI为传统零售行业赋能,自助收银推动无人零售发展
  13. Shell脚本基础语法教程
  14. 生存或毁灭? 国内DIY现状大型调查分析
  15. 低成本快速开发 LoRa 终端:从 1 到 10000
  16. 超声波测距仪编程_超声波测距仪程序
  17. 转:CRF++总结1
  18. LeetCode刷题——快慢指针
  19. 居家办公101:你的“办公室”必备设备有哪些?
  20. MACH3 G代码自动循环加工简单例子

热门文章

  1. 现代软件工程 第7-9章作业 第3题 --原旭莹
  2. 大春天的,兰州竟然下了一场大雪!
  3. cmd运行Java jar包
  4. Android 源码 图形系统概述
  5. CS5210设计HDMI to VGA方案 CS5210方案
  6. java 文件的md5值_Java计算文件的MD5值
  7. win10无法修改mac地址_为什么淘宝运费模板无法修改发货地址?发货地址改不了是什么原因?...
  8. 日落20181024001 - Unity组件应用之Animator
  9. ARP简介及ARP病毒原理
  10. python3语法 余数不等于0_python 基础语法学习笔记 0-3